summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore20
-rw-r--r--BUILD/Makefile.am3
-rwxr-xr-xBUILD/SETUP.sh26
-rwxr-xr-xBUILD/build_mccge.sh1
-rwxr-xr-xBUILD/check-cpu23
-rwxr-xr-xBUILD/compile-amd64-debug-all7
-rwxr-xr-xBUILD/compile-amd64-valgrind-max2
-rwxr-xr-xBUILD/compile-pentium-debug-all10
-rwxr-xr-xBUILD/compile-pentium-icc-valgrind-max2
-rwxr-xr-xBUILD/compile-pentium-valgrind-max2
-rwxr-xr-xBUILD/compile-pentium-valgrind-max-no-ndb2
-rwxr-xr-xBUILD/compile-pentium64-debug-all12
-rwxr-xr-xBUILD/compile-pentium64-valgrind-max2
-rwxr-xr-xCMakeLists.txt135
-rw-r--r--Docs/Makefile.am3
-rw-r--r--Makefile.am9
-rwxr-xr-xclient/CMakeLists.txt2
-rw-r--r--client/Makefile.am3
-rw-r--r--client/mysql.cc214
-rw-r--r--client/mysql_upgrade.c83
-rw-r--r--client/mysqladmin.cc62
-rw-r--r--client/mysqlbinlog.cc67
-rw-r--r--client/mysqlcheck.c113
-rw-r--r--client/mysqldump.c156
-rw-r--r--client/mysqlimport.c72
-rw-r--r--client/mysqlshow.c42
-rw-r--r--client/mysqlslap.c113
-rw-r--r--client/mysqltest.cc215
-rw-r--r--cmd-line-utils/Makefile.am3
-rw-r--r--cmd-line-utils/readline/Makefile.am2
-rw-r--r--cmd-line-utils/readline/input.c2
-rw-r--r--config/ac-macros/maintainer.m464
-rw-r--r--config/ac-macros/plugins.m464
-rw-r--r--config/ac-macros/ssl.m411
-rw-r--r--configure.in66
-rw-r--r--dbug/Makefile.am3
-rwxr-xr-xdbug/remove_function_from_trace.pl11
-rwxr-xr-xextra/CMakeLists.txt2
-rw-r--r--extra/Makefile.am3
-rw-r--r--extra/comp_err.c41
-rw-r--r--extra/libevent/evbuffer.c2
-rw-r--r--extra/libevent/event.c3
-rw-r--r--extra/libevent/signal.c2
-rw-r--r--extra/my_print_defaults.c27
-rw-r--r--extra/mysql_waitpid.c2
-rw-r--r--extra/perror.c10
-rw-r--r--extra/replace.c12
-rw-r--r--extra/resolve_stack_dump.c6
-rw-r--r--extra/resolveip.c2
-rwxr-xr-xextra/yassl/CMakeLists.txt2
-rw-r--r--extra/yassl/certs/ca-cert.pem42
-rw-r--r--extra/yassl/certs/client-cert.derbin699 -> 699 bytes
-rw-r--r--extra/yassl/certs/client-cert.pem18
-rw-r--r--extra/yassl/certs/dsa-cert.pem18
-rw-r--r--extra/yassl/certs/server-cert.pem20
-rw-r--r--extra/yassl/include/lock.hpp16
-rw-r--r--extra/yassl/src/Makefile.am2
-rw-r--r--extra/yassl/src/lock.cpp4
-rw-r--r--extra/yassl/src/yassl_imp.cpp24
-rwxr-xr-xextra/yassl/taocrypt/CMakeLists.txt2
-rw-r--r--extra/yassl/taocrypt/benchmark/Makefile.am2
-rw-r--r--extra/yassl/taocrypt/include/blowfish.hpp6
-rw-r--r--extra/yassl/taocrypt/include/runtime.hpp16
-rw-r--r--extra/yassl/taocrypt/src/Makefile.am3
-rw-r--r--extra/yassl/taocrypt/src/algebra.cpp6
-rw-r--r--extra/yassl/taocrypt/src/coding.cpp2
-rw-r--r--extra/yassl/taocrypt/src/integer.cpp32
-rw-r--r--extra/yassl/taocrypt/src/misc.cpp16
-rw-r--r--extra/yassl/taocrypt/test/Makefile.am2
-rw-r--r--extra/yassl/taocrypt/test/memory.cpp2
-rw-r--r--extra/yassl/testsuite/Makefile.am2
-rw-r--r--extra/yassl/testsuite/test.hpp5
-rw-r--r--include/Makefile.am8
-rw-r--r--include/m_string.h13
-rw-r--r--include/maria.h14
-rw-r--r--include/my_alarm.h4
-rw-r--r--include/my_base.h11
-rw-r--r--include/my_bitmap.h22
-rw-r--r--include/my_compiler.h129
-rw-r--r--include/my_getopt.h21
-rw-r--r--include/my_global.h61
-rw-r--r--include/my_pthread.h11
-rw-r--r--include/my_sys.h3
-rw-r--r--include/my_valgrind.h24
-rw-r--r--include/myisam.h2
-rw-r--r--include/mysql.h2
-rw-r--r--include/mysql.h.pp1
-rw-r--r--include/mysql/client_plugin.h2
-rw-r--r--include/mysql/client_plugin.h.pp2
-rw-r--r--include/mysql/plugin.h6
-rw-r--r--include/mysql/plugin_auth.h.pp5
-rw-r--r--include/mysql/service_my_snprintf.h2
-rw-r--r--include/mysql/service_thd_alloc.h2
-rw-r--r--include/mysql_com.h4
-rw-r--r--include/mysys_err.h10
-rw-r--r--include/sslopt-longopts.h21
-rwxr-xr-xlibmysql/CMakeLists.txt8
-rw-r--r--libmysql/Makefile.am3
-rw-r--r--libmysql/libmysql.c31
-rw-r--r--libmysql_r/Makefile.am3
-rw-r--r--libmysqld/CMakeLists.txt4
-rw-r--r--libmysqld/Makefile.am3
-rw-r--r--libmysqld/examples/Makefile.am3
-rw-r--r--man/Makefile.am3
-rw-r--r--mysql-test/Makefile.am15
-rw-r--r--mysql-test/README2
-rw-r--r--mysql-test/README.suites155
-rw-r--r--mysql-test/collections/default.experimental5
-rw-r--r--mysql-test/extra/binlog_tests/binlog.test25
-rw-r--r--mysql-test/extra/binlog_tests/blackhole.test24
-rw-r--r--mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test2
-rw-r--r--mysql-test/extra/rpl_tests/rpl_deadlock.test7
-rw-r--r--mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test67
-rw-r--r--mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test118
-rw-r--r--mysql-test/extra/rpl_tests/rpl_flsh_tbls.test12
-rw-r--r--mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test20
-rw-r--r--mysql-test/extra/rpl_tests/rpl_insert_delayed.test17
-rw-r--r--mysql-test/extra/rpl_tests/rpl_log.test57
-rw-r--r--mysql-test/extra/rpl_tests/rpl_max_relay_size.test19
-rw-r--r--mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test38
-rw-r--r--mysql-test/extra/rpl_tests/rpl_record_compare.test68
-rw-r--r--mysql-test/extra/rpl_tests/rpl_reset_slave.test59
-rw-r--r--mysql-test/extra/rpl_tests/rpl_row_basic.test32
-rw-r--r--mysql-test/extra/rpl_tests/rpl_row_tabledefs.test38
-rw-r--r--mysql-test/include/check_concurrent_insert.inc96
-rw-r--r--mysql-test/include/check_no_concurrent_insert.inc81
-rw-r--r--mysql-test/include/check_no_row_lock.inc71
-rw-r--r--mysql-test/include/check_shared_row_lock.inc61
-rw-r--r--mysql-test/include/check_slave_is_running.inc18
-rw-r--r--mysql-test/include/check_slave_no_error.inc17
-rw-r--r--mysql-test/include/check_slave_param.inc16
-rw-r--r--mysql-test/include/cleanup_fake_relay_log.inc2
-rw-r--r--mysql-test/include/commit.inc4
-rw-r--r--mysql-test/include/default_my.cnf3
-rw-r--r--mysql-test/include/default_mysqld.cnf5
-rw-r--r--mysql-test/include/diff_tables.inc21
-rw-r--r--mysql-test/include/get_relay_log_pos.inc70
-rw-r--r--mysql-test/include/have_archive.inc9
-rw-r--r--mysql-test/include/have_archive.opt2
-rw-r--r--mysql-test/include/have_binlog_format_mixed.opt1
-rw-r--r--mysql-test/include/have_binlog_format_row.opt1
-rw-r--r--mysql-test/include/have_binlog_format_statement.opt2
-rw-r--r--mysql-test/include/have_blackhole.opt2
-rw-r--r--mysql-test/include/have_example_plugin.inc4
-rw-r--r--mysql-test/include/have_exampledb.inc4
-rw-r--r--mysql-test/include/have_innodb.inc9
-rw-r--r--mysql-test/include/have_innodb.opt2
-rw-r--r--mysql-test/include/have_innodb_plugin.inc9
-rw-r--r--mysql-test/include/have_log_bin-master.opt1
-rw-r--r--mysql-test/include/have_log_bin-slave.opt1
-rw-r--r--mysql-test/include/have_log_bin.inc2
-rw-r--r--mysql-test/include/have_maria.inc9
-rw-r--r--mysql-test/include/have_pbxt.inc9
-rw-r--r--mysql-test/include/have_pbxt.opt1
-rw-r--r--mysql-test/include/have_real_innodb_plugin.inc4
-rw-r--r--mysql-test/include/have_simple_parser.inc2
-rw-r--r--mysql-test/include/have_udf.inc2
-rw-r--r--mysql-test/include/have_xtradb.inc4
-rw-r--r--mysql-test/include/maria_empty_logs.inc46
-rw-r--r--mysql-test/include/maria_make_snapshot.inc4
-rw-r--r--mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc6
-rw-r--r--mysql-test/include/maria_verify_recovery.inc4
-rw-r--r--mysql-test/include/mysqlhotcopy.inc123
-rw-r--r--mysql-test/include/ndb_backup.inc2
-rw-r--r--mysql-test/include/ndb_backup_print.inc2
-rw-r--r--mysql-test/include/percona_query_cache_with_comments.inc95
-rw-r--r--mysql-test/include/percona_query_cache_with_comments_begin.inc12
-rw-r--r--mysql-test/include/percona_query_cache_with_comments_clear.inc5
-rw-r--r--mysql-test/include/percona_query_cache_with_comments_end.inc3
-rw-r--r--mysql-test/include/percona_query_cache_with_comments_eval.inc7
-rw-r--r--mysql-test/include/percona_query_cache_with_comments_show.inc8
-rw-r--r--mysql-test/include/percona_query_response_time_flush.inc1
-rw-r--r--mysql-test/include/percona_query_response_time_show.inc7
-rw-r--r--mysql-test/include/percona_query_response_time_sleep.inc19
-rw-r--r--mysql-test/include/rpl_diff_tables.inc35
-rw-r--r--mysql-test/include/rpl_stmt_seq.inc30
-rw-r--r--mysql-test/include/rpl_udf.inc12
-rw-r--r--mysql-test/include/show_binlog_events.inc41
-rw-r--r--mysql-test/include/show_rpl_debug_info.inc2
-rw-r--r--mysql-test/include/show_slave_status.inc25
-rw-r--r--mysql-test/include/show_slave_status2.inc8
-rw-r--r--mysql-test/include/test_fieldsize.inc7
-rw-r--r--mysql-test/include/wait_for_binlog_event.inc2
-rw-r--r--mysql-test/include/wait_for_slave_io_error.inc48
-rw-r--r--mysql-test/include/wait_for_slave_param.inc2
-rw-r--r--mysql-test/include/wait_for_slave_sql_error.inc17
-rw-r--r--mysql-test/include/wait_for_slave_sql_error_and_skip.inc27
-rw-r--r--mysql-test/include/wait_for_status_var.inc4
-rw-r--r--mysql-test/include/wait_until_count_sessions.inc1
-rw-r--r--mysql-test/lib/My/Config.pm131
-rw-r--r--mysql-test/lib/My/ConfigFactory.pm54
-rw-r--r--mysql-test/lib/My/File/Path.pm2
-rw-r--r--[-rwxr-xr-x]mysql-test/lib/My/Handles.pm0
-rw-r--r--mysql-test/lib/My/SafeProcess.pm2
-rw-r--r--mysql-test/lib/My/SafeProcess/safe_process.cc2
-rw-r--r--mysql-test/lib/My/Suite.pm10
-rw-r--r--mysql-test/lib/My/Test.pm6
-rw-r--r--mysql-test/lib/mtr_cases.pm360
-rw-r--r--mysql-test/lib/mtr_misc.pl22
-rw-r--r--mysql-test/lib/mtr_report.pm6
-rw-r--r--mysql-test/lib/v1/mtr_process.pl3
-rwxr-xr-xmysql-test/lib/v1/mysql-test-run.pl34
-rwxr-xr-xmysql-test/mysql-test-run.pl871
-rw-r--r--mysql-test/r/alter_table-big.result32
-rw-r--r--mysql-test/r/alter_table_trans.result6
-rw-r--r--mysql-test/r/archive.result12
-rw-r--r--mysql-test/r/bug39022.result6
-rw-r--r--mysql-test/r/commit_1innodb.result4
-rw-r--r--mysql-test/r/create-big.result54
-rw-r--r--mysql-test/r/ctype_cp932_binlog_stm.result12
-rw-r--r--mysql-test/r/delete.result9
-rw-r--r--mysql-test/r/drop.result11
-rw-r--r--mysql-test/r/error_simulation.result44
-rw-r--r--mysql-test/r/events_scheduling.result19
-rw-r--r--mysql-test/r/exampledb.result8
-rw-r--r--mysql-test/r/explain.result13
-rw-r--r--mysql-test/r/flush_block_commit_notembedded.result10
-rw-r--r--mysql-test/r/func_gconcat.result21
-rw-r--r--mysql-test/r/func_in.result20
-rw-r--r--mysql-test/r/func_isnull.result14
-rw-r--r--mysql-test/r/func_like.result14
-rw-r--r--mysql-test/r/func_misc.result15
-rw-r--r--mysql-test/r/grant.result2
-rw-r--r--mysql-test/r/group_by.result72
-rw-r--r--mysql-test/r/group_min_max.result13
-rw-r--r--mysql-test/r/handler_myisam.result93
-rw-r--r--mysql-test/r/having.result26
-rw-r--r--mysql-test/r/index_merge_innodb.result55
-rw-r--r--mysql-test/r/information_schema.result33
-rw-r--r--mysql-test/r/information_schema_all_engines.result26
-rw-r--r--mysql-test/r/innodb-index.result1173
-rw-r--r--mysql-test/r/innodb-use-sys-malloc.result48
-rw-r--r--mysql-test/r/innodb.result8
-rw-r--r--mysql-test/r/innodb_ignore_builtin.result5
-rw-r--r--mysql-test/r/innodb_mysql_lock2.result601
-rw-r--r--mysql-test/r/innodb_xtradb_bug317074.result31
-rw-r--r--mysql-test/r/join_nested.result82
-rw-r--r--mysql-test/r/join_outer.result200
-rw-r--r--mysql-test/r/loaddata.result36
-rw-r--r--mysql-test/r/lock_sync.result631
-rw-r--r--mysql-test/r/log_state.result33
-rw-r--r--mysql-test/r/log_tables_upgrade.result15
-rw-r--r--mysql-test/r/lowercase_table2.result3
-rw-r--r--mysql-test/r/lowercase_view.result17
-rw-r--r--mysql-test/r/multi_update.result6
-rw-r--r--mysql-test/r/mysql_client_test.result2
-rw-r--r--mysql-test/r/mysql_upgrade.result121
-rw-r--r--mysql-test/r/mysqlcheck.result8
-rw-r--r--mysql-test/r/mysqldump.result22
-rw-r--r--mysql-test/r/mysqlhotcopy_archive.result118
-rw-r--r--mysql-test/r/mysqlhotcopy_myisam.result164
-rw-r--r--mysql-test/r/not_partition.result26
-rw-r--r--mysql-test/r/openssl_1.result2
-rw-r--r--mysql-test/r/outfile_loaddata.result20
-rw-r--r--mysql-test/r/partition_error.result24
-rw-r--r--mysql-test/r/plugin.result6
-rw-r--r--mysql-test/r/plugin_maturity.result2
-rw-r--r--mysql-test/r/renamedb.result2
-rw-r--r--mysql-test/r/schema.result19
-rw-r--r--mysql-test/r/select.result15
-rw-r--r--mysql-test/r/select_pkeycache.result15
-rw-r--r--mysql-test/r/show_check.result2
-rw-r--r--mysql-test/r/sp_trans_log.result12
-rw-r--r--mysql-test/r/status_user.result88
-rw-r--r--mysql-test/r/subselect.result17
-rw-r--r--mysql-test/r/subselect4.result30
-rw-r--r--mysql-test/r/table_elim.result2
-rw-r--r--mysql-test/r/table_options.result46
-rw-r--r--mysql-test/r/type_time.result10
-rw-r--r--mysql-test/r/update.result14
-rw-r--r--mysql-test/r/upgrade.result36
-rw-r--r--mysql-test/r/variables.result9
-rw-r--r--mysql-test/r/variables_debug.result2
-rw-r--r--mysql-test/r/view.result4
-rw-r--r--mysql-test/r/warnings_engine_disabled.result17
-rw-r--r--mysql-test/std_data/archive_5_0.ARMbin0 -> 19 bytes
-rw-r--r--mysql-test/std_data/archive_5_0.ARZbin0 -> 138 bytes
-rw-r--r--mysql-test/std_data/archive_5_0.frmbin0 -> 8578 bytes
-rw-r--r--mysql-test/std_data/intersect-bug50389.tsv441
-rw-r--r--mysql-test/std_data/long_table_name.MYDbin0 -> 56 bytes
-rw-r--r--mysql-test/std_data/long_table_name.MYIbin0 -> 6144 bytes
-rw-r--r--mysql-test/std_data/long_table_name.frmbin0 -> 8650 bytes
-rw-r--r--mysql-test/std_data/server8k-cert.pem172
-rw-r--r--mysql-test/std_data/server8k-key.pem194
-rw-r--r--mysql-test/suite/binlog/r/binlog_base64_flag.result11
-rw-r--r--mysql-test/suite/binlog/r/binlog_innodb.result12
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_binlog.result2069
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_binlog.result1070
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_blackhole.result12
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result5
-rw-r--r--mysql-test/suite/binlog/t/binlog_base64_flag.test14
-rw-r--r--mysql-test/suite/binlog/t/binlog_innodb.test6
-rw-r--r--mysql-test/suite/binlog/t/binlog_old_versions.test1
-rw-r--r--mysql-test/suite/binlog/t/binlog_row_binlog.test4
-rw-r--r--mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt2
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_binlog.test5
-rw-r--r--mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt2
-rw-r--r--mysql-test/suite/bugs/r/rpl_bug12691.result9
-rw-r--r--mysql-test/suite/bugs/r/rpl_bug36391.result3
-rw-r--r--mysql-test/suite/bugs/t/rpl_bug12691.test4
-rw-r--r--mysql-test/suite/bugs/t/rpl_bug36391.test4
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_000015.result143
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result3
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_change_master.result6
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result41
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_log_pos.result28
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result51
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_drop.result9
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result40
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result239
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result179
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_until.result188
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_server_id1.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_server_id2.result3
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_slave_status.result39
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result239
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result179
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result4
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_000015.test26
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test12
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_change_master.test25
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test3
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test7
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test4
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_log_pos.test45
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test16
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_row_drop.test5
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test10
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_row_until.test49
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_server_id1.test9
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_server_id2.test3
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_slave_status.test12
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test8
-rw-r--r--mysql-test/suite/federated/federated_bug_32426.result30
-rw-r--r--mysql-test/suite/federated/federated_bug_32426.test24
-rw-r--r--mysql-test/suite/federated/federated_innodb-slave.opt1
-rw-r--r--mysql-test/suite/federated/federated_server.result2
-rw-r--r--mysql-test/suite/federated/federated_server.test2
-rw-r--r--mysql-test/suite/federated/federated_transactions-slave.opt1
-rw-r--r--mysql-test/suite/federated/my.cnf1
-rw-r--r--mysql-test/suite/federated/suite.opt2
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_routines.inc2
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_triggers.inc2
-rw-r--r--mysql-test/suite/funcs_1/datadict/is_views.inc2
-rw-r--r--mysql-test/suite/funcs_1/datadict/processlist_priv.inc4
-rw-r--r--mysql-test/suite/funcs_1/datadict/processlist_val.inc2
-rw-r--r--mysql-test/suite/funcs_1/datadict/tables2.inc2
-rw-r--r--mysql-test/suite/funcs_1/r/is_basics_mixed.result2
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_innodb.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is.result396
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_memory.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_myisam.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_engines.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_is.result46
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns.test2
-rw-r--r--mysql-test/suite/funcs_1/t/is_columns_is.test2
-rw-r--r--mysql-test/suite/funcs_1/t/is_engines_innodb.test1
-rw-r--r--mysql-test/suite/funcs_1/t/is_events.test2
-rw-r--r--mysql-test/suite/funcs_1/t/is_tables_is.test1
-rw-r--r--mysql-test/suite/innodb/r/innodb-autoinc-44030.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-autoinc-optimize.result (renamed from mysql-test/r/innodb-autoinc-optimize.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb-ucs2.result (renamed from mysql-test/r/innodb-ucs2.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb.result2359
-rw-r--r--mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result (renamed from mysql-test/r/innodb_autoinc_lock_mode_zero.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug21704.result12
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug30919.result (renamed from mysql-test/r/innodb_bug30919.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug42419.result (renamed from mysql-test/r/innodb_bug42419.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug48024.result10
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug49164.result42
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug53674.result11
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug53756.result118
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug54044.result3
-rw-r--r--mysql-test/suite/innodb/r/innodb_gis.result (renamed from mysql-test/r/innodb_gis.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result (renamed from mysql-test/r/innodb_lock_wait_timeout_1.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_misc1.result1
-rw-r--r--mysql-test/suite/innodb/r/innodb_multi_update.result76
-rw-r--r--mysql-test/suite/innodb/r/innodb_mysql.result2521
-rw-r--r--mysql-test/suite/innodb/r/innodb_mysql_rbk.result (renamed from mysql-test/r/innodb_mysql_rbk.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_notembedded.result (renamed from mysql-test/r/innodb_notembedded.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_timeout_rollback.result (renamed from mysql-test/r/innodb_timeout_rollback.result)0
-rw-r--r--mysql-test/suite/innodb/t/disabled.def6
-rw-r--r--mysql-test/suite/innodb/t/innodb-autoinc-44030.test2
-rw-r--r--mysql-test/suite/innodb/t/innodb-autoinc-optimize.test (renamed from mysql-test/t/innodb-autoinc-optimize.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb-master.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb-semi-consistent-master.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb-ucs2.test (renamed from mysql-test/t/innodb-ucs2.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb.test1392
-rw-r--r--mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test (renamed from mysql-test/t/innodb_autoinc_lock_mode_zero.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug30919-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug30919.test (renamed from mysql-test/t/innodb_bug30919.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug39438-master.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug42419.test (renamed from mysql-test/t/innodb_bug42419.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug48024.test22
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug49164.test47
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug52663-master.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug53674-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug53674.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug53756-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug53756.test184
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug54044.test11
-rw-r--r--mysql-test/suite/innodb/t/innodb_gis.test (renamed from mysql-test/t/innodb_gis.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test (renamed from mysql-test/t/innodb_lock_wait_timeout_1.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_misc1-master.opt2
-rw-r--r--mysql-test/suite/innodb/t/innodb_misc1.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb_multi_update.test29
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql.test771
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql_rbk.test (renamed from mysql-test/t/innodb_mysql_rbk.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_notembedded.test (renamed from mysql-test/t/innodb_notembedded.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt1
-rw-r--r--mysql-test/suite/innodb/t/innodb_timeout_rollback.test (renamed from mysql-test/t/innodb_timeout_rollback.test)0
-rw-r--r--mysql-test/suite/innodb_plugin/combinations12
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result9
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb-ucs2.result314
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb.result94
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result39
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug30919.result1043
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug42419.result17
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug46000.result1
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug48024.result10
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result42
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug49164.result42
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug53290.result17
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug53591.result15
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug53592.result26
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug53674.result11
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug54044.result3
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug54453.result9
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_bug54679.result91
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_gis.result589
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result375
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_multi_update.result76
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_mysql.result (renamed from mysql-test/r/innodb_mysql.result)69
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result21
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_notembedded.result23
-rw-r--r--mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result36
-rw-r--r--mysql-test/suite/innodb_plugin/suite.pm19
-rw-r--r--mysql-test/suite/innodb_plugin/t/disabled.def13
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test19
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-autoinc.test2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-consistent-master.opt2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-master.opt2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-semi-consistent-master.opt2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-timeout.test2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-ucs2.test230
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc-master.opt2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc.test1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb.test29
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test44
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug30919.test68
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug39438-master.opt2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug42101-nonzero-master.opt2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug42419.test78
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug48024.test22
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug49164.test47
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug52745.test2
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug53290.test22
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug53591.test25
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug53592.test59
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug53674.test8
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug54044.test11
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug54453.test15
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_bug54679.test97
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_gis.test10
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test264
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_multi_update.test29
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_mysql.test (renamed from mysql-test/t/innodb_mysql.test)69
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test35
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_notembedded.test50
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt1
-rw-r--r--mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test5
-rw-r--r--mysql-test/suite/manual/r/rpl_replication_delay.result117
-rw-r--r--mysql-test/suite/manual/t/rpl_replication_delay.test16
-rw-r--r--mysql-test/suite/maria/r/compat_aliases.result58
-rw-r--r--mysql-test/suite/maria/r/group_commit.result28
-rw-r--r--mysql-test/suite/maria/r/maria-autozerofill.result2
-rw-r--r--mysql-test/suite/maria/r/maria-big.result2
-rw-r--r--mysql-test/suite/maria/r/maria-big2.result2
-rw-r--r--mysql-test/suite/maria/r/maria-connect.result4
-rw-r--r--mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result6
-rw-r--r--mysql-test/suite/maria/r/maria-gis-rtree-trans.result6
-rw-r--r--mysql-test/suite/maria/r/maria-gis-rtree.result6
-rw-r--r--mysql-test/suite/maria/r/maria-mvcc.result8
-rw-r--r--mysql-test/suite/maria/r/maria-no-logging.result32
-rw-r--r--mysql-test/suite/maria/r/maria-page-checksum.result514
-rw-r--r--mysql-test/suite/maria/r/maria-partitioning.result12
-rw-r--r--mysql-test/suite/maria/r/maria-preload.result68
-rw-r--r--mysql-test/suite/maria/r/maria-purge.result84
-rw-r--r--mysql-test/suite/maria/r/maria-recover.result28
-rw-r--r--mysql-test/suite/maria/r/maria-recovery-big.result6
-rw-r--r--mysql-test/suite/maria/r/maria-recovery-bitmap.result8
-rw-r--r--mysql-test/suite/maria/r/maria-recovery-rtree-ft.result18
-rw-r--r--mysql-test/suite/maria/r/maria-recovery.result32
-rw-r--r--mysql-test/suite/maria/r/maria-recovery2.result34
-rw-r--r--mysql-test/suite/maria/r/maria-recovery3.result18
-rw-r--r--mysql-test/suite/maria/r/maria.result208
-rw-r--r--mysql-test/suite/maria/r/maria2.result10
-rw-r--r--mysql-test/suite/maria/r/maria3.result168
-rw-r--r--mysql-test/suite/maria/r/maria_notembedded.result2
-rw-r--r--mysql-test/suite/maria/r/maria_partition.result10
-rw-r--r--mysql-test/suite/maria/r/maria_showlog_error.result4
-rw-r--r--mysql-test/suite/maria/r/optimize.result8
-rw-r--r--mysql-test/suite/maria/r/ps_maria.result10
-rw-r--r--mysql-test/suite/maria/suite.pm8
-rw-r--r--mysql-test/suite/maria/t/compat_aliases-master.opt1
-rw-r--r--mysql-test/suite/maria/t/compat_aliases.test58
-rw-r--r--mysql-test/suite/maria/t/group_commit.test28
-rw-r--r--mysql-test/suite/maria/t/maria-autozerofill.test22
-rw-r--r--mysql-test/suite/maria/t/maria-big.test4
-rw-r--r--mysql-test/suite/maria/t/maria-big2.test2
-rw-r--r--mysql-test/suite/maria/t/maria-connect.test8
-rw-r--r--mysql-test/suite/maria/t/maria-gis-rtree-dynamic.test2
-rw-r--r--mysql-test/suite/maria/t/maria-gis-rtree-trans.test4
-rw-r--r--mysql-test/suite/maria/t/maria-gis-rtree.test2
-rw-r--r--mysql-test/suite/maria/t/maria-mvcc.test6
-rw-r--r--mysql-test/suite/maria/t/maria-no-logging.test36
-rw-r--r--mysql-test/suite/maria/t/maria-page-checksum.test736
-rw-r--r--mysql-test/suite/maria/t/maria-partitioning.test16
-rw-r--r--mysql-test/suite/maria/t/maria-preload.test18
-rw-r--r--mysql-test/suite/maria/t/maria-purge.test82
-rw-r--r--mysql-test/suite/maria/t/maria-recover-master.opt2
-rw-r--r--mysql-test/suite/maria/t/maria-recover.test22
-rw-r--r--mysql-test/suite/maria/t/maria-recovery-big.test8
-rw-r--r--mysql-test/suite/maria/t/maria-recovery-bitmap.test10
-rw-r--r--mysql-test/suite/maria/t/maria-recovery-master.opt2
-rw-r--r--mysql-test/suite/maria/t/maria-recovery-rtree-ft.test10
-rw-r--r--mysql-test/suite/maria/t/maria-recovery.test20
-rw-r--r--mysql-test/suite/maria/t/maria-recovery2-master.opt2
-rw-r--r--mysql-test/suite/maria/t/maria-recovery2.test34
-rw-r--r--mysql-test/suite/maria/t/maria-recovery3-master.opt2
-rw-r--r--mysql-test/suite/maria/t/maria-recovery3.test20
-rw-r--r--mysql-test/suite/maria/t/maria.test160
-rw-r--r--mysql-test/suite/maria/t/maria2.test12
-rw-r--r--mysql-test/suite/maria/t/maria3.test78
-rw-r--r--mysql-test/suite/maria/t/maria_notembedded.test2
-rw-r--r--mysql-test/suite/maria/t/maria_partition.test20
-rw-r--r--mysql-test/suite/maria/t/maria_showlog_error.test6
-rw-r--r--mysql-test/suite/maria/t/optimize.test162
-rw-r--r--mysql-test/suite/maria/t/ps_maria.test6
-rw-r--r--mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result612
-rw-r--r--mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result22
-rw-r--r--mysql-test/suite/ndb_team/t/rpl_ndb_mix_innodb-master.opt2
-rw-r--r--mysql-test/suite/oqgraph/include/have_oqgraph_engine.inc4
-rw-r--r--mysql-test/suite/oqgraph/suite.opt1
-rw-r--r--mysql-test/suite/oqgraph/suite.pm8
-rw-r--r--mysql-test/suite/oqgraph/t/basic.test2
-rw-r--r--mysql-test/suite/oqgraph/t/binlog.test1
-rw-r--r--mysql-test/suite/oqgraph/t/suite.opt2
-rw-r--r--mysql-test/suite/parts/r/optimizer.result45
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_1_maria.result812
-rw-r--r--mysql-test/suite/parts/r/partition_alter2_2_maria.result812
-rw-r--r--mysql-test/suite/parts/r/partition_auto_increment_maria.result106
-rw-r--r--mysql-test/suite/parts/r/partition_debug_sync_innodb.result61
-rw-r--r--mysql-test/suite/parts/r/rpl_partition.result40
-rw-r--r--mysql-test/suite/parts/t/optimizer.test47
-rw-r--r--mysql-test/suite/parts/t/partition_alter2_1_maria.test10
-rw-r--r--mysql-test/suite/parts/t/partition_alter2_2_maria.test8
-rw-r--r--mysql-test/suite/parts/t/partition_auto_increment_maria.test2
-rw-r--r--mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt1
-rw-r--r--mysql-test/suite/parts/t/partition_debug_sync_innodb.test44
-rw-r--r--mysql-test/suite/parts/t/partition_special_innodb-master.opt2
-rw-r--r--mysql-test/suite/parts/t/rpl_partition.test4
-rw-r--r--mysql-test/suite/pbxt/my.cnf1
-rw-r--r--mysql-test/suite/pbxt/r/join_nested.result18
-rw-r--r--mysql-test/suite/pbxt/r/mysqlshow.result6
-rw-r--r--mysql-test/suite/pbxt/r/negation_elimination.result2
-rw-r--r--mysql-test/suite/pbxt/r/pbxt_xa.result1
-rw-r--r--mysql-test/suite/pbxt/r/range.result24
-rw-r--r--mysql-test/suite/pbxt/r/renamedb.result2
-rw-r--r--mysql-test/suite/pbxt/r/select.result43
-rw-r--r--mysql-test/suite/pbxt/t/check.test2
-rw-r--r--mysql-test/suite/pbxt/t/count_distinct2.test4
-rw-r--r--mysql-test/suite/pbxt/t/derived.test2
-rw-r--r--mysql-test/suite/pbxt/t/pbxt_xa.test5
-rw-r--r--mysql-test/suite/pbxt/t/range.test16
-rw-r--r--mysql-test/suite/pbxt/t/renamedb.test2
-rw-r--r--mysql-test/suite/pbxt/t/select.test1
-rw-r--r--mysql-test/suite/pbxt/t/skip_name_resolve-master.opt1
-rw-r--r--mysql-test/suite/pbxt/t/suite.opt1
-rw-r--r--mysql-test/suite/pbxt/t/udf-master.opt1
-rw-r--r--mysql-test/suite/pbxt/t/udf.test76
-rw-r--r--mysql-test/suite/percona/disabled.def22
-rw-r--r--mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result6
-rw-r--r--mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test18
-rw-r--r--mysql-test/suite/percona/percona_innodb_deadlock_count.result28
-rw-r--r--mysql-test/suite/percona/percona_innodb_deadlock_count.test49
-rw-r--r--mysql-test/suite/percona/percona_innodb_doublewrite_file-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_innodb_doublewrite_file.result4
-rw-r--r--mysql-test/suite/percona/percona_innodb_doublewrite_file.test2
-rw-r--r--mysql-test/suite/percona/percona_innodb_use_sys_stats_table-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_innodb_use_sys_stats_table.result3
-rw-r--r--mysql-test/suite/percona/percona_innodb_use_sys_stats_table.test2
-rw-r--r--mysql-test/suite/percona/percona_log_connection_error-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_log_connection_error.result15
-rw-r--r--mysql-test/suite/percona/percona_log_connection_error.test52
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt1
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.result103
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test141
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements-slave.opt1
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements.result86
-rw-r--r--mysql-test/suite/percona/percona_log_slow_slave_statements.test162
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup88
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments.result866
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments.test4
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments_crash.result21
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments_crash.test22
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments_disable.result865
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments_disable.test3
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.result396
-rw-r--r--mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.test208
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-replication.result60
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-replication.test52
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-stored.result310
-rw-r--r--mysql-test/suite/percona/percona_query_response_time-stored.test87
-rw-r--r--mysql-test/suite/percona/percona_query_response_time.result564
-rw-r--r--mysql-test/suite/percona/percona_query_response_time.test65
-rw-r--r--mysql-test/suite/percona/percona_server_variables.result340
-rw-r--r--mysql-test/suite/percona/percona_server_variables.test7
-rw-r--r--mysql-test/suite/percona/percona_show_temp_tables.result58
-rw-r--r--mysql-test/suite/percona/percona_show_temp_tables.test65
-rw-r--r--mysql-test/suite/percona/percona_slave_innodb_stats-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slave_innodb_stats-slave.opt1
-rw-r--r--mysql-test/suite/percona/percona_slave_innodb_stats.result21
-rw-r--r--mysql-test/suite/percona/percona_slave_innodb_stats.test43
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-control_global_slow-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result12
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test14
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-log_slow_filter-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result25
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test35
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result9
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test15
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-long_query_time.result21
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-long_query_time.test18
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result12
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test21
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result25
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test34
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result59
-rw-r--r--mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test43
-rw-r--r--mysql-test/suite/percona/percona_sql_no_fcache.result12
-rw-r--r--mysql-test/suite/percona/percona_sql_no_fcache.test11
-rw-r--r--mysql-test/suite/percona/percona_status_wait_query_cache_mutex.result27
-rw-r--r--mysql-test/suite/percona/percona_status_wait_query_cache_mutex.test37
-rw-r--r--mysql-test/suite/percona/percona_suppress_log_warning_1592-master.opt1
-rw-r--r--mysql-test/suite/percona/percona_suppress_log_warning_1592.result28
-rw-r--r--mysql-test/suite/percona/percona_suppress_log_warning_1592.test46
-rw-r--r--mysql-test/suite/percona/percona_xtradb_admin_command.result6
-rw-r--r--mysql-test/suite/percona/percona_xtradb_admin_command.test3
-rw-r--r--mysql-test/suite/percona/percona_xtradb_bug317074.result4
-rw-r--r--mysql-test/suite/percona/percona_xtradb_bug317074.test (renamed from mysql-test/t/innodb_xtradb_bug317074.test)14
-rw-r--r--mysql-test/suite/rpl/include/rpl_mixed_ddl.inc4
-rw-r--r--mysql-test/suite/rpl/include/rpl_mixed_dml.inc5
-rw-r--r--mysql-test/suite/rpl/r/rpl_000015.result141
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_grant.result24
-rw-r--r--mysql-test/suite/rpl/r/rpl_bug33931.result40
-rw-r--r--mysql-test/suite/rpl/r/rpl_change_master.result80
-rw-r--r--mysql-test/suite/rpl/r/rpl_conditional_comments.result57
-rw-r--r--mysql-test/suite/rpl/r/rpl_current_user.result205
-rw-r--r--mysql-test/suite/rpl/r/rpl_deadlock_innodb.result122
-rw-r--r--mysql-test/suite/rpl/r/rpl_do_grant.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_drop.result24
-rw-r--r--mysql-test/suite/rpl/r/rpl_dual_pos_advance.result14
-rw-r--r--mysql-test/suite/rpl/r/rpl_empty_master_crash.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraCol_innodb.result409
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraCol_myisam.result409
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result906
-rw-r--r--mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result906
-rw-r--r--mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result32
-rw-r--r--mysql-test/suite/rpl/r/rpl_flushlog_loop.result44
-rw-r--r--mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_grant.result39
-rw-r--r--mysql-test/suite/rpl/r/rpl_incident.result80
-rw-r--r--mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result39
-rw-r--r--mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result529
-rw-r--r--mysql-test/suite/rpl/r/rpl_known_bugs_detection.result84
-rw-r--r--mysql-test/suite/rpl/r/rpl_loaddata_fatal.result82
-rw-r--r--mysql-test/suite/rpl/r/rpl_log_pos.result86
-rw-r--r--mysql-test/suite/rpl/r/rpl_packet.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result69
-rw-r--r--mysql-test/suite/rpl/r/rpl_replicate_do.result38
-rw-r--r--mysql-test/suite/rpl/r/rpl_rotate_logs.result114
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt2
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt2
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result13
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result12
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result12
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_colSize.result520
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_create_table.result151
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_drop.result9
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_find_row.result (renamed from mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result)12
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_log.result138
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_log_innodb.result138
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_max_relay_size.result239
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result46
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result60
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_reset_slave.result179
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result215
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result215
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_until.result166
-rw-r--r--mysql-test/suite/rpl/r/rpl_skip_error.result80
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result39
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_skip.result82
-rw-r--r--mysql-test/suite/rpl/r/rpl_sp.result178
-rw-r--r--mysql-test/suite/rpl/r/rpl_ssl.result74
-rw-r--r--mysql-test/suite/rpl/r/rpl_ssl1.result111
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result22
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_log.result110
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result239
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result21
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_reset_slave.result179
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_until.result177
-rw-r--r--mysql-test/suite/rpl/r/rpl_temporary_errors.result97
-rw-r--r--mysql-test/suite/rpl/rpl_1slave_base.cnf3
-rw-r--r--mysql-test/suite/rpl/t/rpl_000015-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_000015.cnf2
-rw-r--r--mysql-test/suite/rpl/t/rpl_000015.test40
-rw-r--r--mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_binlog_grant.test10
-rw-r--r--mysql-test/suite/rpl/t/rpl_bug33931.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_change_master.test22
-rw-r--r--mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.cnf8
-rw-r--r--mysql-test/suite/rpl/t/rpl_concurrency_error-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_conditional_comments.test74
-rw-r--r--mysql-test/suite/rpl/t/rpl_critical_errors.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_current_user.cnf9
-rw-r--r--mysql-test/suite/rpl/t/rpl_current_user.test238
-rw-r--r--mysql-test/suite/rpl/t/rpl_ddl-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_do_grant.test23
-rw-r--r--mysql-test/suite/rpl/t/rpl_drop.test53
-rw-r--r--mysql-test/suite/rpl/t/rpl_dual_pos_advance.test54
-rw-r--r--mysql-test/suite/rpl/t/rpl_empty_master_crash.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_flushlog_loop.test26
-rw-r--r--mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test10
-rw-r--r--mysql-test/suite/rpl/t/rpl_grant.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_incident.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_innodb-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_known_bugs_detection.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_loaddata_fatal.test10
-rw-r--r--mysql-test/suite/rpl/t/rpl_log_pos.test23
-rw-r--r--mysql-test/suite/rpl/t/rpl_packet.test39
-rw-r--r--mysql-test/suite/rpl/t/rpl_plugin_load-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test14
-rw-r--r--mysql-test/suite/rpl/t/rpl_replicate_do.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_rotate_logs.test10
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_create_table.test32
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_drop.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_find_row.test (renamed from mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test)31
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test10
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test31
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_until.test41
-rw-r--r--mysql-test/suite/rpl/t/rpl_skip_error.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_skip.test19
-rw-r--r--mysql-test/suite/rpl/t/rpl_sp.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_ssl.test11
-rw-r--r--mysql-test/suite/rpl/t/rpl_ssl1.test17
-rw-r--r--mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test38
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_until.test49
-rw-r--r--mysql-test/suite/rpl/t/rpl_table_options-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_table_options.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_temporary_errors.test43
-rw-r--r--mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_trigger.test9
-rw-r--r--mysql-test/suite/rpl/t/rpl_typeconv-slave.opt2
-rw-r--r--mysql-test/suite/rpl/t/rpl_udf-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_udf-slave.opt1
-rw-r--r--mysql-test/suite/rpl_ndb/my.cnf4
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result40
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result80
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result80
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result409
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result11
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result162
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result29
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result286
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result4
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result23
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result40
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result12
-rw-r--r--mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result70
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test9
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test16
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf4
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test12
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test14
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-master.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-slave.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test23
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt1
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt1
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test349
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt2
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test4
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test6
-rw-r--r--mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test9
-rw-r--r--mysql-test/suite/sphinx/my.cnf30
-rw-r--r--mysql-test/suite/sphinx/sphinx.result39
-rw-r--r--mysql-test/suite/sphinx/sphinx.test23
-rw-r--r--mysql-test/suite/sphinx/suite.opt1
-rw-r--r--mysql-test/suite/sphinx/suite.pm120
-rw-r--r--mysql-test/suite/sphinx/testdata.xml35
-rw-r--r--mysql-test/suite/sys_vars/r/slow_query_log_func.result73
-rw-r--r--mysql-test/suite/sys_vars/r/tx_isolation_func.result25
-rw-r--r--mysql-test/suite/sys_vars/t/autocommit_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/character_set_filesystem_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/identity_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_autoinc_lock_mode_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/last_insert_id_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/max_binlog_cache_size_func-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/slow_query_log_func.test87
-rw-r--r--mysql-test/suite/sys_vars/t/storage_engine_basic-master.opt2
-rw-r--r--mysql-test/suite/sys_vars/t/tx_isolation_func-master.opt4
-rw-r--r--mysql-test/suite/sys_vars/t/tx_isolation_func.test3
-rw-r--r--mysql-test/suite/vcol/r/vcol_archive.result4
-rw-r--r--mysql-test/suite/vcol/r/vcol_blackhole.result4
-rw-r--r--mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result140
-rw-r--r--mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result142
-rw-r--r--mysql-test/suite/vcol/r/vcol_csv.result4
-rw-r--r--mysql-test/suite/vcol/r/vcol_handler_maria.result76
-rw-r--r--mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result20
-rw-r--r--mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result20
-rw-r--r--mysql-test/suite/vcol/r/vcol_keys_innodb.result30
-rw-r--r--mysql-test/suite/vcol/r/vcol_keys_myisam.result30
-rw-r--r--mysql-test/suite/vcol/r/vcol_memory.result4
-rw-r--r--mysql-test/suite/vcol/r/vcol_merge.result2
-rw-r--r--mysql-test/suite/vcol/r/vcol_misc.result134
-rw-r--r--mysql-test/suite/vcol/r/vcol_misc.result.moved20
-rw-r--r--mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result4
-rw-r--r--mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result4
-rw-r--r--mysql-test/suite/vcol/t/vcol_handler_maria.test52
-rw-r--r--mysql-test/suite/vcol/t/vcol_misc.test160
-rw-r--r--mysql-test/suite/vcol/t/vcol_misc.test.moved23
-rw-r--r--mysql-test/t/alter_table-big.test8
-rw-r--r--mysql-test/t/alter_table_trans.test15
-rw-r--r--mysql-test/t/archive.test13
-rw-r--r--mysql-test/t/bug39022.test6
-rw-r--r--mysql-test/t/bug46080-master.opt2
-rw-r--r--mysql-test/t/bug46261-master.opt2
-rw-r--r--mysql-test/t/bug46261.test2
-rw-r--r--mysql-test/t/bug46760-master.opt4
-rw-r--r--mysql-test/t/concurrent_innodb_safelog-master.opt2
-rw-r--r--mysql-test/t/concurrent_innodb_unsafelog-master.opt4
-rw-r--r--mysql-test/t/connect.cnf2
-rw-r--r--mysql-test/t/create-big.test12
-rw-r--r--mysql-test/t/create.test4
-rw-r--r--mysql-test/t/ctype_cp932_binlog_stm.test3
-rw-r--r--mysql-test/t/ctype_filesystem.test2
-rw-r--r--mysql-test/t/delete.test12
-rw-r--r--mysql-test/t/disabled.def7
-rw-r--r--mysql-test/t/drop.test5
-rw-r--r--mysql-test/t/error_simulation.test43
-rw-r--r--mysql-test/t/events_scheduling.test26
-rw-r--r--mysql-test/t/events_time_zone.test6
-rw-r--r--mysql-test/t/exampledb.test22
-rw-r--r--mysql-test/t/explain.test15
-rw-r--r--mysql-test/t/flush_block_commit_notembedded.test4
-rw-r--r--mysql-test/t/fulltext_plugin-master.opt1
-rw-r--r--mysql-test/t/func_gconcat.test16
-rw-r--r--mysql-test/t/func_in.test15
-rw-r--r--mysql-test/t/func_isnull.test15
-rw-r--r--mysql-test/t/func_like.test18
-rw-r--r--mysql-test/t/func_misc.test12
-rw-r--r--mysql-test/t/grant.test2
-rw-r--r--mysql-test/t/group_by.test46
-rw-r--r--mysql-test/t/group_min_max.test15
-rw-r--r--mysql-test/t/handler_myisam.test49
-rw-r--r--mysql-test/t/having.test21
-rw-r--r--mysql-test/t/index_merge_innodb.test53
-rw-r--r--mysql-test/t/information_schema.test26
-rw-r--r--mysql-test/t/information_schema_all_engines-master.opt1
-rw-r--r--mysql-test/t/information_schema_all_engines.test2
-rw-r--r--mysql-test/t/innodb-index.test550
-rw-r--r--mysql-test/t/innodb-use-sys-malloc-master.opt1
-rw-r--r--mysql-test/t/innodb.test8
-rw-r--r--mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt1
-rw-r--r--mysql-test/t/innodb_bug30919-master.opt1
-rw-r--r--mysql-test/t/innodb_ignore_builtin.test4
-rw-r--r--mysql-test/t/innodb_lock_wait_timeout_1-master.opt1
-rw-r--r--mysql-test/t/innodb_mysql-master.opt1
-rw-r--r--mysql-test/t/innodb_mysql_lock2.test803
-rw-r--r--mysql-test/t/innodb_mysql_rbk-master.opt1
-rw-r--r--mysql-test/t/innodb_timeout_rollback-master.opt1
-rw-r--r--mysql-test/t/join_nested.test40
-rw-r--r--mysql-test/t/join_outer.test160
-rw-r--r--mysql-test/t/loaddata.test54
-rw-r--r--mysql-test/t/lock_sync.test867
-rw-r--r--mysql-test/t/log_state.test38
-rw-r--r--mysql-test/t/log_tables_upgrade.test2
-rw-r--r--mysql-test/t/lowercase_view.test22
-rw-r--r--mysql-test/t/multi_update.test6
-rw-r--r--mysql-test/t/mysql_client_test.test2
-rw-r--r--mysql-test/t/mysql_upgrade.test30
-rw-r--r--mysql-test/t/mysqld_option_err.test2
-rw-r--r--mysql-test/t/mysqldump.test31
-rw-r--r--mysql-test/t/mysqlhotcopy_archive.test8
-rw-r--r--mysql-test/t/mysqlhotcopy_myisam.test7
-rw-r--r--mysql-test/t/mysqltest.test12
-rw-r--r--mysql-test/t/mysqltest_ps.test2
-rw-r--r--mysql-test/t/outfile_loaddata.test34
-rw-r--r--mysql-test/t/partition_error.test32
-rw-r--r--mysql-test/t/partition_example-master.opt1
-rw-r--r--mysql-test/t/partition_example.test2
-rw-r--r--mysql-test/t/partition_innodb-master.opt2
-rw-r--r--mysql-test/t/partition_innodb_semi_consistent-master.opt2
-rw-r--r--mysql-test/t/plugin-master.opt1
-rw-r--r--mysql-test/t/plugin.test10
-rw-r--r--mysql-test/t/plugin_load-master.opt3
-rw-r--r--mysql-test/t/plugin_maturity-master.opt1
-rw-r--r--mysql-test/t/plugin_maturity.test6
-rw-r--r--mysql-test/t/plugin_not_embedded-master.opt1
-rw-r--r--mysql-test/t/plugin_not_embedded.test2
-rw-r--r--mysql-test/t/pool_of_threads.cnf2
-rw-r--r--mysql-test/t/renamedb.test2
-rw-r--r--mysql-test/t/schema.test47
-rw-r--r--mysql-test/t/select.test11
-rw-r--r--mysql-test/t/show_check-master.opt2
-rw-r--r--mysql-test/t/sp_trans_log.test6
-rw-r--r--mysql-test/t/ssl_8k_key-master.opt1
-rw-r--r--mysql-test/t/subselect.test25
-rw-r--r--mysql-test/t/subselect4.test26
-rw-r--r--mysql-test/t/type_time.test12
-rw-r--r--mysql-test/t/udf-master.opt1
-rw-r--r--mysql-test/t/udf.test72
-rw-r--r--mysql-test/t/udf_query_cache-master.opt1
-rw-r--r--mysql-test/t/udf_query_cache.test4
-rw-r--r--mysql-test/t/unsafe_binlog_innodb-master.opt2
-rw-r--r--mysql-test/t/update.test20
-rw-r--r--mysql-test/t/upgrade.test45
-rw-r--r--mysql-test/t/variables.test17
-rw-r--r--mysql-test/t/variables_debug.test3
-rw-r--r--mysql-test/t/warnings_engine_disabled.test19
-rw-r--r--mysql-test/valgrind.supp13
-rw-r--r--mysys/CMakeLists.txt2
-rw-r--r--mysys/Makefile.am4
-rw-r--r--mysys/charset.c4
-rw-r--r--mysys/errors.c4
-rw-r--r--mysys/mf_iocache.c11
-rw-r--r--mysys/mf_keycache.c2
-rw-r--r--mysys/mf_pack.c12
-rw-r--r--mysys/mf_soundex.c2
-rw-r--r--mysys/mf_wfile.c2
-rw-r--r--mysys/my_alloc.c18
-rw-r--r--mysys/my_bitmap.c191
-rw-r--r--mysys/my_copy.c33
-rw-r--r--mysys/my_gethwaddr.c2
-rw-r--r--mysys/my_getopt.c54
-rw-r--r--mysys/my_getwd.c10
-rw-r--r--mysys/my_handler.c1
-rw-r--r--mysys/my_malloc.c12
-rw-r--r--mysys/my_redel.c37
-rw-r--r--mysys/my_static.c1
-rw-r--r--mysys/my_sync.c5
-rw-r--r--mysys/safemalloc.c12
-rw-r--r--mysys/stacktrace.c4
-rw-r--r--mysys/thr_alarm.c9
-rw-r--r--mysys/thr_lock.c3
-rw-r--r--netware/Makefile.am3
-rw-r--r--plugin/Makefile.am3
-rw-r--r--plugin/auth/auth_socket.c2
-rw-r--r--plugin/daemon_example/Makefile.am8
-rw-r--r--plugin/fulltext/Makefile.am2
-rw-r--r--pstack/Makefile.am3
-rwxr-xr-xregex/CMakeLists.txt2
-rw-r--r--regex/Makefile.am3
-rw-r--r--regex/engine.c17
-rw-r--r--regex/main.c4
-rw-r--r--regex/regcomp.c7
-rwxr-xr-xscripts/CMakeLists.txt9
-rw-r--r--scripts/Makefile.am11
-rwxr-xr-xscripts/convert-debug-for-diff.sh25
-rw-r--r--scripts/make_binary_distribution.sh14
-rwxr-xr-xscripts/make_win_bin_dist26
-rw-r--r--scripts/mysql_install_db.sh14
-rwxr-xr-xscripts/mysql_secure_installation.pl.in2
-rw-r--r--scripts/mysql_secure_installation.sh39
-rw-r--r--scripts/mysql_system_tables_fix.sql4
-rw-r--r--server-tools/Makefile.am3
-rwxr-xr-xserver-tools/instance-manager/CMakeLists.txt2
-rw-r--r--server-tools/instance-manager/instance_options.cc3
-rw-r--r--server-tools/instance-manager/options.cc74
-rw-r--r--sql-bench/Makefile.am3
-rw-r--r--sql-common/Makefile.am3
-rw-r--r--sql-common/client.c28
-rwxr-xr-xsql/CMakeLists.txt7
-rw-r--r--sql/Makefile.am3
-rw-r--r--sql/authors.h1
-rw-r--r--sql/create_options.cc10
-rw-r--r--sql/event_data_objects.cc10
-rw-r--r--sql/event_data_objects.h6
-rw-r--r--sql/event_db_repository.cc12
-rw-r--r--sql/event_db_repository.h2
-rw-r--r--sql/event_parse_data.h6
-rw-r--r--sql/events.cc9
-rw-r--r--sql/events.h2
-rw-r--r--sql/field.cc42
-rw-r--r--sql/field.h41
-rw-r--r--sql/filesort.cc24
-rw-r--r--sql/ha_ndbcluster.cc2
-rw-r--r--sql/ha_ndbcluster.h2
-rw-r--r--sql/ha_partition.cc80
-rw-r--r--sql/ha_partition.h17
-rw-r--r--sql/handler.cc41
-rw-r--r--sql/handler.h32
-rw-r--r--sql/hash_filo.h2
-rw-r--r--sql/item.cc14
-rw-r--r--sql/item.h48
-rw-r--r--sql/item_buff.cc6
-rw-r--r--sql/item_cmpfunc.cc40
-rw-r--r--sql/item_cmpfunc.h12
-rw-r--r--sql/item_create.cc26
-rw-r--r--sql/item_func.cc55
-rw-r--r--sql/item_func.h17
-rw-r--r--sql/item_strfunc.cc4
-rw-r--r--sql/item_subselect.cc20
-rw-r--r--sql/item_subselect.h12
-rw-r--r--sql/item_sum.cc64
-rw-r--r--sql/item_sum.h6
-rw-r--r--sql/item_timefunc.cc7
-rw-r--r--sql/log.cc397
-rw-r--r--sql/log.h17
-rw-r--r--sql/log_event.cc240
-rw-r--r--sql/log_event.h15
-rw-r--r--sql/log_event_old.cc112
-rw-r--r--sql/mysql_priv.h64
-rw-r--r--sql/mysqld.cc1270
-rw-r--r--sql/net_serv.cc15
-rw-r--r--sql/opt_range.cc130
-rw-r--r--sql/opt_range.h86
-rw-r--r--sql/opt_sum.cc338
-rw-r--r--sql/opt_table_elimination.cc2
-rw-r--r--sql/parse_file.h4
-rw-r--r--sql/partition_info.cc10
-rw-r--r--sql/protocol.cc15
-rw-r--r--sql/records.cc22
-rw-r--r--sql/repl_failsafe.cc2
-rw-r--r--sql/rpl_filter.cc4
-rw-r--r--sql/rpl_mi.cc27
-rw-r--r--sql/rpl_mi.h9
-rw-r--r--sql/rpl_rli.cc5
-rw-r--r--sql/set_var.cc82
-rw-r--r--sql/set_var.h20
-rw-r--r--sql/share/errmsg.txt32
-rw-r--r--sql/slave.cc14
-rw-r--r--sql/sp.cc35
-rw-r--r--sql/sp_head.cc49
-rw-r--r--sql/sp_rcontext.h2
-rw-r--r--sql/spatial.cc44
-rw-r--r--sql/spatial.h26
-rw-r--r--sql/sql_acl.cc53
-rw-r--r--sql/sql_analyse.h2
-rw-r--r--sql/sql_base.cc196
-rw-r--r--sql/sql_binlog.cc29
-rw-r--r--sql/sql_bitmap.h30
-rw-r--r--sql/sql_cache.cc5
-rw-r--r--sql/sql_cache.h6
-rw-r--r--sql/sql_class.cc73
-rw-r--r--sql/sql_class.h121
-rw-r--r--sql/sql_connect.cc1
-rw-r--r--sql/sql_cursor.cc9
-rw-r--r--sql/sql_db.cc45
-rw-r--r--sql/sql_delete.cc30
-rw-r--r--sql/sql_derived.cc6
-rw-r--r--sql/sql_handler.cc25
-rw-r--r--sql/sql_help.cc29
-rw-r--r--sql/sql_insert.cc46
-rw-r--r--sql/sql_lex.cc82
-rw-r--r--sql/sql_lex.h94
-rw-r--r--sql/sql_list.h67
-rw-r--r--sql/sql_load.cc78
-rw-r--r--sql/sql_olap.cc4
-rw-r--r--sql/sql_parse.cc201
-rw-r--r--sql/sql_partition.cc46
-rw-r--r--sql/sql_partition.h2
-rw-r--r--sql/sql_plugin.cc123
-rw-r--r--sql/sql_plugin.h3
-rw-r--r--sql/sql_prepare.cc73
-rw-r--r--sql/sql_repl.cc10
-rw-r--r--sql/sql_select.cc344
-rw-r--r--sql/sql_select.h38
-rw-r--r--sql/sql_servers.cc5
-rw-r--r--sql/sql_show.cc302
-rw-r--r--sql/sql_table.cc172
-rw-r--r--sql/sql_trigger.cc17
-rw-r--r--sql/sql_udf.cc12
-rw-r--r--sql/sql_union.cc38
-rw-r--r--sql/sql_update.cc83
-rw-r--r--sql/sql_view.cc16
-rw-r--r--sql/sql_yacc.yy29
-rw-r--r--sql/table.cc281
-rw-r--r--sql/table.h103
-rw-r--r--sql/thr_malloc.cc8
-rw-r--r--sql/tztime.cc17
-rw-r--r--sql/udf_example.c2
-rw-r--r--sql/unireg.cc14
-rw-r--r--sql/unireg.h4
-rw-r--r--storage/Makefile.am3
-rw-r--r--storage/archive/Makefile.am6
-rw-r--r--storage/archive/archive_reader.c5
-rw-r--r--storage/archive/azio.c11
-rw-r--r--storage/archive/ha_archive.cc66
-rw-r--r--storage/archive/ha_archive.h5
-rw-r--r--storage/blackhole/Makefile.am6
-rw-r--r--storage/csv/Makefile.am4
-rw-r--r--storage/csv/ha_tina.cc19
-rw-r--r--storage/example/Makefile.am7
-rw-r--r--storage/example/ha_example.cc10
-rw-r--r--storage/federated/Makefile.am14
-rw-r--r--storage/federated/ha_federated.cc24
-rw-r--r--storage/federated/ha_federated.h4
-rw-r--r--storage/federated/plug.in (renamed from storage/federated/plug.in.disabled)2
-rw-r--r--storage/federatedx/Makefile.am14
-rw-r--r--storage/federatedx/federatedx_io_mysql.cc69
-rw-r--r--storage/federatedx/federatedx_io_null.cc22
-rw-r--r--storage/federatedx/ha_federatedx.cc224
-rw-r--r--storage/federatedx/ha_federatedx.h55
-rw-r--r--storage/federatedx/plug.in8
-rw-r--r--storage/heap/hp_create.c6
-rw-r--r--storage/heap/hp_rkey.c2
-rw-r--r--storage/heap/hp_test2.c4
-rw-r--r--storage/ibmdb2i/Makefile.am4
-rw-r--r--storage/ibmdb2i/db2i_file.h1
-rw-r--r--storage/ibmdb2i/ha_ibmdb2i.cc4
-rw-r--r--storage/innobase/CMakeLists.txt.disabled (renamed from storage/innobase/CMakeLists.txt)0
-rw-r--r--storage/innobase/Makefile.am6
-rw-r--r--storage/innobase/buf/buf0flu.c3
-rw-r--r--storage/innobase/dict/dict0dict.c58
-rw-r--r--storage/innobase/dict/dict0load.c27
-rw-r--r--storage/innobase/fsp/fsp0fsp.c7
-rw-r--r--storage/innobase/handler/ha_innodb.cc65
-rw-r--r--storage/innobase/handler/ha_innodb.h2
-rw-r--r--storage/innobase/include/db0err.h5
-rw-r--r--storage/innobase/include/dict0dict.h1
-rw-r--r--storage/innobase/include/lock0lock.h12
-rw-r--r--storage/innobase/include/mach0data.ic23
-rw-r--r--storage/innobase/include/row0mysql.h44
-rw-r--r--storage/innobase/include/sync0sync.h2
-rw-r--r--storage/innobase/include/trx0trx.h2
-rw-r--r--storage/innobase/include/univ.i9
-rw-r--r--storage/innobase/lock/lock0lock.c138
-rw-r--r--storage/innobase/os/os0file.c3
-rw-r--r--storage/innobase/row/row0ins.c146
-rw-r--r--storage/innobase/row/row0mysql.c26
-rw-r--r--storage/innobase/row/row0sel.c146
-rw-r--r--storage/innobase/row/row0undo.c4
-rw-r--r--storage/innobase/srv/srv0srv.c10
-rw-r--r--storage/innobase/srv/srv0start.c14
-rw-r--r--storage/innobase/trx/trx0trx.c3
-rw-r--r--storage/innodb_plugin/ChangeLog167
-rw-r--r--storage/innodb_plugin/Makefile.am8
-rw-r--r--storage/innodb_plugin/btr/btr0btr.c21
-rw-r--r--storage/innodb_plugin/btr/btr0cur.c28
-rw-r--r--storage/innodb_plugin/btr/btr0sea.c12
-rw-r--r--storage/innodb_plugin/buf/buf0buddy.c19
-rw-r--r--storage/innodb_plugin/buf/buf0buf.c7
-rw-r--r--storage/innodb_plugin/buf/buf0flu.c26
-rw-r--r--storage/innodb_plugin/buf/buf0lru.c19
-rw-r--r--storage/innodb_plugin/dict/dict0boot.c46
-rw-r--r--storage/innodb_plugin/dict/dict0crea.c28
-rw-r--r--storage/innodb_plugin/dict/dict0dict.c97
-rw-r--r--storage/innodb_plugin/dict/dict0load.c8
-rw-r--r--storage/innodb_plugin/dict/dict0mem.c4
-rw-r--r--storage/innodb_plugin/fil/fil0fil.c150
-rw-r--r--storage/innodb_plugin/fsp/fsp0fsp.c4
-rw-r--r--storage/innodb_plugin/ha/ha0ha.c15
-rw-r--r--storage/innodb_plugin/handler/ha_innodb.cc400
-rw-r--r--storage/innodb_plugin/handler/ha_innodb.h4
-rw-r--r--storage/innodb_plugin/handler/handler0alter.cc2
-rw-r--r--storage/innodb_plugin/include/btr0cur.h2
-rw-r--r--storage/innodb_plugin/include/btr0sea.h8
-rw-r--r--storage/innodb_plugin/include/buf0buf.ic5
-rw-r--r--storage/innodb_plugin/include/buf0lru.h2
-rw-r--r--storage/innodb_plugin/include/db0err.h2
-rw-r--r--storage/innodb_plugin/include/dict0boot.h12
-rw-r--r--storage/innodb_plugin/include/dict0dict.h1
-rw-r--r--storage/innodb_plugin/include/dict0mem.h2
-rw-r--r--storage/innodb_plugin/include/fil0fil.h24
-rw-r--r--storage/innodb_plugin/include/ha_prototypes.h12
-rw-r--r--storage/innodb_plugin/include/lock0lock.h12
-rw-r--r--storage/innodb_plugin/include/log0log.ic5
-rw-r--r--storage/innodb_plugin/include/mach0data.ic23
-rw-r--r--storage/innodb_plugin/include/mem0pool.h12
-rw-r--r--storage/innodb_plugin/include/rem0cmp.h4
-rw-r--r--storage/innodb_plugin/include/row0mysql.h70
-rw-r--r--storage/innodb_plugin/include/sync0rw.h5
-rw-r--r--storage/innodb_plugin/include/sync0sync.h2
-rw-r--r--storage/innodb_plugin/include/trx0trx.h3
-rw-r--r--storage/innodb_plugin/include/univ.i16
-rw-r--r--storage/innodb_plugin/lock/lock0lock.c178
-rw-r--r--storage/innodb_plugin/mem/mem0mem.c12
-rw-r--r--storage/innodb_plugin/mem/mem0pool.c41
-rw-r--r--storage/innodb_plugin/os/os0file.c12
-rw-r--r--storage/innodb_plugin/page/page0zip.c8
-rw-r--r--storage/innodb_plugin/plug.in (renamed from storage/innodb_plugin/plug.in.disabled)2
-rw-r--r--storage/innodb_plugin/rem/rem0cmp.c7
-rw-r--r--storage/innodb_plugin/row/row0ins.c139
-rw-r--r--storage/innodb_plugin/row/row0merge.c136
-rw-r--r--storage/innodb_plugin/row/row0mysql.c81
-rw-r--r--storage/innodb_plugin/row/row0purge.c11
-rw-r--r--storage/innodb_plugin/row/row0row.c8
-rw-r--r--storage/innodb_plugin/row/row0sel.c264
-rw-r--r--storage/innodb_plugin/row/row0uins.c13
-rw-r--r--storage/innodb_plugin/row/row0umod.c82
-rw-r--r--storage/innodb_plugin/row/row0undo.c22
-rw-r--r--storage/innodb_plugin/row/row0upd.c33
-rwxr-xr-xstorage/innodb_plugin/setup.sh2
-rw-r--r--storage/innodb_plugin/srv/srv0srv.c10
-rw-r--r--storage/innodb_plugin/srv/srv0start.c6
-rw-r--r--storage/innodb_plugin/sync/sync0arr.c4
-rw-r--r--storage/innodb_plugin/sync/sync0rw.c24
-rw-r--r--storage/innodb_plugin/trx/trx0i_s.c38
-rw-r--r--storage/innodb_plugin/trx/trx0trx.c2
-rw-r--r--storage/maria/CMakeLists.txt51
-rw-r--r--storage/maria/Makefile.am56
-rw-r--r--storage/maria/compat_aliases.cc245
-rw-r--r--storage/maria/compat_aliases.h27
-rw-r--r--storage/maria/ha_maria.cc275
-rw-r--r--storage/maria/ha_maria.h8
-rw-r--r--storage/maria/ma_bitmap.c44
-rw-r--r--storage/maria/ma_blockrec.c382
-rw-r--r--storage/maria/ma_blockrec.h4
-rw-r--r--storage/maria/ma_check.c133
-rw-r--r--storage/maria/ma_check_standalone.h4
-rw-r--r--storage/maria/ma_checkpoint.c1
-rw-r--r--storage/maria/ma_checkpoint.h2
-rw-r--r--storage/maria/ma_control_file.c13
-rw-r--r--storage/maria/ma_control_file.h2
-rw-r--r--storage/maria/ma_create.c4
-rw-r--r--storage/maria/ma_dbug.c4
-rw-r--r--storage/maria/ma_delete.c223
-rw-r--r--storage/maria/ma_init.c75
-rw-r--r--storage/maria/ma_key_recover.c285
-rw-r--r--storage/maria/ma_key_recover.h16
-rw-r--r--storage/maria/ma_loghandler.c22
-rw-r--r--storage/maria/ma_loghandler.h34
-rw-r--r--storage/maria/ma_open.c20
-rw-r--r--storage/maria/ma_page.c66
-rw-r--r--storage/maria/ma_pagecache.c20
-rw-r--r--storage/maria/ma_recovery.c274
-rw-r--r--storage/maria/ma_recovery.h2
-rw-r--r--storage/maria/ma_recovery_util.c10
-rw-r--r--storage/maria/ma_rt_index.c9
-rw-r--r--storage/maria/ma_rt_key.c3
-rw-r--r--storage/maria/ma_rt_split.c25
-rw-r--r--storage/maria/ma_sort.c8
-rw-r--r--storage/maria/ma_state.c50
-rw-r--r--storage/maria/ma_static.c2
-rw-r--r--storage/maria/ma_test2.c6
-rwxr-xr-xstorage/maria/ma_test_force_start.pl22
-rw-r--r--storage/maria/ma_unique.c3
-rw-r--r--storage/maria/ma_write.c191
-rw-r--r--storage/maria/maria_chk.c242
-rw-r--r--storage/maria/maria_def.h30
-rw-r--r--storage/maria/maria_ftdump.c4
-rw-r--r--storage/maria/maria_pack.c26
-rw-r--r--storage/maria/maria_read_log.c74
-rw-r--r--storage/maria/plug.in24
-rw-r--r--storage/maria/trnman.c4
-rw-r--r--storage/maria/unittest/Makefile.am8
-rw-r--r--storage/maria/unittest/ma_control_file-t.c10
-rw-r--r--storage/maria/unittest/ma_maria_log_cleanup.c6
-rw-r--r--storage/maria/unittest/ma_pagecache_single.c102
-rwxr-xr-xstorage/maria/unittest/ma_test_all-t178
-rw-r--r--storage/maria/unittest/ma_test_loghandler_pagecache-t.c2
-rw-r--r--storage/maria/unittest/ma_test_recovery.expected192
-rwxr-xr-xstorage/maria/unittest/ma_test_recovery.pl68
-rw-r--r--storage/myisam/CMakeLists.txt2
-rw-r--r--storage/myisam/ha_myisam.cc4
-rw-r--r--storage/myisam/ha_myisam.h2
-rw-r--r--storage/myisam/mi_dbug.c4
-rw-r--r--storage/myisam/mi_dynrec.c9
-rw-r--r--storage/myisam/mi_locking.c14
-rw-r--r--storage/myisam/mi_open.c3
-rw-r--r--storage/myisam/mi_page.c2
-rw-r--r--storage/myisam/mi_search.c6
-rw-r--r--storage/myisam/mi_test1.c34
-rw-r--r--storage/myisam/mi_test2.c22
-rw-r--r--storage/myisam/mi_unique.c2
-rw-r--r--storage/myisam/myisamchk.c70
-rw-r--r--storage/myisam/myisamlog.c8
-rw-r--r--storage/myisam/myisampack.c12
-rw-r--r--storage/myisam/rt_split.c3
-rw-r--r--storage/myisammrg/ha_myisammrg.cc10
-rw-r--r--storage/myisammrg/myrg_open.c5
-rw-r--r--storage/mysql_storage_engine.cmake2
-rw-r--r--storage/ndb/src/common/portlib/NdbMutex.c21
-rw-r--r--storage/ndb/src/ndbapi/DictCache.cpp32
-rw-r--r--storage/oqgraph/CMakeLists.txt37
-rw-r--r--storage/oqgraph/Makefile.am18
-rw-r--r--storage/oqgraph/graphcore.cc6
-rw-r--r--storage/oqgraph/plug.in4
-rw-r--r--storage/pbxt/CMakeLists.txt3
-rw-r--r--storage/pbxt/ChangeLog44
-rw-r--r--storage/pbxt/src/cache_xt.cc21
-rw-r--r--storage/pbxt/src/cache_xt.h8
-rw-r--r--storage/pbxt/src/database_xt.h1
-rw-r--r--storage/pbxt/src/datadic_xt.cc9
-rw-r--r--storage/pbxt/src/datalog_xt.cc8
-rw-r--r--storage/pbxt/src/discover_xt.cc16
-rw-r--r--storage/pbxt/src/ha_pbxt.cc111
-rw-r--r--storage/pbxt/src/index_xt.cc124
-rw-r--r--storage/pbxt/src/index_xt.h2
-rw-r--r--storage/pbxt/src/myxt_xt.cc8
-rw-r--r--storage/pbxt/src/myxt_xt.h12
-rw-r--r--storage/pbxt/src/restart_xt.cc58
-rw-r--r--storage/pbxt/src/strutil_xt.cc2
-rw-r--r--storage/pbxt/src/table_xt.cc251
-rw-r--r--storage/pbxt/src/table_xt.h2
-rw-r--r--storage/pbxt/src/thread_xt.cc9
-rw-r--r--storage/pbxt/src/xaction_xt.cc4
-rw-r--r--storage/pbxt/src/xt_defs.h26
-rw-r--r--storage/sphinx/CMakeLists.txt12
-rw-r--r--storage/sphinx/Makefile.am55
-rw-r--r--storage/sphinx/gen_data.php37
-rw-r--r--storage/sphinx/ha_sphinx.cc3115
-rw-r--r--storage/sphinx/ha_sphinx.h159
-rw-r--r--storage/sphinx/make-patch.sh36
-rw-r--r--storage/sphinx/plug.in6
-rw-r--r--storage/sphinx/snippets_udf.cc766
-rw-r--r--storage/sphinx/sphinx.5.0.22.diff284
-rw-r--r--storage/sphinx/sphinx.5.0.27.diff284
-rw-r--r--storage/sphinx/sphinx.5.0.37.diff338
-rw-r--r--storage/xtradb/CMakeLists.txt27
-rw-r--r--storage/xtradb/ChangeLog402
-rw-r--r--storage/xtradb/Makefile.am24
-rw-r--r--storage/xtradb/btr/btr0btr.c120
-rw-r--r--storage/xtradb/btr/btr0cur.c70
-rw-r--r--storage/xtradb/btr/btr0pcur.c27
-rw-r--r--storage/xtradb/btr/btr0sea.c1
-rw-r--r--storage/xtradb/buf/buf0buddy.c25
-rw-r--r--storage/xtradb/buf/buf0buf.c550
-rw-r--r--storage/xtradb/buf/buf0flu.c311
-rw-r--r--storage/xtradb/buf/buf0lru.c151
-rw-r--r--storage/xtradb/buf/buf0rea.c54
-rw-r--r--storage/xtradb/data/data0data.c15
-rw-r--r--storage/xtradb/dict/dict0boot.c117
-rw-r--r--storage/xtradb/dict/dict0crea.c352
-rw-r--r--storage/xtradb/dict/dict0dict.c471
-rw-r--r--storage/xtradb/dict/dict0load.c130
-rw-r--r--storage/xtradb/dict/dict0mem.c6
-rw-r--r--storage/xtradb/fil/fil0fil.c246
-rw-r--r--storage/xtradb/fsp/fsp0fsp.c46
-rw-r--r--storage/xtradb/ha/ha0ha.c16
-rw-r--r--storage/xtradb/ha/hash0hash.c70
-rw-r--r--storage/xtradb/handler/ha_innodb.cc1608
-rw-r--r--storage/xtradb/handler/ha_innodb.h41
-rw-r--r--storage/xtradb/handler/handler0alter.cc99
-rw-r--r--storage/xtradb/handler/i_s.cc295
-rw-r--r--storage/xtradb/handler/i_s.h2
-rw-r--r--storage/xtradb/handler/innodb_patch_info.h3
-rw-r--r--storage/xtradb/ibuf/ibuf0ibuf.c37
-rw-r--r--storage/xtradb/include/btr0btr.h14
-rw-r--r--storage/xtradb/include/btr0btr.ic6
-rw-r--r--storage/xtradb/include/btr0cur.h20
-rw-r--r--storage/xtradb/include/btr0pcur.h52
-rw-r--r--storage/xtradb/include/btr0pcur.ic49
-rw-r--r--storage/xtradb/include/buf0buf.h53
-rw-r--r--storage/xtradb/include/buf0buf.ic15
-rw-r--r--storage/xtradb/include/buf0flu.h32
-rw-r--r--storage/xtradb/include/buf0lru.h2
-rw-r--r--storage/xtradb/include/buf0rea.h3
-rw-r--r--storage/xtradb/include/data0type.ic6
-rw-r--r--storage/xtradb/include/db0err.h2
-rw-r--r--storage/xtradb/include/dict0boot.h23
-rw-r--r--storage/xtradb/include/dict0crea.h18
-rw-r--r--storage/xtradb/include/dict0dict.h29
-rw-r--r--storage/xtradb/include/dict0mem.h26
-rw-r--r--storage/xtradb/include/fil0fil.h33
-rw-r--r--storage/xtradb/include/ha_prototypes.h20
-rw-r--r--storage/xtradb/include/hash0hash.h54
-rw-r--r--storage/xtradb/include/hash0hash.ic20
-rw-r--r--storage/xtradb/include/lock0lock.h24
-rw-r--r--storage/xtradb/include/log0log.h31
-rw-r--r--storage/xtradb/include/log0log.ic16
-rw-r--r--storage/xtradb/include/log0recv.h14
-rw-r--r--storage/xtradb/include/mach0data.ic23
-rw-r--r--storage/xtradb/include/mem0dbg.h9
-rw-r--r--storage/xtradb/include/mem0dbg.ic5
-rw-r--r--storage/xtradb/include/mem0mem.h5
-rw-r--r--storage/xtradb/include/mem0mem.ic10
-rw-r--r--storage/xtradb/include/mtr0log.ic7
-rw-r--r--storage/xtradb/include/mtr0mtr.ic5
-rw-r--r--storage/xtradb/include/os0file.h19
-rw-r--r--storage/xtradb/include/os0proc.h28
-rw-r--r--storage/xtradb/include/page0page.h2
-rw-r--r--storage/xtradb/include/page0page.ic3
-rw-r--r--storage/xtradb/include/page0zip.h2
-rw-r--r--storage/xtradb/include/que0que.h15
-rw-r--r--storage/xtradb/include/que0que.ic16
-rw-r--r--storage/xtradb/include/rem0cmp.h4
-rw-r--r--storage/xtradb/include/rem0rec.ic8
-rw-r--r--storage/xtradb/include/row0mysql.h95
-rw-r--r--storage/xtradb/include/row0sel.h13
-rw-r--r--storage/xtradb/include/srv0srv.h71
-rw-r--r--storage/xtradb/include/sync0rw.h10
-rw-r--r--storage/xtradb/include/sync0sync.h28
-rw-r--r--storage/xtradb/include/trx0rseg.h2
-rw-r--r--storage/xtradb/include/trx0sys.h30
-rw-r--r--storage/xtradb/include/trx0sys.ic34
-rw-r--r--storage/xtradb/include/trx0trx.h85
-rw-r--r--storage/xtradb/include/trx0types.h9
-rw-r--r--storage/xtradb/include/univ.i24
-rw-r--r--storage/xtradb/include/ut0lst.h43
-rw-r--r--storage/xtradb/include/ut0rbt.h309
-rw-r--r--storage/xtradb/include/ut0rnd.ic1
-rw-r--r--storage/xtradb/lock/lock0lock.c445
-rw-r--r--storage/xtradb/log/log0log.c28
-rw-r--r--storage/xtradb/log/log0recv.c90
-rw-r--r--storage/xtradb/mem/mem0dbg.c6
-rw-r--r--storage/xtradb/mem/mem0mem.c20
-rw-r--r--storage/xtradb/os/os0file.c51
-rw-r--r--storage/xtradb/os/os0proc.c172
-rw-r--r--storage/xtradb/page/page0page.c50
-rw-r--r--storage/xtradb/page/page0zip.c12
-rw-r--r--storage/xtradb/plug.in15
-rw-r--r--storage/xtradb/que/que0que.c14
-rw-r--r--storage/xtradb/rem/rem0cmp.c7
-rw-r--r--storage/xtradb/rem/rem0rec.c86
-rw-r--r--storage/xtradb/row/row0ins.c149
-rw-r--r--storage/xtradb/row/row0merge.c286
-rw-r--r--storage/xtradb/row/row0mysql.c419
-rw-r--r--storage/xtradb/row/row0purge.c11
-rw-r--r--storage/xtradb/row/row0row.c17
-rw-r--r--storage/xtradb/row/row0sel.c260
-rw-r--r--storage/xtradb/row/row0uins.c13
-rw-r--r--storage/xtradb/row/row0umod.c115
-rw-r--r--storage/xtradb/row/row0undo.c4
-rw-r--r--storage/xtradb/row/row0upd.c19
-rw-r--r--storage/xtradb/srv/srv0srv.c254
-rw-r--r--storage/xtradb/srv/srv0start.c255
-rw-r--r--storage/xtradb/sync/sync0arr.c4
-rw-r--r--storage/xtradb/sync/sync0rw.c22
-rw-r--r--storage/xtradb/sync/sync0sync.c98
-rw-r--r--storage/xtradb/trx/trx0i_s.c51
-rw-r--r--storage/xtradb/trx/trx0purge.c3
-rw-r--r--storage/xtradb/trx/trx0rec.c24
-rw-r--r--storage/xtradb/trx/trx0rseg.c2
-rw-r--r--storage/xtradb/trx/trx0sys.c270
-rw-r--r--storage/xtradb/trx/trx0trx.c62
-rw-r--r--storage/xtradb/ut/ut0auxconf_atomic_pthread_t_gcc.c43
-rw-r--r--storage/xtradb/ut/ut0auxconf_atomic_pthread_t_solaris.c54
-rw-r--r--storage/xtradb/ut/ut0auxconf_have_gcc_atomics.c61
-rw-r--r--storage/xtradb/ut/ut0auxconf_have_solaris_atomics.c39
-rw-r--r--storage/xtradb/ut/ut0auxconf_pause.c32
-rw-r--r--storage/xtradb/ut/ut0auxconf_sizeof_pthread_t.c35
-rw-r--r--storage/xtradb/ut/ut0rbt.c1249
-rwxr-xr-xstrings/CMakeLists.txt4
-rw-r--r--strings/Makefile.am4
-rw-r--r--strings/bzero.c10
-rw-r--r--strings/ctype-big5.c86
-rw-r--r--strings/ctype-cp932.c76
-rw-r--r--strings/ctype-euc_kr.c4
-rw-r--r--strings/ctype-eucjpms.c4
-rw-r--r--strings/ctype-gb2312.c4
-rw-r--r--strings/ctype-gbk.c86
-rw-r--r--strings/ctype-mb.c22
-rw-r--r--strings/ctype-sjis.c85
-rw-r--r--strings/ctype-uca.c4
-rw-r--r--strings/ctype-ujis.c4
-rw-r--r--strings/decimal.c12
-rw-r--r--strings/longlong2str.c7
-rw-r--r--strings/longlong2str_asm.c4
-rwxr-xr-xstrings/make-ccc2
-rw-r--r--strings/my_vsnprintf.c14
-rw-r--r--strings/strxmov.c1
-rw-r--r--strings/xml.c8
-rw-r--r--support-files/Makefile.am3
-rw-r--r--support-files/compiler_warnings.supp21
-rw-r--r--support-files/my-huge.cnf.sh2
-rw-r--r--support-files/my-large.cnf.sh2
-rw-r--r--support-files/my-medium.cnf.sh2
-rw-r--r--support-files/my-small.cnf.sh2
-rw-r--r--support-files/mysql.spec.sh130
-rwxr-xr-xtests/CMakeLists.txt2
-rw-r--r--tests/Makefile.am3
-rw-r--r--tests/mysql_client_test.c262
-rw-r--r--unittest/Makefile.am7
-rw-r--r--unittest/examples/Makefile.am3
-rw-r--r--unittest/examples/no_plan-t.c11
-rw-r--r--unittest/mysys/Makefile.am7
-rw-r--r--unittest/mytap/tap.c11
-rw-r--r--unittest/mytap/tap.h9
-rw-r--r--unittest/strings/Makefile.am (renamed from storage/oqgraph/CMakeFiles.txt)49
-rw-r--r--unittest/strings/strings-t.c116
-rw-r--r--vio/Makefile.am3
-rw-r--r--win/Makefile.am5
-rw-r--r--win/build-vs10.bat18
-rw-r--r--win/build-vs10_x64.bat18
-rw-r--r--win/cmake/NSIS.template.in995
-rw-r--r--win/configure-mariadb.sh10
-rw-r--r--win/configure.js8
-rw-r--r--win/make_mariadb_win_dist61
-rwxr-xr-xzlib/CMakeLists.txt2
-rw-r--r--zlib/Makefile.am3
1531 files changed, 62614 insertions, 27953 deletions
diff --git a/.bzrignore b/.bzrignore
index a38e39107f1..f49e2f72922 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -1470,15 +1470,15 @@ storage/maria/ma_test1
storage/maria/ma_test2
storage/maria/ma_test3
storage/maria/ma_test_all
-storage/maria/maria.log
-storage/maria/maria_chk
-storage/maria/maria_control
-storage/maria/maria_dump_log
-storage/maria/maria_ftdump
-storage/maria/maria_log
-storage/maria/maria_log.*
-storage/maria/maria_pack
-storage/maria/maria_read_log
+storage/maria/aria.log
+storage/maria/aria_chk
+storage/maria/aria_control
+storage/maria/aria_dump_log
+storage/maria/aria_ftdump
+storage/maria/aria_log
+storage/maria/aria_log.*
+storage/maria/aria_pack
+storage/maria/aria_read_log
storage/maria/tmp
storage/maria/tmp/*
storage/maria/unittest/ma_pagecache_consist_1k-t-big
@@ -1941,3 +1941,5 @@ sql/client_plugin.c
libmysqld/create_options.cc
storage/pbxt/bin/xtstat
libmysqld/sql_expression_cache.cc
+mysql-test/mtr_command
+scripts/convert-debug-for-diff
diff --git a/BUILD/Makefile.am b/BUILD/Makefile.am
index 6cf86f40535..3d9986ab548 100644
--- a/BUILD/Makefile.am
+++ b/BUILD/Makefile.am
@@ -83,6 +83,3 @@ EXTRA_DIST = FINISH.sh \
compile-solaris-x86-32-debug-forte \
compile-solaris-x86-forte-32 \
util.sh
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh
index f38ecf6d8b9..2028db94eed 100755
--- a/BUILD/SETUP.sh
+++ b/BUILD/SETUP.sh
@@ -91,29 +91,26 @@ path=`dirname $0`
get_make_parallel_flag
# SSL library to use.--with-ssl will select our bundled yaSSL
-# implementation of SSL. To use openSSl you will nee too point out
-# the location of openSSL headers and lbs on your system.
+# implementation of SSL. To use OpenSSL you will need to specify
+# the location of OpenSSL headers and libs on your system.
# Ex --with-ssl=/usr
SSL_LIBRARY=--with-ssl
if [ "x$warning_mode" != "xpedantic" ]; then
# Both C and C++ warnings
- warnings="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W"
- warnings="$warnings -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare"
- warnings="$warnings -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable"
+ warnings="-Wall -Wextra -Wunused -Wwrite-strings"
# For more warnings, uncomment the following line
-# warnings="$global_warnings -Wshadow"
+# warnings="$warnings -Wshadow"
# C warnings
- c_warnings="$warnings -Wunused-parameter"
+ c_warnings="$warnings"
# C++ warnings
- cxx_warnings="$warnings"
+ cxx_warnings="$warnings -Wno-unused-parameter"
# cxx_warnings="$cxx_warnings -Woverloaded-virtual -Wsign-promo"
- cxx_warnings="$cxx_warnings -Wreorder"
cxx_warnings="$cxx_warnings -Wctor-dtor-privacy -Wnon-virtual-dtor"
# Added unless --with-debug=full
- debug_extra_cflags="-O0 -g3 -gdwarf-2" #1 -Wuninitialized"
+ debug_extra_cflags="-O0 -g3 -gdwarf-2"
else
warnings="-W -Wall -ansi -pedantic -Wno-long-long -Wno-unused -D_POSIX_SOURCE"
c_warnings="$warnings"
@@ -127,8 +124,12 @@ fi
# Set flags for various build configurations.
# Used in -valgrind builds
+# Override -DFORCE_INIT_OF_VARS from debug_cflags. It enables the macro
+# LINT_INIT(), which is only useful for silencing spurious warnings
+# of static analysis tools. We want LINT_INIT() to be a no-op in Valgrind.
valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_valgrind "
valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
+valgrind_configs="--with-valgrind"
#
# Used in -debug builds
debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS "
@@ -162,7 +163,7 @@ base_configs="--prefix=$prefix --enable-assembler "
base_configs="$base_configs --with-extra-charsets=complex "
base_configs="$base_configs --enable-thread-safe-client "
base_configs="$base_configs --with-big-tables"
-base_configs="$base_configs --with-plugin-maria --with-maria-tmp-tables --without-plugin-innodb_plugin"
+base_configs="$base_configs --with-plugin-aria --with-aria-tmp-tables --without-plugin-innodb_plugin"
# Compile our client programs with static libraries to allow them to be moved
base_configs="$base_configs --with-mysqld-ldflags=-static --with-client-ldflags=-static"
@@ -178,8 +179,7 @@ max_no_embedded_configs="$SSL_LIBRARY --with-plugins=max"
max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache"
max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent"
max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent"
-# Disable NDB in maria max builds
-max_configs=$max_no_ndb_configs
+all_configs="$SSL_LIBRARY --with-plugins=max --with-plugin-ndbcluster --with-embedded-server --with-innodb_plugin --with-libevent"
#
# CPU and platform specific compilation flags.
diff --git a/BUILD/build_mccge.sh b/BUILD/build_mccge.sh
index bf0596239cd..f04caef8df8 100755
--- a/BUILD/build_mccge.sh
+++ b/BUILD/build_mccge.sh
@@ -941,6 +941,7 @@ set_valgrind_flags()
loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_valgrind "
loc_valgrind_flags="$loc_valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
compiler_flags="$compiler_flags $loc_valgrind_flags"
+ with_flags="$with_flags --with-valgrind"
fi
}
diff --git a/BUILD/check-cpu b/BUILD/check-cpu
index c0e87a675cb..390ba545405 100755
--- a/BUILD/check-cpu
+++ b/BUILD/check-cpu
@@ -181,14 +181,17 @@ check_cpu () {
cc=$CC
fi
- cc_ver=`$cc --version | sed 1q`
- cc_verno=`echo $cc_ver | sed -e 's/^.*(GCC)//g; s/[^0-9. ]//g; s/^ *//g; s/ .*//g'`
- set -- `echo $cc_verno | tr '.' ' '`
- cc_major=$1
- cc_minor=$2
- cc_patch=$3
- cc_comp=`expr $cc_major '*' 100 '+' $cc_minor`
-
+ # check if compiler is gcc and dump its version
+ cc_verno=`$cc -dumpversion 2>/dev/null`
+ if test "x$?" = "x0" ; then
+ set -- `echo $cc_verno | tr '.' ' '`
+ cc_ver="GCC"
+ cc_major=$1
+ cc_minor=$2
+ cc_patch=$3
+ cc_comp=`expr $cc_major '*' 100 '+' $cc_minor`
+ fi
+
case "$cc_ver--$cc_verno" in
*GCC*)
# different gcc backends (and versions) have different CPU flags
@@ -229,7 +232,7 @@ check_cpu () {
fi
while [ "$cpu_arg" ] ; do
printf "testing $cpu_arg ... " >&2
-
+
# compile check
eval "$cc -c $check_cpu_cflags __test.c" 2>/dev/null
if test "x$?" = "x0" ; then
@@ -243,5 +246,5 @@ check_cpu () {
done
rm __test.*
}
-
+
check_cpu
diff --git a/BUILD/compile-amd64-debug-all b/BUILD/compile-amd64-debug-all
new file mode 100755
index 00000000000..b8b2ed05402
--- /dev/null
+++ b/BUILD/compile-amd64-debug-all
@@ -0,0 +1,7 @@
+#! /bin/sh
+path=`dirname $0`
+. "$path/SETUP.sh"
+extra_flags="$amd64_cflags $debug_cflags"
+extra_configs="$amd64_configs $debug_configs $all_configs"
+
+. "$path/FINISH.sh"
diff --git a/BUILD/compile-amd64-valgrind-max b/BUILD/compile-amd64-valgrind-max
index 962d0f17b04..fb8dce38df3 100755
--- a/BUILD/compile-amd64-valgrind-max
+++ b/BUILD/compile-amd64-valgrind-max
@@ -4,7 +4,7 @@ path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$amd64_cflags $debug_cflags $valgrind_flags"
-extra_configs="$amd64_configs $debug_configs $max_configs"
+extra_configs="$amd64_configs $debug_configs $valgrind_configs $max_configs"
. "$path/FINISH.sh"
diff --git a/BUILD/compile-pentium-debug-all b/BUILD/compile-pentium-debug-all
new file mode 100755
index 00000000000..710ce8af63c
--- /dev/null
+++ b/BUILD/compile-pentium-debug-all
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+path=`dirname $0`
+set -- "$@" --with-debug=full
+. "$path/SETUP.sh"
+
+extra_flags="$pentium_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $all_configs $error_inject --with-experimental-collations"
+
+. "$path/FINISH.sh"
diff --git a/BUILD/compile-pentium-icc-valgrind-max b/BUILD/compile-pentium-icc-valgrind-max
index 58acf892f5a..0babf9ee881 100755
--- a/BUILD/compile-pentium-icc-valgrind-max
+++ b/BUILD/compile-pentium-icc-valgrind-max
@@ -29,6 +29,6 @@ extra_flags="$pentium_cflags $debug_cflags $valgrind_flags"
c_warnings="-Wall -Wcheck -wd161,444,279,810,981,1292,1469,1572"
cxx_warnings="$c_warnings -wd869,874"
base_cxxflags="-fno-exceptions -fno-rtti"
-extra_configs="$pentium_configs $debug_configs"
+extra_configs="$pentium_configs $debug_configs $valgrind_configs"
. "$path/FINISH.sh"
diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max
index 09cc162d2be..8ef47bfbc17 100755
--- a/BUILD/compile-pentium-valgrind-max
+++ b/BUILD/compile-pentium-valgrind-max
@@ -4,7 +4,7 @@ path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$pentium_cflags $debug_cflags $valgrind_flags"
-extra_configs="$pentium_configs $debug_configs $max_configs"
+extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_configs"
. "$path/FINISH.sh"
diff --git a/BUILD/compile-pentium-valgrind-max-no-ndb b/BUILD/compile-pentium-valgrind-max-no-ndb
index 66f6ae08a7f..f480f83ebf7 100755
--- a/BUILD/compile-pentium-valgrind-max-no-ndb
+++ b/BUILD/compile-pentium-valgrind-max-no-ndb
@@ -4,7 +4,7 @@ path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$pentium_cflags $debug_cflags $valgrind_flags"
-extra_configs="$pentium_configs $debug_configs $max_no_ndb_configs"
+extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_no_ndb_configs"
. "$path/FINISH.sh"
diff --git a/BUILD/compile-pentium64-debug-all b/BUILD/compile-pentium64-debug-all
new file mode 100755
index 00000000000..7824f7ad47f
--- /dev/null
+++ b/BUILD/compile-pentium64-debug-all
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+path=`dirname $0`
+set -- "$@" --with-debug=full
+. "$path/SETUP.sh"
+
+extra_flags="$pentium64_cflags $debug_cflags"
+extra_configs="$pentium_configs $debug_configs $all_configs"
+
+extra_configs="$extra_configs "
+CC="$CC --pipe"
+. "$path/FINISH.sh"
diff --git a/BUILD/compile-pentium64-valgrind-max b/BUILD/compile-pentium64-valgrind-max
index fa476cbb50a..eb3d20c874d 100755
--- a/BUILD/compile-pentium64-valgrind-max
+++ b/BUILD/compile-pentium64-valgrind-max
@@ -4,7 +4,7 @@ path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$pentium64_cflags $debug_cflags $valgrind_flags"
-extra_configs="$pentium_configs $debug_configs $max_configs"
+extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_configs"
. "$path/FINISH.sh"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 442e782a720..5aa865d600f 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -116,8 +116,7 @@ IF(MSVC)
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG_INIT ${CMAKE_CXX_FLAGS_DEBUG_INIT})
- # generate map files, set stack size (see bug#20815)
- SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
+ # set stack size (see bug#20815)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1048576")
# remove support for Exception handling
@@ -283,13 +282,13 @@ IF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
SET (maria_plugin_defs "${maria_plugin_defs},builtin_maria_partition_plugin")
ENDIF(NOT WITHOUT_PARTITION_STORAGE_ENGINE)
-# Special handling for tmp tables with the maria engine
-IF(WITH_MARIA_STORAGE_ENGINE)
- ADD_DEFINITIONS(-DWITH_MARIA_STORAGE_ENGINE)
+# Special handling for tmp tables with the Aria engine
+IF(WITH_ARIA_STORAGE_ENGINE)
+ ADD_DEFINITIONS(-DWITH_ARIA_STORAGE_ENGINE)
IF(WITH_MARIA_TMP_TABLES)
ADD_DEFINITIONS(-DUSE_MARIA_FOR_TMP_TABLES)
ENDIF(WITH_MARIA_TMP_TABLES)
-ENDIF(WITH_MARIA_STORAGE_ENGINE)
+ENDIF(WITH_ARIA_STORAGE_ENGINE)
ADD_DEFINITIONS(${STORAGE_ENGINE_DEFS})
@@ -329,10 +328,132 @@ ADD_SUBDIRECTORY(libmysql)
ADD_SUBDIRECTORY(libservices)
ADD_SUBDIRECTORY(tests)
ADD_SUBDIRECTORY(unittest/mytap)
-ADD_SUBDIRECTORY(unittest/examples)
ADD_SUBDIRECTORY(unittest/mysys)
IF(WITH_EMBEDDED_SERVER)
ADD_SUBDIRECTORY(libmysqld)
ADD_SUBDIRECTORY(libmysqld/examples)
ENDIF(WITH_EMBEDDED_SERVER)
ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
+
+# Set up the installer
+SET(CPACK_PACKAGE_NAME "MariaDB")
+STRING(REPLACE "-MariaDB" "" CPACK_PACKAGE_VERSION ${VERSION})
+SET(CPACK_PACKAGE_VENDOR "Monty Program AB http://www.montyprogram.com")
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB")
+SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING)
+SET(CPACK_GENERATOR NSIS)
+
+# Use our own NSIS template
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/win/cmake" ${CMAKE_MODULE_PATH})
+
+# Installer components and grouping
+SET(CPACK_COMPONENT_GROUP_SERVER_DESCRIPTION "The files necessary for running the MariaDB server.")
+SET(CPACK_COMPONENT_GROUP_DEVELOPMENT_DESCRIPTION "Files used in development on the MariaDB server.")
+SET(CPACK_ALL_INSTALL_TYPES Normal Development)
+SET(CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "MariaDB server")
+SET(CPACK_COMPONENT_RUNTIME_DESCRIPTION "The server itself. You want to install this one.")
+SET(CPACK_COMPONENT_RUNTIME_GROUP "Server")
+SET(CPACK_COMPONENT_RUNTIME_INSTALL_TYPES Normal Development)
+SET(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "Development headers")
+SET(CPACK_COMPONENT_HEADERS_DESCRIPTION "Header files for development on MariaDB.")
+SET(CPACK_COMPONENT_HEADERS_DEPENDS runtime)
+SET(CPACK_COMPONENT_HEADERS_GROUP "Development")
+SET(CPACK_COMPONENT_HEADERS_INSTALL_TYPES Development)
+SET(CPACK_COMPONENT_EMBEDDED_DISPLAY_NAME "Embedded")
+SET(CPACK_COMPONENT_EMBEDDED_DESCRIPTION "Files for embedding MariaDB in other projects.")
+SET(CPACK_COMPONENT_EMBEDDED_DEPENDS headers)
+SET(CPACK_COMPONENT_EMBEDDED_GROUP "Development")
+SET(CPACK_COMPONENT_EMBEDDED_INSTALL_TYPES Development)
+SET(CPACK_COMPONENT_SCRIPTS_DISPLAY_NAME "Server scripts")
+SET(CPACK_COMPONENT_SCRIPTS_DESCRIPTION "SQL and Perl scripts to control and modify the server. You need a perl installation for some of these to work.")
+SET(CPACK_COMPONENT_SCRIPTS_DEPENDS runtime)
+SET(CPACK_COMPONENT_SCRIPTS_GROUP "Server")
+SET(CPACK_COMPONENT_SCRIPTS_INSTALL_TYPES Normal Development)
+SET(CPACK_COMPONENT_MYSQLTEST_DISPLAY_NAME "MariaDB test suite")
+SET(CPACK_COMPONENT_MYSQLTEST_DESCRIPTION "The MariaDB regression test suite.")
+SET(CPACK_COMPONENT_MYSQLTEST_DEPENDS runtime)
+SET(CPACK_COMPONENT_MYSQLTEST_GROUP "Testing")
+SET(CPACK_COMPONENT_MYSQLTEST_INSTALL_TYPES Normal Development)
+SET(CPACK_COMPONENT_SQLBENCH_DISPLAY_NAME "SQL Bench")
+SET(CPACK_COMPONENT_SQLBENCH_DESCRIPTION "The MariaDB benchmark suite.")
+SET(CPACK_COMPONENT_SQLBENCH_DEPENDS runtime)
+SET(CPACK_COMPONENT_SQLBENCH_GROUP "Testing")
+SET(CPACK_COMPONENT_SQLBENCH_INSTALL_TYPES Normal Development)
+
+# Add files to the installer
+INSTALL(FILES COPYING EXCEPTIONS-CLIENT DESTINATION .)
+INSTALL(FILES support-files/my-huge.ini support-files/my-innodb-heavy-4G.ini DESTINATION .)
+INSTALL(FILES support-files/my-large.ini support-files/my-medium.ini DESTINATION .)
+INSTALL(FILES support-files/my-small.ini DESTINATION .)
+INSTALL(FILES Docs/INSTALL-BINARY DESTINATION Docs)
+INSTALL(FILES COPYING DESTINATION Docs)
+FILE(GLOB headerfiles "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
+INSTALL(FILES ${headerfiles} DESTINATION include COMPONENT headers)
+INSTALL(FILES include/mysql/plugin.h DESTINATION include/mysql COMPONENT headers)
+INSTALL(FILES libmysql/libmysql.def DESTINATION include COMPONENT headers)
+
+# Handle the database files
+FILE(GLOB datafiles "${CMAKE_CURRENT_SOURCE_DIR}/win/data/mysql/*")
+INSTALL(FILES ${datafiles} DESTINATION data/clean/mysql)
+INSTALL(FILES win/data/aria_log.00000001 win/data/aria_log_control DESTINATION data/clean)
+INSTALL(DIRECTORY win/data/test DESTINATION data/clean)
+SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS}
+ IfFileExists '$INSTDIR\\\\data\\\\mysql\\\\db.frm' 0 CopyDatabaseFiles
+ MessageBox MB_OK 'There are already database files present in the data directory. Clean database files are not written to the directory'
+ GoTo EndCopyDatabaseFiles
+ CopyDatabaseFiles:
+ CopyFiles '$INSTDIR\\\\data\\\\clean\\\\*' '$INSTDIR\\\\data'
+ EndCopyDatabaseFiles:")
+SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS}
+ MessageBox MB_OK 'This will not delete the database files in $INSTDIR\\\\data'")
+
+# Files in the share dir
+INSTALL(FILES sql/share/errmsg.txt DESTINATION share COMPONENT runtime)
+FILE(GLOB charsets sql/share/charsets/*)
+INSTALL(FILES ${charsets} DESTINATION share/charsets COMPONENT runtime)
+FILE(GLOB share_dirs sql/share/*/errmsg.sys)
+FOREACH(ERRMSGFILE ${share_dirs})
+ STRING(REPLACE "//" "/" ERRMSGFILE ${ERRMSGFILE}) # Work around a cmake bug
+ FILE(RELATIVE_PATH DIRNAME ${PROJECT_SOURCE_DIR}/sql/share ${ERRMSGFILE})
+ STRING(REPLACE "/errmsg.sys" "" DIRNAME ${DIRNAME})
+ INSTALL(FILES ${ERRMSGFILE} DESTINATION share/${DIRNAME} COMPONENT runtime)
+ENDFOREACH(ERRMSGFILE ${share_dirs})
+
+# MTR files
+FILE(GLOB_RECURSE testfiles mysql-test/*)
+FOREACH(testfile ${testfiles})
+ FILE(RELATIVE_PATH dirname ${PROJECT_SOURCE_DIR} ${testfile})
+ GET_FILENAME_COMPONENT(dirname ${dirname} PATH)
+ GET_FILENAME_COMPONENT(filename ${testfile} NAME)
+ GET_FILENAME_COMPONENT(ext ${testfile} EXT)
+ SET(ok "yes")
+ IF (NOT "x_${ext}" STREQUAL "x_")
+ # Test if this is one of the extensions we don't want to install
+ STRING(TOLOWER ${ext} ext)
+ IF(${ext} STREQUAL ".dir" OR ${ext} STREQUAL ".vcproj" OR ${ext} STREQUAL ".user" OR ${ext} STREQUAL ".ilk"
+ OR ${ext} STREQUAL ".idb" OR ${ext} STREQUAL ".map" OR ${ext} STREQUAL ".gcov"
+ OR ${ext} STREQUAL ".supp" OR ${ext} STREQUAL ".am" OR ${ext} STREQUAL ".stress")
+ SET(ok "no")
+ ENDIF()
+ ENDIF(NOT "x_${ext}" STREQUAL "x_")
+ IF (${ok} STREQUAL "yes")
+ # Message("Dir: ${dirname}. File: ${filename}. Ext: ${ext}")
+ INSTALL(FILES ${testfile} DESTINATION ${dirname} COMPONENT mysqltest)
+ ENDIF(${ok} STREQUAL "yes")
+ENDFOREACH(testfile ${testfiles})
+
+# SQL Bench
+FILE(GLOB_RECURSE benchfiles sql-bench/*)
+FOREACH(testfile ${testfiles})
+ FILE(RELATIVE_PATH dirname ${PROJECT_SOURCE_DIR} ${testfile})
+ GET_FILENAME_COMPONENT(dirname ${dirname} PATH)
+ GET_FILENAME_COMPONENT(filename ${testfile} NAME)
+ IF(NOT ${dirname} STREQUAL "sql-bench" OR ${filename} STREQUAL "README")
+ INSTALL(FILES ${testfile} DESTINATION ${dirname} COMPONENT sqlbench)
+ ENDIF()
+ENDFOREACH(testfile ${testfiles})
+
+INCLUDE(InstallRequiredSystemLibraries)
+
+# This must always be the last line
+INCLUDE(CPack)
diff --git a/Docs/Makefile.am b/Docs/Makefile.am
index 24f921a4877..48030153a4e 100644
--- a/Docs/Makefile.am
+++ b/Docs/Makefile.am
@@ -37,6 +37,3 @@ uninstall-local:
@RM@ -f $(DESTDIR)$(infodir)/mysql.info ; \
@RM@ -f $(DESTDIR)$(pkgdatadir)/ChangeLog ; \
fi
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/Makefile.am b/Makefile.am
index 78a023df225..20733428f38 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -161,8 +161,8 @@ test-bt:
-if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \
cd mysql-test ; \
MTR_BUILD_THREAD=auto \
- @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb+rpl_ndb+ps --force --timer \
- --ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \
+ @PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb+ps --force --timer \
+ --ps-protocol --mysqld=--binlog-format=row --suite=ndb ; \
MTR_BUILD_THREAD=auto \
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=ndb --force --timer \
--with-ndbcluster-only ; \
@@ -325,7 +325,7 @@ abi_check_all: $(TEST_PREPROCESSOR_HEADER)
do_abi_check:
set -ex; \
for file in $(abi_headers); do \
- @CC@ -E -nostdinc -dI \
+ @CC@ -E -nostdinc -dI -DMYSQL_ABI_CHECK \
-I$(top_srcdir)/include \
-I$(top_srcdir)/include/mysql \
-I$(top_srcdir)/sql \
@@ -341,6 +341,3 @@ do_abi_check:
@DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \
@RM@ $(top_builddir)/abi_check.out; \
done
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt
index 99d67acbc5b..b22a83faff9 100755
--- a/client/CMakeLists.txt
+++ b/client/CMakeLists.txt
@@ -85,3 +85,5 @@ ENDIF(EMBED_MANIFESTS)
ADD_DEFINITIONS(-DHAVE_DLOPEN)
+INSTALL(TARGETS mysql mysqltest mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow
+ mysqlbinlog mysqladmin mysqlslap echo DESTINATION bin COMPONENT runtime)
diff --git a/client/Makefile.am b/client/Makefile.am
index bfca0ba4bb2..f4855a03797 100644
--- a/client/Makefile.am
+++ b/client/Makefile.am
@@ -123,6 +123,3 @@ link_sources:
rm -f $(srcdir)/my_user.c; \
@LN_CP_F@ $(top_srcdir)/sql-common/my_user.c my_user.c;
echo timestamp > link_sources;
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/client/mysql.cc b/client/mysql.cc
index 161a82a8089..99b8499faea 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -1,5 +1,6 @@
-/* Copyright (C) 2000-2009 MySQL AB & Monty Program Ab
+/* Copyright (C) 2000-2009 MySQL AB
Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright 2000-2010 Monty Program Ab
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
@@ -15,7 +16,6 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#define COPYRIGHT_NOTICE "\
-Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.\n\
This software comes with ABSOLUTELY NO WARRANTY. This is free software,\n\
and you are welcome to modify and redistribute it under the GPL v2 license\n"
@@ -151,16 +151,18 @@ static my_bool ignore_errors=0,wait_flag=0,quick=0,
tty_password= 0, opt_nobeep=0, opt_reconnect=1,
default_charset_used= 0, opt_secure_auth= 0,
default_pager_set= 0, opt_sigint_ignore= 0,
- show_warnings= 0, executing_query= 0, interrupted_query= 0,
+ show_warnings= 0, executing_query= 0,
ignore_spaces= 0;
static my_bool debug_info_flag, debug_check_flag, batch_abort_on_error;
static my_bool column_types_flag;
static my_bool preserve_comments= 0;
+static my_bool in_com_source, aborted= 0;
static ulong opt_max_allowed_packet, opt_net_buffer_length;
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
static uint my_end_arg;
static char * opt_mysql_unix_port=0;
static int connect_flag=CLIENT_INTERACTIVE;
+static int interrupted_query= 0;
static char *current_host,*current_db,*current_user=0,*opt_password=0,
*current_prompt=0, *delimiter_str= 0,
*default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
@@ -1088,6 +1090,7 @@ int main(int argc,char *argv[])
"\\N [\\d]> ",MYF(MY_WME));
current_prompt = my_strdup(default_prompt,MYF(MY_WME));
prompt_counter=0;
+ aborted= 0;
outfile[0]=0; // no (default) outfile
strmov(pager, "stdout"); // the default, if --pager wasn't given
@@ -1282,8 +1285,10 @@ sig_handler mysql_end(int sig)
/*
This function handles sigint calls
If query is in process, kill query
+ If 'source' is executed, abort source command
no query in process, terminate like previous behavior
*/
+
sig_handler handle_sigint(int sig)
{
char kill_buffer[40];
@@ -1322,7 +1327,8 @@ sig_handler handle_sigint(int sig)
mysql_close(kill_mysql);
tee_fprintf(stdout, "Ctrl-C -- query killed. Continuing normally.\n");
interrupted_query= 0;
-
+ if (in_com_source)
+ aborted= 1; // Abort source command
return;
err:
@@ -1348,65 +1354,73 @@ static struct my_option my_long_options[] =
0, 0, 0, 0, 0},
{"abort-source-on-error", OPT_ABORT_SOURCE_ON_ERROR,
"Abort 'source filename' operations in case of errors",
- (uchar**) &batch_abort_on_error, (uchar**) &batch_abort_on_error, 0,
+ &batch_abort_on_error, &batch_abort_on_error, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef __NETWARE__
{"autoclose", OPT_AUTO_CLOSE, "Automatically close the screen on exit for Netware.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"auto-rehash", OPT_AUTO_REHASH,
- "Enable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time. Disable with --disable-auto-rehash.",
- (uchar**) &opt_rehash, (uchar**) &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
+ "Enable automatic rehashing. One doesn't need to use 'rehash' to get table "
+ "and field completion, but startup and reconnecting may take a longer time. "
+ "Disable with --disable-auto-rehash.",
+ &opt_rehash, &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
0, 0},
{"no-auto-rehash", 'A',
- "No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of mysql and disables rehashing on reconnect.",
+ "No automatic rehashing. One has to use 'rehash' to get table and field "
+ "completion. This gives a quicker start of mysql and disables rehashing "
+ "on reconnect.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"batch", 'B',
- "Don't use history file. Disable interactive behavior. (Enables --silent.)", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Don't use history file. Disable interactive behavior. (Enables --silent.)",
+ 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", &charsets_dir,
+ &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"column-type-info", OPT_COLUMN_TYPES, "Display column type information.",
- (uchar**) &column_types_flag, (uchar**) &column_types_flag,
+ &column_types_flag, &column_types_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"comments", 'c', "Preserve comments. Send comments to the server."
" The default is --skip-comments (discard comments), enable with --comments.",
- (uchar**) &preserve_comments, (uchar**) &preserve_comments,
+ &preserve_comments, &preserve_comments,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"compress", 'C', "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
-
#ifdef DBUG_OFF
{"debug", '#', "This is a non-debug version. Catch this and exit.",
0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
#else
- {"debug", '#', "Output debug log.", (uchar**) &default_dbug_option,
- (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log.", &default_dbug_option,
+ &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
- (uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"database", 'D', "Database to use.", (uchar**) &current_db,
- (uchar**) &current_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag,
+ &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"database", 'D', "Database to use.", &current_db,
+ &current_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", (uchar**) &default_charset,
- (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"delimiter", OPT_DELIMITER, "Delimiter to be used.", (uchar**) &delimiter_str,
- (uchar**) &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Set the default character set.", &default_charset,
+ &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"delimiter", OPT_DELIMITER, "Delimiter to be used.", &delimiter_str,
+ &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"execute", 'e', "Execute command and quit. (Disables --force and history file.)", 0,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"vertical", 'E', "Print the output of a query (rows) vertically.",
- (uchar**) &vertical, (uchar**) &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &vertical, &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
{"force", 'f', "Continue even if we get an SQL error. Sets abort-source-on-error to 0",
- (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
+ &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"named-commands", 'G',
- "Enable named commands. Named commands mean this program's internal commands; see mysql> help . When enabled, the named commands can be used from any line of the query, otherwise only from the first line, before an enter. Disable with --disable-named-commands. This option is disabled by default.",
- (uchar**) &named_cmds, (uchar**) &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ "Enable named commands. Named commands mean this program's internal "
+ "commands; see mysql> help . When enabled, the named commands can be "
+ "used from any line of the query, otherwise only from the first line, "
+ "before an enter. Disable with --disable-named-commands. This option "
+ "is disabled by default.",
+ &named_cmds, &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"no-named-commands", 'g',
"Named commands are disabled. Use \\* form only, or use named commands "
@@ -1416,47 +1430,54 @@ static struct my_option my_long_options[] =
"WARNING: option deprecated; use --disable-named-commands instead.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"ignore-spaces", 'i', "Ignore space after function names.",
- (uchar**) &ignore_spaces, (uchar**) &ignore_spaces, 0, GET_BOOL, NO_ARG, 0, 0,
+ &ignore_spaces, &ignore_spaces, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE.",
- (uchar**) &opt_local_infile,
- (uchar**) &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
- {"no-beep", 'b', "Turn off beep on error.", (uchar**) &opt_nobeep,
- (uchar**) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &current_host,
- (uchar**) &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"html", 'H', "Produce HTML output.", (uchar**) &opt_html, (uchar**) &opt_html,
+ &opt_local_infile,
+ &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"no-beep", 'b', "Turn off beep on error.", &opt_nobeep,
+ &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"host", 'h', "Connect to host.", &current_host,
+ &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"html", 'H', "Produce HTML output.", &opt_html, &opt_html,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"xml", 'X', "Produce XML output.", (uchar**) &opt_xml, (uchar**) &opt_xml, 0,
+ {"xml", 'X', "Produce XML output.", &opt_xml, &opt_xml, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"line-numbers", OPT_LINE_NUMBERS, "Write line numbers for errors.",
- (uchar**) &line_numbers, (uchar**) &line_numbers, 0, GET_BOOL,
+ &line_numbers, &line_numbers, 0, GET_BOOL,
NO_ARG, 1, 0, 0, 0, 0, 0},
{"skip-line-numbers", 'L', "Don't write line number for errors.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"unbuffered", 'n', "Flush buffer after each query.", (uchar**) &unbuffered,
- (uchar**) &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"unbuffered", 'n', "Flush buffer after each query.", &unbuffered,
+ &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"column-names", OPT_COLUMN_NAMES, "Write column names in results.",
- (uchar**) &column_names, (uchar**) &column_names, 0, GET_BOOL,
+ &column_names, &column_names, 0, GET_BOOL,
NO_ARG, 1, 0, 0, 0, 0, 0},
{"skip-column-names", 'N',
"Don't write column names in results.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"set-variable", 'O',
- "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.",
+ "Change the value of a variable. Please note that this option is "
+ "deprecated; you can set variables directly with --variable-name=value.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"sigint-ignore", OPT_SIGINT_IGNORE, "Ignore SIGINT (CTRL-C).",
- (uchar**) &opt_sigint_ignore, (uchar**) &opt_sigint_ignore, 0, GET_BOOL,
+ &opt_sigint_ignore, &opt_sigint_ignore, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"one-database", 'o',
- "Only update the default database. This is useful for skipping updates to other database in the update log.",
+ "Only update the default database. This is useful for skipping updates "
+ "to other database in the update log.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef USE_POPEN
{"pager", OPT_PAGER,
- "Pager to use to display results. If you don't supply an option, the default pager is taken from your ENV variable PAGER. Valid pagers are less, more, cat [> filename], etc. See interactive help (\\h) also. This option does not work in batch mode. Disable with --disable-pager. This option is disabled by default.",
+ "Pager to use to display results. If you don't supply an option, the "
+ "default pager is taken from your ENV variable PAGER. Valid pagers are "
+ "less, more, cat [> filename], etc. See interactive help (\\h) also. "
+ "This option does not work in batch mode. Disable with --disable-pager. "
+ "This option is disabled by default.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"no-pager", OPT_NOPAGER,
- "Disable pager and print to stdout. See interactive help (\\h) also. WARNING: option deprecated; use --disable-pager instead.",
+ "Disable pager and print to stdout. See interactive help (\\h) also. "
+ "WARNING: option deprecated; use --disable-pager instead.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"password", 'p',
@@ -1472,48 +1493,53 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &opt_mysql_port,
- (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_mysql_port,
+ &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"prompt", OPT_PROMPT, "Set the mysql prompt to this value.",
- (uchar**) &current_prompt, (uchar**) &current_prompt, 0, GET_STR_ALLOC,
+ &current_prompt, &current_prompt, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"quick", 'q',
- "Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file.",
- (uchar**) &quick, (uchar**) &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Don't cache result, print it row by row. This may slow down the server "
+ "if the output is suspended. Doesn't use history file.",
+ &quick, &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"raw", 'r', "Write fields without conversion. Used with --batch.",
- (uchar**) &opt_raw_data, (uchar**) &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_raw_data, &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
- {"reconnect", OPT_RECONNECT, "Reconnect if the connection is lost. Disable with --disable-reconnect. This option is enabled by default.",
- (uchar**) &opt_reconnect, (uchar**) &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
- {"silent", 's', "Be more silent. Print results with a tab as separator, each row on new line.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0,
- 0, 0},
+ {"reconnect", OPT_RECONNECT, "Reconnect if the connection is lost. Disable "
+ "with --disable-reconnect. This option is enabled by default.",
+ &opt_reconnect, &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ {"silent", 's', "Be more silent. Print results with a tab as separator, "
+ "each row on new line.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
- 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Base name of shared memory.", &shared_memory_base_name,
+ &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR_ALLOC,
+ &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include "sslopt-longopts.h"
- {"table", 't', "Output in table format.", (uchar**) &output_tables,
- (uchar**) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"table", 't', "Output in table format.", &output_tables,
+ &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"tee", OPT_TEE,
- "Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default.",
+ "Append everything into outfile. See interactive help (\\h) also. "
+ "Does not work in batch mode. Disable with --disable-tee. "
+ "This option is disabled by default.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"no-tee", OPT_NOTEE, "Disable outfile. See interactive help (\\h) also. WARNING: Option deprecated; use --disable-tee instead.", 0, 0, 0, GET_NO_ARG,
- NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"no-tee", OPT_NOTEE, "Disable outfile. See interactive help (\\h) also. "
+ "WARNING: Option deprecated; use --disable-tee instead.",
+ 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user.", (uchar**) &current_user,
- (uchar**) &current_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &current_user,
+ &current_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"safe-updates", 'U', "Only allow UPDATE and DELETE that uses keys.",
- (uchar**) &safe_updates, (uchar**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
+ &safe_updates, &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"i-am-a-dummy", 'U', "Synonym for option --safe-updates, -U.",
- (uchar**) &safe_updates, (uchar**) &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
+ &safe_updates, &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"verbose", 'v', "Write more. (-v -v -v gives the table output format).", 0,
0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -1523,35 +1549,32 @@ static struct my_option my_long_options[] =
NO_ARG, 0, 0, 0, 0, 0, 0},
{"connect_timeout", OPT_CONNECT_TIMEOUT,
"Number of seconds before connection timeout.",
- (uchar**) &opt_connect_timeout,
- (uchar**) &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 0, 0, 3600*12, 0,
- 0, 0},
+ &opt_connect_timeout, &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG,
+ 0, 0, 3600*12, 0, 0, 0},
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET,
"The maximum packet length to send to or receive from server.",
- (uchar**) &opt_max_allowed_packet, (uchar**) &opt_max_allowed_packet, 0,
+ &opt_max_allowed_packet, &opt_max_allowed_packet, 0,
GET_ULONG, REQUIRED_ARG, 16 *1024L*1024L, 4096,
(longlong) 2*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
{"net_buffer_length", OPT_NET_BUFFER_LENGTH,
"The buffer size for TCP/IP and socket communication.",
- (uchar**) &opt_net_buffer_length, (uchar**) &opt_net_buffer_length, 0, GET_ULONG,
+ &opt_net_buffer_length, &opt_net_buffer_length, 0, GET_ULONG,
REQUIRED_ARG, 16384, 1024, 512*1024*1024L, MALLOC_OVERHEAD, 1024, 0},
{"select_limit", OPT_SELECT_LIMIT,
"Automatic limit for SELECT when using --safe-updates.",
- (uchar**) &select_limit,
- (uchar**) &select_limit, 0, GET_ULONG, REQUIRED_ARG, 1000L, 1, ULONG_MAX,
- 0, 1, 0},
+ &select_limit, &select_limit, 0, GET_ULONG, REQUIRED_ARG, 1000L,
+ 1, ULONG_MAX, 0, 1, 0},
{"max_join_size", OPT_MAX_JOIN_SIZE,
"Automatic limit for rows in a join when using --safe-updates.",
- (uchar**) &max_join_size,
- (uchar**) &max_join_size, 0, GET_ULONG, REQUIRED_ARG, 1000000L, 1, ULONG_MAX,
- 0, 1, 0},
+ &max_join_size, &max_join_size, 0, GET_ULONG, REQUIRED_ARG, 1000000L,
+ 1, ULONG_MAX, 0, 1, 0},
{"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it"
- " uses old (pre-4.1.1) protocol.", (uchar**) &opt_secure_auth,
- (uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ " uses old (pre-4.1.1) protocol.", &opt_secure_auth,
+ &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"server-arg", OPT_SERVER_ARG, "Send embedded server this as a parameter.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.",
- (uchar**) &show_warnings, (uchar**) &show_warnings, 0, GET_BOOL, NO_ARG,
+ &show_warnings, &show_warnings, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"plugin_dir", OPT_PLUGIN_DIR, "Directory for client-side plugins.",
(uchar**) &opt_plugin_dir, (uchar**) &opt_plugin_dir, 0,
@@ -1869,7 +1892,7 @@ static int read_and_execute(bool interactive)
String buffer;
#endif
- char *line;
+ char *line= 0;
char in_string=0;
ulong line_number=0;
bool ml_comment= 0;
@@ -1877,7 +1900,7 @@ static int read_and_execute(bool interactive)
bool truncated= 0;
status.exit_status=1;
- for (;;)
+ while (!aborted)
{
if (!interactive)
{
@@ -2220,9 +2243,12 @@ static bool add_line(String &buffer,char *line,char *in_string,
the line -- which would occur only because of the
user sending newline -- which is itself whitespace
and should also match.
+ We also ignore lines starting with '--', even if there
+ isn't a whitespace after. (This makes it easier to run
+ mysql-test-run cases through the client)
*/
- (my_isspace(charset_info,pos[2]) ||
- !pos[2])))))
+ ((my_isspace(charset_info,pos[2]) || !pos[2]) ||
+ (buffer.is_empty() && out == line))))))
{
// Flush previously accepted characters
if (out != line)
@@ -3638,7 +3664,7 @@ xmlencode_print(const char *src, uint length)
tee_fputs("NULL", PAGER);
else
{
- for (const char *p = src; length; *p++, length--)
+ for (const char *p = src; length; p++, length--)
{
const char *t;
if ((t = array_value(xmlmeta, *p)))
@@ -3957,7 +3983,7 @@ static int
com_connect(String *buffer, char *line)
{
char *tmp, buff[256];
- bool save_rehash= opt_rehash;
+ my_bool save_rehash= opt_rehash;
int error;
bzero(buff, sizeof(buff));
@@ -4054,17 +4080,19 @@ static int com_source(String *buffer, char *line)
status.file_name=source_name;
glob_buffer.length(0); // Empty command buffer
ignore_errors= !batch_abort_on_error;
+ in_com_source= 1;
error= read_and_execute(false);
ignore_errors= save_ignore_errors;
status=old_status; // Continue as before
+ in_com_source= aborted= 0;
my_fclose(sql_file,MYF(0));
batch_readline_end(line_buff);
/*
If we got an error during source operation, don't abort the client
if ignore_errors is set
*/
- if (error && batch_abort_on_error && ignore_errors)
- error= -1;
+ if (error && !batch_abort_on_error && ignore_errors)
+ error= -1; // Ignore error
return error;
}
@@ -4806,7 +4834,7 @@ static const char *construct_prompt()
struct tm *t = localtime(&lclock);
/* parse thru the settings for the prompt */
- for (char *c = current_prompt; *c ; *c++)
+ for (char *c = current_prompt; *c ; c++)
{
if (*c != PROMPT_CHAR)
processed_prompt.append(*c);
diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c
index 9f9d349c507..c72f13eded6 100644
--- a/client/mysql_upgrade.c
+++ b/client/mysql_upgrade.c
@@ -1,4 +1,5 @@
/* Copyright (C) 2000 MySQL AB
+ Copyright (C) 2010 Monty Program Ab
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
@@ -17,7 +18,7 @@
#include <sslopt-vars.h>
#include "../scripts/mysql_fix_privilege_tables_sql.c"
-#define VER "1.1"
+#define VER "1.2"
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
@@ -34,8 +35,9 @@
static char mysql_path[FN_REFLEN];
static char mysqlcheck_path[FN_REFLEN];
-static my_bool opt_force, opt_verbose, debug_info_flag, debug_check_flag;
-static uint my_end_arg= 0;
+static my_bool opt_force, debug_info_flag, debug_check_flag, opt_silent;
+static my_bool opt_not_used; /* For compatiblity */
+static uint my_end_arg= 0, opt_verbose;
static char *opt_user= (char*)"root";
static DYNAMIC_STRING ds_args;
@@ -62,13 +64,15 @@ static struct my_option my_long_options[]=
{
{"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"basedir", 'b', "Not used by mysql_upgrade. Only for backward compatibility.",
+ {"basedir", 'b',
+ "Not used by mysql_upgrade. Only for backward compatibility.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", 0,
- 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"compress", OPT_COMPRESS, "Use compression in server/client protocol.",
- (uchar**)&not_used, (uchar**)&not_used, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Not used by mysql_upgrade. Only for backward compatibility.",
+ 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
+ {"compress", OPT_COMPRESS,
+ "Not used by mysql_upgrade. Only for backward compatibility.",
+ &not_used, &not_used, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"datadir", 'd',
"Not used by mysql_upgrade. Only for backward compatibility.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -76,26 +80,25 @@ static struct my_option my_long_options[]=
{"debug", '#', "This is a non-debug version. Catch this and exit.",
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
#else
- {"debug", '#', "Output debug log.", (uchar* *) & default_dbug_option,
- (uchar* *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log.", &default_dbug_option,
+ &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
- (uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &debug_check_flag, &debug_check_flag,
+ 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag,
+ &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", 0,
- 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Not used by mysql_upgrade. Only for backward compatibility.",
+ 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"force", 'f', "Force execution of mysqlcheck even if mysql_upgrade "
"has already been executed for the current version of MySQL.",
- (uchar**)&opt_force, (uchar**)&opt_force, 0,
- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"host",'h', "Connect to host.", 0,
+ &opt_force, &opt_force, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"host", 'h', "Connect to host.", 0,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given,"
- " it's solicited on the tty.", (uchar**) &opt_password,(uchar**) &opt_password,
+ " it's solicited on the tty.", &opt_password,&opt_password,
0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#ifdef __WIN__
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0,
@@ -116,20 +119,21 @@ static struct my_option my_long_options[]=
"Base name of shared memory.", 0,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
+ {"silent", 's', "Print less information", &opt_silent,
+ &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h>
{"tmpdir", 't', "Directory for temporary files.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"user", 'u', "User for login if not current user.", (uchar**) &opt_user,
- (uchar**) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &opt_user,
+ &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Display more output about the process.",
- (uchar**) &opt_verbose, (uchar**) &opt_verbose, 0,
- GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ &opt_not_used, &opt_not_used, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"write-binlog", OPT_WRITE_BINLOG,
"All commands including mysqlcheck are binlogged. Enabled by default;"
"use --skip-write-binlog when commands should not be sent to replication slaves.",
- (uchar**) &opt_write_binlog, (uchar**) &opt_write_binlog, 0, GET_BOOL, NO_ARG,
+ &opt_write_binlog, &opt_write_binlog, 0, GET_BOOL, NO_ARG,
1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -173,7 +177,7 @@ static void verbose(const char *fmt, ...)
{
va_list args;
- if (!opt_verbose)
+ if (opt_silent)
return;
/* Print the verbose message */
@@ -266,6 +270,18 @@ get_one_option(int optid, const struct my_option *opt,
/* FALLTHROUGH */
case 'v': /* --verbose */
+ opt_verbose++;
+ if (argument == disabled_my_option)
+ {
+ opt_verbose= 0;
+ opt_silent= 1;
+ }
+ add_option= 0;
+ break;
+ case 's':
+ opt_verbose= 0;
+ add_option= 0;
+ break;
case 'f': /* --force */
add_option= FALSE;
break;
@@ -426,7 +442,8 @@ static void find_tool(char *tool_executable_name, const char *tool_name,
len, self_name, FN_LIBCHAR, tool_name);
}
- verbose("Looking for '%s' as: %s", tool_name, tool_executable_name);
+ if (opt_verbose)
+ verbose("Looking for '%s' as: %s", tool_name, tool_executable_name);
/*
Make sure it can be executed
@@ -496,7 +513,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res,
"--database=mysql",
"--batch", /* Turns off pager etc. */
force ? "--force": "--skip-force",
- ds_res ? "--silent": "",
+ ds_res || opt_silent ? "--silent": "",
"<",
query_file_path,
"2>&1",
@@ -649,6 +666,8 @@ static void create_mysql_upgrade_info_file(void)
static void print_conn_args(const char *tool_name)
{
+ if (opt_verbose < 2)
+ return;
if (conn_args.str[0])
verbose("Running '%s' with connection arguments: %s", tool_name,
conn_args.str);
@@ -664,6 +683,7 @@ static void print_conn_args(const char *tool_name)
static int run_mysqlcheck_upgrade(void)
{
+ verbose("Phase 2/3: Checking and upgrading tables");
print_conn_args("mysqlcheck");
return run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */
@@ -672,6 +692,8 @@ static int run_mysqlcheck_upgrade(void)
"--check-upgrade",
"--all-databases",
"--auto-repair",
+ !opt_silent || opt_verbose ? "--verbose": "",
+ opt_silent ? "--silent": "",
opt_write_binlog ? "--write-binlog" : "--skip-write-binlog",
NULL);
}
@@ -679,6 +701,7 @@ static int run_mysqlcheck_upgrade(void)
static int run_mysqlcheck_fixnames(void)
{
+ verbose("Phase 1/3: Fixing table and database names");
print_conn_args("mysqlcheck");
return run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */
@@ -687,6 +710,8 @@ static int run_mysqlcheck_fixnames(void)
"--all-databases",
"--fix-db-names",
"--fix-table-names",
+ opt_verbose ? "--verbose": "",
+ opt_silent ? "--silent": "",
opt_write_binlog ? "--write-binlog" : "--skip-write-binlog",
NULL);
}
@@ -756,7 +781,7 @@ static int run_sql_fix_privilege_tables(void)
if (init_dynamic_string(&ds_result, "", 512, 512))
die("Out of memory");
- verbose("Running 'mysql_fix_privilege_tables'...");
+ verbose("Phase 3/3: Running 'mysql_fix_privilege_tables'...");
run_query(mysql_fix_privilege_tables,
&ds_result, /* Collect result */
TRUE);
diff --git a/client/mysqladmin.cc b/client/mysqladmin.cc
index f6de2e6bdb1..9e6a1513af6 100644
--- a/client/mysqladmin.cc
+++ b/client/mysqladmin.cc
@@ -128,37 +128,37 @@ static struct my_option my_long_options[] =
#endif
{"count", 'c',
"Number of iterations to make. This works with -i (--sleep) only.",
- (uchar**) &nr_iterations, (uchar**) &nr_iterations, 0, GET_UINT,
+ &nr_iterations, &nr_iterations, 0, GET_UINT,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DBUG_OFF
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"force", 'f',
"Don't ask for confirmation on drop database; with multiple commands, continue even if an error occurs.",
- (uchar**) &option_force, (uchar**) &option_force, 0, GET_BOOL, NO_ARG, 0, 0,
+ &option_force, &option_force, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"compress", 'C', "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", &charsets_dir,
+ &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", (uchar**) &default_charset,
- (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Set the default character set.", &default_charset,
+ &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
+ {"host", 'h', "Connect to host.", &host, &host, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"no-beep", 'b', "Turn off beep on error.", (uchar**) &opt_nobeep,
- (uchar**) &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"no-beep", 'b', "Turn off beep on error.", &opt_nobeep,
+ &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given it's asked from the tty.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -172,50 +172,52 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &tcp_port,
- (uchar**) &tcp_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &tcp_port,
+ &tcp_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"relative", 'r',
- "Show difference between current and previous values when used with -i. Currently only works with extended-status.",
- (uchar**) &opt_relative, (uchar**) &opt_relative, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ "Show difference between current and previous values when used with -i. "
+ "Currently only works with extended-status.",
+ &opt_relative, &opt_relative, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"set-variable", 'O',
- "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.",
+ "Change the value of a variable. Please note that this option is "
+ "deprecated; you can set variables directly with --variable-name=value.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
+ "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"silent", 's', "Silently exit if one can't connect to server.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &unix_port, (uchar**) &unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
+ &unix_port, &unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
0, 0, 0},
{"sleep", 'i', "Execute commands repeatedly with a sleep between.",
- (uchar**) &interval, (uchar**) &interval, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0,
+ &interval, &interval, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0,
0, 0},
#include <sslopt-longopts.h>
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user.", (uchar**) &user,
- (uchar**) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &user,
+ &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"verbose", 'v', "Write more information.", (uchar**) &opt_verbose,
- (uchar**) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"verbose", 'v', "Write more information.", &opt_verbose,
+ &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"vertical", 'E',
"Print output vertically. Is similar to --relative, but prints output vertically.",
- (uchar**) &opt_vertical, (uchar**) &opt_vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_vertical, &opt_vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"wait", 'w', "Wait and retry if connection is down.", 0, 0, 0, GET_UINT,
OPT_ARG, 0, 0, 0, 0, 0, 0},
- {"connect_timeout", OPT_CONNECT_TIMEOUT, "", (uchar**) &opt_connect_timeout,
- (uchar**) &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 3600*12, 0,
+ {"connect_timeout", OPT_CONNECT_TIMEOUT, "", &opt_connect_timeout,
+ &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG, 3600*12, 0,
3600*12, 0, 1, 0},
- {"shutdown_timeout", OPT_SHUTDOWN_TIMEOUT, "", (uchar**) &opt_shutdown_timeout,
- (uchar**) &opt_shutdown_timeout, 0, GET_ULONG, REQUIRED_ARG,
+ {"shutdown_timeout", OPT_SHUTDOWN_TIMEOUT, "", &opt_shutdown_timeout,
+ &opt_shutdown_timeout, 0, GET_ULONG, REQUIRED_ARG,
SHUTDOWN_DEF_TIMEOUT, 0, 3600*12, 0, 1, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -1467,7 +1469,7 @@ static my_bool wait_pidfile(char *pidfile, time_t last_modified,
struct stat *pidfile_status)
{
char buff[FN_REFLEN];
- int error= 1;
+ my_bool error= 1;
uint count= 0;
DBUG_ENTER("wait_pidfile");
diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc
index d5e6799d1c9..420042e6055 100644
--- a/client/mysqlbinlog.cc
+++ b/client/mysqlbinlog.cc
@@ -1062,9 +1062,8 @@ static struct my_option my_long_options[] =
"events); 'always' prints base64 whenever possible. 'always' is for "
"debugging only and should not be used in a production system. If this "
"argument is not given, the default is 'auto'; if it is given with no "
- "argument, 'always' is used."
- ,(uchar**) &opt_base64_output_mode_str,
- (uchar**) &opt_base64_output_mode_str,
+ "argument, 'always' is used.",
+ &opt_base64_output_mode_str, &opt_base64_output_mode_str,
0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
/*
mysqlbinlog needs charsets knowledge, to be able to convert a charset
@@ -1073,43 +1072,43 @@ static struct my_option my_long_options[] =
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
*/
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", &charsets_dir,
+ &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"database", 'd', "List entries for just this database (local log only).",
- (uchar**) &database, (uchar**) &database, 0, GET_STR_ALLOC, REQUIRED_ARG,
+ &database, &database, 0, GET_STR_ALLOC, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#ifndef DBUG_OFF
- {"debug", '#', "Output debug log.", (uchar**) &default_dbug_option,
- (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log.", &default_dbug_option,
+ &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
"enabled --to-last-log and are sending the output to the same MySQL server. "
"This way you could avoid an endless loop. You would also like to use it "
"when restoring after a crash to avoid duplication of the statements you "
"already have. NOTE: you will need a SUPER privilege to use this option.",
- (uchar**) &disable_log_bin, (uchar**) &disable_log_bin, 0, GET_BOOL,
+ &disable_log_bin, &disable_log_bin, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"force-if-open", 'F', "Force if binlog was not closed properly.",
- (uchar**) &force_if_open_opt, (uchar**) &force_if_open_opt, 0, GET_BOOL, NO_ARG,
+ &force_if_open_opt, &force_if_open_opt, 0, GET_BOOL, NO_ARG,
1, 0, 0, 0, 0, 0},
{"force-read", 'f', "Force reading unknown binlog events.",
- (uchar**) &force_opt, (uchar**) &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &force_opt, &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"hexdump", 'H', "Augment output with hexadecimal and ASCII event dump.",
- (uchar**) &opt_hexdump, (uchar**) &opt_hexdump, 0, GET_BOOL, NO_ARG,
+ &opt_hexdump, &opt_hexdump, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"host", 'h', "Get the binlog from server.", (uchar**) &host, (uchar**) &host,
+ {"host", 'h', "Get the binlog from server.", &host, &host,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"local-load", 'l', "Prepare local temporary files for LOAD DATA INFILE in the specified directory.",
- (uchar**) &dirname_for_local_load, (uchar**) &dirname_for_local_load, 0,
+ &dirname_for_local_load, &dirname_for_local_load, 0,
GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"offset", 'o', "Skip the first N entries.", (uchar**) &offset, (uchar**) &offset,
+ {"offset", 'o', "Skip the first N entries.", &offset, &offset,
0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p', "Password to connect to remote server.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -1119,10 +1118,10 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &port, (uchar**) &port, 0, GET_INT, REQUIRED_ARG,
+ &port, &port, 0, GET_INT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"position", OPT_POSITION, "Deprecated. Use --start-position instead.",
- (uchar**) &start_position, (uchar**) &start_position, 0, GET_ULL,
+ &start_position, &start_position, 0, GET_ULL,
REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE,
/* COM_BINLOG_DUMP accepts only 4 bytes for the position */
(ulonglong)(~(uint32)0), 0, 0, 0},
@@ -1130,31 +1129,31 @@ static struct my_option my_long_options[] =
"The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"read-from-remote-server", 'R', "Read binary logs from a MySQL server.",
- (uchar**) &remote_opt, (uchar**) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &remote_opt, &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"server-id", OPT_SERVER_ID,
"Extract only binlog entries created by the server having the given id.",
- (uchar**) &server_id, (uchar**) &server_id, 0, GET_ULONG,
+ &server_id, &server_id, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"set-charset", OPT_SET_CHARSET,
- "Add 'SET NAMES character_set' to the output.", (uchar**) &charset,
- (uchar**) &charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Add 'SET NAMES character_set' to the output.", &charset,
+ &charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name,
- (uchar**) &shared_memory_base_name,
+ "Base name of shared memory.", &shared_memory_base_name,
+ &shared_memory_base_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"short-form", 's', "Just show regular queries: no extra info and no "
"row-based events. This is for testing only, and should not be used in "
"production systems. If you want to suppress base64-output, consider "
"using --base64-output=never instead.",
- (uchar**) &short_form, (uchar**) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &short_form, &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &sock, (uchar**) &sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0,
+ &sock, &sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0,
0, 0},
{"start-datetime", OPT_START_DATETIME,
"Start reading the binlog at first event having a datetime equal or "
@@ -1162,12 +1161,12 @@ static struct my_option my_long_options[] =
"in the local time zone, in any format accepted by the MySQL server "
"for DATETIME and TIMESTAMP types, for example: 2004-12-25 11:25:56 "
"(you should probably use quotes for your shell to set it properly).",
- (uchar**) &start_datetime_str, (uchar**) &start_datetime_str,
+ &start_datetime_str, &start_datetime_str,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"start-position", 'j',
"Start reading the binlog at position N. Applies to the first binlog "
"passed on the command line.",
- (uchar**) &start_position, (uchar**) &start_position, 0, GET_ULL,
+ &start_position, &start_position, 0, GET_ULL,
REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE,
/* COM_BINLOG_DUMP accepts only 4 bytes for the position */
(ulonglong)(~(uint32)0), 0, 0, 0},
@@ -1177,22 +1176,22 @@ static struct my_option my_long_options[] =
"in the local time zone, in any format accepted by the MySQL server "
"for DATETIME and TIMESTAMP types, for example: 2004-12-25 11:25:56 "
"(you should probably use quotes for your shell to set it properly).",
- (uchar**) &stop_datetime_str, (uchar**) &stop_datetime_str,
+ &stop_datetime_str, &stop_datetime_str,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"stop-position", OPT_STOP_POSITION,
"Stop reading the binlog at position N. Applies to the last binlog "
"passed on the command line.",
- (uchar**) &stop_position, (uchar**) &stop_position, 0, GET_ULL,
+ &stop_position, &stop_position, 0, GET_ULL,
REQUIRED_ARG, (ulonglong)(~(my_off_t)0), BIN_LOG_HEADER_SIZE,
(ulonglong)(~(my_off_t)0), 0, 0, 0},
{"to-last-log", 't', "Requires -R. Will not stop at the end of the \
requested binlog but rather continue printing until the end of the last \
binlog of the MySQL server. If you send the output to the same MySQL server, \
that may lead to an endless loop.",
- (uchar**) &to_last_remote_log, (uchar**) &to_last_remote_log, 0, GET_BOOL,
+ &to_last_remote_log, &to_last_remote_log, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"user", 'u', "Connect to the remote server as username.",
- (uchar**) &user, (uchar**) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
+ &user, &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
0, 0},
{"verbose", 'v', "Reconstruct SQL statements out of row events. "
"-v -v adds comments on column data types.",
@@ -1201,7 +1200,7 @@ that may lead to an endless loop.",
0, 0, 0, 0, 0},
{"open_files_limit", OPT_OPEN_FILES_LIMIT,
"Used to reserve file descriptors for use by this program.",
- (uchar**) &open_files_limit, (uchar**) &open_files_limit, 0, GET_ULONG,
+ &open_files_limit, &open_files_limit, 0, GET_ULONG,
REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0},
{"rewrite-db", OPT_REWRITE_DB,
"Updates to a database with a different name than the original. \
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c
index 0785c33cf26..41249949633 100644
--- a/client/mysqlcheck.c
+++ b/client/mysqlcheck.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2000 MySQL AB
+/* Copyright (C) 2000 MySQL AB & Jani Tolonen
+ Copyright (C) 2010 Monty Program Ab
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
@@ -15,7 +16,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
-#define CHECK_VERSION "2.5.0"
+#define CHECK_VERSION "2.6.0"
#include "client_priv.h"
#include <m_ctype.h>
@@ -54,13 +55,13 @@ static struct my_option my_long_options[] =
{
{"all-databases", 'A',
"Check all the databases. This is the same as --databases with all databases selected.",
- (uchar**) &opt_alldbs, (uchar**) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_alldbs, &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"analyze", 'a', "Analyze given tables.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0,
0, 0, 0, 0},
{"all-in-1", '1',
"Instead of issuing one query for each table, use one query per database, naming all tables in the database in a comma-separated list.",
- (uchar**) &opt_all_in_1, (uchar**) &opt_all_in_1, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_all_in_1, &opt_all_in_1, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
#ifdef __NETWARE__
{"autoclose", OPT_AUTO_CLOSE, "Automatically close the screen on exit for Netware.",
@@ -68,11 +69,11 @@ static struct my_option my_long_options[] =
#endif
{"auto-repair", OPT_AUTO_REPAIR,
"If a checked table is corrupted, automatically fix it. Repairing will be done after all tables have been checked, if corrupted ones were found.",
- (uchar**) &opt_auto_repair, (uchar**) &opt_auto_repair, 0, GET_BOOL, NO_ARG, 0,
+ &opt_auto_repair, &opt_auto_repair, 0, GET_BOOL, NO_ARG, 0,
0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", (char**) &charsets_dir,
+ (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"check", 'c', "Check table for errors.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0,
0, 0, 0, 0},
{"check-only-changed", 'C',
@@ -82,11 +83,11 @@ static struct my_option my_long_options[] =
"Check tables for version-dependent changes. May be used with --auto-repair to correct tables requiring version-dependent updates.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"compress", OPT_COMPRESS, "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"databases", 'B',
"Check several databases. Note the difference in usage; in this case no tables are given. All name arguments are regarded as database names.",
- (uchar**) &opt_databases, (uchar**) &opt_databases, 0, GET_BOOL, NO_ARG,
+ &opt_databases, &opt_databases, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
#ifdef DBUG_OFF
{"debug", '#', "This is a non-debug version. Catch this and exit.",
@@ -96,40 +97,40 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", (uchar**) &default_charset,
- (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Set the default character set.", &default_charset,
+ &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"fast",'F', "Check only tables that haven't been closed properly.",
- (uchar**) &opt_fast, (uchar**) &opt_fast, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &opt_fast, &opt_fast, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
{"fix-db-names", OPT_FIX_DB_NAMES, "Fix database names.",
- (uchar**) &opt_fix_db_names, (uchar**) &opt_fix_db_names,
+ &opt_fix_db_names, &opt_fix_db_names,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"fix-table-names", OPT_FIX_TABLE_NAMES, "Fix table names.",
- (uchar**) &opt_fix_table_names, (uchar**) &opt_fix_table_names,
+ &opt_fix_table_names, &opt_fix_table_names,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"force", 'f', "Continue even if we get an SQL error.",
- (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
+ &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"extended", 'e',
"If you are using this option with CHECK TABLE, it will ensure that the table is 100 percent consistent, but will take a long time. If you are using this option with REPAIR TABLE, it will force using old slow repair with keycache method, instead of much faster repair by sorting.",
- (uchar**) &opt_extended, (uchar**) &opt_extended, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_extended, &opt_extended, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"host",'h', "Connect to host.", (uchar**) &current_host,
- (uchar**) &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"host",'h', "Connect to host.", &current_host,
+ &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"medium-check", 'm',
"Faster than extended-check, but only finds 99.99 percent of all errors. Should be good enough for most cases.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"write-binlog", OPT_WRITE_BINLOG,
"Log ANALYZE, OPTIMIZE and REPAIR TABLE commands. Enabled by default; use --skip-write-binlog when commands should not be sent to replication slaves.",
- (uchar**) &opt_write_binlog, (uchar**) &opt_write_binlog, 0, GET_BOOL, NO_ARG,
+ &opt_write_binlog, &opt_write_binlog, 0, GET_BOOL, NO_ARG,
1, 0, 0, 0, 0, 0},
{"optimize", 'o', "Optimize table.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0,
0, 0},
@@ -146,38 +147,38 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &opt_mysql_port,
- (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
+ &opt_mysql_port,
+ &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
0},
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"quick", 'q',
"If you are using this option with CHECK TABLE, it prevents the check from scanning the rows to check for wrong links. This is the fastest check. If you are using this option with REPAIR TABLE, it will try to repair only the index tree. This is the fastest repair method for a table.",
- (uchar**) &opt_quick, (uchar**) &opt_quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &opt_quick, &opt_quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
{"repair", 'r',
"Can fix almost anything except unique keys that aren't unique.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
+ "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"silent", 's', "Print only error messages.", (uchar**) &opt_silent,
- (uchar**) &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"silent", 's', "Print only error messages.", &opt_silent,
+ &opt_silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR,
+ &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h>
{"tables", OPT_TABLES, "Overrides option --databases (-B).", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"use-frm", OPT_FRM,
"When used with REPAIR, get table structure from .frm file, so the table can be repaired even if .MYI header is corrupted.",
- (uchar**) &opt_frm, (uchar**) &opt_frm, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &opt_frm, &opt_frm, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user.", (uchar**) &current_user,
- (uchar**) &current_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &current_user,
+ &current_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"verbose", 'v', "Print info about the various stages.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -222,24 +223,26 @@ static void usage(void)
{
print_version();
puts("By Jani Tolonen, 2001-04-20, MySQL Development Team.\n");
- puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\n");
+ puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,");
puts("and you are welcome to modify and redistribute it under the GPL license.\n");
+ printf("Usage: %s [OPTIONS] database [tables]\n", my_progname);
+ printf("OR %s [OPTIONS] --databases DB1 [DB2 DB3...]\n",
+ my_progname);
+ printf("OR %s [OPTIONS] --all-databases\n\n", my_progname);
puts("This program can be used to CHECK (-c, -m, -C), REPAIR (-r), ANALYZE (-a),");
puts("or OPTIMIZE (-o) tables. Some of the options (like -e or -q) can be");
puts("used at the same time. Not all options are supported by all storage engines.");
- puts("Please consult the MySQL manual for latest information about the");
- puts("above. The options -c, -r, -a, and -o are exclusive to each other, which");
+ puts("The options -c, -r, -a, and -o are exclusive to each other, which");
puts("means that the last option will be used, if several was specified.\n");
- puts("The option -c will be used by default, if none was specified. You");
- puts("can change the default behavior by making a symbolic link, or");
+ puts("The option -c (--check) will be used by default, if none was specified.");
+ puts("You can change the default behavior by making a symbolic link, or");
puts("copying this file somewhere with another name, the alternatives are:");
puts("mysqlrepair: The default option will be -r");
puts("mysqlanalyze: The default option will be -a");
puts("mysqloptimize: The default option will be -o\n");
- printf("Usage: %s [OPTIONS] database [tables]\n", my_progname);
- printf("OR %s [OPTIONS] --databases DB1 [DB2 DB3...]\n",
- my_progname);
- printf("OR %s [OPTIONS] --all-databases\n", my_progname);
+ puts("Please consult the MariaDB/MySQL knowledgebase at");
+ puts("http://kb.askmonty.org/v/mysqlcheck for latest information about");
+ puts("this program.");
print_defaults("my", load_default_groups);
my_print_help(my_long_options);
my_print_variables(my_long_options);
@@ -416,6 +419,8 @@ static int process_all_databases()
MYF(0), mysql_error(sock));
return 1;
}
+ if (verbose)
+ printf("Processing databases\n");
while ((row = mysql_fetch_row(tableres)))
{
if (process_one_db(row[0]))
@@ -429,6 +434,8 @@ static int process_all_databases()
static int process_databases(char **db_names)
{
int result = 0;
+ if (verbose)
+ printf("Processing databases\n");
for ( ; *db_names ; db_names++)
{
if (process_one_db(*db_names))
@@ -521,6 +528,7 @@ static int process_all_tables_in_db(char *database)
MYSQL_RES *res;
MYSQL_ROW row;
uint num_columns;
+ my_bool system_database= 0;
LINT_INIT(res);
if (use_db(database))
@@ -534,6 +542,9 @@ static int process_all_tables_in_db(char *database)
return 1;
}
+ if (!strcmp(database, "mysql") || !strcmp(database, "MYSQL"))
+ system_database= 1;
+
num_columns= mysql_num_fields(res);
if (opt_all_in_1 && what_to_do != DO_UPGRADE)
@@ -576,6 +587,10 @@ static int process_all_tables_in_db(char *database)
/* Skip views if we don't perform renaming. */
if ((what_to_do != DO_UPGRADE) && (num_columns == 2) && (strcmp(row[1], "VIEW") == 0))
continue;
+ if (system_database &&
+ (!strcmp(row[0], "general_log") ||
+ !strcmp(row[0], "slow_log")))
+ continue; /* Skip logging tables */
handle_request_for_tables(row[0], fixed_name_length(row[0]));
}
@@ -624,6 +639,8 @@ static int fix_database_storage_name(const char *name)
static int process_one_db(char *database)
{
+ if (verbose)
+ puts(database);
if (what_to_do == DO_UPGRADE)
{
int rc= 0;
@@ -731,7 +748,7 @@ static void print_result()
{
MYSQL_RES *res;
MYSQL_ROW row;
- char prev[NAME_LEN*2+2];
+ char prev[(NAME_LEN+9)*2+2];
uint i;
my_bool found_error=0;
@@ -761,7 +778,15 @@ static void print_result()
printf("%-50s %s", row[0], row[3]);
else if (!status && changed)
{
- printf("%s\n%-9s: %s", row[0], row[2], row[3]);
+ /*
+ If the error message includes REPAIR TABLE, we assume it means
+ we have to run upgrade on it. In this case we write a nicer message
+ than "Please do "REPAIR TABLE""...
+ */
+ if (!strcmp(row[2],"error") && strinstr(row[3],"REPAIR TABLE") != 0)
+ printf("%-50s %s", row[0], "Needs upgrade");
+ else
+ printf("%s\n%-9s: %s", row[0], row[2], row[3]);
if (strcmp(row[2],"note"))
found_error=1;
}
@@ -780,7 +805,7 @@ static void print_result()
static int dbConnect(char *host, char *user, char *passwd)
{
DBUG_ENTER("dbConnect");
- if (verbose)
+ if (verbose > 1)
{
fprintf(stderr, "# Connecting to %s...\n", host ? host : "localhost");
}
@@ -813,7 +838,7 @@ static int dbConnect(char *host, char *user, char *passwd)
static void dbDisconnect(char *host)
{
- if (verbose)
+ if (verbose > 1)
fprintf(stderr, "# Disconnecting from %s...\n", host ? host : "localhost");
mysql_close(sock);
} /* dbDisconnect */
diff --git a/client/mysqldump.c b/client/mysqldump.c
index dca8ecb7dfb..bb09af4a3c2 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -180,115 +180,115 @@ HASH ignore_table;
static struct my_option my_long_options[] =
{
{"all", OPT_ALL, "Deprecated. Use --create-options instead.",
- (uchar**) &create_options, (uchar**) &create_options, 0, GET_BOOL, NO_ARG, 1,
+ &create_options, &create_options, 0, GET_BOOL, NO_ARG, 1,
0, 0, 0, 0, 0},
{"all-databases", 'A',
"Dump all the databases. This will be same as --databases with all databases selected.",
- (uchar**) &opt_alldbs, (uchar**) &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_alldbs, &opt_alldbs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"all-tablespaces", 'Y',
"Dump all the tablespaces.",
- (uchar**) &opt_alltspcs, (uchar**) &opt_alltspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_alltspcs, &opt_alltspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"no-tablespaces", 'y',
"Do not dump any tablespace information.",
- (uchar**) &opt_notspcs, (uchar**) &opt_notspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_notspcs, &opt_notspcs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"add-drop-database", OPT_DROP_DATABASE, "Add a DROP DATABASE before each create.",
- (uchar**) &opt_drop_database, (uchar**) &opt_drop_database, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &opt_drop_database, &opt_drop_database, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
{"add-drop-table", OPT_DROP, "Add a DROP TABLE before each create.",
- (uchar**) &opt_drop, (uchar**) &opt_drop, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
+ &opt_drop, &opt_drop, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
0},
{"add-locks", OPT_LOCKS, "Add locks around INSERT statements.",
- (uchar**) &opt_lock, (uchar**) &opt_lock, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
+ &opt_lock, &opt_lock, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0,
0},
{"allow-keywords", OPT_KEYWORDS,
- "Allow creation of column names that are keywords.", (uchar**) &opt_keywords,
- (uchar**) &opt_keywords, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Allow creation of column names that are keywords.", &opt_keywords,
+ &opt_keywords, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef __NETWARE__
{"autoclose", OPT_AUTO_CLOSE, "Automatically close the screen on exit for Netware.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", (char**) &charsets_dir,
+ (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"comments", 'i', "Write additional information.",
- (uchar**) &opt_comments, (uchar**) &opt_comments, 0, GET_BOOL, NO_ARG,
+ &opt_comments, &opt_comments, 0, GET_BOOL, NO_ARG,
1, 0, 0, 0, 0, 0},
{"compatible", OPT_COMPATIBLE,
"Change the dump to be compatible with a given mode. By default tables are dumped in a format optimized for MySQL. Legal modes are: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options. One can use several modes separated by commas. Note: Requires MySQL server version 4.1.0 or higher. This option is ignored with earlier server versions.",
- (uchar**) &opt_compatible_mode_str, (uchar**) &opt_compatible_mode_str, 0,
+ &opt_compatible_mode_str, &opt_compatible_mode_str, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"compact", OPT_COMPACT,
"Give less verbose output (useful for debugging). Disables structure comments and header/footer constructs. Enables options --skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys --skip-set-charset.",
- (uchar**) &opt_compact, (uchar**) &opt_compact, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_compact, &opt_compact, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"complete-insert", 'c', "Use complete insert statements.",
- (uchar**) &opt_complete_insert, (uchar**) &opt_complete_insert, 0, GET_BOOL,
+ &opt_complete_insert, &opt_complete_insert, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"compress", 'C', "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"create-options", 'a',
"Include all MySQL specific create options.",
- (uchar**) &create_options, (uchar**) &create_options, 0, GET_BOOL, NO_ARG, 1,
+ &create_options, &create_options, 0, GET_BOOL, NO_ARG, 1,
0, 0, 0, 0, 0},
{"databases", 'B',
"Dump several databases. Note the difference in usage; in this case no tables are given. All name arguments are regarded as database names. 'USE db_name;' will be included in the output.",
- (uchar**) &opt_databases, (uchar**) &opt_databases, 0, GET_BOOL, NO_ARG, 0, 0,
+ &opt_databases, &opt_databases, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
#ifdef DBUG_OFF
{"debug", '#', "This is a non-debug version. Catch this and exit.",
0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
#else
- {"debug", '#', "Output debug log.", (uchar**) &default_dbug_option,
- (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log.", (char**) &default_dbug_option,
+ (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", (uchar**) &default_charset,
- (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Set the default character set.", &default_charset,
+ &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"delayed-insert", OPT_DELAYED, "Insert rows with INSERT DELAYED.",
- (uchar**) &opt_delayed, (uchar**) &opt_delayed, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_delayed, &opt_delayed, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"delete-master-logs", OPT_DELETE_MASTER_LOGS,
"Delete logs on master after backup. This automatically enables --master-data.",
- (uchar**) &opt_delete_master_logs, (uchar**) &opt_delete_master_logs, 0,
+ &opt_delete_master_logs, &opt_delete_master_logs, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"disable-keys", 'K',
- "'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output.", (uchar**) &opt_disable_keys,
- (uchar**) &opt_disable_keys, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ "'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output.", &opt_disable_keys,
+ &opt_disable_keys, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"events", 'E', "Dump events.",
- (uchar**) &opt_events, (uchar**) &opt_events, 0, GET_BOOL,
+ &opt_events, &opt_events, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"extended-insert", 'e',
"Use multiple-row INSERT syntax that include several VALUES lists.",
- (uchar**) &extended_insert, (uchar**) &extended_insert, 0, GET_BOOL, NO_ARG,
+ &extended_insert, &extended_insert, 0, GET_BOOL, NO_ARG,
1, 0, 0, 0, 0, 0},
{"fields-terminated-by", OPT_FTB,
"Fields in the output file are terminated by the given string.",
- (uchar**) &fields_terminated, (uchar**) &fields_terminated, 0,
+ &fields_terminated, &fields_terminated, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"fields-enclosed-by", OPT_ENC,
"Fields in the output file are enclosed by the given character.",
- (uchar**) &enclosed, (uchar**) &enclosed, 0,
+ &enclosed, &enclosed, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0 ,0, 0},
{"fields-optionally-enclosed-by", OPT_O_ENC,
"Fields in the output file are optionally enclosed by the given character.",
- (uchar**) &opt_enclosed, (uchar**) &opt_enclosed, 0,
+ &opt_enclosed, &opt_enclosed, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0 ,0, 0},
{"fields-escaped-by", OPT_ESC,
"Fields in the output file are escaped by the given character.",
- (uchar**) &escaped, (uchar**) &escaped, 0,
+ &escaped, &escaped, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"first-slave", OPT_FIRST_SLAVE, "Deprecated, renamed to --lock-all-tables.",
- (uchar**) &opt_lock_all_tables, (uchar**) &opt_lock_all_tables, 0, GET_BOOL, NO_ARG,
+ &opt_lock_all_tables, &opt_lock_all_tables, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"flush-logs", 'F', "Flush logs file in server before starting dump. "
"Note that if you dump many databases at once (using the option "
@@ -299,24 +299,24 @@ static struct my_option my_long_options[] =
"to the moment all tables are locked. So if you want your dump and "
"the log flush to happen at the same exact moment you should use "
"--lock-all-tables or --master-data with --flush-logs.",
- (uchar**) &flush_logs, (uchar**) &flush_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &flush_logs, &flush_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"flush-privileges", OPT_ESC, "Emit a FLUSH PRIVILEGES statement "
"after dumping the mysql database. This option should be used any "
"time the dump contains the mysql database and any other database "
"that depends on the data in the mysql database for proper restore. ",
- (uchar**) &flush_privileges, (uchar**) &flush_privileges, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &flush_privileges, &flush_privileges, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"force", 'f', "Continue even if we get an SQL error.",
- (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG,
+ &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"help", '?', "Display this help message and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"hex-blob", OPT_HEXBLOB, "Dump binary strings (BINARY, "
"VARBINARY, BLOB) in hexadecimal format.",
- (uchar**) &opt_hex_blob, (uchar**) &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &current_host,
- (uchar**) &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_hex_blob, &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"host", 'h', "Connect to host.", &current_host,
+ &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ignore-table", OPT_IGNORE_TABLE,
"Do not dump the specified table. To specify more than one table to ignore, "
"use the directive multiple times, once for each table. Each table must "
@@ -324,21 +324,21 @@ static struct my_option my_long_options[] =
"--ignore-table=database.table.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"insert-ignore", OPT_INSERT_IGNORE, "Insert rows with INSERT IGNORE.",
- (uchar**) &opt_ignore, (uchar**) &opt_ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_ignore, &opt_ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"lines-terminated-by", OPT_LTB,
"Lines in the output file are terminated by the given string.",
- (uchar**) &lines_terminated, (uchar**) &lines_terminated, 0, GET_STR,
+ &lines_terminated, &lines_terminated, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"lock-all-tables", 'x', "Locks all tables across all databases. This "
"is achieved by taking a global read lock for the duration of the whole "
"dump. Automatically turns --single-transaction and --lock-tables off.",
- (uchar**) &opt_lock_all_tables, (uchar**) &opt_lock_all_tables, 0, GET_BOOL, NO_ARG,
+ &opt_lock_all_tables, &opt_lock_all_tables, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"lock-tables", 'l', "Lock all tables for read.", (uchar**) &lock_tables,
- (uchar**) &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ {"lock-tables", 'l', "Lock all tables for read.", &lock_tables,
+ &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"log-error", OPT_ERROR_LOG_FILE, "Append warnings and errors to given file.",
- (uchar**) &log_error_file, (uchar**) &log_error_file, 0, GET_STR,
+ &log_error_file, &log_error_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"master-data", OPT_MASTER_DATA,
"This causes the binary log position and filename to be appended to the "
@@ -350,33 +350,33 @@ static struct my_option my_long_options[] =
"don't forget to read about --single-transaction below). In all cases, "
"any action on logs will happen at the exact moment of the dump. "
"Option automatically turns --lock-tables off.",
- (uchar**) &opt_master_data, (uchar**) &opt_master_data, 0,
+ &opt_master_data, &opt_master_data, 0,
GET_UINT, OPT_ARG, 0, 0, MYSQL_OPT_MASTER_DATA_COMMENTED_SQL, 0, 0, 0},
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET,
"The maximum packet length to send to or receive from server.",
- (uchar**) &opt_max_allowed_packet, (uchar**) &opt_max_allowed_packet, 0,
+ &opt_max_allowed_packet, &opt_max_allowed_packet, 0,
GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096,
(longlong) 2L*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
{"net_buffer_length", OPT_NET_BUFFER_LENGTH,
"The buffer size for TCP/IP and socket communication.",
- (uchar**) &opt_net_buffer_length, (uchar**) &opt_net_buffer_length, 0,
+ &opt_net_buffer_length, &opt_net_buffer_length, 0,
GET_ULONG, REQUIRED_ARG, 1024*1024L-1025, 4096, 16*1024L*1024L,
MALLOC_OVERHEAD-1024, 1024, 0},
{"no-autocommit", OPT_AUTOCOMMIT,
"Wrap tables with autocommit/commit statements.",
- (uchar**) &opt_autocommit, (uchar**) &opt_autocommit, 0, GET_BOOL, NO_ARG,
+ &opt_autocommit, &opt_autocommit, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"no-create-db", 'n',
"Suppress the CREATE DATABASE ... IF EXISTS statement that normally is "
"output for each dumped database if --all-databases or --databases is "
"given.",
- (uchar**) &opt_create_db, (uchar**) &opt_create_db, 0,
+ &opt_create_db, &opt_create_db, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"no-create-info", 't', "Don't write table creation info.",
- (uchar**) &opt_no_create_info, (uchar**) &opt_no_create_info, 0, GET_BOOL,
+ &opt_no_create_info, &opt_no_create_info, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"no-data", 'd', "No row information.", (uchar**) &opt_no_data,
- (uchar**) &opt_no_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"no-data", 'd', "No row information.", &opt_no_data,
+ &opt_no_data, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"no-set-names", 'N',"Suppress the SET NAMES statement",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"opt", OPT_OPTIMIZE,
@@ -384,7 +384,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"order-by-primary", OPT_ORDER_BY_PRIMARY,
"Sorts each table's rows by primary key, or first unique key, if such a key exists. Useful when dumping a MyISAM table to be loaded into an InnoDB table, but will make the dump itself take considerably longer.",
- (uchar**) &opt_order_by_primary, (uchar**) &opt_order_by_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_order_by_primary, &opt_order_by_primary, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given it's solicited on the tty.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -392,36 +392,36 @@ static struct my_option my_long_options[] =
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"port", 'P', "Port number to use for connection.", (uchar**) &opt_mysql_port,
- (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
+ {"port", 'P', "Port number to use for connection.", &opt_mysql_port,
+ &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
0},
{"protocol", OPT_MYSQL_PROTOCOL,
"The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"quick", 'q', "Don't buffer query, dump directly to stdout.",
- (uchar**) &quick, (uchar**) &quick, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ &quick, &quick, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"quote-names",'Q', "Quote table and column names with backticks (`).",
- (uchar**) &opt_quoted, (uchar**) &opt_quoted, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
+ &opt_quoted, &opt_quoted, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
0, 0},
{"replace", OPT_MYSQL_REPLACE_INTO, "Use REPLACE INTO instead of INSERT INTO.",
- (uchar**) &opt_replace_into, (uchar**) &opt_replace_into, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_replace_into, &opt_replace_into, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"result-file", 'r',
"Direct output to a given file. This option should be used in MSDOS, because it prevents new line '\\n' from being converted to '\\r\\n' (carriage return + line feed).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"routines", 'R', "Dump stored routines (functions and procedures).",
- (uchar**) &opt_routines, (uchar**) &opt_routines, 0, GET_BOOL,
+ &opt_routines, &opt_routines, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"set-charset", OPT_SET_CHARSET,
"Add 'SET NAMES default_character_set' to the output. Enabled by default; suppress with --skip-set-charset.",
- (uchar**) &opt_set_charset, (uchar**) &opt_set_charset, 0, GET_BOOL, NO_ARG, 1,
+ &opt_set_charset, &opt_set_charset, 0, GET_BOOL, NO_ARG, 1,
0, 0, 0, 0, 0},
{"set-variable", 'O',
"Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
+ "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
/*
@@ -439,42 +439,42 @@ static struct my_option my_long_options[] =
"connection should use the following statements: ALTER TABLE, DROP "
"TABLE, RENAME TABLE, TRUNCATE TABLE, as consistent snapshot is not "
"isolated from them. Option automatically turns off --lock-tables.",
- (uchar**) &opt_single_transaction, (uchar**) &opt_single_transaction, 0,
+ &opt_single_transaction, &opt_single_transaction, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"dump-date", OPT_DUMP_DATE, "Put a dump date to the end of the output.",
- (uchar**) &opt_dump_date, (uchar**) &opt_dump_date, 0,
+ &opt_dump_date, &opt_dump_date, 0,
GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"skip-opt", OPT_SKIP_OPTIMIZATION,
"Disable --opt. Disables --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0,
+ &opt_mysql_unix_port, &opt_mysql_unix_port, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h>
{"tab",'T',
"Create tab-separated textfile for each table to given path. (Create .sql "
"and .txt files.) NOTE: This only works if mysqldump is run on the same "
"machine as the mysqld server.",
- (uchar**) &path, (uchar**) &path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &path, &path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"tables", OPT_TABLES, "Overrides option --databases (-B).",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"triggers", OPT_TRIGGERS, "Dump triggers for each dumped table.",
- (uchar**) &opt_dump_triggers, (uchar**) &opt_dump_triggers, 0, GET_BOOL,
+ &opt_dump_triggers, &opt_dump_triggers, 0, GET_BOOL,
NO_ARG, 1, 0, 0, 0, 0, 0},
{"tz-utc", OPT_TZ_UTC,
"SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones.",
- (uchar**) &opt_tz_utc, (uchar**) &opt_tz_utc, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ &opt_tz_utc, &opt_tz_utc, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
{"user", 'u', "User for login if not current user.",
- (uchar**) &current_user, (uchar**) &current_user, 0, GET_STR, REQUIRED_ARG,
+ &current_user, &current_user, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#endif
{"verbose", 'v', "Print info about the various stages.",
- (uchar**) &verbose, (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version",'V', "Output version information and exit.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"where", 'w', "Dump only selected records. Quotes are mandatory.",
- (uchar**) &where, (uchar**) &where, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &where, &where, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"xml", 'X', "Dump a database as well formed XML.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
@@ -964,7 +964,7 @@ static int get_options(int *argc, char ***argv)
static void DB_error(MYSQL *mysql_arg, const char *when)
{
DBUG_ENTER("DB_error");
- maybe_die(EX_MYSQLERR, "Got error: %d: %s %s",
+ maybe_die(EX_MYSQLERR, "Got error: %d: \"%s\" %s",
mysql_errno(mysql_arg), mysql_error(mysql_arg), when);
DBUG_VOID_RETURN;
}
@@ -1441,6 +1441,7 @@ static void free_resources()
if (md_result_file && md_result_file != stdout)
my_fclose(md_result_file, MYF(0));
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
+ my_free(current_host, MYF(MY_ALLOW_ZERO_PTR));
if (hash_inited(&ignore_table))
hash_free(&ignore_table);
if (extended_insert)
@@ -4222,7 +4223,7 @@ static char *get_actual_table_name(const char *old_table_name, MEM_ROOT *root)
}
mysql_free_result(table_res);
}
- DBUG_PRINT("exit", ("new_table_name: %s", name));
+ DBUG_PRINT("exit", ("new_table_name: %s", val_or_null(name)));
DBUG_RETURN(name);
}
@@ -4818,6 +4819,7 @@ static my_bool get_view_structure(char *table, char* db)
field= mysql_fetch_field_direct(table_res, 0);
if (strcmp(field->name, "View") != 0)
{
+ mysql_free_result(table_res);
switch_character_set_results(mysql, default_charset);
verbose_msg("-- It's base table, skipped\n");
DBUG_RETURN(0);
@@ -4827,8 +4829,10 @@ static my_bool get_view_structure(char *table, char* db)
if (path)
{
if (!(sql_file= open_sql_file_for_table(table, O_WRONLY)))
+ {
+ mysql_free_result(table_res);
DBUG_RETURN(1);
-
+ }
write_header(sql_file, db);
}
diff --git a/client/mysqlimport.c b/client/mysqlimport.c
index d346cd567e7..43994a4f514 100644
--- a/client/mysqlimport.c
+++ b/client/mysqlimport.c
@@ -73,68 +73,68 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", (char**) &charsets_dir,
+ (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", (uchar**) &default_charset,
- (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Set the default character set.", &default_charset,
+ &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"columns", 'c',
"Use only these columns to import the data to. Give the column names in a comma separated list. This is same as giving columns to LOAD DATA INFILE.",
- (uchar**) &opt_columns, (uchar**) &opt_columns, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
+ &opt_columns, &opt_columns, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
0, 0, 0},
{"compress", 'C', "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"debug",'#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0,
GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"delete", 'd', "First delete all rows from table.", (uchar**) &opt_delete,
- (uchar**) &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"delete", 'd', "First delete all rows from table.", &opt_delete,
+ &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"fields-terminated-by", OPT_FTB,
"Fields in the input file are terminated by the given string.",
- (uchar**) &fields_terminated, (uchar**) &fields_terminated, 0,
+ &fields_terminated, &fields_terminated, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"fields-enclosed-by", OPT_ENC,
"Fields in the import file are enclosed by the given character.",
- (uchar**) &enclosed, (uchar**) &enclosed, 0,
+ &enclosed, &enclosed, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"fields-optionally-enclosed-by", OPT_O_ENC,
"Fields in the input file are optionally enclosed by the given character.",
- (uchar**) &opt_enclosed, (uchar**) &opt_enclosed, 0,
+ &opt_enclosed, &opt_enclosed, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"fields-escaped-by", OPT_ESC,
"Fields in the input file are escaped by the given character.",
- (uchar**) &escaped, (uchar**) &escaped, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0,
+ &escaped, &escaped, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0,
0, 0},
{"force", 'f', "Continue even if we get an SQL error.",
- (uchar**) &ignore_errors, (uchar**) &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
+ &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
{"help", '?', "Displays this help and exits.", 0, 0, 0, GET_NO_ARG, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &current_host,
- (uchar**) &current_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"host", 'h', "Connect to host.", &current_host,
+ &current_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ignore", 'i', "If duplicate unique key was found, keep old row.",
- (uchar**) &ignore, (uchar**) &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &ignore, &ignore, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"ignore-lines", OPT_IGN_LINES, "Ignore first n lines of data infile.",
- (uchar**) &opt_ignore_lines, (uchar**) &opt_ignore_lines, 0, GET_LL,
+ &opt_ignore_lines, &opt_ignore_lines, 0, GET_LL,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"lines-terminated-by", OPT_LTB,
"Lines in the input file are terminated by the given string.",
- (uchar**) &lines_terminated, (uchar**) &lines_terminated, 0, GET_STR,
+ &lines_terminated, &lines_terminated, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"local", 'L', "Read all files through the client.", (uchar**) &opt_local_file,
- (uchar**) &opt_local_file, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"local", 'L', "Read all files through the client.", &opt_local_file,
+ &opt_local_file, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"lock-tables", 'l', "Lock all tables for write (this disables threads).",
- (uchar**) &lock_tables, (uchar**) &lock_tables, 0, GET_BOOL, NO_ARG,
+ &lock_tables, &lock_tables, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"low-priority", OPT_LOW_PRIORITY,
- "Use LOW_PRIORITY when updating the table.", (uchar**) &opt_low_priority,
- (uchar**) &opt_low_priority, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Use LOW_PRIORITY when updating the table.", &opt_low_priority,
+ &opt_low_priority, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given it's asked from the tty.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -148,35 +148,35 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &opt_mysql_port,
- (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
+ &opt_mysql_port,
+ &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
0},
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replace", 'r', "If duplicate unique key was found, replace old row.",
- (uchar**) &replace, (uchar**) &replace, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &replace, &replace, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
+ "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"silent", 's', "Be more silent.", (uchar**) &silent, (uchar**) &silent, 0,
+ {"silent", 's', "Be more silent.", &silent, &silent, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR,
+ &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h>
{"use-threads", OPT_USE_THREADS,
"Load files in parallel. The argument is the number "
"of threads to use for loading data.",
- (uchar**) &opt_use_threads, (uchar**) &opt_use_threads, 0,
+ &opt_use_threads, &opt_use_threads, 0,
GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user.", (uchar**) &current_user,
- (uchar**) &current_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &current_user,
+ &current_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"verbose", 'v', "Print info about the various stages.", (uchar**) &verbose,
- (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"verbose", 'v', "Print info about the various stages.", &verbose,
+ &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
diff --git a/client/mysqlshow.c b/client/mysqlshow.c
index 370efe83f10..698516e0794 100644
--- a/client/mysqlshow.c
+++ b/client/mysqlshow.c
@@ -164,35 +164,35 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"character-sets-dir", 'c', "Directory for character set files.",
- (uchar**) &charsets_dir, (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0,
+ (char**) &charsets_dir, (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0,
0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET,
- "Set the default character set.", (uchar**) &default_charset,
- (uchar**) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Set the default character set.", &default_charset,
+ &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"count", OPT_COUNT,
"Show number of rows per table (may be slow for non-MyISAM tables).",
- (uchar**) &opt_count, (uchar**) &opt_count, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_count, &opt_count, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"compress", 'C', "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
+ {"host", 'h', "Connect to host.", &host, &host, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"status", 'i', "Shows a lot of extra information about each table.",
- (uchar**) &opt_status, (uchar**) &opt_status, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &opt_status, &opt_status, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
- {"keys", 'k', "Show keys for table.", (uchar**) &opt_show_keys,
- (uchar**) &opt_show_keys, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"keys", 'k', "Show keys for table.", &opt_show_keys,
+ &opt_show_keys, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given, it's "
"solicited on the tty.",
@@ -203,8 +203,8 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &opt_mysql_port,
- (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
+ &opt_mysql_port,
+ &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
0},
#ifdef __WIN__
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
@@ -215,19 +215,20 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
- 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Base name of shared memory.", &shared_memory_base_name,
+ &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG,
+ 0, 0, 0, 0, 0, 0},
#endif
{"show-table-type", 't', "Show table type column.",
- (uchar**) &opt_table_type, (uchar**) &opt_table_type, 0, GET_BOOL,
+ &opt_table_type, &opt_table_type, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR,
+ &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h>
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user.", (uchar**) &user,
- (uchar**) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &user,
+ &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"verbose", 'v',
"More verbose output; you can use this multiple times to get even more "
@@ -668,8 +669,7 @@ list_fields(MYSQL *mysql,const char *db,const char *table,
char query[1024],*end;
MYSQL_RES *result;
MYSQL_ROW row;
- ulong rows;
- LINT_INIT(rows);
+ ulong UNINIT_VAR(rows);
if (mysql_select_db(mysql,db))
{
diff --git a/client/mysqlslap.c b/client/mysqlslap.c
index ad5db7735be..0b3ea2a0065 100644
--- a/client/mysqlslap.c
+++ b/client/mysqlslap.c
@@ -525,62 +525,62 @@ static struct my_option my_long_options[] =
0, 0, 0, 0, 0, 0},
{"auto-generate-sql", 'a',
"Generate SQL where not supplied by file or command line.",
- (uchar**) &auto_generate_sql, (uchar**) &auto_generate_sql,
+ &auto_generate_sql, &auto_generate_sql,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"auto-generate-sql-add-autoincrement", OPT_SLAP_AUTO_GENERATE_ADD_AUTO,
"Add an AUTO_INCREMENT column to auto-generated tables.",
- (uchar**) &auto_generate_sql_autoincrement,
- (uchar**) &auto_generate_sql_autoincrement,
+ &auto_generate_sql_autoincrement,
+ &auto_generate_sql_autoincrement,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"auto-generate-sql-execute-number", OPT_SLAP_AUTO_GENERATE_EXECUTE_QUERIES,
"Set this number to generate a set number of queries to run.",
- (uchar**) &auto_actual_queries, (uchar**) &auto_actual_queries,
+ &auto_actual_queries, &auto_actual_queries,
0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"auto-generate-sql-guid-primary", OPT_SLAP_AUTO_GENERATE_GUID_PRIMARY,
"Add GUID based primary keys to auto-generated tables.",
- (uchar**) &auto_generate_sql_guid_primary,
- (uchar**) &auto_generate_sql_guid_primary,
+ &auto_generate_sql_guid_primary,
+ &auto_generate_sql_guid_primary,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"auto-generate-sql-load-type", OPT_SLAP_AUTO_GENERATE_SQL_LOAD_TYPE,
"Specify test load type: mixed, update, write, key, or read; default is mixed.",
- (uchar**) &auto_generate_sql_type, (uchar**) &auto_generate_sql_type,
+ (char**) &auto_generate_sql_type, (char**) &auto_generate_sql_type,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"auto-generate-sql-secondary-indexes",
OPT_SLAP_AUTO_GENERATE_SECONDARY_INDEXES,
"Number of secondary indexes to add to auto-generated tables.",
- (uchar**) &auto_generate_sql_secondary_indexes,
- (uchar**) &auto_generate_sql_secondary_indexes, 0,
+ &auto_generate_sql_secondary_indexes,
+ &auto_generate_sql_secondary_indexes, 0,
GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"auto-generate-sql-unique-query-number",
OPT_SLAP_AUTO_GENERATE_UNIQUE_QUERY_NUM,
"Number of unique queries to generate for automatic tests.",
- (uchar**) &auto_generate_sql_unique_query_number,
- (uchar**) &auto_generate_sql_unique_query_number,
+ &auto_generate_sql_unique_query_number,
+ &auto_generate_sql_unique_query_number,
0, GET_ULL, REQUIRED_ARG, 10, 0, 0, 0, 0, 0},
{"auto-generate-sql-unique-write-number",
OPT_SLAP_AUTO_GENERATE_UNIQUE_WRITE_NUM,
"Number of unique queries to generate for auto-generate-sql-write-number.",
- (uchar**) &auto_generate_sql_unique_write_number,
- (uchar**) &auto_generate_sql_unique_write_number,
+ &auto_generate_sql_unique_write_number,
+ &auto_generate_sql_unique_write_number,
0, GET_ULL, REQUIRED_ARG, 10, 0, 0, 0, 0, 0},
{"auto-generate-sql-write-number", OPT_SLAP_AUTO_GENERATE_WRITE_NUM,
"Number of row inserts to perform for each thread (default is 100).",
- (uchar**) &auto_generate_sql_number, (uchar**) &auto_generate_sql_number,
+ &auto_generate_sql_number, &auto_generate_sql_number,
0, GET_ULL, REQUIRED_ARG, 100, 0, 0, 0, 0, 0},
{"commit", OPT_SLAP_COMMIT, "Commit records every X number of statements.",
- (uchar**) &commit_rate, (uchar**) &commit_rate, 0, GET_UINT, REQUIRED_ARG,
+ &commit_rate, &commit_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"compress", 'C', "Use compression in server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"concurrency", 'c', "Number of clients to simulate for query to run.",
- (uchar**) &concurrency_str, (uchar**) &concurrency_str, 0, GET_STR,
+ (char**) &concurrency_str, (char**) &concurrency_str, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"create", OPT_SLAP_CREATE_STRING, "File or string to use create tables.",
- (uchar**) &create_string, (uchar**) &create_string, 0, GET_STR, REQUIRED_ARG,
+ &create_string, &create_string, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"create-schema", OPT_CREATE_SLAP_SCHEMA, "Schema to run tests in.",
- (uchar**) &create_schema_string, (uchar**) &create_schema_string, 0, GET_STR,
+ (char**) &create_schema_string, (char**) &create_schema_string, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"csv", OPT_SLAP_CSV,
"Generate CSV output to named file or to stdout if no file is named.",
@@ -590,47 +590,48 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
#else
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
- (uchar**) &default_dbug_option, (uchar**) &default_dbug_option, 0, GET_STR,
+ (char**) &default_dbug_option, (char**) &default_dbug_option, 0, GET_STR,
OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
- (uchar**) &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag,
+ &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"delimiter", 'F',
"Delimiter to use in SQL statements supplied in file or command line.",
- (uchar**) &delimiter, (uchar**) &delimiter, 0, GET_STR, REQUIRED_ARG,
+ (char**) &delimiter, (char**) &delimiter, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"detach", OPT_SLAP_DETACH,
"Detach (close and reopen) connections after X number of requests.",
- (uchar**) &detach_rate, (uchar**) &detach_rate, 0, GET_UINT, REQUIRED_ARG,
+ &detach_rate, &detach_rate, 0, GET_UINT, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"engine", 'e', "Comma separated list of storage engines to use for creating the table."
- " The test is run for each engine. You can also specify an option for an engine"
- " after a `:', like memory:max_row=2300",
- (uchar**) &default_engine, (uchar**) &default_engine, 0,
+ {"engine", 'e',
+ "Comma separated list of storage engines to use for creating the table."
+ " The test is run for each engine. You can also specify an option for an "
+ "engine after a `:', like memory:max_row=2300",
+ &default_engine, &default_engine, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &host, (uchar**) &host, 0, GET_STR,
+ {"host", 'h', "Connect to host.", &host, &host, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"iterations", 'i', "Number of times to run the tests.", (uchar**) &iterations,
- (uchar**) &iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
+ {"iterations", 'i', "Number of times to run the tests.", &iterations,
+ &iterations, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
{"number-char-cols", 'x',
"Number of VARCHAR columns to create in table if specifying --auto-generate-sql.",
- (uchar**) &num_char_cols_opt, (uchar**) &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG,
+ (char**) &num_char_cols_opt, (char**) &num_char_cols_opt, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"number-int-cols", 'y',
"Number of INT columns to create in table if specifying --auto-generate-sql.",
- (uchar**) &num_int_cols_opt, (uchar**) &num_int_cols_opt, 0, GET_STR, REQUIRED_ARG,
+ (char**) &num_int_cols_opt, (char**) &num_int_cols_opt, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"number-of-queries", OPT_MYSQL_NUMBER_OF_QUERY,
"Limit each client to this number of queries (this is not exact).",
- (uchar**) &num_of_query, (uchar**) &num_of_query, 0,
+ &num_of_query, &num_of_query, 0,
GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"only-print", OPT_MYSQL_ONLY_PRINT,
"Do not connect to the databases, but instead print out what would have "
"been done.",
- (uchar**) &opt_only_print, (uchar**) &opt_only_print, 0, GET_BOOL, NO_ARG,
+ &opt_only_print, &opt_only_print, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given it's "
@@ -639,58 +640,54 @@ static struct my_option my_long_options[] =
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"port", 'P', "Port number to use for connection.", (uchar**) &opt_mysql_port,
- (uchar**) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0,
+ {"port", 'P', "Port number to use for connection.", &opt_mysql_port,
+ &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0,
0},
{"post-query", OPT_SLAP_POST_QUERY,
"Query to run or file containing query to execute after tests have completed.",
- (uchar**) &user_supplied_post_statements,
- (uchar**) &user_supplied_post_statements,
+ &user_supplied_post_statements, &user_supplied_post_statements,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"post-system", OPT_SLAP_POST_SYSTEM,
"system() string to execute after tests have completed.",
- (uchar**) &post_system,
- (uchar**) &post_system,
+ &post_system, &post_system,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"pre-query", OPT_SLAP_PRE_QUERY,
"Query to run or file containing query to execute before running tests.",
- (uchar**) &user_supplied_pre_statements,
- (uchar**) &user_supplied_pre_statements,
+ &user_supplied_pre_statements, &user_supplied_pre_statements,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"pre-system", OPT_SLAP_PRE_SYSTEM,
"system() string to execute before running tests.",
- (uchar**) &pre_system,
- (uchar**) &pre_system,
+ &pre_system, &pre_system,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"protocol", OPT_MYSQL_PROTOCOL,
"The protocol to use for connection (tcp, socket, pipe, memory).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"query", 'q', "Query to run or file containing query to run.",
- (uchar**) &user_supplied_query, (uchar**) &user_supplied_query,
+ &user_supplied_query, &user_supplied_query,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name,
- (uchar**) &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG,
+ "Base name of shared memory.", &shared_memory_base_name,
+ &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#endif
{"silent", 's', "Run program in silent mode - no output.",
- (uchar**) &opt_silent, (uchar**) &opt_silent, 0, GET_BOOL, NO_ARG,
+ &opt_silent, &opt_silent, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &opt_mysql_unix_port, (uchar**) &opt_mysql_unix_port, 0, GET_STR,
+ &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#include <sslopt-longopts.h>
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user.", (uchar**) &user,
- (uchar**) &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user.", &user,
+ &user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"verbose", 'v',
- "More verbose output; you can use this multiple times to get even more "
- "verbose output.", (uchar**) &verbose, (uchar**) &verbose, 0,
- GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
- NO_ARG, 0, 0, 0, 0, 0, 0},
+ "More verbose output; you can use this multiple times to get even more "
+ "verbose output.", &verbose, &verbose, 0, GET_NO_ARG, NO_ARG,
+ 0, 0, 0, 0, 0, 0},
+ {"version", 'V', "Output version information and exit.", 0, 0, 0,
+ GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index e128fa427a0..a98ec153c4d 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -74,6 +74,10 @@
#define QUERY_SEND_FLAG 1
#define QUERY_REAP_FLAG 2
+#ifndef HAVE_SETENV
+static int setenv(const char *name, const char *value, int overwrite);
+#endif
+
enum {
OPT_SKIP_SAFEMALLOC=OPT_MAX_CLIENT_OPTION,
OPT_PS_PROTOCOL, OPT_SP_PROTOCOL, OPT_CURSOR_PROTOCOL, OPT_VIEW_PROTOCOL,
@@ -227,7 +231,6 @@ typedef struct
int alloced_len;
int int_dirty; /* do not update string if int is updated until first read */
int alloced;
- char *env_s;
} VAR;
/*Perl/shell-like variable registers */
@@ -539,7 +542,7 @@ public:
{
DBUG_ENTER("LogFile::open");
DBUG_PRINT("enter", ("dir: '%s', name: '%s'",
- dir, name));
+ val_or_null(dir), val_or_null(name)));
if (!name)
{
m_file= stdout;
@@ -1077,7 +1080,8 @@ void check_command_args(struct st_command *command,
DBUG_VOID_RETURN;
}
-void handle_command_error(struct st_command *command, uint error)
+void handle_command_error(struct st_command *command, uint error,
+ int sys_errno)
{
DBUG_ENTER("handle_command_error");
DBUG_PRINT("enter", ("error: %d", error));
@@ -1093,12 +1097,13 @@ void handle_command_error(struct st_command *command, uint error)
if (i >= 0)
{
- DBUG_PRINT("info", ("command \"%.*s\" failed with expected error: %d",
- command->first_word_len, command->query, error));
+ DBUG_PRINT("info", ("command \"%.*s\" failed with expected error: %u, errno: %d",
+ command->first_word_len, command->query, error,
+ sys_errno));
DBUG_VOID_RETURN;
}
- die("command \"%.*s\" failed with wrong error: %d",
- command->first_word_len, command->query, error);
+ die("command \"%.*s\" failed with wrong error: %u, errno: %d",
+ command->first_word_len, command->query, error, sys_errno);
}
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
command->expected_errors.err[0].code.errnum != 0)
@@ -1807,7 +1812,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
{
my_close(fd, MYF(0));
/* Remove the temporary file */
- my_delete(temp_file_path, MYF(0));
+ my_delete(temp_file_path, MYF(MY_WME));
die("Failed to write file '%s'", temp_file_path);
}
@@ -1815,7 +1820,7 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
my_close(fd, MYF(0));
/* Remove the temporary file */
- my_delete(temp_file_path, MYF(0));
+ my_delete(temp_file_path, MYF(MY_WME));
DBUG_RETURN(error);
}
@@ -1982,13 +1987,20 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val,
+ name_len+1, MYF(MY_WME))))
die("Out of memory");
- tmp_var->name = (name) ? (char*) tmp_var + sizeof(*tmp_var) : 0;
+ if (name != NULL)
+ {
+ tmp_var->name= reinterpret_cast<char*>(tmp_var) + sizeof(*tmp_var);
+ memcpy(tmp_var->name, name, name_len);
+ tmp_var->name[name_len]= 0;
+ }
+ else
+ tmp_var->name= NULL;
+
tmp_var->alloced = (v == 0);
if (!(tmp_var->str_val = (char*)my_malloc(val_alloc_len+1, MYF(MY_WME))))
die("Out of memory");
- memcpy(tmp_var->name, name, name_len);
if (val)
{
memcpy(tmp_var->str_val, val, val_len);
@@ -1999,7 +2011,6 @@ VAR *var_init(VAR *v, const char *name, int name_len, const char *val,
tmp_var->alloced_len = val_alloc_len;
tmp_var->int_val = (val) ? atoi(val) : 0;
tmp_var->int_dirty = 0;
- tmp_var->env_s = 0;
return tmp_var;
}
@@ -2127,20 +2138,15 @@ void var_set(const char *var_name, const char *var_name_end,
if (env_var)
{
- char buf[1024], *old_env_s= v->env_s;
if (v->int_dirty)
{
sprintf(v->str_val, "%d", v->int_val);
v->int_dirty= 0;
v->str_val_len= strlen(v->str_val);
}
- my_snprintf(buf, sizeof(buf), "%.*s=%.*s",
- v->name_len, v->name,
- v->str_val_len, v->str_val);
- if (!(v->env_s= my_strdup(buf, MYF(MY_WME))))
- die("Out of memory");
- putenv(v->env_s);
- my_free(old_env_s, MYF(MY_ALLOW_ZERO_PTR));
+ /* setenv() expects \0-terminated strings */
+ DBUG_ASSERT(v->name[v->name_len] == 0);
+ setenv(v->name, v->str_val, 1);
}
DBUG_VOID_RETURN;
}
@@ -2928,8 +2934,8 @@ void do_remove_file(struct st_command *command)
' ');
DBUG_PRINT("info", ("removing file: %s", ds_filename.str));
- error= my_delete(ds_filename.str, MYF(0)) != 0;
- handle_command_error(command, error);
+ error= my_delete(ds_filename.str, MYF(disable_warnings ? 0 : MY_WME)) != 0;
+ handle_command_error(command, error, my_errno);
dynstr_free(&ds_filename);
DBUG_VOID_RETURN;
}
@@ -2947,7 +2953,7 @@ void do_remove_file(struct st_command *command)
void do_remove_files_wildcard(struct st_command *command)
{
- int error= 0;
+ int error= 0, sys_errno= 0;
uint i;
MY_DIR *dir_info;
FILEINFO *file;
@@ -2971,9 +2977,10 @@ void do_remove_files_wildcard(struct st_command *command)
DBUG_PRINT("info", ("listing directory: %s", dirname));
/* Note that my_dir sorts the list if not given any flags */
- if (!(dir_info= my_dir(dirname, MYF(MY_DONT_SORT | MY_WANT_STAT))))
+ if (!(dir_info= my_dir(dirname, MYF(MY_DONT_SORT | MY_WANT_STAT | MY_WME))))
{
error= 1;
+ sys_errno= my_errno;
goto end;
}
init_dynamic_string(&ds_file_to_remove, dirname, 1024, 1024);
@@ -2995,14 +3002,15 @@ void do_remove_files_wildcard(struct st_command *command)
ds_file_to_remove.str[ds_directory.length + 1]= 0;
dynstr_append(&ds_file_to_remove, file->name);
DBUG_PRINT("info", ("removing file: %s", ds_file_to_remove.str));
- error= my_delete(ds_file_to_remove.str, MYF(0)) != 0;
+ if ((error= (my_delete(ds_file_to_remove.str, MYF(MY_WME)) != 0)))
+ sys_errno= my_errno;
if (error)
break;
}
my_dirend(dir_info);
end:
- handle_command_error(command, error);
+ handle_command_error(command, error, sys_errno);
dynstr_free(&ds_directory);
dynstr_free(&ds_wild);
dynstr_free(&ds_file_to_remove);
@@ -3040,8 +3048,8 @@ void do_copy_file(struct st_command *command)
DBUG_PRINT("info", ("Copy %s to %s", ds_from_file.str, ds_to_file.str));
error= (my_copy(ds_from_file.str, ds_to_file.str,
- MYF(MY_DONT_OVERWRITE_FILE)) != 0);
- handle_command_error(command, error);
+ MYF(MY_DONT_OVERWRITE_FILE | MY_WME)) != 0);
+ handle_command_error(command, error, my_errno);
dynstr_free(&ds_from_file);
dynstr_free(&ds_to_file);
DBUG_VOID_RETURN;
@@ -3076,8 +3084,8 @@ void do_move_file(struct st_command *command)
DBUG_PRINT("info", ("Move %s to %s", ds_from_file.str, ds_to_file.str));
error= (my_rename(ds_from_file.str, ds_to_file.str,
- MYF(0)) != 0);
- handle_command_error(command, error);
+ MYF(disable_warnings ? 0 : MY_WME)) != 0);
+ handle_command_error(command, error, my_errno);
dynstr_free(&ds_from_file);
dynstr_free(&ds_to_file);
DBUG_VOID_RETURN;
@@ -3097,6 +3105,7 @@ void do_move_file(struct st_command *command)
void do_chmod_file(struct st_command *command)
{
+ int error;
long mode= 0;
static DYNAMIC_STRING ds_mode;
static DYNAMIC_STRING ds_file;
@@ -3117,7 +3126,10 @@ void do_chmod_file(struct st_command *command)
die("You must write a 4 digit octal number for mode");
DBUG_PRINT("info", ("chmod %o %s", (uint)mode, ds_file.str));
- handle_command_error(command, chmod(ds_file.str, mode));
+ error= 0;
+ if (chmod(ds_file.str, mode))
+ error= 1;
+ handle_command_error(command, error, errno);
dynstr_free(&ds_mode);
dynstr_free(&ds_file);
DBUG_VOID_RETURN;
@@ -3150,7 +3162,7 @@ void do_file_exist(struct st_command *command)
DBUG_PRINT("info", ("Checking for existence of file: %s", ds_filename.str));
error= (access(ds_filename.str, F_OK) != 0);
- handle_command_error(command, error);
+ handle_command_error(command, error, errno);
dynstr_free(&ds_filename);
DBUG_VOID_RETURN;
}
@@ -3180,8 +3192,8 @@ void do_mkdir(struct st_command *command)
' ');
DBUG_PRINT("info", ("creating directory: %s", ds_dirname.str));
- error= my_mkdir(ds_dirname.str, 0777, MYF(0)) != 0;
- handle_command_error(command, error);
+ error= my_mkdir(ds_dirname.str, 0777, MYF(MY_WME)) != 0;
+ handle_command_error(command, error, my_errno);
dynstr_free(&ds_dirname);
DBUG_VOID_RETURN;
}
@@ -3211,7 +3223,7 @@ void do_rmdir(struct st_command *command)
DBUG_PRINT("info", ("removing directory: %s", ds_dirname.str));
error= rmdir(ds_dirname.str) != 0;
- handle_command_error(command, error);
+ handle_command_error(command, error, errno);
dynstr_free(&ds_dirname);
DBUG_VOID_RETURN;
}
@@ -3285,7 +3297,7 @@ static void do_list_files(struct st_command *command)
sizeof(list_files_args)/sizeof(struct command_arg), ' ');
error= get_list_files(&ds_res, &ds_dirname, &ds_wild);
- handle_command_error(command, error);
+ handle_command_error(command, error, my_errno);
dynstr_free(&ds_dirname);
dynstr_free(&ds_wild);
DBUG_VOID_RETURN;
@@ -3327,7 +3339,7 @@ static void do_list_files_write_file_command(struct st_command *command,
init_dynamic_string(&ds_content, "", 1024, 1024);
error= get_list_files(&ds_content, &ds_dirname, &ds_wild);
- handle_command_error(command, error);
+ handle_command_error(command, error, my_errno);
str_to_file2(ds_filename.str, ds_content.str, ds_content.length, append);
dynstr_free(&ds_content);
dynstr_free(&ds_filename);
@@ -3609,7 +3621,7 @@ void do_diff_files(struct st_command *command)
dynstr_free(&ds_filename);
dynstr_free(&ds_filename2);
- handle_command_error(command, error);
+ handle_command_error(command, error, -1);
DBUG_VOID_RETURN;
}
@@ -3817,9 +3829,9 @@ void do_perl(struct st_command *command)
error= pclose(res_file);
/* Remove the temporary file */
- my_delete(temp_file_path, MYF(0));
+ my_delete(temp_file_path, MYF(MY_WME));
- handle_command_error(command, WEXITSTATUS(error));
+ handle_command_error(command, WEXITSTATUS(error), my_errno);
}
dynstr_free(&ds_delimiter);
DBUG_VOID_RETURN;
@@ -4723,11 +4735,11 @@ char *get_string(char **to_ptr, char **from_ptr,
}
-void set_reconnect(MYSQL* mysql, int val)
+void set_reconnect(MYSQL* mysql, my_bool val)
{
my_bool reconnect= val;
DBUG_ENTER("set_reconnect");
- DBUG_PRINT("info", ("val: %d", val));
+ DBUG_PRINT("info", ("val: %d", (int) val));
#if MYSQL_VERSION_ID < 50000
mysql->reconnect= reconnect;
#else
@@ -5824,7 +5836,7 @@ int read_command(struct st_command** command_ptr)
(struct st_command*) my_malloc(sizeof(*command),
MYF(MY_WME|MY_ZEROFILL))) ||
insert_dynamic(&q_lines, (uchar*) &command))
- die(NullS);
+ die("Out of memory");
command->type= Q_UNKNOWN;
read_command_buf[0]= 0;
@@ -5880,18 +5892,18 @@ static struct my_option my_long_options[] =
{
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"basedir", 'b', "Basedir for tests.", (uchar**) &opt_basedir,
- (uchar**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"basedir", 'b', "Basedir for tests.", &opt_basedir,
+ &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory for character set files.", (uchar**) &opt_charsets_dir,
- (uchar**) &opt_charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory for character set files.", &opt_charsets_dir,
+ &opt_charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"compress", 'C', "Use the compressed server/client protocol.",
- (uchar**) &opt_compress, (uchar**) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"cursor-protocol", OPT_CURSOR_PROTOCOL, "Use cursors for prepared statements.",
- (uchar**) &cursor_protocol, (uchar**) &cursor_protocol, 0,
+ &cursor_protocol, &cursor_protocol, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"database", 'D', "Database to use.", (uchar**) &opt_db, (uchar**) &opt_db, 0,
+ {"database", 'D', "Database to use.", &opt_db, &opt_db, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef DBUG_OFF
{"debug", '#', "This is a non-debug version. Catch this and exit",
@@ -5901,33 +5913,33 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
- (uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
+ &debug_check_flag, &debug_check_flag, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
- (uchar**) &debug_info_flag, (uchar**) &debug_info_flag,
+ &debug_info_flag, &debug_info_flag,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"global-subst", OPT_GLOBAL_SUBST, "argument should be 'X,Y' ;"
" substitute string X with another Y accross the whole test's current"
" result before comparing with expected result file",
- (uchar**) &global_subst, (uchar**) &global_subst, 0,
+ &global_subst, &global_subst, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host.", (uchar**) &opt_host, (uchar**) &opt_host, 0,
+ {"host", 'h', "Connect to host.", &opt_host, &opt_host, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"include", 'i', "Include SQL before each test case.", (uchar**) &opt_include,
- (uchar**) &opt_include, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"logdir", OPT_LOG_DIR, "Directory for log files", (uchar**) &opt_logdir,
- (uchar**) &opt_logdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"include", 'i', "Include SQL before each test case.", &opt_include,
+ &opt_include, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"logdir", OPT_LOG_DIR, "Directory for log files", &opt_logdir,
+ &opt_logdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"mark-progress", OPT_MARK_PROGRESS,
"Write line number and elapsed time to <testname>.progress.",
- (uchar**) &opt_mark_progress, (uchar**) &opt_mark_progress, 0,
+ &opt_mark_progress, &opt_mark_progress, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"max-connect-retries", OPT_MAX_CONNECT_RETRIES,
"Maximum number of attempts to connect to server.",
- (uchar**) &opt_max_connect_retries, (uchar**) &opt_max_connect_retries, 0,
+ &opt_max_connect_retries, &opt_max_connect_retries, 0,
GET_INT, REQUIRED_ARG, 500, 1, 10000, 0, 0, 0},
{"max-connections", OPT_MAX_CONNECTIONS,
"Max number of open connections to server",
- (uchar**) &opt_max_connections, (uchar**) &opt_max_connections, 0,
+ &opt_max_connections, &opt_max_connections, 0,
GET_INT, REQUIRED_ARG, 128, 8, 5120, 0, 0, 0},
{"password", 'p', "Password to use when connecting to server.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
@@ -5937,18 +5949,17 @@ static struct my_option my_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &opt_port,
- (uchar**) &opt_port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_port, &opt_port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ps-protocol", OPT_PS_PROTOCOL,
"Use prepared-statement protocol for communication.",
- (uchar**) &ps_protocol, (uchar**) &ps_protocol, 0,
+ &ps_protocol, &ps_protocol, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"quiet", 's', "Suppress all normal output.", (uchar**) &silent,
- (uchar**) &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"quiet", 's', "Suppress all normal output.", &silent,
+ &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"record", 'r', "Record output of test_file into result file.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"result-file", 'R', "Read/store result from/in this file.",
- (uchar**) &result_file_name, (uchar**) &result_file_name, 0,
+ &result_file_name, &result_file_name, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"server-arg", 'A', "Send option value to embedded server as a parameter.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -5956,28 +5967,28 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name,
- (uchar**) &shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
+ "Base name of shared memory.", &shared_memory_base_name,
+ &shared_memory_base_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
0, 0, 0},
#endif
{"silent", 's', "Suppress all normal output. Synonym for --quiet.",
- (uchar**) &silent, (uchar**) &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &silent, &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"skip-safemalloc", OPT_SKIP_SAFEMALLOC,
"Don't use the memory allocation checking.", 0, 0, 0, GET_NO_ARG, NO_ARG,
0, 0, 0, 0, 0, 0},
{"sleep", 'T', "Always sleep this many seconds on sleep commands.",
- (uchar**) &opt_sleep, (uchar**) &opt_sleep, 0, GET_INT, REQUIRED_ARG, -1, -1, 0,
+ &opt_sleep, &opt_sleep, 0, GET_INT, REQUIRED_ARG, -1, -1, 0,
0, 0, 0},
{"socket", 'S', "The socket file to use for connection.",
- (uchar**) &unix_sock, (uchar**) &unix_sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
+ &unix_sock, &unix_sock, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
0, 0, 0},
{"sp-protocol", OPT_SP_PROTOCOL, "Use stored procedures for select.",
- (uchar**) &sp_protocol, (uchar**) &sp_protocol, 0,
+ &sp_protocol, &sp_protocol, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#include "sslopt-longopts.h"
{"tail-lines", OPT_TAIL_LINES,
"Number of lines of the result to include in a failure report.",
- (uchar**) &opt_tail_lines, (uchar**) &opt_tail_lines, 0,
+ &opt_tail_lines, &opt_tail_lines, 0,
GET_INT, REQUIRED_ARG, 0, 0, 10000, 0, 0, 0},
{"test-file", 'x', "Read test from/in this file (default stdin).",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -5988,14 +5999,14 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"tmpdir", 't', "Temporary directory where sockets are put.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"user", 'u', "User for login.", (uchar**) &opt_user, (uchar**) &opt_user, 0,
+ {"user", 'u', "User for login.", &opt_user, &opt_user, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"verbose", 'v', "Write more.", (uchar**) &verbose, (uchar**) &verbose, 0,
+ {"verbose", 'v', "Write more.", &verbose, &verbose, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"view-protocol", OPT_VIEW_PROTOCOL, "Use views for select.",
- (uchar**) &view_protocol, (uchar**) &view_protocol, 0,
+ &view_protocol, &view_protocol, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -6322,7 +6333,7 @@ void init_win_path_patterns()
}
if (insert_dynamic(&patterns, (uchar*) &p))
- die(NullS);
+ die("Out of memory");
DBUG_PRINT("info", ("p: %s", p));
while (*p)
@@ -7668,7 +7679,7 @@ void mark_progress(struct st_command* command __attribute__((unused)),
die("Out of memory");
/* Milliseconds since start */
- end= longlong2str(timer, buf, 10);
+ end= longlong10_to_str(timer, buf, 10);
dynstr_append_mem(&ds_progress, buf, (int)(end-buf));
dynstr_append_mem(&ds_progress, "\t", 1);
@@ -8199,12 +8210,12 @@ int main(int argc, char **argv)
command->last_argument= command->end;
break;
case Q_PING:
- handle_command_error(command, mysql_ping(&cur_con->mysql));
+ handle_command_error(command, mysql_ping(&cur_con->mysql), -1);
break;
case Q_SEND_SHUTDOWN:
handle_command_error(command,
mysql_shutdown(&cur_con->mysql,
- SHUTDOWN_DEFAULT));
+ SHUTDOWN_DEFAULT), -1);
break;
case Q_SHUTDOWN_SERVER:
do_shutdown_server(command);
@@ -8426,7 +8437,7 @@ void timer_output(void)
{
char buf[32], *end;
ulonglong timer= timer_now() - timer_start;
- end= longlong2str(timer, buf, 10);
+ end= longlong10_to_str(timer, buf, 10);
str_to_file(timer_file,buf, (int) (end-buf));
/* Timer has been written to the file, don't use it anymore */
timer_file= 0;
@@ -8588,15 +8599,15 @@ void free_replace()
typedef struct st_replace {
- my_bool found;
+ int found;
struct st_replace *next[256];
} REPLACE;
typedef struct st_replace_found {
- my_bool found;
- char *replace_string;
+ int found;
uint to_offset;
int from_offset;
+ char *replace_string;
} REPLACE_STRING;
@@ -8628,7 +8639,7 @@ void replace_strings_append(REPLACE *rep, DYNAMIC_STRING* ds,
}
/* Found a string that needs to be replaced */
- DBUG_PRINT("info", ("found: %d, to_offset: %d, from_offset: %d, string: %s",
+ DBUG_PRINT("info", ("found: %d, to_offset: %u, from_offset: %d, string: %s",
rep_str->found, rep_str->to_offset,
rep_str->from_offset, rep_str->replace_string));
@@ -9402,8 +9413,7 @@ REPLACE *init_replace(char * *from, char * *to,uint count,
for (i=1 ; i <= found_sets ; i++)
{
pos=from[found_set[i-1].table_offset];
- rep_str[i].found= !bcmp((const uchar*) pos,
- (const uchar*) "\\^", 3) ? 2 : 1;
+ rep_str[i].found= !memcmp(pos, "\\^", 3) ? 2 : 1;
rep_str[i].replace_string=to_array[found_set[i-1].table_offset];
rep_str[i].to_offset=found_set[i-1].found_offset-start_at_word(pos);
rep_str[i].from_offset=found_set[i-1].found_offset-replace_len(pos)+
@@ -9531,8 +9541,8 @@ void copy_bits(REP_SET *to,REP_SET *from)
int cmp_bits(REP_SET *set1,REP_SET *set2)
{
- return bcmp((uchar*) set1->bits,(uchar*) set2->bits,
- sizeof(uint) * set1->size_of_bits);
+ return memcmp(set1->bits, set2->bits,
+ sizeof(uint) * set1->size_of_bits);
}
@@ -9601,17 +9611,15 @@ int find_found(FOUND_SET *found_set,uint table_offset, int found_offset)
uint start_at_word(char * pos)
{
- return (((!bcmp((const uchar*) pos, (const uchar*) "\\b",2) && pos[2]) ||
- !bcmp((const uchar*) pos, (const uchar*) "\\^", 2)) ? 1 : 0);
+ return (((!memcmp(pos, "\\b",2) && pos[2]) ||
+ !memcmp(pos, "\\^", 2)) ? 1 : 0);
}
uint end_of_word(char * pos)
{
char * end=strend(pos);
- return ((end > pos+2 && !bcmp((const uchar*) end-2,
- (const uchar*) "\\b", 2)) ||
- (end >= pos+2 && !bcmp((const uchar*) end-2,
- (const uchar*) "\\$",2))) ? 1 : 0;
+ return ((end > pos+2 && !memcmp(end-2, "\\b", 2)) ||
+ (end >= pos+2 && !memcmp(end-2, "\\$",2))) ? 1 : 0;
}
/****************************************************************************
@@ -9831,3 +9839,18 @@ void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input)
delete_dynamic(&lines);
DBUG_VOID_RETURN;
}
+
+#ifndef HAVE_SETENV
+static int setenv(const char *name, const char *value, int overwrite)
+{
+ size_t buflen= strlen(name) + strlen(value) + 2;
+ char *envvar= (char *)malloc(buflen);
+ if(!envvar)
+ return ENOMEM;
+ strcpy(envvar, name);
+ strcat(envvar, "=");
+ strcat(envvar, value);
+ putenv(envvar);
+ return 0;
+}
+#endif
diff --git a/cmd-line-utils/Makefile.am b/cmd-line-utils/Makefile.am
index 1a84ce7af38..622aa72fd43 100644
--- a/cmd-line-utils/Makefile.am
+++ b/cmd-line-utils/Makefile.am
@@ -19,6 +19,3 @@
SUBDIRS= @readline_basedir@
DIST_SUBDIRS= libedit readline
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/cmd-line-utils/readline/Makefile.am b/cmd-line-utils/readline/Makefile.am
index e5f5717858d..e1e9645e238 100644
--- a/cmd-line-utils/readline/Makefile.am
+++ b/cmd-line-utils/readline/Makefile.am
@@ -31,7 +31,7 @@ noinst_HEADERS = readline.h chardefs.h keymaps.h \
EXTRA_DIST= emacs_keymap.c vi_keymap.c
-DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR
+DEFS = -DMYSQL_CLIENT_NO_THREADS -DHAVE_CONFIG_H -DNO_KILL_INTR -D_GNU_SOURCE=1
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/cmd-line-utils/readline/input.c b/cmd-line-utils/readline/input.c
index 84c0422059a..af81d9cd3b0 100644
--- a/cmd-line-utils/readline/input.c
+++ b/cmd-line-utils/readline/input.c
@@ -318,7 +318,9 @@ _rl_input_available ()
return (_kbhit ());
#endif
+#if !defined (HAVE_SELECT)
return 0;
+#endif
}
int
diff --git a/config/ac-macros/maintainer.m4 b/config/ac-macros/maintainer.m4
new file mode 100644
index 00000000000..1b7df75d6f7
--- /dev/null
+++ b/config/ac-macros/maintainer.m4
@@ -0,0 +1,64 @@
+#
+# Control aspects of the development environment which are
+# specific to MySQL maintainers and developers.
+#
+AC_DEFUN([MY_MAINTAINER_MODE], [
+ AC_MSG_CHECKING([whether to enable the maintainer-specific development environment])
+ AC_ARG_ENABLE([mysql-maintainer-mode],
+ [AS_HELP_STRING([--enable-mysql-maintainer-mode],
+ [Enable a MySQL maintainer-specific development environment])],
+ [USE_MYSQL_MAINTAINER_MODE=$enableval],
+ [USE_MYSQL_MAINTAINER_MODE=no])
+ AC_MSG_RESULT([$USE_MYSQL_MAINTAINER_MODE])
+])
+
+# Set warning options required under maintainer mode.
+AC_DEFUN([MY_MAINTAINER_MODE_WARNINGS], [
+ # Setup GCC warning options.
+ AS_IF([test "$GCC" = "yes"], [
+ C_WARNINGS="-Wall -Wextra -Wunused -Wwrite-strings -Werror"
+ CXX_WARNINGS="${C_WARNINGS} -Wno-unused-parameter"
+ ])
+
+ # Test whether the warning options work.
+ # Test C options
+ AS_IF([test -n "$C_WARNINGS"], [
+ save_CFLAGS="$CFLAGS"
+ AC_MSG_CHECKING([whether to use C warning options ${C_WARNINGS}])
+ AC_LANG_PUSH(C)
+ CFLAGS="$CFLAGS ${C_WARNINGS}"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_c_warning_flags=yes],
+ [myac_c_warning_flags=no])
+ AC_LANG_POP()
+ AC_MSG_RESULT([$myac_c_warning_flags])
+ CFLAGS="$save_CFLAGS"
+ ])
+
+ # Test C++ options
+ AS_IF([test -n "$CXX_WARNINGS"], [
+ save_CXXFLAGS="$CXXFLAGS"
+ AC_MSG_CHECKING([whether to use C++ warning options ${CXX_WARNINGS}])
+ AC_LANG_PUSH(C++)
+ CXXFLAGS="$CXXFLAGS ${CXX_WARNINGS}"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [myac_cxx_warning_flags=yes],
+ [myac_cxx_warning_flags=no])
+ AC_LANG_POP()
+ AC_MSG_RESULT([$myac_cxx_warning_flags])
+ CXXFLAGS="$save_CXXFLAGS"
+ ])
+
+ # Set compile flag variables.
+ AS_IF([test "$myac_c_warning_flags" = "yes"], [
+ AM_CFLAGS="${AM_CFLAGS} ${C_WARNINGS}"
+ AC_SUBST([AM_CFLAGS])])
+ AS_IF([test "$myac_cxx_warning_flags" = "yes"], [
+ AM_CXXFLAGS="${AM_CXXFLAGS} ${CXX_WARNINGS}"
+ AC_SUBST([AM_CXXFLAGS])])
+])
+
+
+# Set compiler flags required under maintainer mode.
+AC_DEFUN([MY_MAINTAINER_MODE_SETUP], [
+ AS_IF([test "$USE_MYSQL_MAINTAINER_MODE" = "yes"],
+ [MY_MAINTAINER_MODE_WARNINGS])
+])
diff --git a/config/ac-macros/plugins.m4 b/config/ac-macros/plugins.m4
index f74c4daba61..cfc70d188a9 100644
--- a/config/ac-macros/plugins.m4
+++ b/config/ac-macros/plugins.m4
@@ -26,7 +26,7 @@ AC_DEFUN([MYSQL_PLUGIN],[
[__MYSQL_PLUGIN_]AS_TR_CPP([$1])[__],
m4_default([$2], [$1 plugin]),
m4_default([$3], [plugin for $1]),
- m4_default([$4], []),
+ m4_default([[$4]], []),
)
])
@@ -61,7 +61,7 @@ dnl
dnl ---------------------------------------------------------------------------
AC_DEFUN([MYSQL_STORAGE_ENGINE],[
- MYSQL_PLUGIN([$1], [$3], [$4], [[$5]])
+ MYSQL_PLUGIN([$1], [$3], [$4], [$5])
MYSQL_PLUGIN_DEFINE([$1], [WITH_]AS_TR_CPP([$1])[_STORAGE_ENGINE])
ifelse([$2],[no],[],[
_MYSQL_LEGACY_STORAGE_ENGINE(
@@ -203,6 +203,30 @@ AC_DEFUN([_MYSQL_PLUGIN_DISABLED],[
dnl ---------------------------------------------------------------------------
+dnl Macro: MYSQL_PLUGIN_WITHOUT
+dnl
+dnl SYNOPSIS
+dnl MYSQL_PLUGIN_WITHOUT([name])
+dnl
+dnl DESCRIPTION
+dnl Exclude the plugin from being built, as if --without-plugin-name
+dnl was specified.
+dnl If the plugin was selected manually by --with-plugin-name,
+dnl excluding it here will abort the configure script with an error,
+dnl otherwise plugin will be silently disabled.
+dnl
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([MYSQL_PLUGIN_WITHOUT],[
+ MYSQL_REQUIRE_PLUGIN([$1])
+ if test "X[$with_plugin_]$1" = Xyes; then
+ AC_MSG_ERROR([Plugin $1 cannot be built])
+ else
+ [with_plugin_]$1=no
+ fi
+])
+
+dnl ---------------------------------------------------------------------------
dnl Macro: MYSQL_PLUGIN_DEPENDS
dnl
dnl SYNOPSIS
@@ -343,7 +367,7 @@ AC_DEFUN([_MYSQL_EMIT_CHECK_PLUGIN],[
AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
m4_ifdef([$5],[
- AH_TEMPLATE($5, [Include ]$4[ into mysqld])
+ AH_TEMPLATE($5, [Include ]$3[ into mysqld])
])
AC_MSG_CHECKING([whether to use ]$3)
mysql_use_plugin_dir=""
@@ -351,10 +375,10 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
if test "X[$mysql_plugin_]$2" = Xyes -a \
"X[$with_plugin_]$2" != Xno -o \
"X[$with_plugin_]$2" = Xyes; then
- AC_MSG_RESULT([error])
+ __MYSQL_EMIT_CHECK_RESULT($3,[error])
AC_MSG_ERROR([disabled])
fi
- AC_MSG_RESULT([no])
+ __MYSQL_EMIT_CHECK_RESULT($3,[no])
],[
# Plugin is not disabled, determine if it should be built,
@@ -365,7 +389,7 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
# Plugin directory was removed after autoconf was run; treat
# this as a disabled plugin
if test "X[$with_plugin_]$2" = Xyes; then
- AC_MSG_RESULT([error])
+ __MYSQL_EMIT_CHECK_RESULT($3,[error])
AC_MSG_ERROR([disabled])
fi
@@ -376,7 +400,7 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
m4_ifdef([$9],[
if test "X[$with_plugin_]$2" = Xno; then
- AC_MSG_RESULT([error])
+ __MYSQL_EMIT_CHECK_RESULT($3,[error])
AC_MSG_ERROR([cannot disable mandatory plugin])
fi
[mysql_plugin_]$2=yes
@@ -391,11 +415,19 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
fi
;;
esac
+ # Similarly, disable shared plugins when configured with --disable-shared
+ # as libtool will not be able to produce them
+ if test "X[$enable_shared]" = Xno; then
+ if test "X[$mysql_plugin_]$2" != Xyes -a \
+ "X[$with_plugin_]$2" != Xyes; then
+ [with_plugin_]$2=no
+ fi
+ fi
])
if test "X[$with_plugin_]$2" = Xno; then
- AC_MSG_RESULT([no])
+ __MYSQL_EMIT_CHECK_RESULT($3,[no])
else
m4_ifdef([$8],m4_ifdef([$7],[],[[with_plugin_]$2='']))
if test "X[$mysql_plugin_]$2" != Xyes -a \
@@ -408,16 +440,16 @@ AC_DEFUN([__MYSQL_EMIT_CHECK_PLUGIN],[
AC_SUBST([plugin_]$2[_shared_target], "$8")
AC_SUBST([plugin_]$2[_static_target], [""])
[with_plugin_]$2=yes
- AC_MSG_RESULT([plugin])
+ __MYSQL_EMIT_CHECK_RESULT($3,[plugin])
m4_ifdef([$6],[
else
[mysql_plugin_]$2=no
- AC_MSG_RESULT([no])
+ __MYSQL_EMIT_CHECK_RESULT($3,[no])
fi
])
],[
[with_plugin_]$2=no
- AC_MSG_RESULT([no])
+ __MYSQL_EMIT_CHECK_RESULT($3,[no])
])
else
m4_ifdef([$7],[
@@ -450,7 +482,7 @@ dnl Although this is "pretty", it breaks libmysqld build
AC_SUBST([plugin_]$2[_shared_target], [""])
],[
m4_ifdef([$6],[
- AC_MSG_RESULT([error])
+ __MYSQL_EMIT_CHECK_RESULT($3,[error])
AC_MSG_ERROR([Plugin $1 does not support static linking])
],[
m4_ifdef([$5],[
@@ -462,7 +494,7 @@ dnl Although this is "pretty", it breaks libmysqld build
])
maria_plugin_defs="$maria_plugin_defs, [builtin_maria_]$2[_plugin]"
[with_plugin_]$2=yes
- AC_MSG_RESULT([yes])
+ __MYSQL_EMIT_CHECK_RESULT($3,[yes])
m4_ifdef([$11], [
m4_foreach([plugin], [$11], [
condition_dependent_plugin_modules="$condition_dependent_plugin_modules m4_bregexp(plugin, [[^/]+$], [\&])"
@@ -518,6 +550,12 @@ dnl
])
])
+AC_DEFUN([__MYSQL_EMIT_CHECK_RESULT],[
+ AC_MSG_RESULT($2)
+ plugin_report="[$plugin_report]
+m4_format([ * %-32s $2],$1:)"
+])
+
AC_DEFUN([_MYSQL_EMIT_PLUGIN_ACTIONS],[
ifelse($#, 0, [], $#, 1, [
_MYSQL_EMIT_PLUGIN_ACTION([$1])
diff --git a/config/ac-macros/ssl.m4 b/config/ac-macros/ssl.m4
index 729115ffe88..fc55f93d8d6 100644
--- a/config/ac-macros/ssl.m4
+++ b/config/ac-macros/ssl.m4
@@ -38,11 +38,20 @@ AC_DEFUN([MYSQL_USE_BUNDLED_YASSL], [
esac
AC_SUBST([yassl_taocrypt_extra_cxxflags])
+ # Thread safe check
+ yassl_thread_cxxflags=""
+ yassl_thread_safe=""
+ if test "$with_server" != "no" -o "$THREAD_SAFE_CLIENT" != "no"; then
+ yassl_thread_cxxflags="-DYASSL_THREAD_SAFE"
+ yassl_thread_safe="(thread-safe)"
+ fi
+ AC_SUBST([yassl_thread_cxxflags])
+
# Link extra/yassl/include/openssl subdir to include/
yassl_h_ln_cmd="\$(LN) -s \$(top_srcdir)/extra/yassl/include/openssl openssl"
AC_SUBST(yassl_h_ln_cmd)
- AC_MSG_RESULT([using bundled yaSSL])
+ AC_MSG_RESULT([using bundled yaSSL $yassl_thread_safe])
])
diff --git a/configure.in b/configure.in
index 1e4ea8cfdce..9a3c08a1294 100644
--- a/configure.in
+++ b/configure.in
@@ -70,6 +70,7 @@ MYSQL_TCP_PORT_DEFAULT=3306
MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock"
dnl Include m4
+sinclude(config/ac-macros/maintainer.m4)
sinclude(config/ac-macros/alloca.m4)
sinclude(config/ac-macros/check_cpu.m4)
sinclude(config/ac-macros/character_sets.m4)
@@ -108,6 +109,8 @@ AC_SUBST(SHARED_LIB_MAJOR_VERSION)
AC_SUBST(SHARED_LIB_VERSION)
AC_SUBST(AVAILABLE_LANGUAGES)
+# Whether the maintainer mode should be enabled.
+MY_MAINTAINER_MODE
# Canonicalize the configuration name.
@@ -834,9 +837,9 @@ AC_TYPE_SIZE_T
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h fenv.h float.h floatingpoint.h ieeefp.h limits.h \
- memory.h pwd.h select.h fnmatch.h \
- stdlib.h stddef.h sys/stat.h valgrind/memcheck.h \
+AC_CHECK_HEADERS(fcntl.h fenv.h float.h floatingpoint.h fpu_control.h \
+ ieeefp.h limits.h memory.h pwd.h select.h fnmatch.h \
+ stdlib.h stddef.h sys/stat.h \
strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \
sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \
unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \
@@ -1728,6 +1731,17 @@ else
CXXFLAGS="$OPTIMIZE_CXXFLAGS $CXXFLAGS"
fi
+AC_ARG_WITH([valgrind],
+ [AS_HELP_STRING([--with-valgrind],
+ [Valgrind instrumentation @<:@default=no@:>@])],
+ [], [with_valgrind=no])
+
+if test "$with_valgrind" != "no"
+then
+ AC_CHECK_HEADERS([valgrind/valgrind.h valgrind/memcheck.h],
+ [AC_DEFINE([HAVE_VALGRIND], [1], [Define for Valgrind support])])
+fi
+
# Debug Sync Facility. NOTE: depends on 'with_debug'. Must be behind it.
AC_MSG_CHECKING(if Debug Sync Facility should be enabled.)
AC_ARG_ENABLE(debug_sync,
@@ -2897,7 +2911,13 @@ do
done
AC_SUBST(sql_union_dirs)
-# Some useful subst
+#
+# Setup maintainer mode options by the end to not disturb
+# system and other checks.
+#
+MY_MAINTAINER_MODE_SETUP
+
+# Some usefull subst
AC_SUBST(CC)
AC_SUBST(GXX)
@@ -2922,7 +2942,8 @@ fi
AC_CONFIG_FILES(Makefile extra/Makefile mysys/Makefile dnl
unittest/Makefile unittest/mytap/Makefile unittest/mytap/t/Makefile dnl
- unittest/mysys/Makefile unittest/examples/Makefile dnl
+ unittest/mysys/Makefile unittest/strings/Makefile dnl
+ unittest/examples/Makefile dnl
strings/Makefile regex/Makefile storage/Makefile dnl
man/Makefile BUILD/Makefile vio/Makefile dnl
libmysql/Makefile libmysql_r/Makefile client/Makefile dnl
@@ -2946,30 +2967,29 @@ AC_CONFIG_COMMANDS_POST(ac_configure_args="$ac_configure_args CFLAGS='$CFLAGS' C
AC_OUTPUT
-echo
-echo "You can find information about MariaDB at"
-echo http://askmonty.org/wiki/index.php/MariaDB
-echo
-echo "Remember to check the platform specific part of the reference manual for"
-echo "hints about installing MariaDB on your platform. Also have a look at the"
-echo "files in the Docs directory."
-echo
-
echo "---"
echo "Configuration summary for $PACKAGE_NAME version $VERSION"
+echo "$plugin_report" | sort
echo ""
-echo " * Installation prefix: $prefix"
-echo " * System type: $SYSTEM_TYPE"
-echo " * Host CPU: $host_cpu"
-echo " * C Compiler: $CC_VERSION"
-echo " * C++ Compiler: $CXX_VERSION"
-echo " * Debug enabled: $with_debug"
-echo " * Community Features: $ENABLE_COMMUNITY_FEATURES"
+echo " * Installation prefix: $prefix"
+echo " * System type: $SYSTEM_TYPE"
+echo " * Host CPU: $host_cpu"
+echo " * C Compiler: $CC_VERSION"
+echo " * C++ Compiler: $CXX_VERSION"
+echo " * Debug enabled: $with_debug"
+echo " * Community Features: $ENABLE_COMMUNITY_FEATURES"
echo ""
echo "---"
+echo ""
+echo "You can find information about MariaDB at"
+echo "http://kb.askmonty.org/"
+echo ""
+echo "Remember to check the platform specific part of the reference manual for"
+echo "hints about installing MariaDB on your platform. Also have a look at the"
+echo "files in the Docs directory."
# The first line "Thank you ..." is checked in ./Do-compile to verify that configure
# ended sucessfully - don't remove it.
-echo
+echo ""
echo "Thank you for choosing MariaDB!"
-echo
+echo ""
diff --git a/dbug/Makefile.am b/dbug/Makefile.am
index 7e909f9154f..528a6a02fbf 100644
--- a/dbug/Makefile.am
+++ b/dbug/Makefile.am
@@ -65,6 +65,3 @@ output5.r: factorial
# a hack to have executable in builddir, not in srcdir
tests-t: tests-t.pl
cp -f $(srcdir)/tests-t.pl ./tests-t
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/dbug/remove_function_from_trace.pl b/dbug/remove_function_from_trace.pl
index 1da9e25f9ba..380df168caf 100755
--- a/dbug/remove_function_from_trace.pl
+++ b/dbug/remove_function_from_trace.pl
@@ -1,6 +1,5 @@
#!/usr/bin/perl
-
die <<EEE unless @ARGV;
Usage: $0 func1 [func2 [ ...] ]
@@ -11,16 +10,16 @@ DBUG_ENTER() and DBUG_POP(); right before DBUG_RETURN in every such a function.
EEE
$re=join('|', @ARGV);
-$skip='';
while(<STDIN>) {
- print unless $skip;
+ ($thd) = /^(T@\d+)/;
+ print unless $skip{$thd};
next unless /^(?:.*: )*((?:\| )*)([<>])($re)\n/o;
if ($2 eq '>') {
- $skip=$1.$3 unless $skip;
+ $skip{$thd}=$1.$3 unless $skip{$thd};
next;
}
- next if $skip ne $1.$3;
- $skip='';
+ next if $skip{$thd} ne $1.$3;
+ delete $skip{$thd};
print;
}
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt
index cec0db6a4ae..ba90492577d 100755
--- a/extra/CMakeLists.txt
+++ b/extra/CMakeLists.txt
@@ -53,3 +53,5 @@ TARGET_LINK_LIBRARIES(replace strings mysys debug dbug wsock32)
IF(EMBED_MANIFESTS)
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
ENDIF(EMBED_MANIFESTS)
+
+INSTALL(TARGETS comp_err my_print_defaults perror resolveip replace DESTINATION bin COMPONENT runtime)
diff --git a/extra/Makefile.am b/extra/Makefile.am
index 742f39b6827..8d6d18f0031 100644
--- a/extra/Makefile.am
+++ b/extra/Makefile.am
@@ -55,6 +55,3 @@ EXTRA_DIST = CMakeLists.txt
perror.o: perror.c
$(COMPILE) @ndbcluster_includes@ $(LM_CFLAGS) -c $<
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/extra/comp_err.c b/extra/comp_err.c
index bca8d3895cb..adce6a6f5bd 100644
--- a/extra/comp_err.c
+++ b/extra/comp_err.c
@@ -99,31 +99,30 @@ static struct my_option my_long_options[]=
{"debug", '#', "This is a non-debug version. Catch this and exit",
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
#else
- {"debug", '#', "Output debug log", (uchar**) & default_dbug_option,
- (uchar**) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log", &default_dbug_option,
+ &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"debug-info", 'T', "Print some debug info at exit.", (uchar**) & info_flag,
- (uchar**) & info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug-info", 'T', "Print some debug info at exit.", &info_flag,
+ &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"help", '?', "Displays this help and exits.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Prints version", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"charset", 'C', "Charset dir", (uchar**) & charsets_dir,
- (uchar**) & charsets_dir,
+ {"charset", 'C', "Charset dir",
+ (char**) &charsets_dir, (char**) &charsets_dir,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"in_file", 'F', "Input file", (uchar**) & TXTFILE, (uchar**) & TXTFILE,
+ {"in_file", 'F', "Input file", &TXTFILE, &TXTFILE,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"out_dir", 'D', "Output base directory", (uchar**) & DATADIRECTORY,
- (uchar**) & DATADIRECTORY,
+ {"out_dir", 'D', "Output base directory", &DATADIRECTORY, &DATADIRECTORY,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"out_file", 'O', "Output filename (errmsg.sys)", (uchar**) & OUTFILE,
- (uchar**) & OUTFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"header_file", 'H', "mysqld_error.h file ", (uchar**) & HEADERFILE,
- (uchar**) & HEADERFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"name_file", 'N', "mysqld_ername.h file ", (uchar**) & NAMEFILE,
- (uchar**) & NAMEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"state_file", 'S', "sql_state.h file", (uchar**) & STATEFILE,
- (uchar**) & STATEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"out_file", 'O', "Output filename (errmsg.sys)", &OUTFILE,
+ &OUTFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"header_file", 'H', "mysqld_error.h file ", &HEADERFILE,
+ &HEADERFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"name_file", 'N', "mysqld_ername.h file ", &NAMEFILE,
+ &NAMEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"state_file", 'S', "sql_state.h file", &STATEFILE,
+ &STATEFILE, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -641,9 +640,9 @@ static struct message *find_message(struct errors *err, const char *lang,
static ha_checksum checksum_format_specifier(const char* msg)
{
ha_checksum chksum= 0;
- const char* p= msg;
- const char* start= 0;
- int num_format_specifiers= 0;
+ const uchar* p= (const uchar*) msg;
+ const uchar* start= NULL;
+ uint32 num_format_specifiers= 0;
while (*p)
{
@@ -833,7 +832,6 @@ static struct message *parse_message_string(struct message *new_message,
static struct errors *parse_error_string(char *str, int er_count)
{
struct errors *new_error;
- char *start;
DBUG_ENTER("parse_error_string");
DBUG_PRINT("enter", ("str: %s", str));
@@ -844,7 +842,6 @@ static struct errors *parse_error_string(char *str, int er_count)
DBUG_RETURN(0); /* OOM: Fatal error */
/* getting the error name */
- start= str;
str= skip_delimiters(str);
if (!(new_error->er_name= get_word(&str)))
diff --git a/extra/libevent/evbuffer.c b/extra/libevent/evbuffer.c
index 6fe791380ea..432d75d1c53 100644
--- a/extra/libevent/evbuffer.c
+++ b/extra/libevent/evbuffer.c
@@ -75,7 +75,7 @@ bufferevent_add(struct event *ev, int timeout)
*/
void
-bufferevent_read_pressure_cb(struct evbuffer *buf, size_t old, size_t now,
+bufferevent_read_pressure_cb(struct evbuffer *buf, size_t old __attribute__((unused)), size_t now,
void *arg) {
struct bufferevent *bufev = arg;
/*
diff --git a/extra/libevent/event.c b/extra/libevent/event.c
index e96c1b6a3ab..2042c2de626 100644
--- a/extra/libevent/event.c
+++ b/extra/libevent/event.c
@@ -394,7 +394,8 @@ event_base_get_method(struct event_base *base)
}
static void
-event_loopexit_cb(int fd, short what, void *arg)
+event_loopexit_cb(int fd __attribute__((unused)),
+ short what __attribute__((unused)), void *arg)
{
struct event_base *base = arg;
base->event_gotterm = 1;
diff --git a/extra/libevent/signal.c b/extra/libevent/signal.c
index 964ae37fed2..5eb9d3c606e 100644
--- a/extra/libevent/signal.c
+++ b/extra/libevent/signal.c
@@ -69,7 +69,7 @@ static void evsignal_handler(int sig);
/* Callback for when the signal handler write a byte to our signaling socket */
static void
-evsignal_cb(int fd, short what, void *arg)
+evsignal_cb(int fd, short what __attribute__((unused)), void *arg __attribute__((unused)))
{
static char signals[100];
#ifdef WIN32
diff --git a/extra/my_print_defaults.c b/extra/my_print_defaults.c
index 06f7e51c380..847738951dd 100644
--- a/extra/my_print_defaults.c
+++ b/extra/my_print_defaults.c
@@ -46,31 +46,36 @@ static struct my_option my_long_options[] =
searched for a file of this name (and standard filename extensions are
added if the file has no extension)
*/
- {"config-file", 'c', "Deprecated, please use --defaults-file instead. Name of config file to read; if no extension is given, default extension (e.g., .ini or .cnf) will be added",
- (uchar**) &config_file, (uchar**) &config_file, 0, GET_STR, REQUIRED_ARG,
+ {"config-file", 'c', "Deprecated, please use --defaults-file instead. "
+ "Name of config file to read; if no extension is given, default "
+ "extension (e.g., .ini or .cnf) will be added",
+ (char**) &config_file, (char**) &config_file, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#ifdef DBUG_OFF
{"debug", '#', "This is a non-debug version. Catch this and exit",
0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
#else
- {"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
- (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log", (char**) &default_dbug_option,
+ (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"defaults-file", 'c', "Like --config-file, except: if first option, then read this file only, do not read global or per-user config files; should be the first option",
- (uchar**) &config_file, (uchar**) &config_file, 0, GET_STR, REQUIRED_ARG,
+ {"defaults-file", 'c', "Like --config-file, except: if first option, "
+ "then read this file only, do not read global or per-user config "
+ "files; should be the first option",
+ (char**) &config_file, (char*) &config_file, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"defaults-extra-file", 'e',
- "Read this file after the global config file and before the config file in the users home directory; should be the first option",
- (uchar**) &my_defaults_extra_file, (uchar**) &my_defaults_extra_file, 0,
+ "Read this file after the global config file and before the config "
+ "file in the users home directory; should be the first option",
+ &my_defaults_extra_file, &my_defaults_extra_file, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"defaults-group-suffix", 'g',
"In addition to the given groups, read also groups with this suffix",
- (uchar**) &my_defaults_group_suffix, (uchar**) &my_defaults_group_suffix,
+ (char**) &my_defaults_group_suffix, (char**) &my_defaults_group_suffix,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"extra-file", 'e',
"Deprecated. Synonym for --defaults-extra-file.",
- (uchar**) &my_defaults_extra_file,
- (uchar**) &my_defaults_extra_file, 0, GET_STR,
+ &my_defaults_extra_file,
+ &my_defaults_extra_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"no-defaults", 'n', "Return an empty string (useful for scripts).",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
diff --git a/extra/mysql_waitpid.c b/extra/mysql_waitpid.c
index 42465998862..e5c06ac9857 100644
--- a/extra/mysql_waitpid.c
+++ b/extra/mysql_waitpid.c
@@ -38,7 +38,7 @@ static struct my_option my_long_options[] =
0, 0, 0, 0, 0},
{"verbose", 'v',
"Be more verbose. Give a warning, if kill can't handle signal 0.",
- (uchar**) &verbose, (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Print version information and exit.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
diff --git a/extra/perror.c b/extra/perror.c
index a98a4fc3d1b..c32ad2bc791 100644
--- a/extra/perror.c
+++ b/extra/perror.c
@@ -60,18 +60,18 @@ static struct my_option my_long_options[] =
{"info", 'I', "Synonym for --help.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
- {"ndb", 257, "Ndbcluster storage engine specific error codes.", (uchar**) &ndb_code,
- (uchar**) &ndb_code, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"ndb", 257, "Ndbcluster storage engine specific error codes.", &ndb_code,
+ &ndb_code, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
#ifdef HAVE_SYS_ERRLIST
{"all", 'a', "Print all the error messages and the number.",
- (uchar**) &print_all_codes, (uchar**) &print_all_codes, 0, GET_BOOL, NO_ARG,
+ &print_all_codes, &print_all_codes, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
#endif
{"silent", 's', "Only print the error message.", 0, 0, 0, GET_NO_ARG, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"verbose", 'v', "Print error code and message (default).", (uchar**) &verbose,
- (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
+ {"verbose", 'v', "Print error code and message (default).", &verbose,
+ &verbose, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"version", 'V', "Displays version information and exits.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
diff --git a/extra/replace.c b/extra/replace.c
index e254a5e7176..40bddf6d8fb 100644
--- a/extra/replace.c
+++ b/extra/replace.c
@@ -649,7 +649,7 @@ static REPLACE *init_replace(char * *from, char * *to,uint count,
for (i=1 ; i <= found_sets ; i++)
{
pos=from[found_set[i-1].table_offset];
- rep_str[i].found= (my_bool) (!bcmp(pos,"\\^",3) ? 2 : 1);
+ rep_str[i].found= (my_bool) (!memcmp(pos,"\\^",3) ? 2 : 1);
rep_str[i].replace_string=to_array[found_set[i-1].table_offset];
rep_str[i].to_offset=found_set[i-1].found_offset-start_at_word(pos);
rep_str[i].from_offset=found_set[i-1].found_offset-replace_len(pos)+
@@ -777,8 +777,8 @@ static void copy_bits(REP_SET *to,REP_SET *from)
static int cmp_bits(REP_SET *set1,REP_SET *set2)
{
- return bcmp((uchar*) set1->bits,(uchar*) set2->bits,
- sizeof(uint) * set1->size_of_bits);
+ return memcmp(set1->bits, set2->bits,
+ sizeof(uint) * set1->size_of_bits);
}
@@ -850,14 +850,14 @@ static short find_found(FOUND_SET *found_set,uint table_offset,
static uint start_at_word(char * pos)
{
- return (((!bcmp(pos,"\\b",2) && pos[2]) || !bcmp(pos,"\\^",2)) ? 1 : 0);
+ return (((!memcmp(pos,"\\b",2) && pos[2]) || !memcmp(pos,"\\^",2)) ? 1 : 0);
}
static uint end_of_word(char * pos)
{
char * end=strend(pos);
- return ((end > pos+2 && !bcmp(end-2,"\\b",2)) ||
- (end >= pos+2 && !bcmp(end-2,"\\$",2))) ?
+ return ((end > pos+2 && !memcmp(end-2,"\\b",2)) ||
+ (end >= pos+2 && !memcmp(end-2,"\\$",2))) ?
1 : 0;
}
diff --git a/extra/resolve_stack_dump.c b/extra/resolve_stack_dump.c
index 447d63890bd..4faca1653b2 100644
--- a/extra/resolve_stack_dump.c
+++ b/extra/resolve_stack_dump.c
@@ -53,10 +53,10 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"symbols-file", 's', "Use specified symbols file.", (uchar**) &sym_fname,
- (uchar**) &sym_fname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"symbols-file", 's', "Use specified symbols file.", &sym_fname,
+ &sym_fname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"numeric-dump-file", 'n', "Read the dump from specified file.",
- (uchar**) &dump_fname, (uchar**) &dump_fname, 0, GET_STR, REQUIRED_ARG,
+ &dump_fname, &dump_fname, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
diff --git a/extra/resolveip.c b/extra/resolveip.c
index 5f2a9269f62..90fda977848 100644
--- a/extra/resolveip.c
+++ b/extra/resolveip.c
@@ -45,7 +45,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"info", 'I', "Synonym for --help.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"silent", 's', "Be more silent.", (uchar**) &silent, (uchar**) &silent,
+ {"silent", 's', "Be more silent.", &silent, &silent,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Displays version information and exits.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
diff --git a/extra/yassl/CMakeLists.txt b/extra/yassl/CMakeLists.txt
index ffb72b831af..3407aa7d0dc 100755
--- a/extra/yassl/CMakeLists.txt
+++ b/extra/yassl/CMakeLists.txt
@@ -17,7 +17,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/include
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL)
-ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX")
+ADD_DEFINITIONS("-D_LIB -DYASSL_PREFIX -DYASSL_THREAD_SAFE")
SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp src/handshake.cpp src/lock.cpp
src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
diff --git a/extra/yassl/certs/ca-cert.pem b/extra/yassl/certs/ca-cert.pem
index 981dd004fc6..e353d118712 100644
--- a/extra/yassl/certs/ca-cert.pem
+++ b/extra/yassl/certs/ca-cert.pem
@@ -5,49 +5,49 @@ Certificate:
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US, ST=Oregon, L=Portland, O=sawtooth, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com
Validity
- Not Before: Jan 18 20:12:32 2005 GMT
- Not After : Oct 15 20:12:32 2007 GMT
+ Not Before: Mar 7 03:10:11 2005 GMT
+ Not After : Apr 1 03:10:11 2046 GMT
Subject: C=US, ST=Oregon, L=Portland, O=sawtooth, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (512 bit)
Modulus (512 bit):
- 00:cf:2b:14:00:b0:3c:df:6f:9e:91:40:ec:c8:f6:
- 90:b2:5b:b4:70:80:a5:a4:0a:73:c7:44:f3:2a:26:
- c4:2f:f1:3a:f1:c3:c4:ac:fc:c3:d2:c3:bf:f5:d7:
- 6a:38:42:ad:22:ab:c8:c4:4b:4c:1d:16:af:05:34:
- 7d:79:97:5e:e1
+ 00:ef:c1:e3:9a:3c:6e:6e:cb:26:6f:05:be:e0:cb:
+ 57:a0:4b:68:e6:1b:f9:95:db:01:92:aa:6e:a6:b5:
+ 2d:b1:2b:50:fd:db:13:f2:c5:d8:b8:4f:75:28:53:
+ 72:e8:e5:11:9d:bb:c3:4f:4f:09:fd:4c:e7:46:d5:
+ 1d:bb:35:02:af
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
- CB:0F:1F:E9:A2:76:71:C9:E6:E8:23:A6:C1:18:B7:CC:44:CF:B9:84
+ 1D:EF:A1:B8:81:78:12:47:E8:57:06:08:74:18:F7:D3:AA:D8:F7:BD
X509v3 Authority Key Identifier:
- keyid:CB:0F:1F:E9:A2:76:71:C9:E6:E8:23:A6:C1:18:B7:CC:44:CF:B9:84
+ keyid:1D:EF:A1:B8:81:78:12:47:E8:57:06:08:74:18:F7:D3:AA:D8:F7:BD
DirName:/C=US/ST=Oregon/L=Portland/O=sawtooth/CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com
serial:00
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
- 27:f7:3d:fb:39:6f:73:a4:86:f3:a0:48:22:60:84:e9:5c:3d:
- 28:36:05:16:44:98:07:87:e1:5d:b5:f3:a7:bc:33:5f:f4:29:
- a9:5f:87:33:df:e6:8e:bd:e2:f3:0a:c8:00:69:ae:3d:41:47:
- 03:ea:0b:4c:67:45:4b:ab:f3:39
+ d9:77:e3:07:d9:2e:ec:2f:9b:8e:9e:ca:b4:00:0b:ef:c7:74:
+ cb:f4:f6:44:2f:02:75:17:a5:74:3e:26:b2:26:fd:1f:ab:3a:
+ df:d5:e3:05:14:08:d0:8c:1d:c9:3e:e1:59:6f:b3:38:5d:af:
+ 78:60:e3:c5:6a:69:96:80:7d:00
-----BEGIN CERTIFICATE-----
MIIC7zCCApmgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCVVMx
DzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxETAPBgNVBAoTCHNh
d3Rvb3RoMSQwIgYDVQQDExt3d3cuc2F3dG9vdGgtY29uc3VsdGluZy5jb20xHTAb
-BgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTA1MDExODIwMTIzMloXDTA3
-MTAxNTIwMTIzMlowgYkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24xETAP
+BgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTA1MDMwNzAzMTAxMVoXDTQ2
+MDQwMTAzMTAxMVowgYkxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24xETAP
BgNVBAcTCFBvcnRsYW5kMREwDwYDVQQKEwhzYXd0b290aDEkMCIGA1UEAxMbd3d3
LnNhd3Rvb3RoLWNvbnN1bHRpbmcuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlh
-c3NsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDPKxQAsDzfb56RQOzI9pCy
-W7RwgKWkCnPHRPMqJsQv8Trxw8Ss/MPSw7/112o4Qq0iq8jES0wdFq8FNH15l17h
-AgMBAAGjgekwgeYwHQYDVR0OBBYEFMsPH+midnHJ5ugjpsEYt8xEz7mEMIG2BgNV
-HSMEga4wgauAFMsPH+midnHJ5ugjpsEYt8xEz7mEoYGPpIGMMIGJMQswCQYDVQQG
+c3NsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDvweOaPG5uyyZvBb7gy1eg
+S2jmG/mV2wGSqm6mtS2xK1D92xPyxdi4T3UoU3Lo5RGdu8NPTwn9TOdG1R27NQKv
+AgMBAAGjgekwgeYwHQYDVR0OBBYEFB3vobiBeBJH6FcGCHQY99Oq2Pe9MIG2BgNV
+HSMEga4wgauAFB3vobiBeBJH6FcGCHQY99Oq2Pe9oYGPpIGMMIGJMQswCQYDVQQG
EwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDERMA8GA1UE
ChMIc2F3dG9vdGgxJDAiBgNVBAMTG3d3dy5zYXd0b290aC1jb25zdWx0aW5nLmNv
bTEdMBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb22CAQAwDAYDVR0TBAUwAwEB
-/zANBgkqhkiG9w0BAQQFAANBACf3Pfs5b3OkhvOgSCJghOlcPSg2BRZEmAeH4V21
-86e8M1/0KalfhzPf5o694vMKyABprj1BRwPqC0xnRUur8zk=
+/zANBgkqhkiG9w0BAQQFAANBANl34wfZLuwvm46eyrQAC+/HdMv09kQvAnUXpXQ+
+JrIm/R+rOt/V4wUUCNCMHck+4Vlvszhdr3hg48VqaZaAfQA=
-----END CERTIFICATE-----
diff --git a/extra/yassl/certs/client-cert.der b/extra/yassl/certs/client-cert.der
index b28e2753376..c2a75119e54 100644
--- a/extra/yassl/certs/client-cert.der
+++ b/extra/yassl/certs/client-cert.der
Binary files differ
diff --git a/extra/yassl/certs/client-cert.pem b/extra/yassl/certs/client-cert.pem
index 81110f17252..4d2bbff7ca5 100644
--- a/extra/yassl/certs/client-cert.pem
+++ b/extra/yassl/certs/client-cert.pem
@@ -5,8 +5,8 @@ Certificate:
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US, ST=Oregon, L=Portland, O=yaSSL, CN=www.yassl.com/emailAddress=info@yassl.com
Validity
- Not Before: Jan 18 19:33:15 2005 GMT
- Not After : Oct 15 19:33:15 2007 GMT
+ Not Before: Mar 7 03:00:31 2005 GMT
+ Not After : Apr 1 03:00:31 2046 GMT
Subject: C=US, ST=Oregon, L=Portland, O=yaSSL, CN=www.yassl.com/emailAddress=info@yassl.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
@@ -29,15 +29,15 @@ Certificate:
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
- c5:82:26:0c:1f:61:01:14:b0:ce:18:99:64:91:0e:f1:f8:90:
- 3e:a3:0e:be:38:7c:97:ba:05:c9:2a:dc:dd:62:2d:12:61:79:
- 7a:86:b1:97:5d:1e:e8:f7:e8:32:34:f7:8f:b1:08:3d:13:71:
- a6:3c:15:91:85:12:35:6e:78:87
+ 59:19:ae:1b:4e:65:9e:ca:f1:b8:3d:ff:c7:5e:15:86:10:97:
+ 8c:3e:22:32:ab:4e:75:a7:70:83:f2:fb:2f:af:fe:26:28:e9:
+ 4f:d4:c9:49:7c:6f:51:7e:2a:ff:a0:5b:25:45:2e:66:d9:0d:
+ 92:94:e5:b8:60:c6:67:1a:f3:03
-----BEGIN CERTIFICATE-----
MIICtzCCAmGgAwIBAgIBADANBgkqhkiG9w0BAQQFADB4MQswCQYDVQQGEwJVUzEP
MA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDEOMAwGA1UEChMFeWFT
U0wxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9A
-eWFzc2wuY29tMB4XDTA1MDExODE5MzMxNVoXDTA3MTAxNTE5MzMxNVoweDELMAkG
+eWFzc2wuY29tMB4XDTA1MDMwNzAzMDAzMVoXDTQ2MDQwMTAzMDAzMVoweDELMAkG
A1UEBhMCVVMxDzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxDjAM
BgNVBAoTBXlhU1NMMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJKoZIhvcN
AQkBFg5pbmZvQHlhc3NsLmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDNH3hH
@@ -47,6 +47,6 @@ wP/OtbStMIGiBgNVHSMEgZowgZeAFK4lXvpNo1srh97xKvVCwP/OtbStoXykejB4
MQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFu
ZDEOMAwGA1UEChMFeWFTU0wxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkq
hkiG9w0BCQEWDmluZm9AeWFzc2wuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZI
-hvcNAQEEBQADQQDFgiYMH2EBFLDOGJlkkQ7x+JA+ow6+OHyXugXJKtzdYi0SYXl6
-hrGXXR7o9+gyNPePsQg9E3GmPBWRhRI1bniH
+hvcNAQEEBQADQQBZGa4bTmWeyvG4Pf/HXhWGEJeMPiIyq051p3CD8vsvr/4mKOlP
+1MlJfG9Rfir/oFslRS5m2Q2SlOW4YMZnGvMD
-----END CERTIFICATE-----
diff --git a/extra/yassl/certs/dsa-cert.pem b/extra/yassl/certs/dsa-cert.pem
index ecca18dae82..788d263bb9f 100644
--- a/extra/yassl/certs/dsa-cert.pem
+++ b/extra/yassl/certs/dsa-cert.pem
@@ -5,8 +5,8 @@ Certificate:
Signature Algorithm: dsaWithSHA1
Issuer: C=US, ST=Oregon, L=Portland, O=yaSSL DSA, CN=yaSSL DSA/emailAddress=info@yassl.com
Validity
- Not Before: Jan 23 22:54:51 2005 GMT
- Not After : Oct 20 22:54:51 2007 GMT
+ Not Before: Mar 7 03:22:00 2005 GMT
+ Not After : Apr 1 03:22:00 2046 GMT
Subject: C=US, ST=Oregon, L=Portland, O=yaSSL DSA, CN=yaSSL DSA/emailAddress=info@yassl.com
Subject Public Key Info:
Public Key Algorithm: dsaEncryption
@@ -43,14 +43,14 @@ Certificate:
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: dsaWithSHA1
- 30:2b:02:14:74:46:9f:91:7b:24:17:3b:ee:0f:10:e3:76:62:
- f4:dc:81:e6:fd:fe:02:13:08:f4:87:0a:ab:ba:9c:de:3a:69:
- 72:59:b8:ec:e9:57:f4:bf:37
+ 30:2c:02:14:7e:5e:94:fc:7f:ca:81:ab:b3:32:f7:21:83:48:
+ 48:5f:0a:f1:13:ca:02:14:73:54:32:14:51:22:bf:0b:ec:d7:
+ 6a:6a:fa:a7:1d:46:b4:c2:a3:b5
-----BEGIN CERTIFICATE-----
-MIIDMTCCAvKgAwIBAgIBADAJBgcqhkjOOAQDMHgxCzAJBgNVBAYTAlVTMQ8wDQYD
+MIIDMjCCAvKgAwIBAgIBADAJBgcqhkjOOAQDMHgxCzAJBgNVBAYTAlVTMQ8wDQYD
VQQIEwZPcmVnb24xETAPBgNVBAcTCFBvcnRsYW5kMRIwEAYDVQQKEwl5YVNTTCBE
U0ExEjAQBgNVBAMTCXlhU1NMIERTQTEdMBsGCSqGSIb3DQEJARYOaW5mb0B5YXNz
-bC5jb20wHhcNMDUwMTIzMjI1NDUxWhcNMDcxMDIwMjI1NDUxWjB4MQswCQYDVQQG
+bC5jb20wHhcNMDUwMzA3MDMyMjAwWhcNNDYwNDAxMDMyMjAwWjB4MQswCQYDVQQG
EwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDESMBAGA1UE
ChMJeWFTU0wgRFNBMRIwEAYDVQQDEwl5YVNTTCBEU0ExHTAbBgkqhkiG9w0BCQEW
DmluZm9AeWFzc2wuY29tMIHwMIGoBgcqhkjOOAQBMIGcAkEAmSlpgMk8mGhFqYL+
@@ -63,6 +63,6 @@ IeRhRHPp4jCBogYDVR0jBIGaMIGXgBS++Yxd1hy07oHdNlYKIeRhRHPp4qF8pHow
eDELMAkGA1UEBhMCVVMxDzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxh
bmQxEjAQBgNVBAoTCXlhU1NMIERTQTESMBAGA1UEAxMJeWFTU0wgRFNBMR0wGwYJ
KoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbYIBADAMBgNVHRMEBTADAQH/MAkGByqG
-SM44BAMDLgAwKwIUdEafkXskFzvuDxDjdmL03IHm/f4CEwj0hwqrupzeOmlyWbjs
-6Vf0vzc=
+SM44BAMDLwAwLAIUfl6U/H/KgauzMvchg0hIXwrxE8oCFHNUMhRRIr8L7Ndqavqn
+HUa0wqO1
-----END CERTIFICATE-----
diff --git a/extra/yassl/certs/server-cert.pem b/extra/yassl/certs/server-cert.pem
index 403dabdf5fa..30608f5f65b 100644
--- a/extra/yassl/certs/server-cert.pem
+++ b/extra/yassl/certs/server-cert.pem
@@ -5,8 +5,8 @@ Certificate:
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US, ST=Oregon, L=Portland, O=sawtooth, CN=www.sawtooth-consulting.com/emailAddress=info@yassl.com
Validity
- Not Before: Jan 18 20:50:59 2005 GMT
- Not After : Oct 15 20:50:59 2007 GMT
+ Not Before: Mar 8 03:00:47 2005 GMT
+ Not After : Apr 2 03:00:47 2046 GMT
Subject: C=US, ST=Oregon, L=Portland, O=taoSoftDev, CN=www.taosoftdev.com/emailAddress=info@yassl.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
@@ -19,20 +19,20 @@ Certificate:
f2:25:93:22:e7
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
- 08:36:07:8c:3a:7f:f9:91:0a:82:d1:6a:c1:34:be:bc:2d:b2:
- 20:98:dc:45:50:53:9c:66:e6:26:71:bd:fa:d2:b4:91:d3:53:
- c0:20:05:c0:b6:84:9a:5f:3f:61:75:f5:fd:c6:ec:e2:f6:9f:
- a2:13:17:a9:b7:83:60:cc:cb:eb
+ 36:72:12:3b:ac:e4:58:83:09:86:4f:71:2a:3a:0d:8a:05:27:
+ 75:f3:3e:62:4f:ab:b8:70:20:cd:ad:70:ab:91:11:68:f8:82:
+ 33:e2:78:85:a8:16:f5:66:bd:68:2c:5a:26:15:12:1e:6e:83:
+ c7:6d:62:b9:c3:ff:e1:86:e4:e6
-----BEGIN CERTIFICATE-----
MIIB9zCCAaECAQEwDQYJKoZIhvcNAQEEBQAwgYkxCzAJBgNVBAYTAlVTMQ8wDQYD
VQQIEwZPcmVnb24xETAPBgNVBAcTCFBvcnRsYW5kMREwDwYDVQQKEwhzYXd0b290
aDEkMCIGA1UEAxMbd3d3LnNhd3Rvb3RoLWNvbnN1bHRpbmcuY29tMR0wGwYJKoZI
-hvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0wNTAxMTgyMDUwNTlaFw0wNzEwMTUy
-MDUwNTlaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQH
+hvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0wNTAzMDgwMzAwNDdaFw00NjA0MDIw
+MzAwNDdaMIGCMQswCQYDVQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQH
EwhQb3J0bGFuZDETMBEGA1UEChMKdGFvU29mdERldjEbMBkGA1UEAxMSd3d3LnRh
b3NvZnRkZXYuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTBcMA0G
CSqGSIb3DQEBAQUAA0sAMEgCQQCkaLu8tydfPPV4xhqvuZX8fmEfqIEKykOImgPg
0KZ5cBY0uXx1VMpwGWY4vm4ofqX/azyDLzlCwxXzvfIlkyLnAgMBAAEwDQYJKoZI
-hvcNAQEEBQADQQAINgeMOn/5kQqC0WrBNL68LbIgmNxFUFOcZuYmcb360rSR01PA
-IAXAtoSaXz9hdfX9xuzi9p+iExept4NgzMvr
+hvcNAQEEBQADQQA2chI7rORYgwmGT3EqOg2KBSd18z5iT6u4cCDNrXCrkRFo+IIz
+4niFqBb1Zr1oLFomFRIeboPHbWK5w//hhuTm
-----END CERTIFICATE-----
diff --git a/extra/yassl/include/lock.hpp b/extra/yassl/include/lock.hpp
index 0525943e45d..99829b0b6de 100644
--- a/extra/yassl/include/lock.hpp
+++ b/extra/yassl/include/lock.hpp
@@ -23,13 +23,21 @@
#ifndef yaSSL_LOCK_HPP
#define yaSSL_LOCK_HPP
+/*
+ Visual Studio Source Annotations header (sourceannotations.h) fails
+ to compile if outside of the global namespace.
+*/
+#ifdef YASSL_THREAD_SAFE
+#ifdef _WIN32
+#include <windows.h>
+#endif
+#endif
namespace yaSSL {
-#ifdef MULTI_THREADED
+#ifdef YASSL_THREAD_SAFE
#ifdef _WIN32
- #include <windows.h>
class Mutex {
CRITICAL_SECTION cs_;
@@ -69,7 +77,7 @@ namespace yaSSL {
};
#endif // _WIN32
-#else // MULTI_THREADED (WE'RE SINGLE)
+#else // YASSL_THREAD_SAFE (WE'RE SINGLE)
class Mutex {
public:
@@ -79,7 +87,7 @@ namespace yaSSL {
};
};
-#endif // MULTI_THREADED
+#endif // YASSL_THREAD_SAFE
diff --git a/extra/yassl/src/Makefile.am b/extra/yassl/src/Makefile.am
index bc57e7d05ba..d192eb03b49 100644
--- a/extra/yassl/src/Makefile.am
+++ b/extra/yassl/src/Makefile.am
@@ -5,7 +5,7 @@ libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \
template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
EXTRA_DIST = $(wildcard ../include/*.hpp) $(wildcard ../include/openssl/*.h)
-AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX
+AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX @yassl_thread_cxxflags@
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/extra/yassl/src/lock.cpp b/extra/yassl/src/lock.cpp
index 6d8e9c17477..6e85fefa14d 100644
--- a/extra/yassl/src/lock.cpp
+++ b/extra/yassl/src/lock.cpp
@@ -26,7 +26,7 @@
namespace yaSSL {
-#ifdef MULTI_THREADED
+#ifdef YASSL_THREAD_SAFE
#ifdef _WIN32
Mutex::Mutex()
@@ -79,7 +79,7 @@ namespace yaSSL {
#endif // _WIN32
-#endif // MULTI_THREADED
+#endif // YASSL_THREAD_SAFE
diff --git a/extra/yassl/src/yassl_imp.cpp b/extra/yassl/src/yassl_imp.cpp
index d0eabce7bc9..5128c00418e 100644
--- a/extra/yassl/src/yassl_imp.cpp
+++ b/extra/yassl/src/yassl_imp.cpp
@@ -884,21 +884,19 @@ void Alert::Process(input_buffer& input, SSL& ssl)
else
hmac(ssl, verify, data, aSz, alert, true);
- // read mac and fill
+ // read mac and skip fill
int digestSz = ssl.getCrypto().get_digest().get_digestSize();
opaque mac[SHA_LEN];
input.read(mac, digestSz);
if (ssl.getSecurity().get_parms().cipher_type_ == block) {
int ivExtra = 0;
- opaque fill;
if (ssl.isTLSv1_1())
ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra -
aSz - digestSz;
- for (int i = 0; i < padSz; i++)
- fill = input[AUTO];
+ input.set_current(input.get_current() + padSz);
}
// verify
@@ -981,17 +979,17 @@ output_buffer& operator<<(output_buffer& output, const Data& data)
void Data::Process(input_buffer& input, SSL& ssl)
{
int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
- int pad = 0, padByte = 0;
+ int pad = 0, padSz = 0;
int ivExtra = 0;
if (ssl.getSecurity().get_parms().cipher_type_ == block) {
if (ssl.isTLSv1_1()) // IV
ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);
- padByte = 1;
+ padSz = 1;
}
int digestSz = ssl.getCrypto().get_digest().get_digestSize();
- int dataSz = msgSz - ivExtra - digestSz - pad - padByte;
+ int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
opaque verify[SHA_LEN];
const byte* rawData = input.get_buffer() + input.get_current();
@@ -1020,14 +1018,10 @@ void Data::Process(input_buffer& input, SSL& ssl)
hmac(ssl, verify, rawData, dataSz, application_data, true);
}
- // read mac and fill
+ // read mac and skip fill
opaque mac[SHA_LEN];
- opaque fill;
input.read(mac, digestSz);
- for (int i = 0; i < pad; i++)
- fill = input[AUTO];
- if (padByte)
- fill = input[AUTO];
+ input.set_current(input.get_current() + pad + padSz);
// verify
if (dataSz) {
@@ -2072,11 +2066,9 @@ void Finished::Process(input_buffer& input, SSL& ssl)
if (ssl.isTLSv1_1())
ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
- opaque fill;
int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra -
HANDSHAKE_HEADER - finishedSz - digestSz;
- for (int i = 0; i < padSz; i++)
- fill = input[AUTO];
+ input.set_current(input.get_current() + padSz);
// verify mac
if (memcmp(mac, verifyMAC, digestSz)) {
diff --git a/extra/yassl/taocrypt/CMakeLists.txt b/extra/yassl/taocrypt/CMakeLists.txt
index e91fa021de5..c8faeac3b77 100755
--- a/extra/yassl/taocrypt/CMakeLists.txt
+++ b/extra/yassl/taocrypt/CMakeLists.txt
@@ -16,6 +16,8 @@
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/mySTL
${CMAKE_SOURCE_DIR}/extra/yassl/taocrypt/include)
+ADD_DEFINITIONS("-DYASSL_THREAD_SAFE")
+
SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp src/asn.cpp src/coding.cpp
src/des.cpp src/dh.cpp src/dsa.cpp src/file.cpp src/hash.cpp src/integer.cpp src/md2.cpp
src/md4.cpp src/md5.cpp src/misc.cpp src/random.cpp src/ripemd.cpp src/rsa.cpp src/sha.cpp
diff --git a/extra/yassl/taocrypt/benchmark/Makefile.am b/extra/yassl/taocrypt/benchmark/Makefile.am
index 2fe1c90c90d..1f082f22f40 100644
--- a/extra/yassl/taocrypt/benchmark/Makefile.am
+++ b/extra/yassl/taocrypt/benchmark/Makefile.am
@@ -2,7 +2,7 @@ INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
noinst_PROGRAMS = benchmark
benchmark_SOURCES = benchmark.cpp
benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
-benchmark_CXXFLAGS = -DYASSL_PURE_C
+benchmark_CXXFLAGS = -DYASSL_PURE_C @yassl_thread_cxxflags@
EXTRA_DIST = benchmark.dsp rsa1024.der dh1024.der dsa1024.der make.bat
# Don't update the files from bitkeeper
diff --git a/extra/yassl/taocrypt/include/blowfish.hpp b/extra/yassl/taocrypt/include/blowfish.hpp
index 90d2c014b4c..94bbab7aea8 100644
--- a/extra/yassl/taocrypt/include/blowfish.hpp
+++ b/extra/yassl/taocrypt/include/blowfish.hpp
@@ -51,7 +51,7 @@ public:
enum { BLOCK_SIZE = BLOWFISH_BLOCK_SIZE, ROUNDS = 16 };
Blowfish(CipherDir DIR, Mode MODE)
- : Mode_BASE(BLOCK_SIZE, DIR, MODE) {}
+ : Mode_BASE(BLOCK_SIZE, DIR, MODE), sbox_(pbox_ + ROUNDS + 2) {}
#ifdef DO_BLOWFISH_ASM
void Process(byte*, const byte*, word32);
@@ -62,8 +62,8 @@ private:
static const word32 p_init_[ROUNDS + 2];
static const word32 s_init_[4 * 256];
- word32 pbox_[ROUNDS + 2];
- word32 sbox_[4 * 256];
+ word32 pbox_[ROUNDS + 2 + 4 * 256];
+ word32* sbox_;
void crypt_block(const word32 in[2], word32 out[2]) const;
void AsmProcess(const byte* in, byte* out) const;
diff --git a/extra/yassl/taocrypt/include/runtime.hpp b/extra/yassl/taocrypt/include/runtime.hpp
index 99bbe3ac8a3..9d12b253dd6 100644
--- a/extra/yassl/taocrypt/include/runtime.hpp
+++ b/extra/yassl/taocrypt/include/runtime.hpp
@@ -35,10 +35,7 @@
// Handler for pure virtual functions
namespace __Crun {
- static void pure_error(void)
- {
- assert("Pure virtual method called." == "Aborted");
- }
+ void pure_error(void);
} // namespace __Crun
#endif // __sun
@@ -54,16 +51,7 @@ extern "C" {
#else
#include "kernelc.hpp"
#endif
-
-/* Disallow inline __cxa_pure_virtual() */
-static int __cxa_pure_virtual() __attribute__((noinline, used));
-static int __cxa_pure_virtual()
-{
- // oops, pure virtual called!
- assert("Pure virtual method called." == "Aborted");
- return 0;
-}
-
+ int __cxa_pure_virtual () __attribute__ ((weak));
} // extern "C"
#endif // __GNUC__ > 2
diff --git a/extra/yassl/taocrypt/src/Makefile.am b/extra/yassl/taocrypt/src/Makefile.am
index 61032d4c381..6ca969ad686 100644
--- a/extra/yassl/taocrypt/src/Makefile.am
+++ b/extra/yassl/taocrypt/src/Makefile.am
@@ -8,7 +8,8 @@ libtaocrypt_la_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp \
random.cpp ripemd.cpp rsa.cpp sha.cpp template_instnt.cpp \
tftables.cpp twofish.cpp
-libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C
+libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C \
+ @yassl_thread_cxxflags@
EXTRA_DIST = $(wildcard ../include/*.hpp)
diff --git a/extra/yassl/taocrypt/src/algebra.cpp b/extra/yassl/taocrypt/src/algebra.cpp
index 6e402da0117..437563b9093 100644
--- a/extra/yassl/taocrypt/src/algebra.cpp
+++ b/extra/yassl/taocrypt/src/algebra.cpp
@@ -185,10 +185,10 @@ Integer AbstractGroup::CascadeScalarMultiply(const Element &x,
struct WindowSlider
{
- WindowSlider(const Integer &exp, bool fastNegate,
+ WindowSlider(const Integer &expIn, bool fastNegateIn,
unsigned int windowSizeIn=0)
- : exp(exp), windowModulus(Integer::One()), windowSize(windowSizeIn),
- windowBegin(0), fastNegate(fastNegate), firstTime(true),
+ : exp(expIn), windowModulus(Integer::One()), windowSize(windowSizeIn),
+ windowBegin(0), fastNegate(fastNegateIn), firstTime(true),
finished(false)
{
if (windowSize == 0)
diff --git a/extra/yassl/taocrypt/src/coding.cpp b/extra/yassl/taocrypt/src/coding.cpp
index 7a9d50aaac9..7fc681e1a05 100644
--- a/extra/yassl/taocrypt/src/coding.cpp
+++ b/extra/yassl/taocrypt/src/coding.cpp
@@ -185,7 +185,7 @@ void Base64Decoder::Decode()
{
word32 bytes = coded_.size();
word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz);
- plainSz = (plainSz * 3 + 3) / 4;
+ plainSz = ((plainSz * 3) / 4) + 3;
decoded_.New(plainSz);
word32 i = 0;
diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp
index 85733b88aa9..b054e98bef4 100644
--- a/extra/yassl/taocrypt/src/integer.cpp
+++ b/extra/yassl/taocrypt/src/integer.cpp
@@ -283,21 +283,23 @@ DWord() {}
word GetHighHalfAsBorrow() const {return 0-halfs_.high;}
private:
+ struct dword_struct
+ {
+ #ifdef LITTLE_ENDIAN_ORDER
+ word low;
+ word high;
+ #else
+ word high;
+ word low;
+ #endif
+ };
+
union
{
#ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
dword whole_;
#endif
- struct
- {
- #ifdef LITTLE_ENDIAN_ORDER
- word low;
- word high;
- #else
- word high;
- word low;
- #endif
- } halfs_;
+ struct dword_struct halfs_;
};
};
@@ -1214,20 +1216,24 @@ public:
#define AS1(x) #x ";"
#define AS2(x, y) #x ", " #y ";"
#define AddPrologue \
+ word res; \
__asm__ __volatile__ \
( \
"push %%ebx;" /* save this manually, in case of -fPIC */ \
- "mov %2, %%ebx;" \
+ "mov %3, %%ebx;" \
".intel_syntax noprefix;" \
"push ebp;"
#define AddEpilogue \
"pop ebp;" \
".att_syntax prefix;" \
"pop %%ebx;" \
- : \
+ "mov %%eax, %0;" \
+ : "=g" (res) \
: "c" (C), "d" (A), "m" (B), "S" (N) \
: "%edi", "memory", "cc" \
- );
+ ); \
+ return res;
+
#define MulPrologue \
__asm__ __volatile__ \
( \
diff --git a/extra/yassl/taocrypt/src/misc.cpp b/extra/yassl/taocrypt/src/misc.cpp
index edbc678da3a..978665b2f7c 100644
--- a/extra/yassl/taocrypt/src/misc.cpp
+++ b/extra/yassl/taocrypt/src/misc.cpp
@@ -84,12 +84,23 @@ namespace STL = STL_NAMESPACE;
}
-#if defined(__ICC) || defined(__INTEL_COMPILER)
+#ifdef __sun
+
+// Handler for pure virtual functions
+namespace __Crun {
+ void pure_error() {
+ assert(!"Aborted: pure virtual method called.");
+ }
+}
+
+#endif
+
+#if defined(__ICC) || defined(__INTEL_COMPILER) || (__GNUC__ > 2)
extern "C" {
int __cxa_pure_virtual() {
- assert("Pure virtual method called." == "Aborted");
+ assert(!"Aborted: pure virtual method called.");
return 0;
}
@@ -176,7 +187,6 @@ word Crop(word value, unsigned int size)
#endif
#endif
-
bool HaveCpuId()
{
#ifdef _MSC_VER
diff --git a/extra/yassl/taocrypt/test/Makefile.am b/extra/yassl/taocrypt/test/Makefile.am
index 73e7f729bdb..aa325ff9b75 100644
--- a/extra/yassl/taocrypt/test/Makefile.am
+++ b/extra/yassl/taocrypt/test/Makefile.am
@@ -2,7 +2,7 @@ INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
noinst_PROGRAMS = test
test_SOURCES = test.cpp
test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
-test_CXXFLAGS = -DYASSL_PURE_C
+test_CXXFLAGS = -DYASSL_PURE_C @yassl_thread_cxxflags@
EXTRA_DIST = make.bat
# Don't update the files from bitkeeper
diff --git a/extra/yassl/taocrypt/test/memory.cpp b/extra/yassl/taocrypt/test/memory.cpp
index 726c9c0ef54..a879a497800 100644
--- a/extra/yassl/taocrypt/test/memory.cpp
+++ b/extra/yassl/taocrypt/test/memory.cpp
@@ -13,7 +13,7 @@
To use MemoryTracker merely add this file to your project
No need to instantiate anything
-If your app is multi threaded define MULTI_THREADED
+If your app is multi threaded define YASSL_THREAD_SAFE
*********************************************************************/
diff --git a/extra/yassl/testsuite/Makefile.am b/extra/yassl/testsuite/Makefile.am
index cae34e7bbc0..e626b1822ec 100644
--- a/extra/yassl/testsuite/Makefile.am
+++ b/extra/yassl/testsuite/Makefile.am
@@ -4,7 +4,7 @@ testsuite_SOURCES = testsuite.cpp ../taocrypt/test/test.cpp \
../examples/client/client.cpp ../examples/server/server.cpp \
../examples/echoclient/echoclient.cpp \
../examples/echoserver/echoserver.cpp
-testsuite_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX -DNO_MAIN_DRIVER
+testsuite_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX -DNO_MAIN_DRIVER @yassl_thread_cxxflags@
testsuite_LDADD = $(top_builddir)/extra/yassl/src/libyassl.la \
$(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
EXTRA_DIST = testsuite.dsp test.hpp input quit make.bat
diff --git a/extra/yassl/testsuite/test.hpp b/extra/yassl/testsuite/test.hpp
index c921f8f9c69..970ba5bf367 100644
--- a/extra/yassl/testsuite/test.hpp
+++ b/extra/yassl/testsuite/test.hpp
@@ -160,6 +160,11 @@ inline void err_sys(const char* msg)
}
+extern "C" {
+ static int PasswordCallBack(char*, int, int, void*);
+}
+
+
static int PasswordCallBack(char* passwd, int sz, int rw, void* userdata)
{
strncpy(passwd, "12345678", sz);
diff --git a/include/Makefile.am b/include/Makefile.am
index 8a0b4610a90..fb5c746d129 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -43,8 +43,9 @@ noinst_HEADERS = config-win.h config-netware.h lf.h my_bit.h \
my_vle.h my_user.h my_atomic.h atomic/nolock.h \
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
- wqueue.h waiting_threads.h
-EXTRA_DIST = mysql.h.pp mysql/plugin_auth.h.pp mysql/client_plugin.h.pp
+ wqueue.h waiting_threads.h my_compiler.h
+
+EXTRA_DIST = mysql.h.pp mysql/plugin_auth.h.pp mysql/client_plugin.h.pp
# Remove built files and the symlinked directories
CLEANFILES = $(BUILT_SOURCES) readline openssl
@@ -71,6 +72,3 @@ my_config.h: config.h
# generated by configure from the .h.in files
dist-hook:
$(RM) -f $(distdir)/mysql_version.h $(distdir)/my_config.h
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/include/m_string.h b/include/m_string.h
index dc7b7c414c5..26fa41d9cc4 100644
--- a/include/m_string.h
+++ b/include/m_string.h
@@ -33,10 +33,6 @@
/* need by my_vsnprintf */
#include <stdarg.h>
-#ifdef _AIX
-#undef HAVE_BCMP
-#endif
-
/* This is needed for the definitions of bzero... on solaris */
#if defined(HAVE_STRINGS_H)
#include <strings.h>
@@ -114,7 +110,7 @@ extern void bfill(uchar *dst,size_t len,pchar fill);
#endif
#if !defined(bzero) && !defined(HAVE_BZERO)
-extern void bzero(uchar * dst,size_t len);
+extern void bzero(void * dst,size_t len);
#endif
#if !defined(bcmp) && !defined(HAVE_BCMP)
@@ -124,9 +120,6 @@ extern size_t bcmp(const uchar *s1,const uchar *s2,size_t len);
extern size_t my_bcmp(const uchar *s1,const uchar *s2,size_t len);
#undef bcmp
#define bcmp(A,B,C) my_bcmp((A),(B),(C))
-#define bzero_if_valgrind(A,B) bzero(A,B)
-#else
-#define bzero_if_valgrind(A,B)
#endif /* HAVE_valgrind */
#if defined(_lint) || defined(FORCE_INIT_OF_VARS)
@@ -213,7 +206,7 @@ extern char *str2int(const char *src,int radix,long lower,long upper,
long *val);
longlong my_strtoll10(const char *nptr, char **endptr, int *error);
#if SIZEOF_LONG == SIZEOF_LONG_LONG
-#define longlong2str(A,B,C) int2str((A),(B),(C),1)
+#define longlong2str(A,B,C,D) int2str((A),(B),(C),(D))
#define longlong10_to_str(A,B,C) int10_to_str((A),(B),(C))
#undef strtoll
#define strtoll(A,B,C) strtol((A),(B),(C))
@@ -226,7 +219,7 @@ longlong my_strtoll10(const char *nptr, char **endptr, int *error);
#endif
#else
#ifdef HAVE_LONG_LONG
-extern char *longlong2str(longlong val,char *dst,int radix);
+ extern char *longlong2str(longlong val,char *dst,int radix, int upcase);
extern char *longlong10_to_str(longlong val,char *dst,int radix);
#if (!defined(HAVE_STRTOULL) || defined(NO_STRTOLL_PROTO))
extern longlong strtoll(const char *str, char **ptr, int base);
diff --git a/include/maria.h b/include/maria.h
index c961b7d1672..8e5c485767a 100644
--- a/include/maria.h
+++ b/include/maria.h
@@ -21,12 +21,9 @@
#ifdef __cplusplus
extern "C" {
#endif
-#ifndef _my_base_h
#include <my_base.h>
-#endif
-#ifndef _m_ctype_h
+#include <my_sys.h>
#include <m_ctype.h>
-#endif
#include "../storage/maria/ma_pagecache.h"
#include "my_handler.h"
#include "ft_global.h"
@@ -286,6 +283,7 @@ extern int (*maria_test_invalid_symlink)(const char *filename);
extern int maria_init(void);
extern void maria_end(void);
+extern my_bool maria_upgrade(void);
extern int maria_close(MARIA_HA *file);
extern int maria_delete(MARIA_HA *file, const uchar *buff);
extern MARIA_HA *maria_open(const char *name, int mode,
@@ -334,6 +332,12 @@ extern int maria_begin(MARIA_HA *info);
extern void maria_disable_logging(MARIA_HA *info);
extern void maria_enable_logging(MARIA_HA *info);
+#define HA_RECOVER_NONE 0 /* No automatic recover */
+#define HA_RECOVER_DEFAULT 1 /* Automatic recover active */
+#define HA_RECOVER_BACKUP 2 /* Make a backupfile on recover */
+#define HA_RECOVER_FORCE 4 /* Recover even if we loose rows */
+#define HA_RECOVER_QUICK 8 /* Don't check rows in data file */
+
/* this is used to pass to mysql_mariachk_table */
#define MARIA_CHK_REPAIR 1 /* equivalent to mariachk -r */
@@ -452,7 +456,7 @@ my_bool maria_test_if_sort_rep(MARIA_HA *info, ha_rows rows, ulonglong key_map,
int maria_init_bulk_insert(MARIA_HA *info, ulong cache_size, ha_rows rows);
void maria_flush_bulk_insert(MARIA_HA *info, uint inx);
-void maria_end_bulk_insert(MARIA_HA *info, my_bool table_will_be_deleted);
+void maria_end_bulk_insert(MARIA_HA *info);
int maria_assign_to_pagecache(MARIA_HA *info, ulonglong key_map,
PAGECACHE *key_cache);
void maria_change_pagecache(PAGECACHE *old_key_cache,
diff --git a/include/my_alarm.h b/include/my_alarm.h
index 750135d64ed..c41c1d65e27 100644
--- a/include/my_alarm.h
+++ b/include/my_alarm.h
@@ -36,14 +36,14 @@ extern ulong my_time_to_wait_for_lock;
#define ALARM_END VOID(signal(SIGALRM,alarm_signal)); \
VOID(alarm(alarm_old));
#define ALARM_TEST my_have_got_alarm
-#ifdef DONT_REMEMBER_SIGNAL
+#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY
#define ALARM_REINIT VOID(alarm(MY_HOW_OFTEN_TO_ALARM)); \
VOID(signal(SIGALRM,my_set_alarm_variable));\
my_have_got_alarm=0;
#else
#define ALARM_REINIT VOID(alarm((uint) MY_HOW_OFTEN_TO_ALARM)); \
my_have_got_alarm=0;
-#endif /* DONT_REMEMBER_SIGNAL */
+#endif /* SIGNAL_HANDLER_RESET_ON_DELIVERY */
#else
#define ALARM_VARIABLES long alarm_pos=0,alarm_end_pos=MY_HOW_OFTEN_TO_WRITE-1
#define ALARM_INIT
diff --git a/include/my_base.h b/include/my_base.h
index 2aa49bd1787..8065441d4d7 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -272,17 +272,6 @@ enum ha_base_keytype {
#define HA_USES_PARSER 16384 /* Fulltext index uses [pre]parser */
#define HA_USES_BLOCK_SIZE ((uint) 32768)
#define HA_SORT_ALLOWS_SAME 512 /* Intern bit when sorting records */
-#if MYSQL_VERSION_ID < 0x50200
-/*
- Key has a part that can have end space. If this is an unique key
- we have to handle it differently from other unique keys as we can find
- many matching rows for one key (because end space are not compared)
-*/
-#define HA_END_SPACE_KEY 0 /* was: 4096 */
-#else
-#error HA_END_SPACE_KEY is obsolete, please remove it
-#endif
-
/* These flags can be added to key-seg-flag */
diff --git a/include/my_bitmap.h b/include/my_bitmap.h
index 78642df3362..39ee1d2f7fc 100644
--- a/include/my_bitmap.h
+++ b/include/my_bitmap.h
@@ -25,8 +25,6 @@ typedef uint32 my_bitmap_map;
typedef struct st_bitmap
{
my_bitmap_map *bitmap;
- uint n_bits; /* number of bits occupied by the above */
- my_bitmap_map last_word_mask;
my_bitmap_map *last_word_ptr;
/*
mutex will be acquired for the duration of each bitmap operation if
@@ -36,6 +34,8 @@ typedef struct st_bitmap
#ifdef THREAD
pthread_mutex_t *mutex;
#endif
+ my_bitmap_map last_word_mask;
+ uint32 n_bits; /* number of bits occupied by the above */
} MY_BITMAP;
#ifdef __cplusplus
@@ -53,6 +53,8 @@ extern my_bool bitmap_is_overlapping(const MY_BITMAP *map1,
extern my_bool bitmap_test_and_set(MY_BITMAP *map, uint bitmap_bit);
extern my_bool bitmap_test_and_clear(MY_BITMAP *map, uint bitmap_bit);
extern my_bool bitmap_fast_test_and_set(MY_BITMAP *map, uint bitmap_bit);
+extern my_bool bitmap_union_is_set_all(const MY_BITMAP *map1,
+ const MY_BITMAP *map2);
extern uint bitmap_set_next(MY_BITMAP *map);
extern uint bitmap_get_first(const MY_BITMAP *map);
extern uint bitmap_get_first_set(const MY_BITMAP *map);
@@ -159,22 +161,6 @@ static inline my_bool bitmap_cmp(const MY_BITMAP *map1, const MY_BITMAP *map2)
#define bitmap_set_all(MAP) \
(memset((MAP)->bitmap, 0xFF, 4*no_words_in_map((MAP))))
-/**
- check, set and clear a bit of interest of an integer.
-
- If the bit is out of range @retval -1. Otherwise
- bit_is_set @return 0 or 1 reflecting the bit is set or not;
- bit_do_set @return 1 (bit is set 1)
- bit_do_clear @return 0 (bit is cleared to 0)
-*/
-
-#define bit_is_set(I,B) (sizeof(I) * CHAR_BIT > (B) ? \
- (((I) & (ULL(1) << (B))) == 0 ? 0 : 1) : -1)
-#define bit_do_set(I,B) (sizeof(I) * CHAR_BIT > (B) ? \
- ((I) |= (ULL(1) << (B)), 1) : -1)
-#define bit_do_clear(I,B) (sizeof(I) * CHAR_BIT > (B) ? \
- ((I) &= ~(ULL(1) << (B)), 0) : -1)
-
#ifdef __cplusplus
}
#endif
diff --git a/include/my_compiler.h b/include/my_compiler.h
new file mode 100644
index 00000000000..1cd46ff4260
--- /dev/null
+++ b/include/my_compiler.h
@@ -0,0 +1,129 @@
+#ifndef MY_COMPILER_INCLUDED
+#define MY_COMPILER_INCLUDED
+
+/* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+
+ 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-1301 USA */
+
+/**
+ Header for compiler-dependent features.
+
+ Intended to contain a set of reusable wrappers for preprocessor
+ macros, attributes, pragmas, and any other features that are
+ specific to a target compiler.
+*/
+
+#include <my_global.h> /* stddef.h offsetof */
+
+/**
+ Compiler-dependent internal convenience macros.
+*/
+
+/* GNU C/C++ */
+#if defined __GNUC__
+/* Any after 2.95... */
+# define MY_ALIGN_EXT
+
+/* Microsoft Visual C++ */
+#elif defined _MSC_VER
+# define MY_ALIGNOF(type) __alignof(type)
+# define MY_ALIGNED(n) __declspec(align(n))
+
+/* Oracle Solaris Studio */
+#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+# if __SUNPRO_C >= 0x590
+# define MY_ALIGN_EXT
+# endif
+
+/* IBM XL C/C++ */
+#elif defined __xlC__
+# if __xlC__ >= 0x0600
+# define MY_ALIGN_EXT
+# endif
+
+/* HP aCC */
+#elif defined(__HP_aCC) || defined(__HP_cc)
+# if (__HP_aCC >= 60000) || (__HP_cc >= 60000)
+# define MY_ALIGN_EXT
+# endif
+#endif
+
+#ifdef MY_ALIGN_EXT
+/** Specifies the minimum alignment of a type. */
+# define MY_ALIGNOF(type) __alignof__(type)
+/** Determine the alignment requirement of a type. */
+# define MY_ALIGNED(n) __attribute__((__aligned__((n))))
+#endif
+
+/**
+ Generic compiler-dependent features.
+*/
+#ifndef MY_ALIGNOF
+# ifdef __cplusplus
+ template<typename type> struct my_alignof_helper { char m1; type m2; };
+ /* Invalid for non-POD types, but most compilers give the right answer. */
+# define MY_ALIGNOF(type) offsetof(my_alignof_helper<type>, m2)
+# else
+# define MY_ALIGNOF(type) offsetof(struct { char m1; type m2; }, m2)
+# endif
+#endif
+
+/**
+ C++ Type Traits
+*/
+
+#ifdef __cplusplus
+
+/**
+ Opaque storage with a particular alignment.
+*/
+# if defined(MY_ALIGNED)
+/* Partial specialization used due to MSVC++. */
+template<size_t alignment> struct my_alignment_imp;
+template<> struct MY_ALIGNED(1) my_alignment_imp<1> {};
+template<> struct MY_ALIGNED(2) my_alignment_imp<2> {};
+template<> struct MY_ALIGNED(4) my_alignment_imp<4> {};
+template<> struct MY_ALIGNED(8) my_alignment_imp<8> {};
+template<> struct MY_ALIGNED(16) my_alignment_imp<16> {};
+/* ... expand as necessary. */
+# else
+template<size_t alignment>
+struct my_alignment_imp { double m1; };
+# endif
+
+/**
+ A POD type with a given size and alignment.
+
+ @remark If the compiler does not support a alignment attribute
+ (MY_ALIGN macro), the default alignment of a double is
+ used instead.
+
+ @tparam size The minimum size.
+ @tparam alignment The desired alignment: 1, 2, 4, 8 or 16.
+*/
+template <size_t size, size_t alignment>
+struct my_aligned_storage
+{
+ union
+ {
+ char data[size];
+ my_alignment_imp<alignment> align;
+ };
+};
+
+#endif /* __cplusplus */
+
+#include <my_attribute.h>
+
+#endif /* MY_COMPILER_INCLUDED */
diff --git a/include/my_getopt.h b/include/my_getopt.h
index 7cbad607aac..d7c996302fd 100644
--- a/include/my_getopt.h
+++ b/include/my_getopt.h
@@ -45,10 +45,10 @@ struct my_option
const char *name; /* Name of the option */
int id; /* unique id or short option */
const char *comment; /* option comment, for autom. --help */
- uchar **value; /* The variable value */
- uchar **u_max_value; /* The user def. max variable value */
+ void *value; /* The variable value */
+ void *u_max_value; /* The user def. max variable value */
struct st_typelib *typelib; /* Pointer to possible values */
- ulong var_type;
+ ulong var_type; /* Must match the variable type */
enum get_opt_arg_type arg_type;
longlong def_value; /* Default value */
longlong min_value; /* Min allowed value */
@@ -58,8 +58,16 @@ struct my_option
void *app_type; /* To be used by an application */
};
-typedef my_bool (* my_get_one_option) (int, const struct my_option *, char * );
-typedef void (* my_error_reporter) (enum loglevel level, const char *format, ... );
+typedef my_bool (*my_get_one_option)(int, const struct my_option *, char *);
+typedef void (*my_error_reporter)(enum loglevel level, const char *format, ...);
+/**
+ Used to retrieve a reference to the object (variable) that holds the value
+ for the given option. For example, if var_type is GET_UINT, the function
+ must return a pointer to a variable of type uint. A argument is stored in
+ the location pointed to by the returned pointer.
+*/
+typedef void *(*my_getopt_value)(const char *, uint, const struct my_option *,
+ int *);
extern char *disabled_my_option;
extern my_bool my_getopt_print_errors;
@@ -71,8 +79,7 @@ extern int handle_options (int *argc, char ***argv,
extern void my_cleanup_options(const struct my_option *options);
extern void my_print_help(const struct my_option *options);
extern void my_print_variables(const struct my_option *options);
-extern void my_getopt_register_get_addr(uchar ** (*func_addr)(const char *, uint,
- const struct my_option *, int *));
+extern void my_getopt_register_get_addr(my_getopt_value);
ulonglong getopt_ull_limit_value(ulonglong num, const struct my_option *optp,
my_bool *fix);
diff --git a/include/my_global.h b/include/my_global.h
index 8940c453573..9281e9cc13e 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -55,6 +55,10 @@
#define USE_PRAGMA_INTERFACE
#endif
+#if defined(__OpenBSD__) && (OpenBSD >= 200411)
+#define HAVE_ERRNO_AS_DEFINE
+#endif
+
#if defined(i386) && !defined(__i386__)
#define __i386__
#endif
@@ -90,6 +94,9 @@
#define IF_WIN(A,B) (B)
#endif
+/* Make it easier to print null strings */
+#define val_or_null(A) ((A) ? (const char*) (A) : "(null)")
+
#ifndef EMBEDDED_LIBRARY
#ifdef WITH_NDB_BINLOG
#define HAVE_NDB_BINLOG 1
@@ -545,8 +552,8 @@ extern "C" int madvise(void *addr, size_t len, int behav);
#endif
/* Does the system remember a signal handler after a signal ? */
-#ifndef HAVE_BSD_SIGNALS
-#define DONT_REMEMBER_SIGNAL
+#if !defined(HAVE_BSD_SIGNALS) && !defined(HAVE_SIGACTION)
+#define SIGNAL_HANDLER_RESET_ON_DELIVERY
#endif
/* Define void to stop lint from generating "null effekt" comments */
@@ -560,18 +567,17 @@ int __void__;
#endif
#endif /* DONT_DEFINE_VOID */
-#if defined(_lint) || defined(FORCE_INIT_OF_VARS)
-#define LINT_INIT(var) var=0 /* No uninitialize-warning */
-#else
-#define LINT_INIT(var)
-#endif
-
-#include <my_valgrind.h>
+/*
+ Deprecated workaround for false-positive uninitialized variables
+ warnings. Those should be silenced using tool-specific heuristics.
-#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(HAVE_valgrind)
-#define VALGRIND_OR_LINT_INIT(var) var=0
+ Enabled by default for g++ due to the bug referenced below.
+*/
+#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \
+ (defined(__GNUC__) && defined(__cplusplus))
+#define LINT_INIT(var) var= 0
#else
-#define VALGRIND_OR_LINT_INIT(var)
+#define LINT_INIT(var)
#endif
#ifdef _WIN32
@@ -582,19 +588,22 @@ int __void__;
#define SO_EXT ".so"
#endif
-/*
+/*
Suppress uninitialized variable warning without generating code.
The _cplusplus is a temporary workaround for C++ code pending a fix
- for a g++ bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34772).
+ for a g++ bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34772).
*/
-#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(__cplusplus) || \
- !defined(__GNUC__)
+#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || \
+ defined(__cplusplus) || !defined(__GNUC__)
#define UNINIT_VAR(x) x= 0
#else
+/* GCC specific self-initialization which inhibits the warning. */
#define UNINIT_VAR(x) x= x
#endif
+#include <my_valgrind.h>
+
/* Define some useful general macros */
#if !defined(max)
#define max(a, b) ((a) > (b) ? (a) : (b))
@@ -610,12 +619,12 @@ typedef unsigned short ushort;
#define CMP_NUM(a,b) (((a) < (b)) ? -1 : ((a) == (b)) ? 0 : 1)
#define sgn(a) (((a) < 0) ? -1 : ((a) > 0) ? 1 : 0)
-#define swap_variables(t, a, b) { t swap_dummy; swap_dummy= a; a= b; b= swap_dummy; }
+#define swap_variables(t, a, b) { t dummy; dummy= a; a= b; b= dummy; }
#define test(a) ((a) ? 1 : 0)
#define set_if_bigger(a,b) do { if ((a) < (b)) (a)=(b); } while(0)
#define set_if_smaller(a,b) do { if ((a) > (b)) (a)=(b); } while(0)
-#define test_all_bits(a,b) (((a) & (b)) == (b))
#define set_bits(type, bit_count) (sizeof(type)*8 <= (bit_count) ? ~(type) 0 : ((((type) 1) << (bit_count)) - (type) 1))
+#define test_all_bits(a,b) (((a) & (b)) == (b))
#define array_elements(A) ((uint) (sizeof(A)/sizeof(A[0])))
/* Define some general constants */
@@ -636,7 +645,7 @@ typedef unsigned short ushort;
#define my_const_cast(A) (A)
#endif
-#include <my_attribute.h>
+#include <my_compiler.h>
/*
Wen using the embedded library, users might run into link problems,
@@ -672,7 +681,7 @@ C_MODE_END
# endif
#endif
-typedef char my_bool; /* Small bool */
+typedef char my_bool; /* Small bool; Needed by my_dbug.h */
#include <my_dbug.h>
#define MIN_ARRAY_SIZE 0 /* Zero or One. Gcc allows zero*/
@@ -800,10 +809,10 @@ typedef SOCKET_SIZE_TYPE size_socket;
#endif
/* get memory in huncs */
#define ONCE_ALLOC_INIT (uint) (4096-MALLOC_OVERHEAD)
- /* Typical record cash */
-#define RECORD_CACHE_SIZE (uint) (64*1024-MALLOC_OVERHEAD)
- /* Typical key cash */
-#define KEY_CACHE_SIZE (uint) (8*1024*1024-MALLOC_OVERHEAD)
+ /* Typical record cache */
+#define RECORD_CACHE_SIZE (uint) (128*1024-MALLOC_OVERHEAD)
+ /* Typical key cache */
+#define KEY_CACHE_SIZE (uint) (128L*1024L*1024L-MALLOC_OVERHEAD)
/* Default size of a key cache block */
#define KEY_CACHE_BLOCK_SIZE (uint) 1024
@@ -951,13 +960,11 @@ typedef long long my_ptrdiff_t;
#define ALIGN_MAX_UNIT (sizeof(double))
/* Size to make adressable obj. */
#define ALIGN_PTR(A, t) ((t*) MY_ALIGN((A), sizeof(double)))
+/* Offset of field f in structure t */
#define OFFSET(t, f) ((size_t)(char *)&((t *)0)->f)
#define ADD_TO_PTR(ptr,size,type) (type) ((uchar*) (ptr)+size)
#define PTR_BYTE_DIFF(A,B) (my_ptrdiff_t) ((uchar*) (A) - (uchar*) (B))
-#define MY_DIV_UP(A, B) (((A) + (B) - 1) / (B))
-#define MY_ALIGNED_BYTE_ARRAY(N, S, T) T N[MY_DIV_UP(S, sizeof(T))]
-
/*
Custom version of standard offsetof() macro which can be used to get
offsets of members in class for non-POD types (according to the current
diff --git a/include/my_pthread.h b/include/my_pthread.h
index 9b01146cdde..f7aad5dec64 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -128,7 +128,9 @@ struct tm *gmtime_r(const time_t *timep,struct tm *tmp);
void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
-#define ETIMEDOUT 145 /* Win32 doesn't have this */
+#ifndef ETIMEDOUT
+#define ETIMEDOUT 145
+#endif
#define getpid() GetCurrentThreadId()
#define HAVE_LOCALTIME_R 1
#define _REENTRANT 1
@@ -274,13 +276,14 @@ int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */
we want to make sure that no such flags are set.
*/
#if defined(HAVE_SIGACTION) && !defined(my_sigset)
-#define my_sigset(A,B) do { struct sigaction l_s; sigset_t l_set; int l_rc; \
+#define my_sigset(A,B) do { struct sigaction l_s; sigset_t l_set; \
+ IF_DBUG(int l_rc); \
DBUG_ASSERT((A) != 0); \
sigemptyset(&l_set); \
l_s.sa_handler = (B); \
l_s.sa_mask = l_set; \
l_s.sa_flags = 0; \
- l_rc= sigaction((A), &l_s, (struct sigaction *) NULL);\
+ IF_DBUG(l_rc=) sigaction((A), &l_s, NULL); \
DBUG_ASSERT(l_rc == 0); \
} while (0)
#elif defined(HAVE_SIGSET) && !defined(my_sigset)
@@ -755,7 +758,7 @@ extern uint thd_lib_detected;
The implementation is guaranteed to be thread safe, on all platforms.
Note that the calling code should *not* assume the counter is protected
by the mutex given, as the implementation of these helpers may change
- to use my_atomic operations instead.
+ to use atomic operations instead.
*/
/*
diff --git a/include/my_sys.h b/include/my_sys.h
index 3c492e661d3..f01a9a6d4a6 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -37,7 +37,7 @@ extern int NEAR my_errno; /* Last error in mysys */
#define MYSYS_PROGRAM_USES_CURSES() { error_handler_hook = my_message_curses; mysys_uses_curses=1; }
#define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;}
-#define MY_INIT(name); { my_progname= name; my_init(); }
+#define MY_INIT(name) { my_progname= name; my_init(); }
#define MY_FILE_ERROR ((size_t) -1)
@@ -270,6 +270,7 @@ extern size_t sf_malloc_cur_memory, sf_malloc_max_memory;
extern ulong my_default_record_cache_size;
extern my_bool NEAR my_disable_locking,NEAR my_disable_async_io,
NEAR my_disable_flush_key_blocks, NEAR my_disable_symlinks;
+extern my_bool my_disable_sync;
extern char wild_many,wild_one,wild_prefix;
extern const char *charsets_dir;
/* from default.c */
diff --git a/include/my_valgrind.h b/include/my_valgrind.h
index 301f9f85464..da434454565 100644
--- a/include/my_valgrind.h
+++ b/include/my_valgrind.h
@@ -24,15 +24,19 @@
#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H)
#include <valgrind/memcheck.h>
-#else
-#define VALGRIND_MAKE_MEM_DEFINED(addr, size) do { } while(0)
-#define VALGRIND_MAKE_MEM_NOACCESS(addr, size) do { } while(0)
+#define MEM_UNDEFINED(a,len) VALGRIND_MAKE_MEM_UNDEFINED(a,len)
+#define MEM_NOACCESS(a,len) VALGRIND_MAKE_MEM_NOACCESS(a,len)
+#define MEM_CHECK_ADDRESSABLE(a,len) VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,len)
+#define MEM_CHECK_DEFINED(a,len) VALGRIND_CHECK_MEM_IS_DEFINED(a,len)
+#else /* HAVE_VALGRIND */
+# define MEM_UNDEFINED(a,len) ((void) 0)
+# define MEM_NOACCESS(a,len) ((void) 0)
+# define MEM_CHECK_ADDRESSABLE(a,len) ((void) 0)
+# define MEM_CHECK_DEFINED(a,len) ((void) 0)
+#endif /* HAVE_VALGRIND */
+
#ifdef SAFEMALLOC
-#define VALGRIND_MAKE_MEM_UNDEFINED(addr, size) bfill(addr, size, 0x8F)
+#define TRASH(A,B) do { bfill(A, B, 0x8F); MEM_UNDEFINED(A, B); } while (0)
#else
-#define VALGRIND_MAKE_MEM_UNDEFINED(addr, size) do { } while(0)
-#endif /* SAFEMALLOC */
-#endif /* HAVE_valgrind */
-
-/* Compatibility with old source */
-#define TRASH(A,B) VALGRIND_MAKE_MEM_UNDEFINED(A, B)
+#define TRASH(A,B) do{MEM_CHECK_ADDRESSABLE(A,B);MEM_UNDEFINED(A,B);} while (0)
+#endif
diff --git a/include/myisam.h b/include/myisam.h
index 3d2a326363d..8413b7936e3 100644
--- a/include/myisam.h
+++ b/include/myisam.h
@@ -48,8 +48,6 @@ extern "C" {
#define MI_NAME_IEXT ".MYI"
#define MI_NAME_DEXT ".MYD"
-/* Max extra space to use when sorting keys */
-#define MI_MAX_TEMP_LENGTH 2*1024L*1024L*1024L
/* Possible values for myisam_block_size (must be power of 2) */
#define MI_KEY_BLOCK_LENGTH 1024 /* default key block length */
diff --git a/include/mysql.h b/include/mysql.h
index 52475dbc0dd..cbdfb8387c6 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -44,7 +44,9 @@ extern "C" {
#endif
#ifndef _global_h /* If not standard header */
+#ifndef MYSQL_ABI_CHECK
#include <sys/types.h>
+#endif
#ifdef __LCC__
#include <winsock2.h> /* For windows */
#endif
diff --git a/include/mysql.h.pp b/include/mysql.h.pp
index 88a2dce1555..48d3b804dd9 100644
--- a/include/mysql.h.pp
+++ b/include/mysql.h.pp
@@ -1,4 +1,3 @@
-#include <sys/types.h>
typedef char my_bool;
typedef int my_socket;
#include "mysql_version.h"
diff --git a/include/mysql/client_plugin.h b/include/mysql/client_plugin.h
index 5e9a337dfc6..9c7b1aee9f9 100644
--- a/include/mysql/client_plugin.h
+++ b/include/mysql/client_plugin.h
@@ -23,8 +23,10 @@
*/
#define MYSQL_CLIENT_PLUGIN_INCLUDED
+#ifndef MYSQL_ABI_CHECK
#include <stdarg.h>
#include <stdlib.h>
+#endif
/* known plugin types */
#define MYSQL_CLIENT_reserved1 0
diff --git a/include/mysql/client_plugin.h.pp b/include/mysql/client_plugin.h.pp
index 20d353422dd..ca477d83bb2 100644
--- a/include/mysql/client_plugin.h.pp
+++ b/include/mysql/client_plugin.h.pp
@@ -1,5 +1,3 @@
-#include <stdarg.h>
-#include <stdlib.h>
struct st_mysql_client_plugin
{
int type; unsigned int interface_version; const char *name; const char *author; const char *desc; unsigned int version[3]; int (*init)(char *, size_t, int, va_list); int (*deinit)();
diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h
index 835e691daf3..77d141d5282 100644
--- a/include/mysql/plugin.h
+++ b/include/mysql/plugin.h
@@ -257,7 +257,7 @@ typedef void (*mysql_var_update_func)(MYSQL_THD thd,
#define DECLARE_MYSQL_SYSVAR_BASIC(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
type *value; \
- const type def_val; \
+ const type def_val; \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_MYSQL_SYSVAR_SIMPLE(name, type) struct { \
@@ -294,7 +294,7 @@ typedef void (*mysql_var_update_func)(MYSQL_THD thd,
#define DECLARE_MYSQL_THDVAR_TYPELIB(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
int offset; \
- type def_val; \
+ const type def_val; \
DECLARE_THDVAR_FUNC(type); \
TYPELIB *typelib; \
} MYSQL_SYSVAR_NAME(name)
@@ -455,7 +455,7 @@ struct st_maria_plugin
struct st_mysql_show_var *status_vars;
struct st_mysql_sys_var **system_vars;
const char *version_info; /* plugin version string */
- int maturity; /* MariaDB_PLUGIN_MATURITY_XXX */
+ unsigned int maturity; /* MariaDB_PLUGIN_MATURITY_XXX */
};
/*************************************************************************
diff --git a/include/mysql/plugin_auth.h.pp b/include/mysql/plugin_auth.h.pp
index 7db3dbb4715..b0d5daf4c64 100644
--- a/include/mysql/plugin_auth.h.pp
+++ b/include/mysql/plugin_auth.h.pp
@@ -1,8 +1,6 @@
#include <mysql/plugin.h>
#include <mysql/services.h>
#include <mysql/service_my_snprintf.h>
-#include <stdarg.h>
-#include <stdlib.h>
extern struct my_snprintf_service_st {
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
@@ -10,7 +8,6 @@ extern struct my_snprintf_service_st {
size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
#include <mysql/service_thd_alloc.h>
-#include <stdlib.h>
struct st_mysql_lex_string
{
char *str;
@@ -91,7 +88,7 @@ struct st_maria_plugin
struct st_mysql_show_var *status_vars;
struct st_mysql_sys_var **system_vars;
const char *version_info;
- int maturity;
+ unsigned int maturity;
};
enum enum_ftparser_mode
{
diff --git a/include/mysql/service_my_snprintf.h b/include/mysql/service_my_snprintf.h
index ad344864c34..30e95e20a5a 100644
--- a/include/mysql/service_my_snprintf.h
+++ b/include/mysql/service_my_snprintf.h
@@ -70,8 +70,10 @@
extern "C" {
#endif
+#ifndef MYSQL_ABI_CHECK
#include <stdarg.h>
#include <stdlib.h>
+#endif
extern struct my_snprintf_service_st {
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
diff --git a/include/mysql/service_thd_alloc.h b/include/mysql/service_thd_alloc.h
index 86158ba1359..7061c2bd4d5 100644
--- a/include/mysql/service_thd_alloc.h
+++ b/include/mysql/service_thd_alloc.h
@@ -27,7 +27,9 @@
allocations - they are better served with my_malloc.
*/
+#ifndef MYSQL_ABI_CHECK
#include <stdlib.h>
+#endif
#ifdef __cplusplus
extern "C" {
diff --git a/include/mysql_com.h b/include/mysql_com.h
index 093807a65cb..affd24a4636 100644
--- a/include/mysql_com.h
+++ b/include/mysql_com.h
@@ -27,6 +27,10 @@
#define NAME_LEN (NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN)
#define USERNAME_LENGTH (USERNAME_CHAR_LENGTH*SYSTEM_CHARSET_MBMAXLEN)
+#define MYSQL50_TABLE_NAME_PREFIX "#mysql50#"
+#define MYSQL50_TABLE_NAME_PREFIX_LENGTH (sizeof(MYSQL50_TABLE_NAME_PREFIX)-1)
+#define SAFE_NAME_LEN (NAME_LEN + MYSQL50_TABLE_NAME_PREFIX_LENGTH)
+
#define SERVER_VERSION_LENGTH 60
#define SQLSTATE_LENGTH 5
#define LIST_PROCESS_HOST_LEN 64
diff --git a/include/mysys_err.h b/include/mysys_err.h
index defdaa71fa3..bbb7f6de7d8 100644
--- a/include/mysys_err.h
+++ b/include/mysys_err.h
@@ -62,10 +62,12 @@ extern const char * NEAR globerrs[]; /* my_error_messages is here */
#define EE_UNKNOWN_COLLATION 28
#define EE_FILENOTFOUND 29
#define EE_FILE_NOT_CLOSED 30
-#define EE_CANT_CHMOD 31
-#define EE_CANT_SEEK 32
-#define EE_CANT_COPY_OWNERSHIP 33
-#define EE_ERROR_LAST 33 /* Copy last error nr */
+#define EE_CHANGE_OWNERSHIP 31
+#define EE_CHANGE_PERMISSIONS 32
+#define EE_CANT_CHMOD 33
+#define EE_CANT_SEEK 34
+#define EE_CANT_COPY_OWNERSHIP 35
+#define EE_ERROR_LAST 35 /* Copy last error nr */
/* Add error numbers before EE_ERROR_LAST and change it accordingly. */
/* exit codes for all MySQL programs */
diff --git a/include/sslopt-longopts.h b/include/sslopt-longopts.h
index c76b5dcd252..c038ece1644 100644
--- a/include/sslopt-longopts.h
+++ b/include/sslopt-longopts.h
@@ -16,30 +16,31 @@
#ifdef HAVE_OPENSSL
{"ssl", OPT_SSL_SSL,
- "Enable SSL for connection (automatically enabled with other flags). Disable with --skip-ssl.",
- (uchar **) &opt_use_ssl, (uchar **) &opt_use_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0,
- 0, 0, 0},
+ "Enable SSL for connection (automatically enabled with other flags)."
+ "Disable with --skip-ssl.", &opt_use_ssl, &opt_use_ssl, 0, GET_BOOL,
+ NO_ARG, 0, 0, 0, 0, 0, 0},
{"ssl-ca", OPT_SSL_CA,
"CA file in PEM format (check OpenSSL docs, implies --ssl).",
- (uchar **) &opt_ssl_ca, (uchar **) &opt_ssl_ca, 0, GET_STR, REQUIRED_ARG,
+ &opt_ssl_ca, &opt_ssl_ca, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"ssl-capath", OPT_SSL_CAPATH,
"CA directory (check OpenSSL docs, implies --ssl).",
- (uchar **) &opt_ssl_capath, (uchar **) &opt_ssl_capath, 0, GET_STR, REQUIRED_ARG,
+ &opt_ssl_capath, &opt_ssl_capath, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"ssl-cert", OPT_SSL_CERT, "X509 cert in PEM format (implies --ssl).",
- (uchar **) &opt_ssl_cert, (uchar **) &opt_ssl_cert, 0, GET_STR, REQUIRED_ARG,
+ &opt_ssl_cert, &opt_ssl_cert, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"ssl-cipher", OPT_SSL_CIPHER, "SSL cipher to use (implies --ssl).",
- (uchar **) &opt_ssl_cipher, (uchar **) &opt_ssl_cipher, 0, GET_STR, REQUIRED_ARG,
+ &opt_ssl_cipher, &opt_ssl_cipher, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"ssl-key", OPT_SSL_KEY, "X509 key in PEM format (implies --ssl).",
- (uchar **) &opt_ssl_key, (uchar **) &opt_ssl_key, 0, GET_STR, REQUIRED_ARG,
+ &opt_ssl_key, &opt_ssl_key, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#ifdef MYSQL_CLIENT
{"ssl-verify-server-cert", OPT_SSL_VERIFY_SERVER_CERT,
- "Verify server's \"Common Name\" in its cert against hostname used when connecting. This option is disabled by default.",
- (uchar **) &opt_ssl_verify_server_cert, (uchar **) &opt_ssl_verify_server_cert,
+ "Verify server's \"Common Name\" in its cert against hostname used "
+ "when connecting. This option is disabled by default.",
+ &opt_ssl_verify_server_cert, &opt_ssl_verify_server_cert,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
#endif /* HAVE_OPENSSL */
diff --git a/libmysql/CMakeLists.txt b/libmysql/CMakeLists.txt
index e9adfaf767e..a048b596828 100755
--- a/libmysql/CMakeLists.txt
+++ b/libmysql/CMakeLists.txt
@@ -130,3 +130,11 @@ ADD_DEFINITIONS(-DHAVE_DLOPEN)
IF(EMBED_MANIFESTS)
MYSQL_EMBED_MANIFEST("myTest" "asInvoker")
ENDIF(EMBED_MANIFESTS)
+
+# TODO: Install mysqlclient_notls?
+# TODO: Which component should these be part of, development?
+INSTALL(TARGETS mysqlclient DESTINATION lib/opt COMPONENT runtime)
+INSTALL(TARGETS libmysql DESTINATION lib/opt COMPONENT runtime)
+
+# Also install libmysql.dll to the bin dir
+INSTALL(TARGETS libmysql DESTINATION bin COMPONENT runtime)
diff --git a/libmysql/Makefile.am b/libmysql/Makefile.am
index f67abfd8ac6..b628bff9a3f 100644
--- a/libmysql/Makefile.am
+++ b/libmysql/Makefile.am
@@ -111,6 +111,3 @@ do-lib-dist:
echo ' $$(AR) r $$@ $$?' >>$$dir/Makefile; \
gtar cvzf $$dir.tar.gz $$dir; \
cd $$dir; gmake
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index ff392ff1f07..53cb20cddc2 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -332,7 +332,7 @@ sig_handler
my_pipe_sig_handler(int sig __attribute__((unused)))
{
DBUG_PRINT("info",("Hit by signal %d",sig));
-#ifdef DONT_REMEMBER_SIGNAL
+#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY
(void) signal(SIGPIPE, my_pipe_sig_handler);
#endif
}
@@ -2447,7 +2447,12 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length)
stmt->insert_id= mysql->insert_id;
if (res)
{
- set_stmt_errmsg(stmt, net);
+ /*
+ Don't set stmt error if stmt->mysql is NULL, as the error in this case
+ has already been set by mysql_prune_stmt_list().
+ */
+ if (stmt->mysql)
+ set_stmt_errmsg(stmt, net);
DBUG_RETURN(1);
}
DBUG_RETURN(0);
@@ -2658,7 +2663,12 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row)
buff, sizeof(buff), (uchar*) 0, 0,
1, stmt))
{
- set_stmt_errmsg(stmt, net);
+ /*
+ Don't set stmt error if stmt->mysql is NULL, as the error in this case
+ has already been set by mysql_prune_stmt_list().
+ */
+ if (stmt->mysql)
+ set_stmt_errmsg(stmt, net);
return 1;
}
if ((*mysql->methods->read_rows_from_cursor)(stmt))
@@ -3339,7 +3349,12 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
buff, sizeof(buff), (uchar*) data,
length, 1, stmt))
{
- set_stmt_errmsg(stmt, &mysql->net);
+ /*
+ Don't set stmt error if stmt->mysql is NULL, as the error in this case
+ has already been set by mysql_prune_stmt_list().
+ */
+ if (stmt->mysql)
+ set_stmt_errmsg(stmt, &mysql->net);
DBUG_RETURN(1);
}
}
@@ -4358,6 +4373,7 @@ static my_bool setup_one_fetch_function(MYSQL_BIND *param, MYSQL_FIELD *field)
case MYSQL_TYPE_TIME:
field->max_length= 15; /* 19:23:48.123456 */
param->skip_result= skip_result_with_length;
+ break;
case MYSQL_TYPE_DATE:
field->max_length= 10; /* 2003-11-11 */
param->skip_result= skip_result_with_length;
@@ -4774,7 +4790,12 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff),
(uchar*) 0, 0, 1, stmt))
{
- set_stmt_errmsg(stmt, net);
+ /*
+ Don't set stmt error if stmt->mysql is NULL, as the error in this case
+ has already been set by mysql_prune_stmt_list().
+ */
+ if (stmt->mysql)
+ set_stmt_errmsg(stmt, net);
DBUG_RETURN(1);
}
}
diff --git a/libmysql_r/Makefile.am b/libmysql_r/Makefile.am
index 4a37dcfdec9..85578c71066 100644
--- a/libmysql_r/Makefile.am
+++ b/libmysql_r/Makefile.am
@@ -42,6 +42,3 @@ link_sources:
done; \
done
echo timestamp > link_sources
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
index 899ab1bfe06..e4f8aa96312 100644
--- a/libmysqld/CMakeLists.txt
+++ b/libmysqld/CMakeLists.txt
@@ -171,3 +171,7 @@ ENDFOREACH(ENGINE_LIB)
ADD_LIBRARY(libmysqld SHARED cmake_dummy.c libmysqld.def)
ADD_DEPENDENCIES(libmysqld mysqlserver)
TARGET_LINK_LIBRARIES(libmysqld mysqlserver wsock32)
+
+INSTALL(TARGETS mysqlserver DESTINATION Embedded/static COMPONENT embedded)
+
+INSTALL(TARGETS libmysqld DESTINATION Embedded/DLL COMPONENT embedded)
diff --git a/libmysqld/Makefile.am b/libmysqld/Makefile.am
index 3316c91ba80..bbefa22d855 100644
--- a/libmysqld/Makefile.am
+++ b/libmysqld/Makefile.am
@@ -236,6 +236,3 @@ link_sources:
clean-local:
rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlstoragesources) $(storagesources) | sed "s;\.lo;.c;g"`; \
rm -f client_settings.h
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/libmysqld/examples/Makefile.am b/libmysqld/examples/Makefile.am
index 109d33a85ae..fd37f362960 100644
--- a/libmysqld/examples/Makefile.am
+++ b/libmysqld/examples/Makefile.am
@@ -42,7 +42,8 @@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @LIBDL@ $(CXXLDFLAGS) \
mysqltest_embedded_LINK = $(CXXLINK)
nodist_mysqltest_embedded_SOURCES = mysqltest.cc
-mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a
+mysqltest_embedded_LDADD = $(LDADD) $(top_builddir)/regex/libregex.a \
+ @MYSQLD_EXTRA_LDFLAGS@
nodist_mysql_SOURCES = mysql.cc readline.cc completion_hash.cc \
my_readline.h sql_string.h completion_hash.h
diff --git a/man/Makefile.am b/man/Makefile.am
index 72e67f7445f..4846213945f 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -24,6 +24,3 @@ EXTRA_DIST = $(man1_MANS) $(man8_MANS)
# "make_win_*" are not needed in Unix binary packages,
install-data-hook:
rm -f $(DESTDIR)$(mandir)/man1/make_win_*
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am
index 20a030cae1e..e565521a8b0 100644
--- a/mysql-test/Makefile.am
+++ b/mysql-test/Makefile.am
@@ -63,13 +63,14 @@ nobase_test_DATA = \
lib/My/SafeProcess.pm \
lib/My/File/Path.pm \
lib/My/SysInfo.pm \
+ lib/My/Suite.pm \
lib/My/CoreDump.pm \
lib/My/SafeProcess/Base.pm \
lib/My/SafeProcess/safe_process.pl
SUBDIRS = lib/My/SafeProcess
-EXTRA_DIST = README \
+EXTRA_DIST = README README.suites \
$(test_SCRIPTS) \
$(nobase_test_DATA)
@@ -83,6 +84,10 @@ TEST_DIRS = t r include std_data std_data/parts collections \
suite/binlog suite/binlog/t suite/binlog/r suite/binlog/std_data \
suite/bugs suite/bugs/data suite/bugs/t suite/bugs/r \
suite/federated \
+ suite/pbxt/t suite/pbxt/r suite/pbxt \
+ suite/vcol suite/vcol/t suite/vcol/r suite/vcol/inc \
+ suite/oqgraph suite/oqgraph/t suite/oqgraph/r suite/oqgraph/include \
+ suite/percona suite/sphinx \
suite/funcs_1 suite/funcs_1/bitdata \
suite/funcs_1/include suite/funcs_1/lib suite/funcs_1/r \
suite/funcs_1/t suite/funcs_1/views suite/funcs_1/cursors \
@@ -101,10 +106,9 @@ TEST_DIRS = t r include std_data std_data/parts collections \
suite/ndb suite/ndb/t suite/ndb/r \
suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \
suite/parts suite/parts/t suite/parts/r suite/parts/inc \
- suite/pbxt/t suite/pbxt/r \
suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \
- suite/vcol suite/vcol/t suite/vcol/r suite/vcol/inc \
- suite/oqgraph suite/oqgraph/t suite/oqgraph/r suite/oqgraph/include \
+ suite/innodb_plugin suite/innodb_plugin/t suite/innodb_plugin/r \
+ suite/innodb_plugin/include \
suite/engines suite/engines/funcs suite/engines/iuds suite/engines/rr_trx \
suite/engines/funcs/r suite/engines/funcs/t suite/engines/iuds/r \
suite/engines/iuds/t suite/engines/rr_trx/include suite/engines/rr_trx/r \
@@ -145,6 +149,3 @@ mtr:
mysql-test-run:
$(RM) -f mysql-test-run
$(LN_S) mysql-test-run.pl mysql-test-run
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/mysql-test/README b/mysql-test/README
index 77b398ebf39..3c8303ca070 100644
--- a/mysql-test/README
+++ b/mysql-test/README
@@ -18,7 +18,7 @@ the test suite expects you to provide the names of the tests to run.
For example, here is the command to run the "alias" and "analyze" tests
with an external server:
-mysql-test-run --extern alias analyze
+mysql-test-run --extern socket=/tmp/mysql.sock alias analyze
To match your setup, you might also need to provide --socket, --user, and
other relevant options.
diff --git a/mysql-test/README.suites b/mysql-test/README.suites
new file mode 100644
index 00000000000..de49bef2715
--- /dev/null
+++ b/mysql-test/README.suites
@@ -0,0 +1,155 @@
+These are the assorted notes that will be turned into a manual eventually.
+
+==========================
+Tests are organized in suites.
+A "suite" is a subdirectory inside, one of,
+
+ <basedir>/mysql-test/suite
+ <basedir>/mysql-test
+ <basedir>/share/mysql-test/suite
+ <basedir>/share/mysql-test
+ <basedir>/share/mysql/mysql-test/suite
+ <basedir>/share/mysql/mysql-test
+ <basedir>/storage/*/mysql-test-suites
+
+This is supposed to cover running mtr from a source directory and installed.
+
+==========================
+A suite contains *.test and *.result files. They can be in the t/ and r/
+subdirectories under the suitedir or directly in the suitedir
+(that is suitedir/t/*.test or suitedir/*.test, same for *.result))
+
+==========================
+A suite can contain a suite.opt file - at the same location where .test files
+are or in the suite directory. As usual, the .opt file can use $-substitutions
+for the environment variables.
+
+Usually, using my.cnf template (see below) is preferrable.
+
+But command line options (.opt files and combinations file) get special
+treatment - they can have special options that affect mtr behavior. cnf
+files cannot. Special options are
+ --timezone, --plugin-load, --result-file, --config-file-template,
+ --default-time-zone, --force-restart
+
+In particular, all --plugin-load instances on the command line (on the
+combined command line, assembled from different .opt and combinations
+files) are merged into one. That is, if, say, test-master.opt file contains
+--plugin-load=aaa.so and suite.opt has --plugin-load=bbb.so that mysqld
+will get --plugin-load=aaa.so:bbb.so. Also, empty --plugin-load options are
+removed from the command line. Which means that one can safely specify
+--plugin-load=$AAA_SO and if aaa.so was not built (perhaps, the plugin was
+statically linked into the server), the .opt file will not result in the
+invalid command line option that can cause the server to refuse to start.
+
+==========================
+A suite can have suite.pm file in the suitedir. It must declare a
+package that inherits from My::Suite.
+
+The suite.pm needs to have @ISA=qw(My::Suite) and it must end
+with bless {}; - that is it must return an object of that class.
+It can also return a string - in this case all tests in the suite
+will be skipped, with this string being printed as a reason.
+
+A suite class can define config_files() and servers() methods.
+
+A config_files method returns a list of additional config files (besides
+my.cnf), that this suite needs to be created. For every file it specifies
+a function that will create it, when given a My::Config object. For example:
+
+ sub config_files { ( 'config.ini' => \&write_ini,
+ 'new.conf' => \&do_new_conf ) }
+
+A servers method returns a list of processes that needs to be started for
+this suite. A process is specified as a pair (regex, hash). A regex must
+match a section in the my.cnf template (for example, qr/mysqld\./ corresponds
+to all mysqld processes), a hash contains these options:
+
+ SORT => a number, processes are started in the order of increasing SORT
+ values (and stopped in the reverse order). mysqld has number 300.
+ START => a function to start a process. It takes two arguments,
+ My::Config::Group and My::Test. If START is undefined the process
+ will not be started.
+ WAIT => a function waits for the process to be started. It takes
+ My::Config::Group as an argument. Internallys mtr first invokes
+ START for all processes, then WAIT for all started processes.
+
+example: sub servers { ( qr/^foo$/ => { SORT => 200,
+ START => \&start_foo,
+ WAIT => \&wait_foo } ) }
+
+See sphinx suite for an example.
+
+==========================
+A suite can have my.cnf template file in the suitedir.
+A my.cnf template uses a normal my.cnf syntax - groups, options,
+and values - with templating extensions. They are
+
+* There can be groups with non-standard names, not used by mysqld.
+ These groups may be used by the suite.pm file somehow.
+ For example, they can be written to the additional config files.
+ See sphinx suite for an example.
+
+* There can be ENV group. It sets values for the environment variables.
+
+* Values can refer to each other - they will be expanded as needed.
+ A reference to a value of an option looks like @groupname.optionname.
+ For example
+
+ [mysqld.2]
+ master-port= @mysqld.1.port
+
+ it sets the master-port in the mysqld.2 group to the value of
+ port in the mysqld.1 group.
+
+* An option name may start from '#'. In the resulting my.cnf it will look
+ like a comment, but it still can be referred to. For example:
+
+ [example]
+ #foo = localhost:@mysqld.1.port
+ bar = http://@example.#foo/index.html
+
+* There are two special - in this regard - groups.
+
+ Via the ENV group one can refer to any environment variable, not only
+ to values in the [ENV] group of my.cnf file.
+
+ Via the OPT group one can refer to special values:
+ @OPT.vardir - a path to vardir
+ @OPT.port - a new port number is reserved out of the pool. It will not
+ match any other port number used by this test run.
+ See sphinx suite for an example.
+
+Most probably a suite my.cnf will need to start from
+
+ !include include/default_my.cnf
+
+and then modify the configuration as necessary.
+
+==========================
+A suite can have combinations file in the suitedir. It uses my.cnf syntax
+but it cannot use @-substitutions. Instead, it can use $-substitutions for
+the environment variables. Because the combination options will not be
+merged to a my.cnf, but will be added to the command line. Example:
+
+ [conf1]
+ opt1=val1
+
+ [conf2]
+ opt1=val2
+ opt2=$HAVE_SOMETHING
+
+Such a file will cause every test from the suite to be run twice - once
+with mysqld using --opt1=val1 and the other one with mysqld using
+--opt1=val2 --opt2=$HAVE_SOMETHING
+
+One can limit mtr run to a subset of combinations by setting environment
+variable SUITENAME_COMBINATIONS to the ':'-separated set of combination
+names. E.g.
+
+ RPL_COMBINATIONS=mix:row ./mtr --suite rpl
+
+See innodb_plugin suite for an example of how suite.pm may set this variable
+to exclude unsupported configurations.
+==========================
+
diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental
index d791686cd62..f84337660ea 100644
--- a/mysql-test/collections/default.experimental
+++ b/mysql-test/collections/default.experimental
@@ -13,12 +13,15 @@ funcs_1.ndb* # joro : NDB tests marked as experiment
funcs_2.ndb_charset # joro : NDB tests marked as experimental as agreed with bochklin
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
+main.func_str @solaris # joro: Bug#40928
main.plugin_load @solaris # Bug#42144
+main.sp @solaris # joro : Bug#54138
main.outfile_loaddata @solaris # joro : Bug #46895
ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
+rpl.rpl_row_sp011 @solaris # Joro : Bug #54138
rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
rpl_ndb.rpl_ndb_log # Bug#38998
@@ -39,3 +42,5 @@ parts.partition_mgm_lc1_ndb # joro : NDB tests marked as experiment
parts.partition_mgm_lc2_ndb # joro : NDB tests marked as experimental as agreed with bochklin
parts.partition_syntax_ndb # joro : NDB tests marked as experimental as agreed with bochklin
parts.partition_value_ndb # joro : NDB tests marked as experimental as agreed with bochklin
+main.mysqlhotcopy_myisam # horst: due to bug#54129
+main.mysqlhotcopy_archive # horst: due to bug#54129
diff --git a/mysql-test/extra/binlog_tests/binlog.test b/mysql-test/extra/binlog_tests/binlog.test
index b819996acb0..7f48341077e 100644
--- a/mysql-test/extra/binlog_tests/binlog.test
+++ b/mysql-test/extra/binlog_tests/binlog.test
@@ -41,13 +41,10 @@ while ($1)
--enable_query_log
commit;
drop table t1;
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
-show binlog events in 'master-bin.000001' from 106;
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
-show binlog events in 'master-bin.000002' from 106;
-
+--source include/show_binlog_events.inc
+--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)
+--source include/show_binlog_events.inc
+--let $binlog_file=
#
# Bug#22540 - Incorrect value in column End_log_pos of
@@ -77,8 +74,7 @@ insert into t1 values (2);
insert into t1 values (3);
commit;
drop table t1;
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
-show binlog events from 0;
+--source include/show_binlog_events.inc
# now show that nothing breaks if we need to read from the cache more
# than once, resulting in split event-headers
@@ -100,8 +96,7 @@ while ($1)
commit;
enable_query_log;
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
-show binlog events from 0;
+--source include/show_binlog_events.inc
drop table t1;
@@ -122,8 +117,7 @@ set @b= 14632475938453979136;
execute stmt using @a, @b;
deallocate prepare stmt;
drop table t1;
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
-show binlog events from 0;
+--source include/show_binlog_events.inc
#
@@ -249,14 +243,15 @@ reset master;
drop table if exists t3;
--enable_warnings
create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb;
-show master status;
+source include/show_master_status.inc;
let $it=4;
while ($it)
{
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
dec $it;
}
-show master status /* must show new binlog index after rotating */;
+# must show new binlog index after rotating;
+source include/show_master_status.inc;
drop table t3;
--echo #
diff --git a/mysql-test/extra/binlog_tests/blackhole.test b/mysql-test/extra/binlog_tests/blackhole.test
index 14c15a58e18..da63a7a8619 100644
--- a/mysql-test/extra/binlog_tests/blackhole.test
+++ b/mysql-test/extra/binlog_tests/blackhole.test
@@ -125,12 +125,7 @@ select * from t1;
select * from t2;
select * from t3;
-let $VERSION=`select version()`;
---replace_result $VERSION VERSION
---replace_column 2 # 4 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
---replace_regex /file_id=[0-9]+/file_id=#/
-show binlog events;
+--source include/show_binlog_events.inc
drop table t1,t2,t3;
@@ -168,18 +163,21 @@ set autocommit=0;
start transaction;
insert into t1 values(1);
commit;
+
+let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1);
+
start transaction;
insert into t1 values(2);
rollback;
-set autocommit=1;
-let $VERSION=`select version()`;
---replace_result $VERSION VERSION
---replace_column 2 # 4 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
---replace_regex /file_id=[0-9]+/file_id=#/
-show binlog events;
+let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1);
+if (`SELECT $master_log_pos_2 <> $master_log_pos_1`)
+{
+ echo $master_log_pos_1 $master_log_pos_2;
+ die Rollbacked transaction has been binlogged;
+}
+set autocommit=1;
drop table if exists t1;
#
diff --git a/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test b/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test
index 26a70c4319e..68aa949a7c7 100644
--- a/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test
+++ b/mysql-test/extra/binlog_tests/mix_innodb_myisam_side_effects.test
@@ -214,7 +214,7 @@ CREATE TABLE t5 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
# execute
--error ER_DUP_ENTRY
- UPDATE t3,t4 SET t3.a=t4.a + bug27417(1);
+ UPDATE t3,t4 SET t3.a = t4.a + bug27417(1) where t3.a = 1;
# check
select count(*) from t1 /* must be 1 */;
diff --git a/mysql-test/extra/rpl_tests/rpl_deadlock.test b/mysql-test/extra/rpl_tests/rpl_deadlock.test
index 1b331cc948b..607348ae97b 100644
--- a/mysql-test/extra/rpl_tests/rpl_deadlock.test
+++ b/mysql-test/extra/rpl_tests/rpl_deadlock.test
@@ -61,7 +61,7 @@ sync_with_master;
SELECT * FROM t1;
SELECT * FROM t3;
# Check that no error is reported
---source include/show_slave_status2.inc
+source include/check_slave_is_running.inc;
--echo
# 2) Test lock wait timeout
@@ -89,7 +89,7 @@ sync_with_master;
SELECT * FROM t1;
SELECT * FROM t3;
# Check that no error is reported
---source include/show_slave_status2.inc
+source include/check_slave_is_running.inc;
--echo
# 3) Test lock wait timeout and purged relay log
@@ -103,6 +103,7 @@ SET global max_relay_log_size=0;
--source include/stop_slave.inc
DELETE FROM t2;
# Set slave position to the BEGIN log event
+--replace_result $master_pos_begin MASTER_POS_BEGIN
eval CHANGE MASTER TO MASTER_LOG_POS=$master_pos_begin;
BEGIN;
# Hold lock
@@ -119,7 +120,7 @@ sync_with_master;
SELECT * FROM t1;
SELECT * FROM t3;
# Check that no error is reported
---source include/show_slave_status2.inc
+source include/check_slave_is_running.inc;
--echo
# Clean up
diff --git a/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test b/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test
index c426ac1fae8..16c4bc8e2da 100644
--- a/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test
+++ b/mysql-test/extra/rpl_tests/rpl_extraMaster_Col.test
@@ -146,12 +146,7 @@ SELECT COUNT(*) FROM t1;
--echo
SELECT * FROM t1 ORDER BY f3 LIMIT 20;
---echo
---echo * Show Slave Status *
---echo
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical show slave status;
---echo
+--source include/check_slave_is_running.inc
### Altering table def scenario
--echo
@@ -431,16 +426,14 @@ connection master;
delete from t4;
delete from t31;
---echo
---echo ** Check slave status **
---echo
#connection slave;
sync_slave_with_master;
select * from t31;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical show slave status;
+--echo
+--echo ** Check slave status **
+--echo
+--source include/check_slave_is_running.inc
#### Clean Up ####
@@ -493,16 +486,15 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
--echo
--echo ********************************************
---echo *** Expect slave to fail with Error 1523 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
--echo
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo
--echo *** Drop t10 ***
@@ -550,16 +542,15 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
--echo
--echo ********************************************
---echo *** Expect slave to fail with Error 1523 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
--echo
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo
--echo *** Drop t11 ***
@@ -697,10 +688,10 @@ SELECT c1,c3,hex(c4),c5,c6 FROM t14 ORDER BY c1;
# Remove below once fixed
#***************************
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
+# 1091 = ER_CANT_DROP_FIELD_OR_KEY
+--let $slave_sql_errno= 1091
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
#***************************
STOP SLAVE;
@@ -763,10 +754,10 @@ SELECT c1,hex(c4),c5,c6,c7,c2 FROM t15 ORDER BY c1;
--echo ********************************************
--echo
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
+# 1054 = ER_BAD_FIELD_ERROR
+--let $slave_sql_errno= 1054
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
STOP SLAVE;
RESET SLAVE;
@@ -840,10 +831,10 @@ SELECT c1,hex(c4),c5,c6,c7 FROM t16 ORDER BY c1;
--echo *****************
--echo
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
+# 1072 = ER_KEY_COLUMN_DOES_NOT_EXITS
+--let $slave_sql_errno= 1072
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
index 46168d6b97a..3b8e7663ec7 100644
--- a/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
+++ b/mysql-test/extra/rpl_tests/rpl_extraSlave_Col.test
@@ -96,10 +96,9 @@ SELECT * FROM t2 ORDER BY a;
--echo *** Start Slave ***
connection slave;
START SLAVE;
-source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -146,15 +145,13 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Drop t3 ***
connection master;
@@ -191,15 +188,13 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
(30000.22,4,'QA TESTING');
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Drop t4 ***
connection master;
@@ -236,15 +231,13 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
(2,'JOE',300.01,0,'b2b2',1.0000009);
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Drop t5 ***
connection master;
@@ -282,13 +275,12 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
(2,'JOE',300.01,0);
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
#START SLAVE;
@@ -387,12 +379,10 @@ INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
### Uncomment once bug is fixed
#connection slave;
-#wait_for_slave_to_stop;
-#--replace_result $MASTER_MYPORT MASTER_PORT
-#--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
-#--query_vertical SHOW SLAVE STATUS
-#SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-#START SLAVE;
+#--let $slave_sql_errno= SOMETHING
+#--let $slave_skip_counter= 2
+#--let $show_slave_sql_error= 1
+#--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Drop t8 ***
connection master;
@@ -451,12 +441,10 @@ if (`SELECT $engine_type != 'NDB'`)
# todo: fix Bug #43992 slave sql thread can't tune own sql_mode ...
# and add/restore waiting for stop test
- #--source include/wait_for_slave_sql_to_stop.inc
- #--replace_result $MASTER_MYPORT MASTER_PORT
- #--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
- #--query_vertical SHOW SLAVE STATUS
- #SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
- #START SLAVE;
+ #--let $slave_sql_errno= SOMETHING
+ #--let $slave_skip_counter= 2
+ #--let $show_slave_sql_error= 1
+ #--source include/wait_for_slave_sql_error_and_skip.inc
}
#--echo *** Drop t9 ***
@@ -491,15 +479,13 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Drop t10 ***
connection master;
@@ -535,15 +521,13 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Drop t11 ***
connection master;
@@ -810,12 +794,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
--echo *** Expect slave to fail with Error 1060 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-START SLAVE;
+--let $slave_sql_errno= 1060
+--let $slave_skip_counter= 1
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo *** Try to insert in master ****
connection master;
@@ -918,15 +900,13 @@ connection master;
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
--echo ********************************************
---echo *** Expect slave to fail with Error 1522 ***
+--echo *** Expect slave to fail with Error 1535 ***
--echo ********************************************
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_sql_errno= 1535
+--let $slave_skip_counter= 2
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
--echo ** DROP table t17 ***
connection master;
diff --git a/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test b/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test
index 5ed2f1ac2b8..fd51601176e 100644
--- a/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test
+++ b/mysql-test/extra/rpl_tests/rpl_flsh_tbls.test
@@ -20,19 +20,15 @@ rename table t1 to t5, t2 to t1;
# first don't write it to the binlog, to test the NO_WRITE_TO_BINLOG keyword.
flush no_write_to_binlog tables;
# Check that it's not in the binlog.
---replace_result $SERVER_VERSION SERVER_VERSION
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-eval SHOW BINLOG EVENTS FROM $rename_event_pos ;
+let $binlog_start= $rename_event_pos;
+source include/show_binlog_events.inc;
# Check that the master is not confused.
select * from t3;
# This FLUSH should go into the binlog to not confuse the slave.
flush tables;
# Check that it's in the binlog.
---replace_result $SERVER_VERSION SERVER_VERSION
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-eval SHOW BINLOG EVENTS FROM $rename_event_pos ;
+let $wait_binlog_event= flush tables;
+source include/wait_for_binlog_event.inc;
sync_slave_with_master;
# Check that the slave is not confused.
diff --git a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test
index c392686454d..66bd61a8ea9 100644
--- a/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test
+++ b/mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test
@@ -68,19 +68,15 @@ eval SET DEBUG_SYNC=$debug_sync_action;
# Show slave last IO errno
connection slave;
-source include/wait_for_slave_io_error.inc;
-let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1);
--echo Check network error happened here
-if (`SELECT '$last_io_errno' = '2013' || # CR_SERVER_LOST
- '$last_io_errno' = '2003' || # CR_CONN_HOST_ERROR
- '$last_io_errno' = '2002' || # CR_CONNECTION_ERROR
- '$last_io_errno' = '2006' || # CR_SERVER_GONE_ERROR
- '$last_io_errno' = '1040' || # ER_CON_COUNT_ERROR
- '$last_io_errno' = '1053' # ER_SERVER_SHUTDOWN
- `)
-{
- --echo NETWORK ERROR
-}
+# '2013' CR_SERVER_LOST
+# '2003' CR_CONN_HOST_ERROR
+# '2002' CR_CONNECTION_ERROR
+# '2006' CR_SERVER_GONE_ERROR
+# '1040' ER_CON_COUNT_ERROR
+# '1053' ER_SERVER_SHUTDOWN
+let $slave_io_errno= 1040, 1053, 2002, 2003, 2006, 2013;
+source include/wait_for_slave_io_error.inc;
# deactivate the sync point of get_master_version_and_clock()
# now to avoid restarting IO-thread to re-enter it.
diff --git a/mysql-test/extra/rpl_tests/rpl_insert_delayed.test b/mysql-test/extra/rpl_tests/rpl_insert_delayed.test
index 16e6bb3c960..4d611c15acf 100644
--- a/mysql-test/extra/rpl_tests/rpl_insert_delayed.test
+++ b/mysql-test/extra/rpl_tests/rpl_insert_delayed.test
@@ -90,7 +90,7 @@ connection master;
# Bug #29571: INSERT DELAYED IGNORE written to binary log on the master but
# on the slave
#
-if (`SELECT @@global.binlog_format != 'ROW'`)
+if ($binlog_format_statement)
{
#flush the logs before the test
connection slave;
@@ -103,22 +103,23 @@ CREATE TABLE t1(a int, UNIQUE(a));
INSERT DELAYED IGNORE INTO t1 VALUES(1);
INSERT DELAYED IGNORE INTO t1 VALUES(1);
flush table t1; # to wait for INSERT DELAYED to be done
-
-if (`SELECT @@global.binlog_format != 'ROW'`)
+if ($binlog_format_statement)
{
#must show two INSERT DELAYED
- --replace_column 1 x 2 x 3 x 4 x 5 x
- show binlog events in 'master-bin.000002' LIMIT 2,2;
+ --let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)
+ --let $binlog_limit= 1,2
+ --source include/show_binlog_events.inc
}
select * from t1;
sync_slave_with_master;
echo On slave;
-if (`SELECT @@global.binlog_format != 'ROW'`)
+if ($binlog_format_statement)
{
#must show two INSERT DELAYED
- --replace_column 1 x 2 x 3 x 4 x 5 x
- show binlog events in 'slave-bin.000002' LIMIT 2,2;
+ --let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)
+ --let $binlog_limit= 1,2
+ --source include/show_binlog_events.inc
}
select * from t1;
diff --git a/mysql-test/extra/rpl_tests/rpl_log.test b/mysql-test/extra/rpl_tests/rpl_log.test
index e4ebfd68761..e714d84a51b 100644
--- a/mysql-test/extra/rpl_tests/rpl_log.test
+++ b/mysql-test/extra/rpl_tests/rpl_log.test
@@ -11,11 +11,9 @@
# (otherwise RESET MASTER may come too early).
sync_slave_with_master;
source include/stop_slave.inc;
---source include/wait_for_slave_to_stop.inc
reset master;
reset slave;
-start slave;
---source include/wait_for_slave_to_start.inc
+source include/start_slave.inc;
let $VERSION=`select version()`;
@@ -31,19 +29,17 @@ eval create table t1 (word char(20) not null)ENGINE=$engine_type;
--replace_result $LOAD_FILE LOAD_FILE
eval load data infile '$LOAD_FILE' into table t1 ignore 1 lines;
select count(*) from t1;
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events;
---replace_column 2 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events from 106 limit 1;
---replace_column 2 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events from 106 limit 2;
---replace_column 2 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events from 106 limit 2,1;
+source include/show_binlog_events.inc;
+
+let $binlog_limit= 1;
+source include/show_binlog_events.inc;
+
+let $binlog_limit= 2;
+source include/show_binlog_events.inc;
+
+let $binlog_limit= 2,1;
+source include/show_binlog_events.inc;
+let $binlog_limit=;
flush logs;
# We need an extra update before doing save_master_pos.
@@ -84,27 +80,24 @@ connection master;
eval create table t2 (n int)ENGINE=$engine_type;
insert into t2 values (1);
source include/show_binlog_events.inc;
---replace_result $VERSION VERSION
---replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /infile '.+'/infile 'words.dat'/
---replace_column 2 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events in 'master-bin.000002';
+
+let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
+source include/show_binlog_events.inc;
+
--replace_column 2 #
show binary logs;
sync_slave_with_master;
---source include/wait_for_slave_to_start.inc
--replace_column 2 #
show binary logs;
---replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /INFILE '.+'/INFILE 'words.dat'/
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events in 'slave-bin.000001' from 4;
---replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-show binlog events in 'slave-bin.000002' from 4;
-source include/show_slave_status.inc;
+
+let $binlog_file=;
+source include/show_binlog_events.inc;
+
+let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
+source include/show_binlog_events.inc;
+let $binlog_file=;
+
+source include/check_slave_is_running.inc;
# Need to recode the following
diff --git a/mysql-test/extra/rpl_tests/rpl_max_relay_size.test b/mysql-test/extra/rpl_tests/rpl_max_relay_size.test
index 5b546bbd891..8415522ec92 100644
--- a/mysql-test/extra/rpl_tests/rpl_max_relay_size.test
+++ b/mysql-test/extra/rpl_tests/rpl_max_relay_size.test
@@ -43,7 +43,7 @@ set global max_relay_log_size=8192-1; # mapped to 4096
select @@global.max_relay_log_size;
start slave;
sync_with_master;
-source include/show_slave_status2.inc;
+--source include/check_slave_is_running.inc
--echo #
--echo # Test 2
@@ -55,7 +55,7 @@ set global max_relay_log_size=(5*4096);
query_vertical select @@global.max_relay_log_size;
start slave;
sync_with_master;
-source include/show_slave_status2.inc;
+--source include/check_slave_is_running.inc
--echo #
--echo # Test 3: max_relay_log_size = 0
@@ -67,7 +67,7 @@ set global max_relay_log_size=0;
query_vertical select @@global.max_relay_log_size;
start slave;
sync_with_master;
-source include/show_slave_status2.inc;
+--source include/check_slave_is_running.inc
--echo #
--echo # Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
@@ -78,7 +78,6 @@ reset slave;
# test of relay log rotation when the slave is stopped
# (to make sure it does not crash).
flush logs;
-source include/show_slave_status2.inc;
--echo #
--echo # Test 5
@@ -93,10 +92,8 @@ flush logs;
# log we just closed. But a trick to achieve this is do an update on the master.
connection master;
create table t1 (a int);
-save_master_pos;
-connection slave;
-sync_with_master;
-source include/show_slave_status2.inc;
+sync_slave_with_master;
+--source include/check_slave_is_running.inc
--echo #
--echo # Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
@@ -105,10 +102,8 @@ source include/show_slave_status2.inc;
flush logs;
connection master;
drop table t1;
-save_master_pos;
-connection slave;
-sync_with_master;
-source include/show_slave_status2.inc;
+sync_slave_with_master;
+--source include/check_slave_is_running.inc
connection master;
# test that the absence of relay logs does not make a master crash
diff --git a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
index 4677f6da25d..3de1d42c34f 100644
--- a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
+++ b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
@@ -56,24 +56,23 @@ connection master;
--echo # since insert is done with transactional engine, expect a BEGIN
--echo # at <start_pos>
--echo
---replace_result $start_pos <start_pos>
---replace_column 5 #
---eval show binlog events from $start_pos limit 1
+--let $binlog_start= $start_pos
+--let $binlog_limit= 1
+--source include/show_binlog_events.inc
--echo
--echo # Now the insert, one step after
--echo
---replace_result $start_pos <start_pos>
---replace_column 2 # 5 #
---eval show binlog events from $start_pos limit 1,1
+--let $binlog_start= $start_pos
+--let $binlog_limit= 1,1
+--source include/show_binlog_events.inc
--echo
--echo # and the COMMIT should be at <end_pos>
--echo
---replace_result $start_pos <start_pos> $end_pos <end_pos>
---replace_column 2 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
---eval show binlog events from $start_pos limit 2,1
+--let $binlog_start= $start_pos
+--let $binlog_limit= 2,1
+--source include/show_binlog_events.inc
--echo
@@ -89,18 +88,17 @@ commit;
--source include/select_ndb_apply_status.inc
connection master;
---replace_result $start_pos <start_pos>
---replace_column 5 #
---eval show binlog events from $start_pos limit 1
+--let $binlog_start= $start_pos
+--let $binlog_limit= 1
+--source include/show_binlog_events.inc
--echo
---replace_result $start_pos <start_pos>
---replace_column 2 # 4 # 5 #
---eval show binlog events from $start_pos limit 1,2
+--let $binlog_start= $start_pos
+--let $binlog_limit= 1,2
+--source include/show_binlog_events.inc
--echo
---replace_result $start_pos <start_pos> $end_pos <end_pos>
---replace_column 2 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
---eval show binlog events from $start_pos limit 3,1
+--let $binlog_start= $start_pos
+--let $binlog_limit= 3,1
+--source include/show_binlog_events.inc
--echo
diff --git a/mysql-test/extra/rpl_tests/rpl_record_compare.test b/mysql-test/extra/rpl_tests/rpl_record_compare.test
new file mode 100644
index 00000000000..dc27dcb1f9d
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/rpl_record_compare.test
@@ -0,0 +1,68 @@
+
+#
+# BUG#52868: Wrong handling of NULL value during update, replication out of sync
+#
+-- echo ## case #1 - last_null_bit_pos==0 in record_compare without X bit
+
+-- source include/master-slave-reset.inc
+-- connection master
+
+-- eval CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=$engine DEFAULT CHARSET=latin1
+
+INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 );
+INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 );
+-- disable_warnings
+UPDATE t1 SET c5 = 'a';
+-- enable_warnings
+-- sync_slave_with_master
+
+-- let $diff_table_1= master:test.t1
+-- let $diff_table_2= slave:test.t1
+-- source include/diff_tables.inc
+
+--connection master
+DROP TABLE t1;
+-- sync_slave_with_master
+
+-- echo ## case #1.1 - last_null_bit_pos==0 in record_compare with X bit
+-- echo ## (1 column less and no varchar)
+-- source include/master-slave-reset.inc
+-- connection master
+
+-- eval CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=$engine DEFAULT CHARSET=latin1
+
+INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 );
+INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 );
+-- disable_warnings
+UPDATE t1 SET c5 = 'a';
+-- enable_warnings
+-- sync_slave_with_master
+
+-- let $diff_table_1= master:test.t1
+-- let $diff_table_2= slave:test.t1
+-- source include/diff_tables.inc
+
+--connection master
+DROP TABLE t1;
+-- sync_slave_with_master
+
+-- echo ## case #2 - X bit is wrongly set.
+
+-- source include/master-slave-reset.inc
+-- connection master
+
+-- eval CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=$engine DEFAULT CHARSET= latin1
+INSERT INTO t1(c1) VALUES (10);
+INSERT INTO t1(c1) VALUES (NULL);
+UPDATE t1 SET c1= 0;
+-- sync_slave_with_master
+
+-- let $diff_table_1= master:test.t1
+-- let $diff_table_2= slave:test.t1
+-- source include/diff_tables.inc
+
+-- connection master
+DROP TABLE t1;
+-- sync_slave_with_master
+
+
diff --git a/mysql-test/extra/rpl_tests/rpl_reset_slave.test b/mysql-test/extra/rpl_tests/rpl_reset_slave.test
index 1f88c792fce..5c7d33d519e 100644
--- a/mysql-test/extra/rpl_tests/rpl_reset_slave.test
+++ b/mysql-test/extra/rpl_tests/rpl_reset_slave.test
@@ -9,36 +9,32 @@
# RESET SLAVE.
-- source include/master-slave.inc
-connection master;
-save_master_pos;
-connection slave;
-sync_with_master;
-source include/show_slave_status2.inc;
+sync_slave_with_master;
+let $status_items= Master_User, Master_Host;
+source include/show_slave_status.inc;
-stop slave;
+source include/stop_slave.inc;
change master to master_user='test';
-source include/show_slave_status2.inc;
+source include/show_slave_status.inc;
reset slave;
-source include/show_slave_status2.inc;
+source include/show_slave_status.inc;
-start slave;
+source include/start_slave.inc;
sync_with_master;
-source include/show_slave_status2.inc;
+source include/show_slave_status.inc;
# test of crash with temp tables & RESET SLAVE
# (test to see if RESET SLAVE clears temp tables in memory and disk)
-stop slave;
+source include/stop_slave.inc;
reset slave;
-start slave;
+source include/start_slave.inc;
connection master;
create temporary table t1 (a int);
-save_master_pos;
-connection slave;
-sync_with_master;
-stop slave;
+sync_slave_with_master;
+source include/stop_slave.inc;
reset slave;
-start slave;
+source include/start_slave.inc;
sync_with_master;
show status like 'slave_open_temp_tables';
@@ -47,10 +43,9 @@ show status like 'slave_open_temp_tables';
#
# clearing the status
-stop slave;
+source include/stop_slave.inc;
reset slave;
-let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
-echo *** errno must be zero: $last_io_errno ***;
+source include/check_slave_no_error.inc;
#
# verifying start slave resets Last_IO_Error and Last_IO_Errno.
@@ -58,19 +53,13 @@ echo *** errno must be zero: $last_io_errno ***;
change master to master_user='impossible_user_name';
start slave;
+let $slave_io_errno= 1045;
source include/wait_for_slave_io_error.inc;
-let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
---disable_query_log
-eval SELECT $last_io_errno > 0 as ONE;
---enable_query_log
source include/stop_slave.inc;
change master to master_user='root';
source include/start_slave.inc;
-let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
-let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1);
---echo *** last errno must be zero: $last_io_errno ***
---echo *** last error must be blank: $last_io_error ***
+source include/check_slave_no_error.inc;
#
# verifying reset slave resets Last_{IO,SQL}_Err{or,no}
@@ -79,19 +68,9 @@ let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1);
source include/stop_slave.inc;
change master to master_user='impossible_user_name';
start slave;
+let $slave_io_errno= 1045;
source include/wait_for_slave_io_error.inc;
-let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
---disable_query_log
-eval SELECT $last_io_errno > 0 as ONE;
---enable_query_log
source include/stop_slave.inc;
reset slave;
-let $last_io_errno= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
-let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1);
-let $last_sql_errno= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1);
-let $last_sql_error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Error, 1);
---echo *** io last errno must be zero: $last_io_errno ***
---echo *** io last error must be blank: $last_io_error ***
---echo *** sql last errno must be zero: $last_sql_errno ***
---echo *** sql last error must be blank: $last_sql_error ***
+source include/check_slave_no_error.inc;
diff --git a/mysql-test/extra/rpl_tests/rpl_row_basic.test b/mysql-test/extra/rpl_tests/rpl_row_basic.test
index 0ba27c69a55..84f7b79e733 100644
--- a/mysql-test/extra/rpl_tests/rpl_row_basic.test
+++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test
@@ -259,10 +259,7 @@ DELETE FROM t1;
query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
sync_slave_with_master;
set @@global.slave_exec_mode= default;
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
+source include/check_slave_is_running.inc;
query_vertical SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
# BUG#37076: TIMESTAMP/DATETIME values are not replicated correctly
@@ -376,11 +373,10 @@ INSERT INTO t3 VALUES (1, "", 1);
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
+# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
connection master;
RESET MASTER;
connection slave;
@@ -405,11 +401,10 @@ INSERT INTO t5 VALUES (1, "", 1);
INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2);
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
+# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
connection master;
RESET MASTER;
connection slave;
@@ -424,11 +419,10 @@ INSERT INTO t6 VALUES (1, "", 1);
INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2);
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
-disable_query_log;
-eval SELECT "$last_error" AS Last_SQL_Error;
-enable_query_log;
+# 1535 = ER_BINLOG_ROW_WRONG_TABLE_DEF
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
connection master;
RESET MASTER;
connection slave;
diff --git a/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test b/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
index 083088f12ff..ee6205c79d8 100644
--- a/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
+++ b/mysql-test/extra/rpl_tests/rpl_row_tabledefs.test
@@ -138,9 +138,7 @@ SELECT * FROM t2;
sync_slave_with_master;
--echo **** On Slave ****
SELECT * FROM t2;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 20 <Last_Error> 22 # 23 # 33 # 35 <Last_IO_Errno> 36 <Last_IO_Error> 38 <Last_SQL_Error>
---query_vertical SHOW SLAVE STATUS
+--source include/check_slave_is_running.inc
connection master;
INSERT INTO t9 VALUES (4);
@@ -149,12 +147,10 @@ sync_slave_with_master;
connection master;
INSERT INTO t4 VALUES (4);
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 20 <Last_Error> 22 # 23 # 33 # 35 <Last_IO_Errno> 36 <Last_IO_Error> 38 <Last_SQL_Error>
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_skip_counter= 2
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
connection master;
INSERT INTO t9 VALUES (5);
@@ -163,12 +159,10 @@ sync_slave_with_master;
connection master;
INSERT INTO t5 VALUES (5,10,25);
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 20 <Last_Error> 22 # 23 # 33 # 35 <Last_IO_Errno> 36 <Last_IO_Error> 38 <Last_SQL_Error>
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_skip_counter= 2
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
connection master;
INSERT INTO t9 VALUES (6);
@@ -177,19 +171,15 @@ sync_slave_with_master;
connection master;
INSERT INTO t6 VALUES (6,12,36);
connection slave;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 20 <Last_Error> 22 # 23 # 33 # 35 <Last_IO_Errno> 36 <Last_IO_Error> 38 <Last_SQL_Error>
---query_vertical SHOW SLAVE STATUS
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--let $slave_skip_counter= 2
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error_and_skip.inc
connection master;
INSERT INTO t9 VALUES (6);
sync_slave_with_master;
---replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 20 <Last_Error> 22 # 23 # 33 # 35 <Last_IO_Errno> 36 <Last_IO_Error> 38 <Last_SQL_Error>
---query_vertical SHOW SLAVE STATUS
+--source include/check_slave_is_running.inc
# Testing some tables extra field that can be null and cannot be null
# (but have default values)
diff --git a/mysql-test/include/check_concurrent_insert.inc b/mysql-test/include/check_concurrent_insert.inc
new file mode 100644
index 00000000000..f4bec3c9cdb
--- /dev/null
+++ b/mysql-test/include/check_concurrent_insert.inc
@@ -0,0 +1,96 @@
+#
+# SUMMARY
+# Check if statement reading table '$table' allows concurrent
+# inserts in it.
+#
+# PARAMETERS
+# $table Table in which concurrent inserts should be allowed.
+# $con_aux1 Name of the first auxiliary connection to be used by this
+# script.
+# $con_aux2 Name of the second auxiliary connection to be used by this
+# script.
+# $statement Statement to be checked.
+# $restore_table Table which might be modified by statement to be checked
+# and thus needs backing up before its execution and
+# restoring after it (can be empty).
+#
+# EXAMPLE
+# lock_sync.test
+#
+--disable_result_log
+--disable_query_log
+
+# Reset DEBUG_SYNC facility for safety.
+set debug_sync= "RESET";
+
+if (`SELECT '$restore_table' <> ''`)
+{
+--eval create temporary table t_backup select * from $restore_table;
+}
+
+connection $con_aux1;
+set debug_sync='after_lock_tables_takes_lock SIGNAL parked WAIT_FOR go';
+--send_eval $statement;
+
+connection $con_aux2;
+set debug_sync='now WAIT_FOR parked';
+--send_eval insert into $table (i) values (0);
+
+--enable_result_log
+--enable_query_log
+connection default;
+# Wait until concurrent insert is successfully executed while
+# statement being checked has its tables locked.
+# We use wait_condition.inc instead of simply reaping
+# concurrent insert here in order to avoid deadlocks if test
+# fails and to time out gracefully instead.
+let $wait_condition=
+ select count(*) = 0 from information_schema.processlist
+ where info = "insert into $table (i) values (0)";
+--source include/wait_condition.inc
+
+--disable_result_log
+--disable_query_log
+
+if ($success)
+{
+# Apparently concurrent insert was successfully executed.
+# To be safe against wait_condition.inc succeeding due to
+# races let us first reap concurrent insert to ensure that
+# it has really been successfully executed.
+connection $con_aux2;
+--reap
+connection default;
+set debug_sync= 'now SIGNAL go';
+connection $con_aux1;
+--reap
+connection default;
+--echo Success: '$statement' allows concurrent inserts into '$table'.
+}
+if (!$success)
+{
+# Waiting has timed out. Apparently concurrent insert was blocked.
+# So to be able to continue we need to end our statement first.
+set debug_sync= 'now SIGNAL go';
+connection $con_aux1;
+--reap
+connection $con_aux2;
+--reap
+connection default;
+--echo Error: '$statement' doesn't allow concurrent inserts into '$table'!
+}
+
+--eval delete from $table where i = 0;
+
+if (`SELECT '$restore_table' <> ''`)
+{
+--eval truncate table $restore_table;
+--eval insert into $restore_table select * from t_backup;
+drop temporary table t_backup;
+}
+
+# Clean-up. Reset DEBUG_SYNC facility after use.
+set debug_sync= "RESET";
+
+--enable_result_log
+--enable_query_log
diff --git a/mysql-test/include/check_no_concurrent_insert.inc b/mysql-test/include/check_no_concurrent_insert.inc
new file mode 100644
index 00000000000..f60401bcad1
--- /dev/null
+++ b/mysql-test/include/check_no_concurrent_insert.inc
@@ -0,0 +1,81 @@
+#
+# SUMMARY
+# Check that statement reading table '$table' doesn't allow concurrent
+# inserts in it.
+#
+# PARAMETERS
+# $table Table in which concurrent inserts should be disallowed.
+# $con_aux1 Name of the first auxiliary connection to be used by this
+# script.
+# $con_aux2 Name of the second auxiliary connection to be used by this
+# script.
+# $statement Statement to be checked.
+# $restore_table Table which might be modified by statement to be checked
+# and thus needs backing up before its execution and
+# restoring after it (can be empty).
+#
+# EXAMPLE
+# lock_sync.test
+#
+--disable_result_log
+--disable_query_log
+
+# Reset DEBUG_SYNC facility for safety.
+set debug_sync= "RESET";
+
+if (`SELECT '$restore_table' <> ''`)
+{
+--eval create temporary table t_backup select * from $restore_table;
+}
+
+connection $con_aux1;
+set debug_sync='after_lock_tables_takes_lock SIGNAL parked WAIT_FOR go';
+--send_eval $statement;
+
+connection $con_aux2;
+set debug_sync='now WAIT_FOR parked';
+--send_eval insert into $table (i) values (0);
+
+--enable_result_log
+--enable_query_log
+connection default;
+# Wait until concurrent insert is successfully blocked because
+# of our statement.
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Locked" and info = "insert into $table (i) values (0)";
+--source include/wait_condition.inc
+
+--disable_result_log
+--disable_query_log
+
+set debug_sync= 'now SIGNAL go';
+connection $con_aux1;
+--reap
+connection $con_aux2;
+--reap
+connection default;
+
+if ($success)
+{
+--echo Success: '$statement' doesn't allow concurrent inserts into '$table'.
+}
+if (!$success)
+{
+--echo Error: '$statement' allows concurrent inserts into '$table'!
+}
+
+--eval delete from $table where i = 0;
+
+if (`SELECT '$restore_table' <> ''`)
+{
+--eval truncate table $restore_table;
+--eval insert into $restore_table select * from t_backup;
+drop temporary table t_backup;
+}
+
+# Clean-up. Reset DEBUG_SYNC facility after use.
+set debug_sync= "RESET";
+
+--enable_result_log
+--enable_query_log
diff --git a/mysql-test/include/check_no_row_lock.inc b/mysql-test/include/check_no_row_lock.inc
new file mode 100644
index 00000000000..c08e7f35b10
--- /dev/null
+++ b/mysql-test/include/check_no_row_lock.inc
@@ -0,0 +1,71 @@
+#
+# SUMMARY
+# Check if statement affecting or reading table '$table' doesn't
+# take any kind of locks on its rows.
+#
+# PARAMETERS
+# $table Table for which presence of row locks should be checked.
+# $con_aux Name of auxiliary connection to be used by this script.
+# $statement Statement to be checked.
+#
+# EXAMPLE
+# innodb_mysql_lock2.test
+#
+--disable_result_log
+--disable_query_log
+
+connection default;
+begin;
+--eval select * from $table for update;
+
+connection $con_aux;
+begin;
+--send_eval $statement;
+
+--enable_result_log
+--enable_query_log
+
+connection default;
+# Wait until statement is successfully executed while
+# all rows in table are X-locked. This means that it
+# does not acquire any row locks.
+# We use wait_condition.inc instead of simply reaping
+# statement here in order to avoid deadlocks if test
+# fails and to time out gracefully instead.
+let $wait_condition=
+ select count(*) = 0 from information_schema.processlist
+ where info = "$statement";
+--source include/wait_condition.inc
+
+--disable_result_log
+--disable_query_log
+
+if ($success)
+{
+# Apparently statement was successfully executed and thus it
+# has not required any row locks.
+# To be safe against wait_condition.inc succeeding due to
+# races let us first reap the statement being checked to
+# ensure that it has been successfully executed.
+connection $con_aux;
+--reap
+rollback;
+connection default;
+rollback;
+--echo Success: '$statement' doesn't take row locks on '$table'.
+}
+if (!$success)
+{
+# Waiting has timed out. Apparently statement was blocked on
+# some row lock. So to be able to continue we need to unlock
+# rows first.
+rollback;
+connection $con_aux;
+--reap
+rollback;
+connection default;
+--echo Error: '$statement' takes some row locks on '$table'!
+}
+
+--enable_result_log
+--enable_query_log
diff --git a/mysql-test/include/check_shared_row_lock.inc b/mysql-test/include/check_shared_row_lock.inc
new file mode 100644
index 00000000000..efc7e13b3aa
--- /dev/null
+++ b/mysql-test/include/check_shared_row_lock.inc
@@ -0,0 +1,61 @@
+#
+# SUMMARY
+# Check if statement reading table '$table' takes shared locks
+# on some of its rows.
+#
+# PARAMETERS
+# $table Table for which presence of row locks should be checked.
+# $con_aux Name of auxiliary connection to be used by this script.
+# $statement Statement to be checked.
+# $wait_statement Sub-statement which is supposed to acquire locks (should
+# be the same as $statement for ordinary statements).
+#
+# EXAMPLE
+# innodb_mysql_lock2.test
+#
+--disable_result_log
+--disable_query_log
+
+connection default;
+begin;
+--eval select * from $table for update;
+
+connection $con_aux;
+begin;
+--send_eval $statement;
+
+--enable_result_log
+--enable_query_log
+
+connection default;
+# Wait until statement is successfully blocked because
+# all rows in table are X-locked. This means that at
+# least it acquires S-locks on some of rows.
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state in ("Sending data","statistics", "preparing") and
+ info = "$wait_statement";
+--source include/wait_condition.inc
+
+--disable_result_log
+--disable_query_log
+
+rollback;
+
+connection $con_aux;
+--reap
+rollback;
+
+connection default;
+--enable_result_log
+--enable_query_log
+
+if ($success)
+{
+--echo Success: '$statement' takes shared row locks on '$table'.
+}
+
+if (!$success)
+{
+--echo Error: '$statement' hasn't taken shared row locks on '$table'!
+}
diff --git a/mysql-test/include/check_slave_is_running.inc b/mysql-test/include/check_slave_is_running.inc
new file mode 100644
index 00000000000..5fbbe0d684c
--- /dev/null
+++ b/mysql-test/include/check_slave_is_running.inc
@@ -0,0 +1,18 @@
+# ==== Purpose ====
+#
+# Assert that the slave threads are running and don't have any errors.
+#
+# ==== Usage ====
+#
+# --source include/check_slave_running.inc
+
+--echo Checking that both slave threads are running.
+
+--let $slave_sql_running = query_get_value(SHOW SLAVE STATUS, Slave_SQL_Running, 1)
+--let $slave_io_running = query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1)
+
+if (`SELECT '$slave_sql_running' != 'Yes' OR '$slave_io_running' != 'Yes'`) {
+ --echo Slave not running: Slave_SQL_Running = $slave_sql_running Slave_IO_Running = $slave_io_running
+ --source include/show_rpl_debug_info.inc
+ --die Expected slave to be running, but it was not running.
+}
diff --git a/mysql-test/include/check_slave_no_error.inc b/mysql-test/include/check_slave_no_error.inc
new file mode 100644
index 00000000000..371db5ed6a0
--- /dev/null
+++ b/mysql-test/include/check_slave_no_error.inc
@@ -0,0 +1,17 @@
+# ==== Purpose ====
+#
+# Assert that Slave_SQL_Error and Slave_IO_Error are empty.
+#
+# ==== Usage ====
+#
+# --let $slave_param= Exec_Master_Log_Pos
+# --let $slave_param_value= 4711
+# --source include/check_slave_running.inc
+
+--let $slave_param= Last_SQL_Errno
+--let $slave_param_value= 0
+--source include/check_slave_param.inc
+
+--let $slave_param= Last_IO_Errno
+--let $slave_param_value= 0
+--source include/check_slave_param.inc
diff --git a/mysql-test/include/check_slave_param.inc b/mysql-test/include/check_slave_param.inc
new file mode 100644
index 00000000000..d82c26851ea
--- /dev/null
+++ b/mysql-test/include/check_slave_param.inc
@@ -0,0 +1,16 @@
+# ==== Purpose ====
+#
+# Assert that a given column in SHOW SLAVE STATUS has a given value.
+#
+# ==== Usage ====
+#
+# --let $slave_param= Exec_Master_Log_Pos
+# --let $slave_param_value= 4711
+# --source include/check_slave_param.inc
+
+--let $_param_value= query_get_value(SHOW SLAVE STATUS, $slave_param, 1)
+if (`SELECT '$_param_value' != '$slave_param_value'`) {
+ --echo Wrong value for $slave_param. Expected '$slave_param_value', got '$_param_value'
+ --source include/show_rpl_debug_info.inc
+ --die Wrong value for slave parameter
+}
diff --git a/mysql-test/include/cleanup_fake_relay_log.inc b/mysql-test/include/cleanup_fake_relay_log.inc
index 43aa46cb657..c55e2937242 100644
--- a/mysql-test/include/cleanup_fake_relay_log.inc
+++ b/mysql-test/include/cleanup_fake_relay_log.inc
@@ -9,8 +9,10 @@
--echo Cleaning up after setup_fake_relay_log.inc
# Remove files.
+--disable_warnings
remove_file $_fake_relay_log;
remove_file $_fake_relay_index;
+--enable_warnings
--disable_query_log
eval SET @@global.relay_log_purge= $_fake_relay_log_purge;
--enable_query_log
diff --git a/mysql-test/include/commit.inc b/mysql-test/include/commit.inc
index d91ba8291fd..d412eae8364 100644
--- a/mysql-test/include/commit.inc
+++ b/mysql-test/include/commit.inc
@@ -725,9 +725,9 @@ call p_verify_status_increment(4, 4, 4, 4);
alter table t3 add column (b int);
call p_verify_status_increment(2, 0, 2, 0);
alter table t3 rename t4;
-call p_verify_status_increment(2, 2, 2, 2);
+call p_verify_status_increment(1, 0, 1, 0);
rename table t4 to t3;
-call p_verify_status_increment(2, 2, 2, 2);
+call p_verify_status_increment(1, 0, 1, 0);
truncate table t3;
call p_verify_status_increment(4, 4, 4, 4);
create view v1 as select * from t2;
diff --git a/mysql-test/include/default_my.cnf b/mysql-test/include/default_my.cnf
index d77fee0e200..17a418ff7b5 100644
--- a/mysql-test/include/default_my.cnf
+++ b/mysql-test/include/default_my.cnf
@@ -6,9 +6,6 @@
# Run the master.sh script before starting this process
#!run-master-sh
-log-bin= master-bin
-
-
[mysqlbinlog]
disable-force-if-open
diff --git a/mysql-test/include/default_mysqld.cnf b/mysql-test/include/default_mysqld.cnf
index c93762f6c25..e46c3bc3c17 100644
--- a/mysql-test/include/default_mysqld.cnf
+++ b/mysql-test/include/default_mysqld.cnf
@@ -13,9 +13,10 @@ key_buffer_size= 1M
sort_buffer= 256K
max_heap_table_size= 1M
+loose-skip-innodb
+loose-skip-pbxt
+
loose-innodb_data_file_path= ibdata1:10M:autoextend
slave-net-timeout=120
-log-bin=mysqld-bin
-
diff --git a/mysql-test/include/diff_tables.inc b/mysql-test/include/diff_tables.inc
index d15dd56b35d..8a463686fdb 100644
--- a/mysql-test/include/diff_tables.inc
+++ b/mysql-test/include/diff_tables.inc
@@ -54,27 +54,24 @@
--echo Comparing tables $diff_table_1 and $diff_table_2
disable_query_log;
-
+disable_warnings;
--error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_1
--error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/diff_table_2
+enable_warnings;
let $_diff_table=$diff_table_2;
let $_diff_i=2;
while ($_diff_i) {
- # Parse out any leading "master:" or "slave:" from the table
- # specification and connect the appropriate server.
- let $_diff_conn_master=`SELECT SUBSTR('$_diff_table', 1, 7) = 'master:'`;
- if ($_diff_conn_master) {
- let $_diff_table=`SELECT SUBSTR('$_diff_table', 8)`;
- connection master;
- }
- let $_diff_conn_slave=`SELECT SUBSTR('$_diff_table', 1, 6) = 'slave:'`;
- if ($_diff_conn_slave) {
- let $_diff_table=`SELECT SUBSTR('$_diff_table', 7)`;
- connection slave;
+ # Parse out any leading "master:" or "slave:" from the table specification
+# and connect the appropriate server.
+ let $_pos= `SELECT LOCATE(':', '$_diff_table')`;
+ let $_diff_conn=`SELECT SUBSTR('$_diff_table', 1, $_pos-1)`;
+ if (`SELECT 'XX$_diff_conn' <> 'XX'`) {
+ let $_diff_table=`SELECT SUBSTR('$_diff_table', $_pos+1)`;
+ connection $_diff_conn;
}
# Sanity-check the input.
diff --git a/mysql-test/include/get_relay_log_pos.inc b/mysql-test/include/get_relay_log_pos.inc
new file mode 100644
index 00000000000..7ce36fd3c50
--- /dev/null
+++ b/mysql-test/include/get_relay_log_pos.inc
@@ -0,0 +1,70 @@
+# For a given event which is at position $master_log_pos in the the master's
+# binary log, returns its position in the slave's relay log file
+# $relay_log_file.
+# The position is stored in the variable $relay_log_pos.
+
+# Usage:
+# let $relay_log_file= 'relay-log-bin.000001';
+# let $master_log_pos= 106;
+# source include/get_relay_log_pos.inc;
+# # at this point, get_relay_log_pos.inc sets $relay_log_pos. echo position
+# # in $relay_log_file: $relay_log_pos.
+
+if (`SELECT '$relay_log_file' = ''`)
+{
+ --die 'variable $relay_log_file is null'
+}
+
+if (`SELECT '$master_log_pos' = ''`)
+{
+ --die 'variable $master_log_pos is null'
+}
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $_suffix= `SELECT UUID()`;
+let $_tmp_file= $MYSQLTEST_VARDIR/tmp/mysqlbinlog.$_suffix;
+--exec $MYSQL_BINLOG $MYSQLD_DATADIR/$relay_log_file > $_tmp_file
+
+# All queries in this file should not be logged.
+--disable_query_log
+
+--disable_warnings
+DROP TEMPORARY TABLE IF EXISTS mysqlbinlog_events;
+DROP TEMPORARY TABLE IF EXISTS events_at;
+DROP TEMPORARY TABLE IF EXISTS events_pos;
+CREATE TEMPORARY TABLE mysqlbinlog_events(c1 INT AUTO_INCREMENT KEY, c2 varchar(256));
+
+# Event position is in the comments output by mysqlbinlog, we load this
+# comments into the table
+# '# at 106'
+# '# .... end_log_pos 46'
+eval LOAD DATA LOCAL INFILE '$_tmp_file' INTO TABLE mysqlbinlog_events
+ LINES STARTING BY '#' (c2) SET c1 = NULL;
+--enable_warnings
+
+# Event pos in relay log file is inserted into table events_at
+CREATE TEMPORARY TABLE events_at(c1 INT AUTO_INCREMENT KEY, c2 varchar(256))
+ SELECT c2 FROM mysqlbinlog_events WHERE c2 LIKE ' at%' ORDER BY c1;
+
+# Event pos in master log file is inserted into table events_pos
+CREATE TEMPORARY TABLE events_pos(c1 INT AUTO_INCREMENT KEY, c2 varchar(256))
+ SELECT c2 FROM mysqlbinlog_events WHERE c2 LIKE '% end_log_pos %' ORDER BY c1;
+
+# events_at events_pos
+# c1------c2-------------------------- c1------c2------------------------
+# 1 ev1's begin pos in relay log 1 ev1's end pos in master log
+# 2 ev2's begin pos in relay log 2 ev2's end pos in master log
+# 3 ev3's begin pos in relay log 3 ev3's end pos in master log
+# events always keep the same sequence.
+# Because event[N]'s end pos is equal to event[N+1]'s begin pos we want to
+# find event's end pos in relay log, we can find the right relay_log_pos
+# using the relationship that 'events_pos.c1 = events_at.c1 + 1'
+#
+# There is a fault that we can't get the relay log position of the last event,
+# as it is not output by mysqlbinlog
+let $relay_log_pos= `SELECT SUBSTRING(a.c2, 5)
+ FROM events_at a, events_pos b
+ WHERE a.c1=b.c1+1 and b.c2 LIKE '% $master_log_pos%'`;
+DROP TEMPORARY TABLE mysqlbinlog_events, events_at, events_pos;
+--remove_file $_tmp_file
+--enable_query_log
diff --git a/mysql-test/include/have_archive.inc b/mysql-test/include/have_archive.inc
index 82399ca4c6c..0fd85fa576f 100644
--- a/mysql-test/include/have_archive.inc
+++ b/mysql-test/include/have_archive.inc
@@ -1,4 +1,5 @@
---disable_query_log
---require r/true.require
-select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'archive';
---enable_query_log
+if (!`SELECT count(*) FROM information_schema.engines WHERE
+ (support = 'YES' OR support = 'DEFAULT') AND
+ engine = 'archive'`){
+ skip Need archive engine;
+}
diff --git a/mysql-test/include/have_archive.opt b/mysql-test/include/have_archive.opt
new file mode 100644
index 00000000000..cf9309d9fb0
--- /dev/null
+++ b/mysql-test/include/have_archive.opt
@@ -0,0 +1,2 @@
+--loose-archive
+--plugin-load=$HA_ARCHIVE_SO
diff --git a/mysql-test/include/have_binlog_format_mixed.opt b/mysql-test/include/have_binlog_format_mixed.opt
new file mode 100644
index 00000000000..01cf3e0520f
--- /dev/null
+++ b/mysql-test/include/have_binlog_format_mixed.opt
@@ -0,0 +1 @@
+--binlog-format=mixed
diff --git a/mysql-test/include/have_binlog_format_row.opt b/mysql-test/include/have_binlog_format_row.opt
new file mode 100644
index 00000000000..83ed8522e72
--- /dev/null
+++ b/mysql-test/include/have_binlog_format_row.opt
@@ -0,0 +1 @@
+--binlog-format=row
diff --git a/mysql-test/include/have_binlog_format_statement.opt b/mysql-test/include/have_binlog_format_statement.opt
new file mode 100644
index 00000000000..0dac5e9fb9c
--- /dev/null
+++ b/mysql-test/include/have_binlog_format_statement.opt
@@ -0,0 +1,2 @@
+--binlog-format=statement
+
diff --git a/mysql-test/include/have_blackhole.opt b/mysql-test/include/have_blackhole.opt
new file mode 100644
index 00000000000..b600b468390
--- /dev/null
+++ b/mysql-test/include/have_blackhole.opt
@@ -0,0 +1,2 @@
+--loose-blackhole
+--plugin-load=$HA_BLACKHOLE_SO
diff --git a/mysql-test/include/have_example_plugin.inc b/mysql-test/include/have_example_plugin.inc
index a2fffc17b97..a344b79700b 100644
--- a/mysql-test/include/have_example_plugin.inc
+++ b/mysql-test/include/have_example_plugin.inc
@@ -5,9 +5,9 @@
--source include/have_dynamic_loading.inc
#
-# Check if the variable EXAMPLE_PLUGIN is set
+# Check if the variable HA_EXAMPLE_SO is set
#
--require r/have_example_plugin.require
disable_query_log;
-eval select LENGTH('$EXAMPLE_PLUGIN') > 0 as 'have_example_plugin';
+eval select LENGTH('$HA_EXAMPLE_SO') > 0 as 'have_example_plugin';
enable_query_log;
diff --git a/mysql-test/include/have_exampledb.inc b/mysql-test/include/have_exampledb.inc
deleted file mode 100644
index db3985e3c7c..00000000000
--- a/mysql-test/include/have_exampledb.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-disable_query_log;
---require r/true.require
-select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'example';
-enable_query_log;
diff --git a/mysql-test/include/have_innodb.inc b/mysql-test/include/have_innodb.inc
index 8944cc46f3e..c3c8b5cc4f2 100644
--- a/mysql-test/include/have_innodb.inc
+++ b/mysql-test/include/have_innodb.inc
@@ -1,4 +1,5 @@
-disable_query_log;
---require r/true.require
-select (support = 'YES' or support = 'DEFAULT' or support = 'ENABLED') as `TRUE` from information_schema.engines where engine = 'innodb';
-enable_query_log;
+if (!`SELECT count(*) FROM information_schema.engines WHERE
+ (support = 'YES' OR support = 'DEFAULT') AND
+ engine = 'innodb'`){
+ skip Needs innodb engine;
+}
diff --git a/mysql-test/include/have_innodb.opt b/mysql-test/include/have_innodb.opt
new file mode 100644
index 00000000000..4fb96229a7b
--- /dev/null
+++ b/mysql-test/include/have_innodb.opt
@@ -0,0 +1,2 @@
+--loose-innodb
+--plugin-load=$HA_XTRADB_SO
diff --git a/mysql-test/include/have_innodb_plugin.inc b/mysql-test/include/have_innodb_plugin.inc
index 99a79465f52..5f67fb1f97d 100644
--- a/mysql-test/include/have_innodb_plugin.inc
+++ b/mysql-test/include/have_innodb_plugin.inc
@@ -1,4 +1,5 @@
-disable_query_log;
---require r/true.require
-SELECT (plugin_library LIKE 'ha_innodb_plugin%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active';
-enable_query_log;
+if (!`SELECT COUNT(*) FROM INFORMATION_SCHEMA.PLUGINS
+ WHERE PLUGIN_NAME = 'innodb' AND PLUGIN_STATUS = 'active' AND
+ (PLUGIN_LIBRARY LIKE 'ha_innodb_plugin%' OR PLUGIN_DESCRIPTION LIKE '%xtradb%')`) {
+ skip Need InnoDB plugin or XtraDB;
+}
diff --git a/mysql-test/include/have_log_bin-master.opt b/mysql-test/include/have_log_bin-master.opt
new file mode 100644
index 00000000000..9ce5d80d7e8
--- /dev/null
+++ b/mysql-test/include/have_log_bin-master.opt
@@ -0,0 +1 @@
+--log-bin=master-bin
diff --git a/mysql-test/include/have_log_bin-slave.opt b/mysql-test/include/have_log_bin-slave.opt
new file mode 100644
index 00000000000..92012982830
--- /dev/null
+++ b/mysql-test/include/have_log_bin-slave.opt
@@ -0,0 +1 @@
+--log-bin=slave-bin
diff --git a/mysql-test/include/have_log_bin.inc b/mysql-test/include/have_log_bin.inc
index 369af9b8e1d..e51205d25ad 100644
--- a/mysql-test/include/have_log_bin.inc
+++ b/mysql-test/include/have_log_bin.inc
@@ -6,6 +6,8 @@
#
# source include/have_log_bin.inc;
+source include/not_embedded.inc;
+
-- require r/have_log_bin.require
disable_query_log;
show variables like 'log_bin';
diff --git a/mysql-test/include/have_maria.inc b/mysql-test/include/have_maria.inc
index 474e9db12b9..82725beb1e0 100644
--- a/mysql-test/include/have_maria.inc
+++ b/mysql-test/include/have_maria.inc
@@ -1,4 +1,5 @@
-disable_query_log;
---require r/true.require
-select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'maria';
-enable_query_log;
+if (!`SELECT count(*) FROM information_schema.engines WHERE
+ (support = 'YES' OR support = 'DEFAULT') AND
+ engine = 'aria'`){
+ skip Need Aria engine;
+}
diff --git a/mysql-test/include/have_pbxt.inc b/mysql-test/include/have_pbxt.inc
index a8afc2c8324..b11aee2617f 100644
--- a/mysql-test/include/have_pbxt.inc
+++ b/mysql-test/include/have_pbxt.inc
@@ -1,4 +1,5 @@
-disable_query_log;
---require r/true.require
-select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'pbxt';
-enable_query_log;
+if (!`SELECT count(*) FROM information_schema.engines WHERE
+ (support = 'YES' OR support = 'DEFAULT') AND
+ engine = 'pbxt'`){
+ skip Need PBXT engine;
+}
diff --git a/mysql-test/include/have_pbxt.opt b/mysql-test/include/have_pbxt.opt
new file mode 100644
index 00000000000..54ba9495053
--- /dev/null
+++ b/mysql-test/include/have_pbxt.opt
@@ -0,0 +1 @@
+--loose-pbxt
diff --git a/mysql-test/include/have_real_innodb_plugin.inc b/mysql-test/include/have_real_innodb_plugin.inc
new file mode 100644
index 00000000000..99a79465f52
--- /dev/null
+++ b/mysql-test/include/have_real_innodb_plugin.inc
@@ -0,0 +1,4 @@
+disable_query_log;
+--require r/true.require
+SELECT (plugin_library LIKE 'ha_innodb_plugin%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active';
+enable_query_log;
diff --git a/mysql-test/include/have_simple_parser.inc b/mysql-test/include/have_simple_parser.inc
index 5a4dc93ec81..44187c4331b 100644
--- a/mysql-test/include/have_simple_parser.inc
+++ b/mysql-test/include/have_simple_parser.inc
@@ -9,5 +9,5 @@
#
--require r/have_simple_parser.require
disable_query_log;
-eval select LENGTH('$SIMPLE_PARSER') > 0 as 'have_simple_parser';
+eval select LENGTH('$MYPLUGLIB_SO') > 0 as 'have_simple_parser';
enable_query_log;
diff --git a/mysql-test/include/have_udf.inc b/mysql-test/include/have_udf.inc
index 7be57bbb7a9..cb8ba3f5ccd 100644
--- a/mysql-test/include/have_udf.inc
+++ b/mysql-test/include/have_udf.inc
@@ -9,5 +9,5 @@
#
--require r/have_udf_example.require
disable_query_log;
-eval select LENGTH('$UDF_EXAMPLE_LIB') > 0 as 'have_udf_example_lib';
+eval select LENGTH('$UDF_EXAMPLE_SO') > 0 as 'have_udf_example_lib';
enable_query_log;
diff --git a/mysql-test/include/have_xtradb.inc b/mysql-test/include/have_xtradb.inc
new file mode 100644
index 00000000000..6c2fc5155a9
--- /dev/null
+++ b/mysql-test/include/have_xtradb.inc
@@ -0,0 +1,4 @@
+disable_query_log;
+--require r/true.require
+SELECT (plugin_description LIKE '%xtradb%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active';
+enable_query_log;
diff --git a/mysql-test/include/maria_empty_logs.inc b/mysql-test/include/maria_empty_logs.inc
index cc93e214348..78a08228caa 100644
--- a/mysql-test/include/maria_empty_logs.inc
+++ b/mysql-test/include/maria_empty_logs.inc
@@ -24,55 +24,57 @@ EOF
--source include/mysqladmin_shutdown.inc
+--disable_warnings
if (!$mel_keep_control_file)
{
--error 0,1
- remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log_control;
+ remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log_control;
}
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000001;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000001;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000002;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000002;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000003;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000003;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000004;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000004;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000005;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000005;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000006;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000006;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000007;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000007;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000008;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000008;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000009;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000009;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000010;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000010;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000011;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000011;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000012;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000012;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000013;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000013;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000014;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000014;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000015;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000015;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000016;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000016;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000017;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000017;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000018;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000018;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000019;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000019;
-- error 0,1
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000020;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000020;
# hope there are not more than these logs...
-- error 0,1
-remove_file $MYSQLD_DATADIR/maria_recovery.trace;
+remove_file $MYSQLD_DATADIR/aria_recovery.trace;
+--enable_warnings
append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
restart-maria_empty_logs.inc
diff --git a/mysql-test/include/maria_make_snapshot.inc b/mysql-test/include/maria_make_snapshot.inc
index 2f480ac1a45..8f45f6b63a9 100644
--- a/mysql-test/include/maria_make_snapshot.inc
+++ b/mysql-test/include/maria_make_snapshot.inc
@@ -26,12 +26,16 @@ if ($mms_copy)
if ($mms_reverse_copy)
{
# do not call this without flushing target table first!
+ --disable_warnings
--echo * copied $mms_tname$mms_table_to_use back for $mms_purpose
-- error 0,1
remove_file $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAD;
+ --enable_warnings
copy_file $MYSQLD_DATADIR/mysqltest_for_$mms_purpose/$mms_tname$mms_table_to_use.MAD $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAD;
+ --disable_warnings
-- error 0,1
remove_file $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAI;
+ --enable_warnings
copy_file $MYSQLD_DATADIR/mysqltest_for_$mms_purpose/$mms_tname$mms_table_to_use.MAI $MYSQLD_DATADIR/mysqltest/$mms_tname$mms_table_to_use.MAI;
}
diff --git a/mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc b/mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc
index 62f5250cab4..dc706174b7c 100644
--- a/mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc
+++ b/mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc
@@ -31,8 +31,10 @@ while ($mms_table_to_use)
let $mms_copy=0;
let $MYSQLD_DATADIR= `SELECT @@datadir`;
+--disable_warnings
-- error 0,1
-remove_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control;
-copy_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log_control $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control;
+remove_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.aria_log_control;
+--enable_warnings
+copy_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log_control $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.aria_log_control;
connection default;
diff --git a/mysql-test/include/maria_verify_recovery.inc b/mysql-test/include/maria_verify_recovery.inc
index e8354c43837..71292947c80 100644
--- a/mysql-test/include/maria_verify_recovery.inc
+++ b/mysql-test/include/maria_verify_recovery.inc
@@ -56,8 +56,8 @@ if ($mvr_restore_old_snapshot)
# also copy back control file, to force recovery to start from an early
# point, ignoring further checkpoints.
-- error 0,1
- remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log_control;
- copy_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.maria_log_control $MYSQLD_DATADIR/$MARIA_LOG/maria_log_control;
+ remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log_control;
+ copy_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.aria_log_control $MYSQLD_DATADIR/$MARIA_LOG/aria_log_control;
}
--echo * recovery happens
diff --git a/mysql-test/include/mysqlhotcopy.inc b/mysql-test/include/mysqlhotcopy.inc
new file mode 100644
index 00000000000..2596994b59a
--- /dev/null
+++ b/mysql-test/include/mysqlhotcopy.inc
@@ -0,0 +1,123 @@
+# Test of mysqlhotcopy (perl script)
+# Author: Horst Hunger
+# Created: 2010-05-10
+
+--source include/not_windows.inc
+--source include/not_embedded.inc
+
+if ($MYSQLHOTCOPY)
+{
+ die due to missing mysqlhotcopy tool;
+}
+
+let $MYSQLD_DATADIR= `SELECT @@datadir`;
+--disable_warnings
+DROP DATABASE IF EXISTS hotcopy_test;
+--enable_warnings
+CREATE DATABASE hotcopy_test;
+USE hotcopy_test;
+eval CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=$engine;
+eval CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=$engine;
+eval CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=$engine;
+
+INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_test
+
+# backup into another database in the same directory
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
+
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_save
+
+USE hotcopy_save;
+SELECT * FROM t1;
+SELECT * FROM t2;
+SELECT * FROM t3;
+
+# restore data into the original database with mysqlhotcopy
+if(`SELECT engine= 'MyISAM' FROM information_schema.tables WHERE table_name='t1'`)
+{
+USE hotcopy_test;
+DELETE FROM t1;
+SELECT * FROM t1;
+
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test
+
+USE hotcopy_save;
+SELECT * FROM t1;
+SELECT * FROM t2;
+SELECT * FROM t3;
+}
+
+USE hotcopy_test;
+DROP TABLE t2;
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_test
+
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet --addtodest -S $MASTER_MYSOCK -u root hotcopy_save hotcopy_test
+
+FLUSH TABLES;
+SELECT * FROM t1;
+SELECT * FROM t2;
+SELECT * FROM t3;
+
+# backup of db into a directory
+USE hotcopy_test;
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test $MYSQLTEST_VARDIR/tmp
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--list_files $MYSQLTEST_VARDIR/tmp/hotcopy_test
+#--exec rm -rf $MYSQLTEST_VARDIR/tmp/hotcopy_test
+--disable_warnings
+--remove_files_wildcard $MYSQLTEST_VARDIR/tmp/hotcopy_test *
+--enable_warnings
+--rmdir $MYSQLTEST_VARDIR/tmp/hotcopy_test
+
+# backup without full index files
+# reproduction of bug#53556, "--list_files" shows MYI files, which is wrong.
+DROP DATABASE hotcopy_save;
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet --noindices -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_save
+
+# test of option "allowold"
+DROP DATABASE hotcopy_save;
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_save
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--error 9,2304
+--exec $MYSQLHOTCOPY --quiet -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet --allowold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_save
+
+# test of option "keepold"
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet --keepold -S $MASTER_MYSOCK -u root hotcopy_test hotcopy_save
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_save_old
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_save
+
+# test of option "suffix"
+--replace_result $MASTER_MYSOCK MASTER_MYSOCK
+--exec $MYSQLHOTCOPY --quiet --suffix=_cpy -S $MASTER_MYSOCK -u root hotcopy_test
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+--list_files $MYSQLD_DATADIR/hotcopy_test_cpy
+DROP DATABASE hotcopy_test_cpy;
+
+DROP DATABASE hotcopy_test;
+DROP DATABASE hotcopy_save;
+DROP DATABASE hotcopy_save_old;
+
diff --git a/mysql-test/include/ndb_backup.inc b/mysql-test/include/ndb_backup.inc
index 5262f1231a2..eef3bf2bd1e 100644
--- a/mysql-test/include/ndb_backup.inc
+++ b/mysql-test/include/ndb_backup.inc
@@ -18,8 +18,10 @@ CREATE TABLE helper1(c1 VARCHAR(20));
# dump raw data to file
let $ndb_backup_file1= $MYSQLTEST_VARDIR/ndb_backup_tmp.dat;
let $ndb_backup_file2= $MYSQLTEST_VARDIR/tmp.dat;
+--disable_warnings
--error 0,1
--remove_file $ndb_backup_file1
+--enable_warnings
--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="$NDB_CONNECTSTRING" -d sys --delimiter=',' SYSTAB_0 > $ndb_backup_file1
# load the table from the raw data file
eval LOAD DATA INFILE '$ndb_backup_file1' INTO TABLE helper1;
diff --git a/mysql-test/include/ndb_backup_print.inc b/mysql-test/include/ndb_backup_print.inc
index 7527f125686..69faa8f421b 100644
--- a/mysql-test/include/ndb_backup_print.inc
+++ b/mysql-test/include/ndb_backup_print.inc
@@ -1,7 +1,9 @@
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 1 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter > $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults $ndb_restore_opts -b $the_backup_id -n 2 $NDB_BACKUP_DIR/BACKUP/BACKUP-$the_backup_id $ndb_restore_filter >> $MYSQLTEST_VARDIR/tmp/tmp.dat
--exec sort $MYSQLTEST_VARDIR/tmp/tmp.dat
+--disable_warnings
--error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/tmp.dat
+--enable_warnings
--let ndb_restore_opts=
--let ndb_restore_filter=
diff --git a/mysql-test/include/percona_query_cache_with_comments.inc b/mysql-test/include/percona_query_cache_with_comments.inc
new file mode 100644
index 00000000000..bed87bd4c22
--- /dev/null
+++ b/mysql-test/include/percona_query_cache_with_comments.inc
@@ -0,0 +1,95 @@
+--source include/percona_query_cache_with_comments_clear.inc
+let $query=/* with comment first */select * from t1;
+eval $query;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=# with comment first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=-- with comment first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=/* with comment first and "quote" */select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=# with comment first and "quote"
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=-- with comment first and "quote"
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=
+ /* with comment and whitespaces first */select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=
+ # with comment and whitespaces first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=
+ -- with comment and whitespaces first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $internal=* internal comment *;
+
+let $query=select * /$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $internal=* internal comment with "quote" *;
+
+let $query=select * /$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 ;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 ;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+/* comment in the end */;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+/* *\/ */;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+/* comment in the end */
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 #comment in the end;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 #comment in the end
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 -- comment in the end;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 -- comment in the end
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select ' \' ' from t1;
+--source include/percona_query_cache_with_comments_eval.inc
diff --git a/mysql-test/include/percona_query_cache_with_comments_begin.inc b/mysql-test/include/percona_query_cache_with_comments_begin.inc
new file mode 100644
index 00000000000..38bfce20263
--- /dev/null
+++ b/mysql-test/include/percona_query_cache_with_comments_begin.inc
@@ -0,0 +1,12 @@
+-- source include/have_query_cache.inc
+
+set GLOBAL query_cache_size=1355776;
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+
+--source include/percona_query_cache_with_comments_clear.inc
diff --git a/mysql-test/include/percona_query_cache_with_comments_clear.inc b/mysql-test/include/percona_query_cache_with_comments_clear.inc
new file mode 100644
index 00000000000..728a19a3c97
--- /dev/null
+++ b/mysql-test/include/percona_query_cache_with_comments_clear.inc
@@ -0,0 +1,5 @@
+# Reset query cache variables.
+flush query cache; # This crashed in some versions
+flush query cache; # This crashed in some versions
+reset query cache;
+flush status;
diff --git a/mysql-test/include/percona_query_cache_with_comments_end.inc b/mysql-test/include/percona_query_cache_with_comments_end.inc
new file mode 100644
index 00000000000..d5356359d7e
--- /dev/null
+++ b/mysql-test/include/percona_query_cache_with_comments_end.inc
@@ -0,0 +1,3 @@
+DROP TABLE t1;
+SET GLOBAL query_cache_size=default;
+set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/include/percona_query_cache_with_comments_eval.inc b/mysql-test/include/percona_query_cache_with_comments_eval.inc
new file mode 100644
index 00000000000..a409786d554
--- /dev/null
+++ b/mysql-test/include/percona_query_cache_with_comments_eval.inc
@@ -0,0 +1,7 @@
+echo -----------------------------------------------------;
+echo $query;
+echo -----------------------------------------------------;
+--source include/percona_query_cache_with_comments_show.inc
+eval $query;
+eval $query;
+--source include/percona_query_cache_with_comments_show.inc
diff --git a/mysql-test/include/percona_query_cache_with_comments_show.inc b/mysql-test/include/percona_query_cache_with_comments_show.inc
new file mode 100644
index 00000000000..71aa5211cfd
--- /dev/null
+++ b/mysql-test/include/percona_query_cache_with_comments_show.inc
@@ -0,0 +1,8 @@
+let $show=show status like "Qcache_queries_in_cache";
+eval $show;
+let $show=show status like "Qcache_inserts";
+eval $show;
+let $show=show status like "Qcache_hits";
+eval $show;
+
+
diff --git a/mysql-test/include/percona_query_response_time_flush.inc b/mysql-test/include/percona_query_response_time_flush.inc
new file mode 100644
index 00000000000..44bb320fe13
--- /dev/null
+++ b/mysql-test/include/percona_query_response_time_flush.inc
@@ -0,0 +1 @@
+FLUSH QUERY_RESPONSE_TIME;
diff --git a/mysql-test/include/percona_query_response_time_show.inc b/mysql-test/include/percona_query_response_time_show.inc
new file mode 100644
index 00000000000..761b2c6f0df
--- /dev/null
+++ b/mysql-test/include/percona_query_response_time_show.inc
@@ -0,0 +1,7 @@
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
diff --git a/mysql-test/include/percona_query_response_time_sleep.inc b/mysql-test/include/percona_query_response_time_sleep.inc
new file mode 100644
index 00000000000..40688b173b0
--- /dev/null
+++ b/mysql-test/include/percona_query_response_time_sleep.inc
@@ -0,0 +1,19 @@
+SELECT SLEEP(0.31);
+SELECT SLEEP(0.32);
+SELECT SLEEP(0.33);
+SELECT SLEEP(0.34);
+SELECT SLEEP(0.35);
+SELECT SLEEP(0.36);
+SELECT SLEEP(0.37);
+SELECT SLEEP(0.38);
+SELECT SLEEP(0.39);
+SELECT SLEEP(0.40);
+SELECT SLEEP(1.1);
+SELECT SLEEP(1.2);
+SELECT SLEEP(1.3);
+SELECT SLEEP(1.5);
+SELECT SLEEP(1.4);
+SELECT SLEEP(0.5);
+SELECT SLEEP(2.1);
+SELECT SLEEP(2.3);
+SELECT SLEEP(2.5);
diff --git a/mysql-test/include/rpl_diff_tables.inc b/mysql-test/include/rpl_diff_tables.inc
new file mode 100644
index 00000000000..c3a45578a79
--- /dev/null
+++ b/mysql-test/include/rpl_diff_tables.inc
@@ -0,0 +1,35 @@
+# #############################################################################
+# Check whether the given table is consistent between different master and
+# slaves
+#
+# Usage:
+# --let $diff_table= test.t1
+# --let $diff_server_list= master, slave, slave2
+# --source include/rpl_diff_tables.inc
+# #############################################################################
+
+if (`SELECT "XX$diff_table" = "XX"`)
+{
+ --die diff_table is null.
+}
+
+--let $_servers= master, slave
+if (`SELECT "XX$diff_server_list" <> "XX"`)
+{
+ --let $_servers= $diff_server_list
+}
+
+--let $_master= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)`
+--let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_master') + 2))`
+connection $_master;
+while (`SELECT "XX$_servers" <> "XX"`)
+{
+ --let $_slave= `SELECT SUBSTRING_INDEX('$_servers', ',', 1)`
+ --let $_servers= `SELECT LTRIM(SUBSTRING('$_servers', LENGTH('$_slave') + 2))`
+
+ --sync_slave_with_master $_slave
+ --let $diff_table_1= $_master:$diff_table
+ --let $diff_table_2= $_slave:$diff_table
+ --source include/diff_tables.inc
+ connection $_slave;
+}
diff --git a/mysql-test/include/rpl_stmt_seq.inc b/mysql-test/include/rpl_stmt_seq.inc
index 6c944dc4729..08f6e44aba0 100644
--- a/mysql-test/include/rpl_stmt_seq.inc
+++ b/mysql-test/include/rpl_stmt_seq.inc
@@ -80,9 +80,8 @@ eval INSERT INTO t1 SET f1= $MAX + 1;
SELECT MAX(f1) FROM t1;
if ($show_binlog)
{
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
-eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
+ --let $binlog_file= master-bin.$_log_num_s
+ --source include/show_binlog_events.inc
}
sync_slave_with_master;
@@ -93,9 +92,8 @@ connection slave;
SELECT MAX(f1) FROM t1;
if ($show_binlog)
{
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
-eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
+ --let $binlog_file= slave-bin.$_log_num_s
+ --source include/show_binlog_events.inc
}
###############################################################
@@ -111,9 +109,8 @@ let $my_stmt= ERROR: YOU FORGOT TO FILL IN THE STATEMENT;
SELECT MAX(f1) FROM t1;
if ($show_binlog)
{
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
-eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
+ --let $binlog_file= master-bin.$_log_num_s
+ --source include/show_binlog_events.inc
}
sync_slave_with_master;
@@ -124,9 +121,8 @@ connection slave;
SELECT MAX(f1) FROM t1;
if ($show_binlog)
{
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
-eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
+ --let $binlog_file= slave-bin.$_log_num_s
+ --source include/show_binlog_events.inc
}
###############################################################
@@ -150,9 +146,8 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: MASTER: The INSERT is ',
--enable_query_log
if ($show_binlog)
{
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
-eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
+ --let $binlog_file= master-bin.$_log_num_s
+ --source include/show_binlog_events.inc
}
sync_slave_with_master;
@@ -171,9 +166,8 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: SLAVE: The INSERT is ',
--enable_query_log
if ($show_binlog)
{
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
-eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
+ --let $binlog_file= slave-bin.$_log_num_s
+ --source include/show_binlog_events.inc
}
###############################################################
diff --git a/mysql-test/include/rpl_udf.inc b/mysql-test/include/rpl_udf.inc
index 30f39d79d49..3b4ddc2b897 100644
--- a/mysql-test/include/rpl_udf.inc
+++ b/mysql-test/include/rpl_udf.inc
@@ -27,13 +27,13 @@ drop table if exists t1;
--echo "*** Test 1) Test UDFs via loadable libraries ***
--echo "Running on the master"
--enable_info
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
--error ER_CANT_FIND_DL_ENTRY
-eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
+eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
--replace_column 3 UDF_LIB
SELECT * FROM mysql.func ORDER BY name;
--disable_info
diff --git a/mysql-test/include/show_binlog_events.inc b/mysql-test/include/show_binlog_events.inc
index 68f913a16a3..8649f31ad9f 100644
--- a/mysql-test/include/show_binlog_events.inc
+++ b/mysql-test/include/show_binlog_events.inc
@@ -1,10 +1,45 @@
-# $binlog_start can be set by caller or take a default value
+##############################################################################
+# Show binary log events
+#
+# Useage:
+# let $binlog_file= master-bin.000002;
+# let $binlog_start= 106;
+# let $binlog_limit= 1, 3;
+# source include/show_binlog_events.inc;
+#
+# It shows the first binary log file if $binlog_file is not given.
+#
+# It shows events from the end position of the description event if
+# $binlog_start is not given.
+#
+# It shows all of the events if $binlog_limit is not given.
+# $binlog_format has the same semantic with 'LIMIT' option.
+#
+##############################################################################
if (!$binlog_start)
{
- let $binlog_start=106;
+ # If $binlog_start is not set, we will set it as the second event's position.
+ # The first event(Description Event) is always ignored. For description
+ # event's length might be changed because of adding new events, 'SHOW BINLOG
+ # EVENTS LIMIT 1' is used to get the right value.
+ --let $binlog_start= query_get_value(SHOW BINLOG EVENTS LIMIT 1, End_log_pos, 1)
}
+
+--let $_statement=show binlog events
+if (`SELECT '$binlog_file' <> ''`)
+{
+ --let $_statement= $_statement in '$binlog_file'
+}
+
+--let $_statement= $_statement from $binlog_start
+
+if (`SELECT '$binlog_limit' <> ''`)
+{
+ --let $_statement= $_statement limit $binlog_limit
+}
+
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $binlog_start <binlog_start>
--replace_column 2 # 4 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/
---eval show binlog events from $binlog_start
+--eval $_statement
diff --git a/mysql-test/include/show_rpl_debug_info.inc b/mysql-test/include/show_rpl_debug_info.inc
index 252d63f1bf4..148d11f3b02 100644
--- a/mysql-test/include/show_rpl_debug_info.inc
+++ b/mysql-test/include/show_rpl_debug_info.inc
@@ -36,6 +36,7 @@ let $_con= $CURRENT_CONNECTION;
--echo
--echo [on $_con]
--echo
+SELECT NOW();
--echo **** SHOW SLAVE STATUS on $_con ****
query_vertical SHOW SLAVE STATUS;
--echo
@@ -70,6 +71,7 @@ if (`SELECT '$_master_con' != ''`)
--echo [on $_master_con]
connection $_master_con;
--echo
+ SELECT NOW();
--echo **** SHOW MASTER STATUS on $_master_con ****
query_vertical SHOW MASTER STATUS;
--echo
diff --git a/mysql-test/include/show_slave_status.inc b/mysql-test/include/show_slave_status.inc
index b315b9e45ca..d66c068e19b 100644
--- a/mysql-test/include/show_slave_status.inc
+++ b/mysql-test/include/show_slave_status.inc
@@ -1,6 +1,25 @@
# Include file to show the slave status, masking out some information
# that varies depending on where the test is executed.
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 16 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+--let $_items=$status_items
+if (`SELECT "XX$status_items" = "XX"`)
+{
+ --die 'Variable status_items is NULL'
+}
+
+--disable_query_log
+--vertical_results
+
+while (`SELECT "XX$_items" <> "XX"`)
+{
+ --let $_name= `SELECT SUBSTRING_INDEX('$_items', ',', 1)`
+ --let $_items= `SELECT LTRIM(SUBSTRING('$_items', LENGTH('$_name') + 2))`
+
+ --let $_value= query_get_value(SHOW SLAVE STATUS, $_name, 1)
+
+ --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
+ --eval SELECT "$_value" AS $_name
+}
+
+--horizontal_results
+--enable_query_log
diff --git a/mysql-test/include/show_slave_status2.inc b/mysql-test/include/show_slave_status2.inc
deleted file mode 100644
index 9c4e14c62c2..00000000000
--- a/mysql-test/include/show_slave_status2.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-# Include file to show the slave status, masking out some information
-# that varies depending on where the test is executed.
-
-# masked out log positions
-
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
diff --git a/mysql-test/include/test_fieldsize.inc b/mysql-test/include/test_fieldsize.inc
index 606bc63779d..57dba4d1cc0 100644
--- a/mysql-test/include/test_fieldsize.inc
+++ b/mysql-test/include/test_fieldsize.inc
@@ -22,10 +22,9 @@ eval $test_insert;
connection slave;
START SLAVE;
---source include/wait_for_slave_sql_to_stop.inc
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
---query_vertical SHOW SLAVE STATUS
+--let $slave_sql_errno= 1535
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
# The following should be 0
SELECT COUNT(*) FROM t1;
diff --git a/mysql-test/include/wait_for_binlog_event.inc b/mysql-test/include/wait_for_binlog_event.inc
index 2a57c191413..7a55c8c2182 100644
--- a/mysql-test/include/wait_for_binlog_event.inc
+++ b/mysql-test/include/wait_for_binlog_event.inc
@@ -18,7 +18,7 @@ while (`SELECT INSTR("$_last_event","$wait_binlog_event") = 0`)
dec $_loop_count;
if (!$_loop_count)
{
- SHOW BINLOG EVENTS;
+ --source include/show_rpl_debug_info.inc
--die ERROR: failed while waiting for $wait_binlog_event in binlog
}
real_sleep 0.1;
diff --git a/mysql-test/include/wait_for_slave_io_error.inc b/mysql-test/include/wait_for_slave_io_error.inc
index 094406e02b2..34cbf20a73b 100644
--- a/mysql-test/include/wait_for_slave_io_error.inc
+++ b/mysql-test/include/wait_for_slave_io_error.inc
@@ -1,23 +1,59 @@
# ==== Purpose ====
#
# Waits until the IO thread of the current connection has got an
-# error, or until a timeout is reached.
+# error, or until a timeout is reached. Also waits until the IO
+# thread has completely stopped.
#
# ==== Usage ====
#
+# # Wait several errors.
+# let $slave_io_errno= 1, 2, 3;
# source include/wait_for_slave_io_error.inc;
#
-# Parameters to this macro are $slave_timeout and
-# $slave_keep_connection. See wait_for_slave_param.inc for
-# descriptions.
+# # Print error message
+# let $slave_io_errno= 1;
+# let $show_slave_io_error= 1;
+# source include/wait_for_slave_io_error.inc;
+#
+# Parameters:
+#
+# $slave_io_errno
+# The expected IO error numbers. This is required.
+# (After BUG#41956 has been fixed, this will be required to be a
+# symbolic name instead of a numbers.)
+#
+# $show_slave_io_error
+# If set, will print the error to the query log.
+#
+# $slave_timeout
+# See wait_for_slave_param.inc for description.
+#
+# $master_connection
+# See wait_for_slave_param.inc for description.
-let $old_slave_param_comparison= $slave_param_comparison;
+if (`SELECT '$slave_io_errno' = ''`) {
+ --die !!!ERROR IN TEST: you must set \$slave_io_errno before sourcing wait_for_slave_io_error.inc
+}
+let $old_slave_param_comparison= $slave_param_comparison;
let $slave_param= Last_IO_Errno;
let $slave_param_comparison= !=;
let $slave_param_value= 0;
let $slave_error_message= Failed while waiting for slave to produce an error in its sql thread;
source include/wait_for_slave_param.inc;
let $slave_error_message= ;
-
let $slave_param_comparison= $old_slave_param_comparison;
+
+let $_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Errno, 1);
+if (`SELECT $_error NOT IN ($slave_io_errno)`) {
+ --echo **** Slave stopped with wrong error code: $_error (expected $slave_io_errno) ****
+ source include/show_rpl_debug_info.inc;
+ --echo **** Slave stopped with wrong error code: $_error (expected $slave_io_errno) ****
+ --die Slave stopped with wrong error code
+}
+
+if ($show_slave_io_error)
+{
+ let $error= query_get_value("SHOW SLAVE STATUS", Last_IO_Error, 1);
+ echo Last_IO_Error = $error;
+}
diff --git a/mysql-test/include/wait_for_slave_param.inc b/mysql-test/include/wait_for_slave_param.inc
index 82e57922913..ef864f9245e 100644
--- a/mysql-test/include/wait_for_slave_param.inc
+++ b/mysql-test/include/wait_for_slave_param.inc
@@ -78,5 +78,5 @@ if (!$_slave_timeout_counter)
--echo Current connection is '$CURRENT_CONNECTION'
echo Note: the following output may have changed since the failure was detected;
source include/show_rpl_debug_info.inc;
- exit;
+ die;
}
diff --git a/mysql-test/include/wait_for_slave_sql_error.inc b/mysql-test/include/wait_for_slave_sql_error.inc
index ad1d7a9e639..aab04036eea 100644
--- a/mysql-test/include/wait_for_slave_sql_error.inc
+++ b/mysql-test/include/wait_for_slave_sql_error.inc
@@ -14,6 +14,9 @@
# The expected SQL error number. This is required.
# (After BUG#41956 has been fixed, this will be required to be a
# symbolic name instead of a number.)
+#
+# $show_slave_sql_error
+# If set, will print the error to the query log.
#
# $slave_timeout
# See wait_for_slave_param.inc for description.
@@ -22,8 +25,7 @@
# See wait_for_slave_param.inc for description.
if (`SELECT '$slave_sql_errno' = ''`) {
- --echo !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_fro_slave_sql_error.inc
- exit;
+ --die !!!ERROR IN TEST: you must set \$slave_sql_errno before sourcing wait_for_slave_sql_error.inc
}
let $slave_param= Slave_SQL_Running;
@@ -33,7 +35,14 @@ source include/wait_for_slave_param.inc;
let $_error= query_get_value(SHOW SLAVE STATUS, Last_SQL_Errno, 1);
if (`SELECT '$_error' != '$slave_sql_errno'`) {
- --echo Slave stopped with wrong error code: $_error (expected $slave_sql_errno)
+ --echo **** Slave stopped with wrong error code: $_error (expected $slave_sql_errno) ****
source include/show_rpl_debug_info.inc;
- exit;
+ --echo **** Slave stopped with wrong error code: $_error (expected $slave_sql_errno) ****
+ --die Slave stopped with wrong error code
+}
+
+if ($show_slave_sql_error)
+{
+ let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
+ echo Last_SQL_Error = $error;
}
diff --git a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc
index 247de3a41a1..11c02c0b490 100644
--- a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc
+++ b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc
@@ -22,17 +22,30 @@
#
# $master_connection
# See wait_for_slave_param.inc for description.
+#
+# $slave_skip_counter
+# If set, skip this number of events. If not set, skip one event.
+#
+# $not_switch_connection If set, don't switch to slave and don't switch back
+# master.
+#
echo --source include/wait_for_slave_sql_error_and_skip.inc;
-connection slave;
-source include/wait_for_slave_sql_error.inc;
-if ($show_sql_error)
+if (!$not_switch_connection)
{
- let $error= query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
- echo Last_SQL_Error = $error;
+ connection slave;
}
+source include/wait_for_slave_sql_error.inc;
# skip the erroneous statement
-set global sql_slave_skip_counter=1;
+if ($slave_skip_counter) {
+ eval SET GLOBAL SQL_SLAVE_SKIP_COUNTER= $slave_skip_counter;
+}
+if (!$slave_skip_counter) {
+ SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
+}
source include/start_slave.inc;
-connection master;
+if (!$not_switch_connection)
+{
+ connection master;
+}
diff --git a/mysql-test/include/wait_for_status_var.inc b/mysql-test/include/wait_for_status_var.inc
index 6ba632ce46b..b8b4fa20b86 100644
--- a/mysql-test/include/wait_for_status_var.inc
+++ b/mysql-test/include/wait_for_status_var.inc
@@ -35,7 +35,7 @@
if (`SELECT STRCMP('$status_type', '') * STRCMP(UPPER('$status_type'), 'SESSION') * STRCMP(UPPER('$status_type'), 'GLOBAL')`)
{
--echo **** ERROR: Unknown type of variable status_type: allowed values are: SESSION or GLOBAL ****
- exit;
+ die;
}
let $_status_timeout_counter= $status_timeout;
@@ -61,7 +61,7 @@ while (`SELECT NOT('$_show_status_value' $_status_var_comparsion '$status_var_va
--echo **** Showing STATUS, PROCESSLIST ****
eval SHOW $status_type STATUS LIKE '$status_var';
SHOW PROCESSLIST;
- exit;
+ die;
}
dec $_status_timeout_counter;
sleep 0.1;
diff --git a/mysql-test/include/wait_until_count_sessions.inc b/mysql-test/include/wait_until_count_sessions.inc
index de4f0eeb652..26b0d8f2633 100644
--- a/mysql-test/include/wait_until_count_sessions.inc
+++ b/mysql-test/include/wait_until_count_sessions.inc
@@ -122,5 +122,6 @@ if (!$success)
--echo # Timeout in wait_until_count_sessions.inc
--echo # Number of sessions expected: <= $count_sessions found: $current_sessions
SHOW PROCESSLIST;
+ --die Timeout in wait_until_count_sessions.inc
}
diff --git a/mysql-test/lib/My/Config.pm b/mysql-test/lib/My/Config.pm
index f8416e3df3a..0955c1bb190 100644
--- a/mysql-test/lib/My/Config.pm
+++ b/mysql-test/lib/My/Config.pm
@@ -6,7 +6,6 @@ use strict;
use warnings;
use Carp;
-
sub new {
my ($class, $option_name, $option_value)= @_;
my $self= bless { name => $option_name,
@@ -61,7 +60,7 @@ sub insert {
$option->{value}= $value;
}
else {
- my $option= My::Config::Option->new($option_name, $value);
+ $option= My::Config::Option->new($option_name, $value);
# Insert option in list
push(@{$self->{options}}, $option);
# Insert option in hash
@@ -163,6 +162,62 @@ sub if_exist {
return $option->value();
}
+package My::Config::Group::ENV;
+our @ISA=qw(My::Config::Group);
+
+use strict;
+use warnings;
+use Carp;
+
+sub new {
+ my ($class, $group_name)= @_;
+ bless My::Config::Group->new($group_name), $class;
+}
+
+#
+# Return value for an option in the group, fail if it does not exist
+#
+sub value {
+ my ($self, $option_name)= @_;
+ my $option= $self->option($option_name);
+
+ if (! defined($option) and defined $ENV{$option_name}) {
+ my $value= $ENV{$option_name};
+ $option= My::Config::Option->new($option_name, $value);
+ }
+
+ croak "No option named '$option_name' in group '$self->{name}'"
+ if ! defined($option);
+
+ return $option->value();
+}
+
+package My::Config::Group::OPT;
+our @ISA=qw(My::Config::Group);
+
+use strict;
+use warnings;
+use Carp;
+
+sub new {
+ my ($class, $group_name)= @_;
+ bless My::Config::Group->new($group_name), $class;
+}
+
+sub options {
+ my ($self)= @_;
+ ()
+}
+
+sub value {
+ my ($self, $option_name)= @_;
+ my $option= $self->option($option_name);
+
+ croak "No option named '$option_name' in group '$self->{name}'"
+ if ! defined($option);
+
+ return $option->value()->();
+}
package My::Config;
@@ -182,7 +237,10 @@ sub new {
my ($class, $path)= @_;
my $group_name= undef;
- my $self= bless { groups => [] }, $class;
+ my $self= bless { groups => [
+ My::Config::Group::ENV->new('ENV'),
+ My::Config::Group::OPT->new('OPT'),
+ ] }, $class;
my $F= IO::File->new($path, "<")
or croak "Could not open '$path': $!";
@@ -199,19 +257,13 @@ sub new {
}
# Magic #! comments
- elsif ( $line =~ /^#\!/) {
- my $magic= $line;
+ elsif ( $line =~ /^(#\!\S+)(?:\s*(.*?)\s*)?$/) {
+ my ($magic, $arg)= ($1, $2);
croak "Found magic comment '$magic' outside of group"
unless $group_name;
#print "$magic\n";
- $self->insert($group_name, $magic, undef);
- }
-
- # Comments
- elsif ( $line =~ /^#/ || $line =~ /^;/) {
- # Skip comment
- next;
+ $self->insert($group_name, $magic, $arg);
}
# Empty lines
@@ -236,7 +288,7 @@ sub new {
}
# <option>
- elsif ( $line =~ /^([\@\w-]+)\s*$/ ) {
+ elsif ( $line =~ /^(#?[\w-]+)\s*$/ ) {
my $option= $1;
croak "Found option '$option' outside of group"
@@ -247,7 +299,7 @@ sub new {
}
# <option>=<value>
- elsif ( $line =~ /^([\@\w-]+)\s*=\s*(.*?)\s*$/ ) {
+ elsif ( $line =~ /^(#?[\w-]+)\s*=\s*(.*?)\s*$/ ) {
my $option= $1;
my $value= $2;
@@ -256,10 +308,17 @@ sub new {
#print "$option=$value\n";
$self->insert($group_name, $option, $value);
- } else {
- croak "Unexpected line '$line' found in '$path'";
}
+ # Comments
+ elsif ( $line =~ /^#/ || $line =~ /^;/) {
+ # Skip comment
+ next;
+ }
+
+ else {
+ croak "Unexpected line '$line' found in '$path'";
+ }
}
undef $F; # Close the file
@@ -437,44 +496,4 @@ sub exists {
return defined($option);
}
-
-# Overload "to string"-operator with 'stringify'
-use overload
- '""' => \&stringify;
-
-#
-# Return the config as a string in my.cnf file format
-#
-sub stringify {
- my ($self)= @_;
- my $res;
-
- foreach my $group ($self->groups()) {
- $res .= "[$group->{name}]\n";
-
- foreach my $option ($group->options()) {
- $res .= $option->name();
- my $value= $option->value();
- if (defined $value) {
- $res .= "=$value";
- }
- $res .= "\n";
- }
- $res .= "\n";
- }
- return $res;
-}
-
-
-#
-# Save the config to named file
-#
-sub save {
- my ($self, $path)= @_;
- my $F= IO::File->new($path, ">")
- or croak "Could not open '$path': $!";
- print $F $self;
- undef $F; # Close the file
-}
-
1;
diff --git a/mysql-test/lib/My/ConfigFactory.pm b/mysql-test/lib/My/ConfigFactory.pm
index c70831ab4b9..7725b025dd8 100644
--- a/mysql-test/lib/My/ConfigFactory.pm
+++ b/mysql-test/lib/My/ConfigFactory.pm
@@ -57,16 +57,12 @@ sub fix_pidfile {
sub fix_port {
my ($self, $config, $group_name, $group)= @_;
- my $hostname= $group->value('#host');
- return $self->{HOSTS}->{$hostname}++;
+ return $self->{PORT}++;
}
sub fix_host {
my ($self)= @_;
- # Get next host from HOSTS array
- my @hosts= keys(%{$self->{HOSTS}});;
- my $host_no= $self->{NEXT_HOST}++ % @hosts;
- return $hosts[$host_no];
+ 'localhost'
}
sub is_unique {
@@ -229,7 +225,7 @@ if (IS_WINDOWS)
sub fix_ndb_mgmd_port {
my ($self, $config, $group_name, $group)= @_;
my $hostname= $group->value('HostName');
- return $self->{HOSTS}->{$hostname}++;
+ return $self->{PORT}++;
}
@@ -428,20 +424,24 @@ sub post_check_embedded_group {
sub resolve_at_variable {
my ($self, $config, $group, $option)= @_;
+ local $_ = $option->value();
+ my ($res, $after);
- # Split the options value on last .
- my @parts= split(/\./, $option->value());
- my $option_name= pop(@parts);
- my $group_name= join('.', @parts);
+ while (m/(.*?)\@((?:\w+\.)+)(#?[-\w]+)/g) {
+ my ($before, $group_name, $option_name)= ($1, $2, $3);
+ $after = $';
+ chop($group_name);
- $group_name =~ s/^\@//; # Remove at
+ my $from_group= $config->group($group_name)
+ or croak "There is no group named '$group_name' that ",
+ "can be used to resolve '$option_name'";
- my $from_group= $config->group($group_name)
- or croak "There is no group named '$group_name' that ",
- "can be used to resolve '$option_name'";
+ my $value= $from_group->value($option_name);
+ $res .= $before.$value;
+ }
+ $res .= $after;
- my $from= $from_group->value($option_name);
- $config->insert($group->name(), $option->name(), $from)
+ $config->insert($group->name(), $option->name(), $res)
}
@@ -453,7 +453,7 @@ sub post_fix_resolve_at_variables {
next unless defined $option->value();
$self->resolve_at_variable($config, $group, $option)
- if ($option->value() =~ /^\@/);
+ if ($option->value() =~ /\@/);
}
}
}
@@ -595,28 +595,18 @@ sub new_config {
croak "you must pass '$required'" unless defined $args->{$required};
}
- # Fill in hosts/port hash
- my $hosts= {};
- my $baseport= $args->{baseport};
- $args->{hosts}= [ 'localhost' ] unless exists($args->{hosts});
- foreach my $host ( @{$args->{hosts}} ) {
- $hosts->{$host}= $baseport;
- }
-
# Open the config template
my $config= My::Config->new($args->{'template_path'});
- my $extra_template_path= $args->{'extra_template_path'};
- if ($extra_template_path){
- $config->append(My::Config->new($extra_template_path));
- }
my $self= bless {
CONFIG => $config,
ARGS => $args,
- HOSTS => $hosts,
- NEXT_HOST => 0,
+ PORT => $args->{baseport},
SERVER_ID => 1,
}, $class;
+ # add auto-options
+ $config->insert('OPT', 'port' => sub { fix_port($self, $config) });
+ $config->insert('OPT', 'vardir' => sub { $self->{ARGS}->{vardir} });
{
# Run pre rules
diff --git a/mysql-test/lib/My/File/Path.pm b/mysql-test/lib/My/File/Path.pm
index 25a26568eee..6e6d23ad9f0 100644
--- a/mysql-test/lib/My/File/Path.pm
+++ b/mysql-test/lib/My/File/Path.pm
@@ -18,7 +18,7 @@ use strict;
use Exporter;
use base "Exporter";
-our @EXPORT= qw / rmtree mkpath copytree /;
+our @EXPORT= qw /rmtree mkpath copytree/;
use File::Find;
use File::Copy;
diff --git a/mysql-test/lib/My/Handles.pm b/mysql-test/lib/My/Handles.pm
index 66ee22b403f..66ee22b403f 100755..100644
--- a/mysql-test/lib/My/Handles.pm
+++ b/mysql-test/lib/My/Handles.pm
diff --git a/mysql-test/lib/My/SafeProcess.pm b/mysql-test/lib/My/SafeProcess.pm
index b3409020f21..084ef408d5b 100644
--- a/mysql-test/lib/My/SafeProcess.pm
+++ b/mysql-test/lib/My/SafeProcess.pm
@@ -120,7 +120,7 @@ sub new {
my $input = delete($opts{'input'});
my $output = delete($opts{'output'});
my $error = delete($opts{'error'});
- my $verbose = delete($opts{'verbose'});
+ my $verbose = delete($opts{'verbose'}) || $::opt_verbose;
my $nocore = delete($opts{'nocore'});
my $host = delete($opts{'host'});
my $shutdown = delete($opts{'shutdown'});
diff --git a/mysql-test/lib/My/SafeProcess/safe_process.cc b/mysql-test/lib/My/SafeProcess/safe_process.cc
index 71942565f8b..12b335ec444 100644
--- a/mysql-test/lib/My/SafeProcess/safe_process.cc
+++ b/mysql-test/lib/My/SafeProcess/safe_process.cc
@@ -160,7 +160,7 @@ int main(int argc, char* const argv[] )
signal(SIGCHLD, handle_signal);
signal(SIGABRT, handle_abort);
- sprintf(safe_process_name, "safe_process[%d]", (int) own_pid);
+ sprintf(safe_process_name, "safe_process[%ld]", (long) own_pid);
message("Started");
diff --git a/mysql-test/lib/My/Suite.pm b/mysql-test/lib/My/Suite.pm
new file mode 100644
index 00000000000..69609e1c4f5
--- /dev/null
+++ b/mysql-test/lib/My/Suite.pm
@@ -0,0 +1,10 @@
+# A default suite class that is used for all suites without their owns suite.pm
+# see README.suites for a description
+
+package My::Suite;
+
+sub config_files { () }
+sub servers { () }
+
+bless { };
+
diff --git a/mysql-test/lib/My/Test.pm b/mysql-test/lib/My/Test.pm
index 21dd33336f6..c8bfbd34521 100644
--- a/mysql-test/lib/My/Test.pm
+++ b/mysql-test/lib/My/Test.pm
@@ -20,6 +20,12 @@ sub new {
return $self;
}
+sub fullname {
+ my ($self)= @_;
+ $self->{name} . (defined $self->{combination}
+ ? " '$self->{combination}'"
+ : "")
+}
#
# Return a unique key that can be used to
diff --git a/mysql-test/lib/mtr_cases.pm b/mysql-test/lib/mtr_cases.pm
index 1a27f94acb1..fd4832d49a3 100644
--- a/mysql-test/lib/mtr_cases.pm
+++ b/mysql-test/lib/mtr_cases.pm
@@ -39,7 +39,6 @@ our $enable_disabled;
our $default_storage_engine;
our $opt_with_ndbcluster_only;
our $defaults_file;
-our $defaults_extra_file;
our $quick_collect;
sub collect_option {
@@ -55,7 +54,7 @@ sub collect_option {
}
use File::Basename;
-use File::Spec::Functions qw / splitdir /;
+use File::Spec::Functions qw /splitdir/;
use IO::File();
use My::Config;
use My::Platform;
@@ -68,21 +67,10 @@ require "mtr_misc.pl";
my $do_test_reg;
my $skip_test_reg;
-# Related to adding InnoDB plugin combinations
-my $lib_innodb_plugin;
-
# If "Quick collect", set to 1 once a test to run has been found.
my $some_test_found;
-sub find_innodb_plugin {
- $lib_innodb_plugin=
- my_find_file($::basedir,
- ["storage/innodb_plugin", "storage/innodb_plugin/.libs",
- "lib/mysql/plugin", "lib/mariadb/plugin", "lib/plugin"],
- ["ha_innodb_plugin.dll", "ha_innodb_plugin.so",
- "ha_innodb_plugin.sl"],
- NOT_REQUIRED);
-}
+my $default_suite_object = do 'My/Suite.pm';
sub init_pattern {
my ($from, $what)= @_;
@@ -116,8 +104,6 @@ sub collect_test_cases ($$$) {
$do_test_reg= init_pattern($do_test, "--do-test");
$skip_test_reg= init_pattern($skip_test, "--skip-test");
- &find_innodb_plugin;
-
# If not reordering, we also shouldn't group by suites, unless
# no test cases were named.
# This also effects some logic in the loop following this.
@@ -188,17 +174,17 @@ sub collect_test_cases ($$$) {
my $opts= $tinfo->{'master_opt'} ? $tinfo->{'master_opt'} : [];
push(@criteria, join("!", sort @{$opts}) . "~");
- $sort_criteria{$tinfo->{name}} = join(" ", @criteria);
+ $sort_criteria{$tinfo->fullname()} = join(" ", @criteria);
}
@$cases = sort {
- $sort_criteria{$a->{'name'}} . $a->{'name'} cmp
- $sort_criteria{$b->{'name'}} . $b->{'name'}; } @$cases;
+ $sort_criteria{$a->fullname()} . $a->fullname() cmp
+ $sort_criteria{$b->fullname()} . $b->fullname() } @$cases;
# For debugging the sort-order
# foreach my $tinfo (@$cases)
# {
- # print("$sort_criteria{$tinfo->{'name'}} -> \t$tinfo->{'name'}\n");
+ # print $sort_criteria{$tinfo->fullname()}," -> \t",$tinfo->fullname(),"\n";
# }
}
@@ -310,6 +296,17 @@ sub collect_one_suite
mtr_verbose("testdir: $testdir");
mtr_verbose("resdir: $resdir");
+ #
+ # Load the Suite object
+ #
+ unless ($::suites{$suite}) {
+ if (-f "$suitedir/suite.pm") {
+ $::suites{$suite} = do "$suitedir/suite.pm";
+ } else {
+ $::suites{$suite} = $default_suite_object;
+ }
+ }
+
# ----------------------------------------------------------------------
# Build a hash of disabled testcases for this suite
# ----------------------------------------------------------------------
@@ -328,12 +325,8 @@ sub collect_one_suite
}
# Read suite.opt file
- my $suite_opt_file= "$testdir/suite.opt";
- my $suite_opts= [];
- if ( -f $suite_opt_file )
- {
- $suite_opts= opts_from_file($suite_opt_file);
- }
+ my $suite_opts= [ opts_from_file("$testdir/suite.opt") ];
+ $suite_opts = [ opts_from_file("$suitedir/suite.opt") ] unless @$suite_opts;
if ( @$opt_cases )
{
@@ -438,14 +431,16 @@ sub collect_one_suite
{
# Read combinations file in my.cnf format
mtr_verbose("Read combinations file");
+ my %env_filter = map { $_ => 1 } split /:/, $ENV{"\U${suite}_COMBINATIONS"};
my $config= My::Config->new($combination_file);
foreach my $group ($config->groups()) {
my $comb= {};
$comb->{name}= $group->name();
+ next if %env_filter and not $env_filter{$comb->{name}};
foreach my $option ( $group->options() ) {
push(@{$comb->{comb_opt}}, $option->option());
}
- push(@combinations, $comb);
+ push(@combinations, $comb) if $comb->{comb_opt};
}
}
@@ -539,28 +534,7 @@ sub optimize_cases {
# support it
# =======================================================
#print "binlog_format: $binlog_format\n";
- if (defined $binlog_format )
- {
- # =======================================================
- # Fixed --binlog-format=x specified on command line
- # =======================================================
- if ( defined $tinfo->{'binlog_formats'} )
- {
- #print "binlog_formats: ". join(", ", @{$tinfo->{binlog_formats}})."\n";
-
- # The test supports different binlog formats
- # check if the selected one is ok
- my $supported=
- grep { $_ eq $binlog_format } @{$tinfo->{'binlog_formats'}};
- if ( !$supported )
- {
- $tinfo->{'skip'}= 1;
- $tinfo->{'comment'}=
- "Doesn't support --binlog-format='$binlog_format'";
- }
- }
- }
- else
+ if (not defined $binlog_format )
{
# =======================================================
# Use dynamic switching of binlog format
@@ -623,10 +597,6 @@ sub optimize_cases {
$tinfo->{'ndb_test'}= 1
if ( $default_engine =~ /^ndb/i );
- $tinfo->{'innodb_test'}= 1
- if ( $default_engine =~ /^innodb/i );
- $tinfo->{'pbxt_test'}= 1
- if ( $default_engine =~ /^pbxt/i );
}
}
@@ -644,67 +614,81 @@ sub optimize_cases {
# Read options from the given opt file and append them as an array
# to $tinfo->{$opt_name}
#
-sub process_opts_file {
- my ($tinfo, $opt_file, $opt_name)= @_;
+sub process_opts {
+ my ($tinfo, $opt_name)= @_;
+
+ my @opts= @{$tinfo->{$opt_name}};
+ $tinfo->{$opt_name} = [];
+
+ my @plugins;
+ my %seen;
- if ( -f $opt_file )
+ foreach my $opt (@opts)
{
- my $opts= opts_from_file($opt_file);
+ my $value;
- foreach my $opt ( @$opts )
+ # The opt file is used both to send special options to the mysqld
+ # as well as pass special test case specific options to this
+ # script
+
+ $value= mtr_match_prefix($opt, "--timezone=");
+ if ( defined $value )
{
- my $value;
+ $tinfo->{'timezone'}= $value;
+ next;
+ }
- # The opt file is used both to send special options to the mysqld
- # as well as pass special test case specific options to this
- # script
+ $value= mtr_match_prefix($opt, "--plugin-load=");
+ if (defined $value)
+ {
+ push @plugins, $value unless $seen{$value};
+ $seen{$value}=1;
+ next;
+ }
- $value= mtr_match_prefix($opt, "--timezone=");
- if ( defined $value )
- {
- $tinfo->{'timezone'}= $value;
- next;
- }
+ $value= mtr_match_prefix($opt, "--result-file=");
+ if ( defined $value )
+ {
+ # Specifies the file mysqltest should compare
+ # output against
+ $tinfo->{'result_file'}= "r/$value.result";
+ next;
+ }
- $value= mtr_match_prefix($opt, "--result-file=");
- if ( defined $value )
- {
- # Specifies the file mysqltest should compare
- # output against
- $tinfo->{'result_file'}= "r/$value.result";
- next;
- }
+ $value= mtr_match_prefix($opt, "--config-file-template=");
+ if ( defined $value)
+ {
+ # Specifies the configuration file to use for this test
+ $tinfo->{'template_path'}= dirname($tinfo->{path})."/$value";
+ next;
+ }
- $value= mtr_match_prefix($opt, "--config-file-template=");
- if ( defined $value)
- {
- # Specifies the configuration file to use for this test
- $tinfo->{'template_path'}= dirname($tinfo->{path})."/$value";
- next;
- }
+ # If we set default time zone, remove the one we have
+ $value= mtr_match_prefix($opt, "--default-time-zone=");
+ if ( defined $value )
+ {
+ # Set timezone for this test case to something different
+ $tinfo->{'timezone'}= "GMT-8";
+ # Fallthrough, add the --default-time-zone option
+ }
- # If we set default time zone, remove the one we have
- $value= mtr_match_prefix($opt, "--default-time-zone=");
- if ( defined $value )
- {
- # Set timezone for this test case to something different
- $tinfo->{'timezone'}= "GMT-8";
- # Fallthrough, add the --default-time-zone option
- }
+ # The --restart option forces a restart even if no special
+ # option is set. If the options are the same as next testcase
+ # there is no need to restart after the testcase
+ # has completed
+ if ( $opt eq "--force-restart" )
+ {
+ $tinfo->{'force_restart'}= 1;
+ next;
+ }
- # The --restart option forces a restart even if no special
- # option is set. If the options are the same as next testcase
- # there is no need to restart after the testcase
- # has completed
- if ( $opt eq "--force-restart" )
- {
- $tinfo->{'force_restart'}= 1;
- next;
- }
+ # Ok, this was a real option, add it
+ push(@{$tinfo->{$opt_name}}, $opt);
+ }
- # Ok, this was a real option, add it
- push(@{$tinfo->{$opt_name}}, $opt);
- }
+ if (@plugins) {
+ my $sep = (IS_WINDOWS) ? ';' : ':';
+ push @{$tinfo->{$opt_name}}, "--plugin-load=" . join($sep, @plugins);
}
}
@@ -758,7 +742,7 @@ sub collect_one_test_case {
name => "$suitename.$tname",
shortname => $tname,
path => "$testdir/$filename",
-
+ suite => $suitename,
);
my $result_file= "$resdir/$tname.result";
@@ -790,11 +774,13 @@ sub collect_one_test_case {
# Check for disabled tests
# ----------------------------------------------------------------------
my $marked_as_disabled= 0;
- if ( $disabled->{$tname} )
+ if ( $disabled->{$tname} or $disabled->{"$suitename.$tname"} )
{
# Test was marked as disabled in suites disabled.def file
$marked_as_disabled= 1;
- $tinfo->{'comment'}= $disabled->{$tname};
+ # Test name may have been disabled with or without suite name part
+ $tinfo->{'comment'}= $disabled->{$tname} ||
+ $disabled->{"$suitename.$tname"};
}
my $disabled_file= "$testdir/$tname.disabled";
@@ -878,7 +864,7 @@ sub collect_one_test_case {
if ( -f "$testdir/$tname.slave-mi");
- tags_from_test_file($tinfo,"$testdir/${tname}.test");
+ my @source_files = tags_from_test_file($tinfo,"$testdir/${tname}.test");
# Get default storage engine from suite.opt file
@@ -895,12 +881,6 @@ sub collect_one_test_case {
$tinfo->{'ndb_test'}= 1
if ( $local_default_storage_engine =~ /^ndb/i );
- $tinfo->{'innodb_test'}= 1
- if ( $local_default_storage_engine =~ /^innodb/i );
-
- $tinfo->{'pbxt_test'}= 1
- if ( $local_default_storage_engine =~ /^pbxt/i );
-
}
if ( $tinfo->{'big_test'} and ! $::opt_big_test )
@@ -947,78 +927,6 @@ sub collect_one_test_case {
}
}
- if ($tinfo->{'federated_test'})
- {
- # This is a test that needs federated, enable it
- push(@{$tinfo->{'master_opt'}}, "--loose-federated");
- push(@{$tinfo->{'slave_opt'}}, "--loose-federated");
- }
-
- if ( $tinfo->{'innodb_test'} )
- {
- # This is a test that needs innodb
- if ( $::mysqld_variables{'innodb'} eq "OFF" ||
- ! exists $::mysqld_variables{'innodb'} )
- {
- # innodb is not supported, skip it
- $tinfo->{'skip'}= 1;
- $tinfo->{'comment'}= "No innodb support";
- return $tinfo;
- }
- }
- elsif ( $tinfo->{'innodb_plugin_test'} )
- {
- # This is a test that needs the innodb plugin
- if (!&find_innodb_plugin)
- {
- # innodb plugin is not supported, skip it
- $tinfo->{'skip'}= 1;
- $tinfo->{'comment'}= "No innodb plugin support";
- return $tinfo;
- }
-
- my $sep= (IS_WINDOWS) ? ';' : ':';
- my $plugin_filename= basename($lib_innodb_plugin);
- my $plugin_list=
- "innodb=$plugin_filename$sep" .
- "innodb_trx=$plugin_filename$sep" .
- "innodb_locks=$plugin_filename$sep" .
- "innodb_lock_waits=$plugin_filename$sep" .
- "innodb_cmp=$plugin_filename$sep" .
- "innodb_cmp_reset=$plugin_filename$sep" .
- "innodb_cmpmem=$plugin_filename$sep" .
- "innodb_cmpmem_reset=$plugin_filename";
-
- foreach my $k ('master_opt', 'slave_opt')
- {
- push(@{$tinfo->{$k}}, '--ignore-builtin-innodb');
- push(@{$tinfo->{$k}}, '--plugin-dir=' . dirname($lib_innodb_plugin));
- push(@{$tinfo->{$k}}, "--plugin-load=$plugin_list");
- }
- }
- else
- {
- push(@{$tinfo->{'master_opt'}}, "--loose-skip-innodb");
- push(@{$tinfo->{'slave_opt'}}, "--loose-skip-innodb");
- }
-
- if ( $tinfo->{'need_binlog'} )
- {
- if (grep(/^--skip-log-bin/, @::opt_extra_mysqld_opt) )
- {
- $tinfo->{'skip'}= 1;
- $tinfo->{'comment'}= "Test needs binlog";
- return $tinfo;
- }
- }
- else
- {
- # Test does not need binlog, add --skip-binlog to
- # the options used when starting
- push(@{$tinfo->{'master_opt'}}, "--loose-skip-log-bin");
- push(@{$tinfo->{'slave_opt'}}, "--loose-skip-log-bin");
- }
-
if ( $tinfo->{'rpl_test'} )
{
if ( $skip_rpl )
@@ -1089,31 +997,9 @@ sub collect_one_test_case {
$tinfo->{template_path}= $config;
}
- if ( $tinfo->{'pbxt_test'} )
- {
- # This is a test that needs pbxt
- if ( $::mysqld_variables{'pbxt'} eq "OFF" ||
- ! exists $::mysqld_variables{'pbxt'} )
- {
- # Engine is not supported, skip it
- $tinfo->{'skip'}= 1;
- return $tinfo;
- }
- }
- else
- {
- # Only disable engine if it's on by default (to avoid warnings about
- # not existing loose options
- if ( $::mysqld_variables{'pbxt'} eq "ON")
- {
- push(@{$tinfo->{'master_opt'}}, "--loose-skip-pbxt");
- push(@{$tinfo->{'slave_opt'}}, "--loose-skip-pbxt");
- }
- }
-
if ( $tinfo->{'example_plugin_test'} )
{
- if ( !$ENV{'EXAMPLE_PLUGIN'} )
+ if ( !$ENV{'HA_EXAMPLE_SO'} )
{
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Test requires the 'example' plugin";
@@ -1123,7 +1009,7 @@ sub collect_one_test_case {
if ( $tinfo->{'oqgraph_test'} )
{
- if ( !$ENV{'OQGRAPH_PLUGIN'} )
+ if ( !$ENV{'GRAPH_ENGINE_SO'} )
{
$tinfo->{'skip'}= 1;
$tinfo->{'comment'}= "Test requires the OQGraph storage engine";
@@ -1131,27 +1017,29 @@ sub collect_one_test_case {
}
}
-
- # Set extra config file to use
- if (defined $defaults_extra_file) {
- $tinfo->{extra_template_path}= $defaults_extra_file;
+ if (not ref $::suites{$tinfo->{suite}})
+ {
+ $tinfo->{'skip'}= 1;
+ $tinfo->{'comment'}= $::suites{$tinfo->{suite}};
+ return $tinfo;
}
# ----------------------------------------------------------------------
- # Append mysqld extra options to both master and slave
+ # Append mysqld extra options to master and slave, as appropriate
# ----------------------------------------------------------------------
+ for (@source_files) {
+ s/\.\w+$//;
+ push @{$tinfo->{master_opt}}, opts_from_file("$_.opt");
+ push @{$tinfo->{slave_opt}}, opts_from_file("$_.opt");
+ push @{$tinfo->{master_opt}}, opts_from_file("$_-master.opt");
+ push @{$tinfo->{slave_opt}}, opts_from_file("$_-slave.opt");
+ }
+
push(@{$tinfo->{'master_opt'}}, @::opt_extra_mysqld_opt);
push(@{$tinfo->{'slave_opt'}}, @::opt_extra_mysqld_opt);
- # ----------------------------------------------------------------------
- # Add master opts, extra options only for master
- # ----------------------------------------------------------------------
- process_opts_file($tinfo, "$testdir/$tname-master.opt", 'master_opt');
-
- # ----------------------------------------------------------------------
- # Add slave opts, list of extra option only for slave
- # ----------------------------------------------------------------------
- process_opts_file($tinfo, "$testdir/$tname-slave.opt", 'slave_opt');
+ process_opts($tinfo, 'master_opt');
+ process_opts($tinfo, 'slave_opt');
return $tinfo;
}
@@ -1161,21 +1049,6 @@ sub collect_one_test_case {
# the specified value in "tinfo"
my @tags=
(
- ["include/have_binlog_format_row.inc", "binlog_formats", ["row"]],
- ["include/have_binlog_format_statement.inc", "binlog_formats", ["statement"]],
- ["include/have_binlog_format_mixed.inc", "binlog_formats", ["mixed"]],
- ["include/have_binlog_format_mixed_or_row.inc",
- "binlog_formats", ["mixed", "row"]],
- ["include/have_binlog_format_mixed_or_statement.inc",
- "binlog_formats", ["mixed", "statement"]],
- ["include/have_binlog_format_row_or_statement.inc",
- "binlog_formats", ["row", "statement"]],
-
- ["include/have_log_bin.inc", "need_binlog", 1],
-
- ["include/have_innodb.inc", "innodb_test", 1],
- ["include/have_pbxt.inc", "pbxt_test", 1],
- ["include/have_innodb_plugin.inc", "innodb_plugin_test", 1],
["include/big_test.inc", "big_test", 1],
["include/have_debug.inc", "need_debug", 1],
["include/have_ndb.inc", "ndb_test", 1],
@@ -1183,7 +1056,6 @@ my @tags=
["include/master-slave.inc", "rpl_test", 1],
["include/ndb_master-slave.inc", "rpl_test", 1],
["include/ndb_master-slave.inc", "ndb_test", 1],
- ["federated.inc", "federated_test", 1],
["include/not_embedded.inc", "not_embedded", 1],
["include/not_valgrind.inc", "not_valgrind", 1],
["include/have_example_plugin.inc", "example_plugin_test", 1],
@@ -1197,6 +1069,7 @@ sub tags_from_test_file {
my $file= shift;
#mtr_verbose("$file");
my $F= IO::File->new($file) or mtr_error("can't open file \"$file\": $!");
+ my @all_files=($file);
while ( my $line= <$F> )
{
@@ -1232,13 +1105,13 @@ sub tags_from_test_file {
# Only source the file if it exists, we may get
# false positives in the regexes above if someone
# writes "source nnnn;" in a test case(such as mysqltest.test)
- tags_from_test_file($tinfo, $sourced_file);
+ unshift @all_files, tags_from_test_file($tinfo, $sourced_file);
last;
}
}
}
-
}
+ @all_files;
}
sub unspace {
@@ -1251,6 +1124,9 @@ sub unspace {
sub opts_from_file ($) {
my $file= shift;
+ local $_;
+
+ return () unless -f $file;
open(FILE,"<",$file) or mtr_error("can't open file \"$file\": $!");
my @args;
@@ -1292,7 +1168,7 @@ sub opts_from_file ($) {
}
}
close FILE;
- return \@args;
+ return @args;
}
sub print_testcases {
diff --git a/mysql-test/lib/mtr_misc.pl b/mysql-test/lib/mtr_misc.pl
index 6838435bbde..388d252502a 100644
--- a/mysql-test/lib/mtr_misc.pl
+++ b/mysql-test/lib/mtr_misc.pl
@@ -149,6 +149,28 @@ sub mtr_exe_maybe_exists (@) {
#
# NOTE! More specific paths should be given before less specific.
+#
+sub mtr_pl_maybe_exists (@) {
+ my @path= @_;
+
+ map {$_.= ".pl"} @path if IS_WINDOWS;
+ foreach my $path ( @path )
+ {
+ if(IS_WINDOWS)
+ {
+ return $path if -f $path;
+ }
+ else
+ {
+ return $path if -x $path;
+ }
+ }
+ return "";
+}
+
+
+#
+# NOTE! More specific paths should be given before less specific.
# For example /client/debug should be listed before /client
#
sub mtr_exe_exists (@) {
diff --git a/mysql-test/lib/mtr_report.pm b/mysql-test/lib/mtr_report.pm
index f6a6a2b63b5..c13e6a93319 100644
--- a/mysql-test/lib/mtr_report.pm
+++ b/mysql-test/lib/mtr_report.pm
@@ -61,14 +61,10 @@ sub _name {
sub _mtr_report_test_name ($) {
my $tinfo= shift;
- my $tname= $tinfo->{name};
+ my $tname= $tinfo->fullname();
return unless defined $verbose;
- # Add combination name if any
- $tname.= " '$tinfo->{combination}'"
- if defined $tinfo->{combination};
-
print _name(). _timestamp();
printf "%-40s ", $tname;
my $worker = $tinfo->{worker};
diff --git a/mysql-test/lib/v1/mtr_process.pl b/mysql-test/lib/v1/mtr_process.pl
index 566ccfe0778..33a39d1f0b6 100644
--- a/mysql-test/lib/v1/mtr_process.pl
+++ b/mysql-test/lib/v1/mtr_process.pl
@@ -264,8 +264,9 @@ sub spawn_parent_impl {
if ( $timer_name eq "suite" )
{
# We give up here
- # FIXME we should only give up the suite, not all of the run?
print STDERR "\n";
+ kill(9, $pid); # Kill mysqltest
+ mtr_kill_leftovers(); # Kill servers the hard way
mtr_error("Test suite timeout");
}
elsif ( $timer_name eq "testcase" )
diff --git a/mysql-test/lib/v1/mysql-test-run.pl b/mysql-test/lib/v1/mysql-test-run.pl
index 174de23c530..622bbca3946 100755
--- a/mysql-test/lib/v1/mysql-test-run.pl
+++ b/mysql-test/lib/v1/mysql-test-run.pl
@@ -2228,20 +2228,20 @@ sub environment_setup () {
"$glob_basedir/myisam/myisampack"));
# ----------------------------------------------------
- # Setup env so childs can execute maria_pack and maria_chk
+ # Setup env so childs can execute aria_pack and aria_chk
# ----------------------------------------------------
- $ENV{'MARIA_CHK'}= mtr_native_path(mtr_exe_maybe_exists(
- vs_config_dirs('storage/maria', 'maria_chk'),
- vs_config_dirs('maria', 'maria_chk'),
- "$path_client_bindir/maria_chk",
- "$glob_basedir/storage/maria/maria_chk",
- "$glob_basedir/maria/maria_chk"));
- $ENV{'MARIA_PACK'}= mtr_native_path(mtr_exe_maybe_exists(
- vs_config_dirs('storage/maria', 'maria_pack'),
- vs_config_dirs('maria', 'maria_pack'),
- "$path_client_bindir/maria_pack",
- "$glob_basedir/storage/maria/maria_pack",
- "$glob_basedir/maria/maria_pack"));
+ $ENV{'ARIA_CHK'}= mtr_native_path(mtr_exe_maybe_exists(
+ vs_config_dirs('storage/maria', 'aria_chk'),
+ vs_config_dirs('maria', 'aria_chk'),
+ "$path_client_bindir/aria_chk",
+ "$glob_basedir/storage/maria/aria_chk",
+ "$glob_basedir/maria/aria_chk"));
+ $ENV{'ARIA_PACK'}= mtr_native_path(mtr_exe_maybe_exists(
+ vs_config_dirs('storage/maria', 'aria_pack'),
+ vs_config_dirs('maria', 'aria_pack'),
+ "$path_client_bindir/aria_pack",
+ "$glob_basedir/storage/maria/aria_pack",
+ "$glob_basedir/maria/aria_pack"));
# ----------------------------------------------------
# We are nice and report a bit about our settings
@@ -2959,7 +2959,7 @@ sub run_benchmarks ($) {
if ( ! $benchmark )
{
- mtr_add_arg($args, "--log");
+ mtr_add_arg($args, "--general-log");
mtr_run("$glob_mysql_bench_dir/run-all-tests", $args, "", "", "", "");
# FIXME check result code?!
}
@@ -3192,7 +3192,7 @@ sub install_db ($$) {
mtr_add_arg($args, "--datadir=%s", $data_dir);
mtr_add_arg($args, "--loose-skip-innodb");
mtr_add_arg($args, "--loose-skip-ndbcluster");
- mtr_add_arg($args, "--loose-skip-maria");
+ mtr_add_arg($args, "--loose-skip-aria");
mtr_add_arg($args, "--disable-sync-frm");
mtr_add_arg($args, "--loose-disable-debug");
mtr_add_arg($args, "--tmpdir=.");
@@ -3202,7 +3202,7 @@ sub install_db ($$) {
# Setup args for bootstrap.test
#
mtr_init_args(\$cmd_args);
- mtr_add_arg($cmd_args, "--loose-skip-maria");
+ mtr_add_arg($cmd_args, "--loose-skip-aria");
if ( $opt_debug )
{
@@ -3970,7 +3970,7 @@ sub mysqld_arguments ($$$$) {
}
}
- mtr_add_arg($args, "%s--character-set-server-set=latin1", $prefix);
+ mtr_add_arg($args, "%s--character-set-server=latin1", $prefix);
mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 52859242c82..291dfd0d4eb 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -69,7 +69,7 @@ use File::Basename;
use File::Copy;
use File::Find;
use File::Temp qw/tempdir/;
-use File::Spec::Functions qw/splitdir/;
+use File::Spec::Functions qw/splitdir rel2abs/;
use My::Platform;
use My::SafeProcess;
use My::ConfigFactory;
@@ -106,6 +106,7 @@ our $path_testlog;
our $default_vardir;
our $opt_vardir; # Path to use for var/ dir
+our $plugindir;
my $path_vardir_trace; # unix formatted opt_vardir for trace files
my $opt_tmpdir; # Path to use for tmp/ dir
my $opt_tmpdir_pid;
@@ -129,7 +130,7 @@ my $path_config_file; # The generated config file, var/my.cnf
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
-my $DEFAULT_SUITES= "main,binlog,federated,rpl,maria,parts,innodb,vcol,oqgraph";
+my $DEFAULT_SUITES= "main,binlog,federated,rpl,maria,parts,innodb,innodb_plugin,percona,ndb,vcol,oqgraph,sphinx";
my $opt_suites;
our $opt_verbose= 0; # Verbose output, enable with --verbose
@@ -233,10 +234,12 @@ my $opt_strace_client;
our $opt_user = "root";
my $opt_valgrind= 0;
-our $opt_valgrind_mysqld= 0;
-my $opt_valgrind_mysqltest= 0;
my @default_valgrind_args= ("--show-reachable=yes");
my @valgrind_args;
+our $opt_valgrind_mysqld= 0;
+my $opt_valgrind_mysqltest= 0;
+my $opt_strace= 0;
+my @strace_args;
my $opt_valgrind_path;
my $opt_callgrind;
my %mysqld_logs;
@@ -254,6 +257,8 @@ our $debug_compiled_binaries;
our %mysqld_variables;
+our %suites;
+
my $source_dist= 0;
my $opt_max_save_core= env_or_val(MTR_MAX_SAVE_CORE => 5);
@@ -315,8 +320,25 @@ sub main {
}
}
- # Check for plugin availability so we know whether to skip tests or not.
- detect_plugins();
+ print "vardir: $opt_vardir\n";
+ initialize_servers();
+
+ mtr_report("Checking supported features...");
+ if (using_extern())
+ {
+ # Connect to the running mysqld and find out what it supports
+ collect_mysqld_features_from_running_server();
+ }
+ else
+ {
+ # Run the mysqld to find out what features are available
+ collect_mysqld_features();
+ }
+ check_ndbcluster_support(\%mysqld_variables);
+ check_ssl_support(\%mysqld_variables);
+ check_debug_support(\%mysqld_variables);
+
+ executable_setup();
mtr_report("Collecting tests...");
my $tests= collect_test_cases($opt_reorder, $opt_suites, \@opt_cases);
@@ -335,9 +357,6 @@ sub main {
unshift(@$tests, $tinfo);
}
- print "vardir: $opt_vardir\n";
- initialize_servers();
-
#######################################################################
my $num_tests= @$tests;
if ( $opt_parallel eq "auto" ) {
@@ -694,6 +713,8 @@ sub run_test_server ($$$) {
$next= splice(@$tests, $second_best, 1);
}
+ xterm_stat(scalar(@$tests));
+
if ($next) {
#$next->print_test();
$next->write_test($sock, 'TESTCASE');
@@ -790,7 +811,7 @@ sub run_worker ($) {
# We need to gracefully shut down the servers to see any
# Valgrind memory leak errors etc. since last server restart.
if ($opt_warnings) {
- stop_servers(all_servers());
+ stop_servers(reverse all_servers());
if(check_warnings_post_shutdown($server)) {
# Warnings appeared in log file(s) during final server shutdown.
exit(1);
@@ -914,7 +935,9 @@ sub command_line_setup {
'manual-ddd' => \$opt_manual_ddd,
'debugger=s' => \$opt_debugger,
'client-debugger=s' => \$opt_client_debugger,
+ 'strace' => \$opt_strace,
'strace-client:s' => \$opt_strace_client,
+ 'strace-option=s' => \@strace_args,
'max-save-core=i' => \$opt_max_save_core,
'max-save-datadir=i' => \$opt_max_save_datadir,
'max-test-fail=i' => \$opt_max_test_fail,
@@ -1031,6 +1054,8 @@ sub command_line_setup {
$basedir= dirname($basedir);
}
+ fix_vs_config_dir();
+
# Look for the client binaries directory
if ($path_client_bindir)
{
@@ -1041,7 +1066,7 @@ sub command_line_setup {
{
$path_client_bindir= mtr_path_exists("$basedir/client_release",
"$basedir/client_debug",
- vs_config_dirs('client', ''),
+ "$basedir/client$opt_vs_config",
"$basedir/client",
"$basedir/bin");
}
@@ -1055,17 +1080,6 @@ sub command_line_setup {
my $path_share= dirname($path_language);
$path_charsetsdir= mtr_path_exists("$path_share/charsets");
- if (using_extern())
- {
- # Connect to the running mysqld and find out what it supports
- collect_mysqld_features_from_running_server();
- }
- else
- {
- # Run the mysqld to find out what features are available
- collect_mysqld_features();
- }
-
if ( $opt_comment )
{
mtr_report();
@@ -1288,7 +1302,7 @@ sub command_line_setup {
# Add the location for libmysqld.dll to the path.
my $separator= ";";
my $lib_mysqld=
- mtr_path_exists(vs_config_dirs('libmysqld',''));
+ mtr_path_exists("$basedir/libmysqld$opt_vs_config");
if ( IS_CYGWIN )
{
$lib_mysqld= posix_path($lib_mysqld);
@@ -1464,6 +1478,11 @@ sub command_line_setup {
join(" ", @valgrind_args), "\"");
}
+ if (@strace_args)
+ {
+ $opt_strace=1;
+ }
+
# InnoDB does not bother to do individual de-allocations at exit. Instead it
# relies on a custom allocator to track every allocation, and frees all at
# once during exit.
@@ -1475,15 +1494,6 @@ sub command_line_setup {
{
push(@opt_extra_mysqld_opt, "--loose-skip-innodb-use-sys-malloc");
}
-
- mtr_report("Checking supported features...");
-
- check_ndbcluster_support(\%mysqld_variables);
- check_ssl_support(\%mysqld_variables);
- check_debug_support(\%mysqld_variables);
-
- executable_setup();
-
}
@@ -1549,13 +1559,6 @@ sub set_build_thread_ports($) {
sub collect_mysqld_features {
my $found_variable_list_start= 0;
- my $use_tmpdir;
- if ( defined $opt_tmpdir and -d $opt_tmpdir){
- # Create the tempdir in $opt_tmpdir
- $use_tmpdir= $opt_tmpdir;
- }
- my $tmpdir= tempdir(CLEANUP => 0, # Directory removed by this function
- DIR => $use_tmpdir);
#
# Execute "mysqld --no-defaults --help --verbose" to get a
@@ -1569,9 +1572,13 @@ sub collect_mysqld_features {
my $args;
mtr_init_args(\$args);
mtr_add_arg($args, "--no-defaults");
- mtr_add_arg($args, "--datadir=%s", mixed_path($tmpdir));
+ mtr_add_arg($args, "--datadir=%s/tmp", $opt_vardir);
+ mtr_add_arg($args, "--basedir=%s", $basedir);
mtr_add_arg($args, "--language=%s", $path_language);
mtr_add_arg($args, "--skip-grant-tables");
+ for (@opt_extra_mysqld_opt) {
+ mtr_add_arg($args, $_) unless /^--binlog-format\b/;
+ }
my $euid= $>;
if (!IS_WINDOWS and $euid == 0) {
mtr_add_arg($args, "--user=root");
@@ -1589,7 +1596,7 @@ sub collect_mysqld_features {
my $cmd= join(" ", $exe_mysqld, @$args);
my $list= `$cmd`;
- print "cmd: $cmd\n";
+ mtr_verbose("cmd: $cmd");
foreach my $line (split('\n', $list))
{
@@ -1604,7 +1611,7 @@ sub collect_mysqld_features {
#print "Major: $1 Minor: $2 Build: $3\n";
$mysql_version_id= $1*10000 + $2*100 + $3;
#print "mysql_version_id: $mysql_version_id\n";
- mtr_report("MySQL Version $1.$2.$3");
+ mtr_report("MariaDB Version $1.$2.$3");
}
}
else
@@ -1644,7 +1651,6 @@ sub collect_mysqld_features {
}
}
}
- rmtree($tmpdir);
mtr_error("Could not find version of MySQL") unless $mysql_version_id;
mtr_error("Could not find variabes list") unless $found_variable_list_start;
@@ -1728,9 +1734,9 @@ sub executable_setup () {
if ( -x "../libtool")
{
$exe_libtool= "../libtool";
- if ($opt_valgrind or $glob_debugger)
+ if ($opt_valgrind or $glob_debugger or $opt_strace)
{
- mtr_report("Using \"$exe_libtool\" when running valgrind or debugger");
+ mtr_report("Using \"$exe_libtool\" when running valgrind, strace or debugger");
}
}
@@ -1761,8 +1767,7 @@ sub executable_setup () {
if ( $opt_embedded_server )
{
$exe_mysqltest=
- mtr_exe_exists(vs_config_dirs('libmysqld/examples','mysqltest_embedded'),
- "$basedir/libmysqld/examples/mysqltest_embedded",
+ mtr_exe_exists("$basedir/libmysqld/examples$opt_vs_config/mysqltest_embedded",
"$path_client_bindir/mysqltest_embedded");
}
else
@@ -1798,6 +1803,7 @@ sub mysql_fix_arguments () {
mtr_add_arg($args, "--basedir=%s", $basedir);
mtr_add_arg($args, "--bindir=%s", $path_client_bindir);
mtr_add_arg($args, "--verbose");
+ mtr_add_arg($args, "--sync-sys=0"); # Speed up test suite
return mtr_args2str($exe, @$args);
}
@@ -1871,12 +1877,10 @@ sub mysql_client_test_arguments(){
# mysql_client_test executable may _not_ exist
if ( $opt_embedded_server ) {
$exe= mtr_exe_maybe_exists(
- vs_config_dirs('libmysqld/examples','mysql_client_test_embedded'),
- "$basedir/libmysqld/examples/mysql_client_test_embedded",
+ "$basedir/libmysqld/examples$opt_vs_config/mysql_client_test_embedded",
"$basedir/bin/mysql_client_test_embedded");
} else {
- $exe= mtr_exe_maybe_exists(vs_config_dirs('tests', 'mysql_client_test'),
- "$basedir/tests/mysql_client_test",
+ $exe= mtr_exe_maybe_exists("$basedir/tests$opt_vs_config/mysql_client_test",
"$basedir/bin/mysql_client_test");
}
@@ -1921,69 +1925,10 @@ sub mysqld_client_arguments () {
sub have_maria_support () {
- my $maria_var= $mysqld_variables{'maria'};
+ my $maria_var= $mysqld_variables{'aria'};
return defined $maria_var and $maria_var eq 'TRUE';
}
-
-# Detect plugin presense and set environment variables appropriately.
-# This needs to be done early, so we can know whether to skip tests.
-sub detect_plugins {
- # --------------------------------------------------------------------------
- # Add the path where mysqld will find ha_example.so
- # --------------------------------------------------------------------------
- if ($mysql_version_id >= 50100) {
- my $plugin_filename;
- if (IS_WINDOWS)
- {
- $plugin_filename = "ha_example.dll";
- }
- else
- {
- $plugin_filename = "ha_example.so";
- }
- my $lib_example_plugin=
- mtr_file_exists(vs_config_dirs('storage/example',$plugin_filename),
- "$basedir/storage/example/.libs/".$plugin_filename,
- "$basedir/lib/mariadb/plugin/".$plugin_filename,
- "$basedir/lib/mysql/plugin/".$plugin_filename);
- $ENV{'EXAMPLE_PLUGIN'}=
- ($lib_example_plugin ? basename($lib_example_plugin) : "");
- $ENV{'EXAMPLE_PLUGIN_OPT'}= "--plugin-dir=".
- ($lib_example_plugin ? dirname($lib_example_plugin) : "");
-
- $ENV{'HA_EXAMPLE_SO'}="'".$plugin_filename."'";
- $ENV{'EXAMPLE_PLUGIN_LOAD'}="--plugin_load=EXAMPLE=".$plugin_filename;
- }
-
- # --------------------------------------------------------------------------
- # Add the path where mysqld will find graph_engine.so
- # --------------------------------------------------------------------------
- if ($mysql_version_id >= 50100 && !(IS_WINDOWS && $opt_embedded_server)) {
- my $plugin_filename;
- if (IS_WINDOWS)
- {
- $plugin_filename = "oqgraph_engine.dll";
- }
- else
- {
- $plugin_filename = "oqgraph_engine.so";
- }
- my $lib_oqgraph_plugin=
- mtr_file_exists(vs_config_dirs('storage/oqgraph',$plugin_filename),
- "$basedir/storage/oqgraph/.libs/".$plugin_filename,
- "$basedir/lib/mariadb/plugin/".$plugin_filename,
- "$basedir/lib/mysql/plugin/".$plugin_filename);
- $ENV{'OQGRAPH_PLUGIN'}=
- ($lib_oqgraph_plugin ? basename($lib_oqgraph_plugin) : "");
- $ENV{'OQGRAPH_PLUGIN_OPT'}= "--plugin-dir=".
- ($lib_oqgraph_plugin ? dirname($lib_oqgraph_plugin) : "");
-
- $ENV{'GRAPH_ENGINE_SO'}="'".$plugin_filename."'";
- $ENV{'OQGRAPH_PLUGIN_LOAD'}="--plugin_load=;OQGRAPH=".$plugin_filename.";";
- }
-}
-
#
# Set environment to be used by childs of this process for
# things that are constant during the whole lifetime of mysql-test-run
@@ -2024,39 +1969,6 @@ sub environment_setup {
}
# --------------------------------------------------------------------------
- # Add the path where mysqld will find udf_example.so
- # --------------------------------------------------------------------------
- my $lib_udf_example=
- mtr_file_exists(vs_config_dirs('sql', 'udf_example.dll'),
- "$basedir/sql/.libs/udf_example.so",
- "$basedir/lib/mariadb/plugin/udf_example.so",
- "$basedir/lib/mysql/plugin/udf_example.so",);
-
- if ( $lib_udf_example )
- {
- push(@ld_library_paths, dirname($lib_udf_example));
- }
-
- $ENV{'UDF_EXAMPLE_LIB'}=
- ($lib_udf_example ? basename($lib_udf_example) : "");
- $ENV{'UDF_EXAMPLE_LIB_OPT'}= "--plugin-dir=".
- ($lib_udf_example ? dirname($lib_udf_example) : "");
-
- # ----------------------------------------------------
- # Add the path where mysqld will find mypluglib.so
- # ----------------------------------------------------
- my $lib_simple_parser=
- mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
- "$basedir/plugin/fulltext/.libs/mypluglib.so",
- "$basedir/lib/mariadb/plugin/mypluglib.so",
- "$basedir/lib/mysql/plugin/mypluglib.so",);
-
- $ENV{'SIMPLE_PARSER'}=
- ($lib_simple_parser ? basename($lib_simple_parser) : "");
- $ENV{'SIMPLE_PARSER_OPT'}= "--plugin-dir=".
- ($lib_simple_parser ? dirname($lib_simple_parser) : "");
-
- # --------------------------------------------------------------------------
# Valgrind need to be run with debug libraries otherwise it's almost
# impossible to add correct supressions, that means if "/usr/lib/debug"
# is available, it should be added to
@@ -2182,8 +2094,7 @@ sub environment_setup {
# some versions, test using it should be skipped
# ----------------------------------------------------
my $exe_bug25714=
- mtr_exe_maybe_exists(vs_config_dirs('tests', 'bug25714'),
- "$basedir/tests/bug25714");
+ mtr_exe_maybe_exists("$basedir/tests$opt_vs_config/bug25714");
$ENV{'MYSQL_BUG25714'}= native_path($exe_bug25714);
# ----------------------------------------------------
@@ -2200,9 +2111,8 @@ sub environment_setup {
# my_print_defaults
# ----------------------------------------------------
my $exe_my_print_defaults=
- mtr_exe_exists(vs_config_dirs('extra', 'my_print_defaults'),
- "$path_client_bindir/my_print_defaults",
- "$basedir/extra/my_print_defaults");
+ mtr_exe_exists("$basedir/extra$opt_vs_config/my_print_defaults",
+ "$path_client_bindir/my_print_defaults");
$ENV{'MYSQL_MY_PRINT_DEFAULTS'}= native_path($exe_my_print_defaults);
# ----------------------------------------------------
@@ -2214,19 +2124,27 @@ sub environment_setup {
$ENV{'MYISAM_FTDUMP'}= tool_arguments("storage/myisam", "myisam_ftdump");
# ----------------------------------------------------
- # maria tools
+ # aria tools
# ----------------------------------------------------
if (have_maria_support())
{
- $ENV{'MARIA_CHK'}= tool_arguments("storage/maria", "maria_chk");
- $ENV{'MARIA_PACK'}= tool_arguments("storage/maria", "maria_pack");
+ $ENV{'MARIA_CHK'}= tool_arguments("storage/maria", "aria_chk");
+ $ENV{'MARIA_PACK'}= tool_arguments("storage/maria", "aria_pack");
}
# ----------------------------------------------------
+ # mysqlhotcopy
+ # ----------------------------------------------------
+ my $mysqlhotcopy=
+ mtr_pl_maybe_exists("$basedir/scripts/mysqlhotcopy");
+ # Since mysqltest interprets the real path as "false" in an if,
+ # use 1 ("true") to indicate "not exists" so it can be tested for
+ $ENV{'MYSQLHOTCOPY'}= $mysqlhotcopy || 1;
+
+ # ----------------------------------------------------
# perror
# ----------------------------------------------------
- my $exe_perror= mtr_exe_exists(vs_config_dirs('extra', 'perror'),
- "$basedir/extra/perror",
+ my $exe_perror= mtr_exe_exists("$basedir/extra$opt_vs_config/perror",
"$path_client_bindir/perror");
$ENV{'MY_PERROR'}= native_path($exe_perror);
@@ -2324,7 +2242,11 @@ sub remove_stale_vardir () {
rmtree("$opt_tmpdir/");
}
-
+sub set_plugin_var($) {
+ local $_ = $_[0];
+ s/\.\w+$//;
+ $ENV{"\U${_}_SO"} = $_[0];
+}
#
# Create var and the directories needed in var
@@ -2389,6 +2311,44 @@ sub setup_vardir() {
# and make them world readable
copytree("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data", "0022");
+ # create a plugin dir and copy plugins into it
+ if ($source_dist)
+ {
+ $plugindir="$opt_vardir/plugins";
+ unshift (@opt_extra_mysqld_opt, "--plugin-dir=$plugindir");
+ mkpath($plugindir);
+ if (IS_WINDOWS)
+ {
+ for (<../storage/*$opt_vs_config/*.dll>,
+ <../plugin/*$opt_vs_config/*.dll>,
+ <../sql$opt_vs_config/*.dll>)
+ {
+ my $pname=basename($_);
+ copy rel2abs($_), "$plugindir/$pname";
+ set_plugin_var($pname);
+ }
+ }
+ else
+ {
+ for (<../storage/*/.libs/*.so>,<../plugin/*/.libs/*.so>,<../sql/.libs/*.so>)
+ {
+ my $pname=basename($_);
+ symlink rel2abs($_), "$plugindir/$pname";
+ set_plugin_var($pname);
+ }
+ }
+ }
+ else
+ {
+ # hm, what paths work for debs and for rpms ?
+ for (<$basedir/lib/mysql/plugin/*.so>,
+ <$basedir/lib/plugin/*.dll>)
+ {
+ my $pname=basename($_);
+ set_plugin_var($pname);
+ }
+ }
+
# Remove old log files
foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
{
@@ -2479,29 +2439,36 @@ sub check_debug_support ($) {
#
-# Helper function to handle configuration-based subdirectories which Visual
-# Studio uses for storing binaries. If opt_vs_config is set, this returns
-# a path based on that setting; if not, it returns paths for the default
-# /release/ and /debug/ subdirectories.
+# Helper function to find the correct value for the opt_vs_config
+# if it was not set explicitly.
+#
+# the configuration with the most recent build dir in sql/ is selected.
#
-# $exe can be undefined, if the directory itself will be used
+# note: looking for all BuildLog.htm files everywhere in the tree with the
+# help of File::Find would be possibly more precise, but it is also
+# many times slower. Thus we are only looking at the server, client
+# executables, and plugins - that is, something that can affect the test suite
#
-sub vs_config_dirs ($$) {
- my ($path_part, $exe) = @_;
-
- $exe = "" if not defined $exe;
+sub fix_vs_config_dir () {
+ return $opt_vs_config="" unless IS_WINDOWS;
+ return $opt_vs_config="/$opt_vs_config" if $opt_vs_config;
- # Don't look in these dirs when not on windows
- return () unless IS_WINDOWS;
+ my $modified = 1e30;
+ $opt_vs_config="";
- if ($opt_vs_config)
- {
- return ("$basedir/$path_part/$opt_vs_config/$exe");
+ for my $dir (qw(client/*.dir libmysql/libmysql.dir sql/mysqld.dir
+ sql/udf_example.dir storage/*/*.dir plugin/*/*.dir)) {
+ for (<$basedir/$dir/*/BuildLog.htm>) {
+ if (-M $_ < $modified)
+ {
+ $modified = -M _;
+ $opt_vs_config = basename(dirname($_));
+ }
+ }
}
- return ("$basedir/$path_part/release/$exe",
- "$basedir/$path_part/relwithdebinfo/$exe",
- "$basedir/$path_part/debug/$exe");
+ mtr_report("VS config: $opt_vs_config");
+ $opt_vs_config="/$opt_vs_config" if $opt_vs_config;
}
@@ -2527,7 +2494,7 @@ sub check_ndbcluster_support ($) {
}
-sub ndbcluster_wait_started($$){
+sub ndbcluster_wait_started {
my $cluster= shift;
my $ndb_waiter_extra_opt= shift;
my $path_waitlog= join('/', $opt_vardir, $cluster->name(), "ndb_waiter.log");
@@ -2695,7 +2662,7 @@ sub ndbd_start {
sub ndbcluster_start ($) {
- my $cluster= shift;
+ my ($cluster) = @_;
mtr_verbose("ndbcluster_start '".$cluster->name()."'");
@@ -2715,6 +2682,109 @@ sub ndbcluster_start ($) {
}
+sub mysql_server_start($) {
+ my ($mysqld, $tinfo) = @_;
+
+ if ( $mysqld->{proc} )
+ {
+ # Already started
+
+ # Write start of testcase to log file
+ mark_log($mysqld->value('#log-error'), $tinfo);
+
+ return;
+ }
+
+ my $datadir= $mysqld->value('datadir');
+ if (not $opt_start_dirty)
+ {
+
+ my @options= ('log-bin', 'relay-log');
+ foreach my $option_name ( @options ) {
+ next unless $mysqld->option($option_name);
+
+ my $file_name= $mysqld->value($option_name);
+ next unless
+ defined $file_name and
+ -e $file_name;
+
+ mtr_debug(" -removing '$file_name'");
+ unlink($file_name) or die ("unable to remove file '$file_name'");
+ }
+
+ if (-d $datadir ) {
+ preserve_error_log($mysqld);
+ mtr_verbose(" - removing '$datadir'");
+ rmtree($datadir);
+ }
+ }
+
+ my $mysqld_basedir= $mysqld->value('basedir');
+ if ( $basedir eq $mysqld_basedir )
+ {
+ if (! $opt_start_dirty) # If dirty, keep possibly grown system db
+ {
+ # Copy datadir from installed system db
+ for my $path ( "$opt_vardir", "$opt_vardir/..") {
+ my $install_db= "$path/install.db";
+ copytree($install_db, $datadir)
+ if -d $install_db;
+ }
+ mtr_error("Failed to copy system db to '$datadir'")
+ unless -d $datadir;
+ }
+ }
+ else
+ {
+ mysql_install_db($mysqld); # For versional testing
+
+ mtr_error("Failed to install system db to '$datadir'")
+ unless -d $datadir;
+
+ }
+ restore_error_log($mysqld);
+
+ # Create the servers tmpdir
+ my $tmpdir= $mysqld->value('tmpdir');
+ mkpath($tmpdir) unless -d $tmpdir;
+
+ # Write start of testcase to log file
+ mark_log($mysqld->value('#log-error'), $tinfo);
+
+ # Run <tname>-master.sh
+ if ($mysqld->option('#!run-master-sh') and
+ run_sh_script($tinfo->{master_sh}) )
+ {
+ $tinfo->{'comment'}= "Failed to execute '$tinfo->{master_sh}'";
+ return 1;
+ }
+
+ # Run <tname>-slave.sh
+ if ($mysqld->option('#!run-slave-sh') and
+ run_sh_script($tinfo->{slave_sh}))
+ {
+ $tinfo->{'comment'}= "Failed to execute '$tinfo->{slave_sh}'";
+ return 1;
+ }
+
+ if (!$opt_embedded_server)
+ {
+ my $extra_opts= get_extra_opts($mysqld, $tinfo);
+ mysqld_start($mysqld,$extra_opts);
+
+ # Save this test case information, so next can examine it
+ $mysqld->{'started_tinfo'}= $tinfo;
+ }
+}
+
+sub mysql_server_wait {
+ my ($mysqld) = @_;
+
+ return not sleep_until_file_created($mysqld->value('pid-file'),
+ $opt_start_timeout,
+ $mysqld->{'proc'});
+}
+
sub create_config_file_for_extern {
my %opts=
(
@@ -2948,7 +3018,7 @@ sub mysql_install_db {
mtr_add_arg($args, "--loose-skip-innodb");
mtr_add_arg($args, "--loose-skip-pbxt");
mtr_add_arg($args, "--loose-skip-ndbcluster");
- mtr_add_arg($args, "--loose-skip-maria");
+ mtr_add_arg($args, "--loose-skip-aria");
mtr_add_arg($args, "--disable-sync-frm");
mtr_add_arg($args, "--loose-disable-debug");
mtr_add_arg($args, "--tmpdir=%s", "$opt_vardir/tmp/");
@@ -2975,7 +3045,7 @@ sub mysql_install_db {
# Setup args for bootstrap.test
#
#mtr_init_args(\$cmd_args);
- #mtr_add_arg($cmd_args, "--loose-skip-maria")
+ #mtr_add_arg($cmd_args, "--loose-skip-aria")
# ----------------------------------------------------------------------
# export MYSQLD_BOOTSTRAP_CMD variable containing <path>/mysqld <args>
@@ -3489,9 +3559,83 @@ sub restart_forced_by_test
# Return timezone value of tinfo or default value
sub timezone {
my ($tinfo)= @_;
- return $tinfo->{timezone} || "DEFAULT";
+ local $_ = $tinfo->{timezone};
+ return 'DEFAULT' unless defined $_;
+ no warnings 'uninitialized';
+ s/\$\{(\w+)\}/$ENV{$1}/ge;
+ s/\$(\w+)/$ENV{$1}/ge;
+ $_;
}
+sub mycnf_create {
+ my ($config) = @_;
+ my $res;
+
+ foreach my $group ($config->groups()) {
+ $res .= "[$group->{name}]\n";
+
+ foreach my $option ($group->options()) {
+ $res .= $option->name();
+ my $value= $option->value();
+ if (defined $value) {
+ $res .= "=$value";
+ }
+ $res .= "\n";
+ }
+ $res .= "\n";
+ }
+ $res;
+}
+
+sub config_files($) {
+ my ($tinfo) = @_;
+ (
+ 'my.cnf' => \&mycnf_create,
+ $suites{$tinfo->{suite}}->config_files()
+ );
+}
+
+sub _like { return $config ? $config->like($_[0]) : (); }
+sub mysqlds { return _like('mysqld\.'); }
+sub ndbds { return _like('cluster_config\.ndbd\.');}
+sub ndb_mgmds { return _like('cluster_config\.ndb_mgmd\.'); }
+
+sub fix_servers($) {
+ my ($tinfo) = @_;
+ return () unless $config;
+ my %servers = (
+ qr/mysqld\./ => {
+ SORT => 300,
+ START => \&mysql_server_start,
+ WAIT => \&mysql_server_wait,
+ },
+ qr/mysql_cluster\./ => {
+ SORT => 200,
+ START => \&ndbcluster_start,
+ WAIT => \&ndbcluster_wait_started,
+ },
+ qr/cluster_config\.ndb_mgmd\./ => {
+ SORT => 210,
+ START => undef,
+ },
+ qr/cluster_config\.ndbd\./ => {
+ SORT => 220,
+ START => undef,
+ },
+ $suites{$tinfo->{suite}}->servers()
+ );
+ for ($config->groups()) {
+ while (my ($re,$prop) = each %servers) {
+ @$_{keys %$prop} = values %$prop if $_->{name} =~ /^$re/;
+ }
+ }
+}
+
+sub all_servers {
+ return unless $config;
+ ( sort { $a->{SORT} <=> $b->{SORT} }
+ grep { defined $_->{SORT} } $config->groups() );
+}
# Storage for changed environment variables
my %old_env;
@@ -3534,7 +3678,7 @@ sub run_testcase ($$) {
if ( @restart != 0) {
# Remember that we restarted for this test case (count restarts)
$tinfo->{'restarted'}= 1;
- stop_servers(@restart );
+ stop_servers(reverse @restart);
if ($opt_warnings) {
check_warnings_post_shutdown($server_socket);
}
@@ -3570,7 +3714,6 @@ sub run_testcase ($$) {
vardir => $opt_vardir,
tmpdir => $opt_tmpdir,
baseport => $baseport,
- #hosts => [ 'host1', 'host2' ],
user => $opt_user,
password => '',
ssl => $opt_ssl_supported,
@@ -3578,8 +3721,16 @@ sub run_testcase ($$) {
}
);
- # Write the new my.cnf
- $config->save($path_config_file);
+ fix_servers($tinfo);
+
+ # Write config files:
+ my %config_files = config_files($tinfo);
+ while (my ($file, $generate) = each %config_files) {
+ my ($path) = "$opt_vardir/$file";
+ open (F, '>', $path) or die "Could not open '$path': $!";
+ print F &$generate($config);
+ close F;
+ }
# Remember current config so a restart can occur when a test need
# to use a different one
@@ -3722,7 +3873,7 @@ sub run_testcase ($$) {
if ($opt_warnings) {
# Checking error logs for warnings, so need to stop server
# gracefully so that memory leaks etc. can be properly detected.
- stop_servers(all_servers());
+ stop_servers(reverse all_servers());
check_warnings_post_shutdown($server_socket);
# Even if we got warnings here, we should not fail this
# particular test, as the warnings may be caused by an earlier
@@ -3880,7 +4031,8 @@ sub run_testcase ($$) {
# valuable debugging information even if there is no test failure recorded.
sub _preserve_error_log_names {
my ($mysqld)= @_;
- my $error_log_file= $mysqld->value('#log-error');
+ my $error_log_file= $mysqld->if_exist('#log-error');
+ return (undef, undef) unless $error_log_file;
my $error_log_dir= dirname($error_log_file);
my $save_name= $error_log_dir ."/../". $mysqld->name() .".error.log";
return ($error_log_file, $save_name);
@@ -3889,14 +4041,14 @@ sub _preserve_error_log_names {
sub preserve_error_log {
my ($mysqld)= @_;
my ($error_log_file, $save_name)= _preserve_error_log_names($mysqld);
- my $res= rename($error_log_file, $save_name);
+ rename($error_log_file, $save_name) if $save_name;
# Ignore any errors, as it's just a best-effort to keep the log if possible.
}
sub restore_error_log {
my ($mysqld)= @_;
my ($error_log_file, $save_name)= _preserve_error_log_names($mysqld);
- my $res= rename($save_name, $error_log_file);
+ rename($save_name, $error_log_file) if $save_name;
}
# Keep track of last position in mysqld error log where we scanned for
@@ -3940,6 +4092,8 @@ sub pre_write_errorlog {
sub extract_server_log ($$) {
my ($error_log, $tname) = @_;
+
+ return unless $error_log;
# Open the servers .err log file and read all lines
# belonging to current test into @lines
@@ -3982,9 +4136,9 @@ sub get_log_from_proc ($$) {
my ($proc, $name)= @_;
my $srv_log= "";
- foreach my $mysqld (mysqlds()) {
+ foreach my $mysqld (all_servers()) {
if ($mysqld->{proc} eq $proc) {
- my @srv_lines= extract_server_log($mysqld->value('#log-error'), $name);
+ my @srv_lines= extract_server_log($mysqld->if_exist('#log-error'), $name);
$srv_log= "\nServer log from this test:\n" . join ("", @srv_lines);
last;
}
@@ -4063,15 +4217,19 @@ sub extract_warning_lines ($) {
my @antipatterns =
(
qr/error .*connecting to master/,
+ qr/Plugin 'ndbcluster' will be forced to shutdown/,
qr/InnoDB: Error: in ALTER TABLE `test`.`t[12]`/,
qr/InnoDB: Error: table `test`.`t[12]` does not exist in the InnoDB internal/,
qr/Slave: Unknown table 't1' Error_code: 1051/,
qr/Slave SQL:.*(Error_code: [[:digit:]]+|Query:.*)/,
qr/slave SQL thread aborted/,
- qr/unknown option '--loose-/,
- qr/unknown variable 'loose-/,
+ qr/unknown option '--loose[-_]/,
+ qr/unknown variable 'loose[-_]/,
+ qr/Invalid .*old.* table or database name/,
qr/Now setting lower_case_table_names to [02]/,
qr/Setting lower_case_table_names=2/,
+ qr/You have forced lower_case_table_names to 0/,
+ qr/Plugin 'ndbcluster' will be forced to shutdow/,
qr/deprecated/,
qr/Slave SQL thread retried transaction/,
qr/Slave \(additional info\)/,
@@ -4088,7 +4246,9 @@ sub extract_warning_lines ($) {
qr/Slave: Can't drop database.* database doesn't exist/,
qr/Slave: Operation DROP USER failed for 'create_rout_db'/,
qr|Checking table: '\./mtr/test_suppressions'|,
- qr|mysqld: Table '\./mtr/test_suppressions' is marked as crashed and should be repaired|
+ qr|Table \./test/bug53592 has a primary key in InnoDB data dictionary, but not in MySQL|,
+ qr|mysqld: Table '\./mtr/test_suppressions' is marked as crashed and should be repaired|,
+ qr|InnoDB: Error: table 'test/bug39438'|,
);
my $matched_lines= [];
@@ -4379,29 +4539,18 @@ sub clean_dir {
sub clean_datadir {
-
mtr_verbose("Cleaning datadirs...");
if (started(all_servers()) != 0){
mtr_error("Trying to clean datadir before all servers stopped");
}
- foreach my $cluster ( clusters() )
+ for (all_servers())
{
- my $cluster_dir= "$opt_vardir/".$cluster->{name};
- mtr_verbose(" - removing '$cluster_dir'");
- rmtree($cluster_dir);
-
- }
-
- foreach my $mysqld ( mysqlds() )
- {
- my $mysqld_dir= dirname($mysqld->value('datadir'));
- preserve_error_log($mysqld);
- if (-d $mysqld_dir ) {
- mtr_verbose(" - removing '$mysqld_dir'");
- rmtree($mysqld_dir);
- }
+ preserve_error_log($_); # or at least, try to
+ my $dir= "$opt_vardir/".$_->{name};
+ mtr_verbose(" - removing '$dir'");
+ rmtree($dir);
}
# Remove all files in tmp and var/tmp
@@ -4424,17 +4573,6 @@ sub save_datadir_after_failure($$) {
}
-sub remove_ndbfs_from_ndbd_datadir {
- my ($ndbd_datadir)= @_;
- # Remove the ndb_*_fs directory from ndbd.X/ dir
- foreach my $ndbfs_dir ( glob("$ndbd_datadir/ndb_*_fs") )
- {
- next unless -d $ndbfs_dir; # Skip if not a directory
- rmtree($ndbfs_dir);
- }
-}
-
-
sub after_failure ($) {
my ($tinfo)= @_;
@@ -4451,31 +4589,18 @@ sub after_failure ($) {
mkpath($save_dir) if ! -d $save_dir;
- # Save the used my.cnf file
- copy($path_config_file, $save_dir);
+ # Save the used config files
+ my %config_files = config_files($tinfo);
+ while (my ($file, $generate) = each %config_files) {
+ copy("$opt_vardir/$file", $save_dir);
+ }
# Copy the tmp dir
copytree("$opt_vardir/tmp/", "$save_dir/tmp/");
- if ( clusters() ) {
- foreach my $cluster ( clusters() ) {
- my $cluster_dir= "$opt_vardir/".$cluster->{name};
-
- # Remove the fileystem of each ndbd
- foreach my $ndbd ( in_cluster($cluster, ndbds()) )
- {
- my $ndbd_datadir= $ndbd->value("DataDir");
- remove_ndbfs_from_ndbd_datadir($ndbd_datadir);
- }
-
- save_datadir_after_failure($cluster_dir, $save_dir);
- }
- }
- else {
- foreach my $mysqld ( mysqlds() ) {
- my $data_dir= $mysqld->value('datadir');
- save_datadir_after_failure(dirname($data_dir), $save_dir);
- }
+ foreach (all_servers()) {
+ my $dir= "$opt_vardir/".$_->{name};
+ save_datadir_after_failure($dir, $save_dir);
}
}
@@ -4574,7 +4699,7 @@ sub mysqld_stop {
name => "mysqladmin shutdown ".$mysqld->name(),
path => $exe_mysqladmin,
args => \$args,
- error => "/dev/null",
+ error => "$opt_vardir/log/mysqladmin.err",
);
}
@@ -4613,8 +4738,8 @@ sub mysqld_arguments ($$$) {
mtr_add_arg($args, "%s--log-output=table,file");
}
- # Check if "extra_opt" contains skip-log-bin
- my $skip_binlog= grep(/^(--|--loose-)skip-log-bin/, @$extra_opts);
+ # Check if "extra_opt" contains --log-bin
+ my $skip_binlog= not grep /^--(loose-)?log-bin/, @$extra_opts;
# Indicate to mysqld it will be debugged in debugger
if ( $glob_debugger )
@@ -4679,6 +4804,10 @@ sub mysqld_start ($$) {
{
valgrind_arguments($args, \$exe);
}
+ if ( $opt_strace)
+ {
+ strace_arguments($args, \$exe, $mysqld->name());
+ }
mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld'));
mysqld_arguments($args,$mysqld,$extra_opts);
@@ -4866,8 +4995,7 @@ sub server_need_restart {
return 1;
}
- my $is_mysqld= grep ($server eq $_, mysqlds());
- if ($is_mysqld)
+ if ($server->name() =~ /^mysqld\./)
{
# Check that running process was started with same options
@@ -4919,17 +5047,9 @@ sub servers_need_restart($) {
-#
-# Return list of specific servers
-# - there is no servers in an empty config
-#
-sub _like { return $config ? $config->like($_[0]) : (); }
-sub mysqlds { return _like('mysqld.'); }
-sub ndbds { return _like('cluster_config.ndbd.');}
-sub ndb_mgmds { return _like('cluster_config.ndb_mgmd.'); }
-sub clusters { return _like('mysql_cluster.'); }
-sub all_servers { return ( mysqlds(), ndb_mgmds(), ndbds() ); }
+############################################
+############################################
#
# Filter a list of servers and return only those that are part
@@ -4951,18 +5071,6 @@ sub started { return grep(defined $_, map($_->{proc}, @_)); }
sub stopped { return grep(!defined $_, map($_->{proc}, @_)); }
-sub envsubst {
- my $string= shift;
-
- if ( ! defined $ENV{$string} )
- {
- mtr_error(".opt file references '$string' which is not set");
- }
-
- return $ENV{$string};
-}
-
-
sub get_extra_opts {
my ($mysqld, $tinfo)= @_;
@@ -4973,8 +5081,9 @@ sub get_extra_opts {
# Expand environment variables
foreach my $opt ( @$opts )
{
- $opt =~ s/\$\{(\w+)\}/envsubst($1)/ge;
- $opt =~ s/\$(\w+)/envsubst($1)/ge;
+ no warnings 'uninitialized';
+ $opt =~ s/\$\{(\w+)\}/$ENV{$1}/ge;
+ $opt =~ s/\$(\w+)/$ENV{$1}/ge;
}
return $opts;
}
@@ -4983,28 +5092,10 @@ sub get_extra_opts {
sub stop_servers($$) {
my (@servers)= @_;
- if ( join('|', @servers) eq join('|', all_servers()) )
- {
- # All servers are going down, use some kind of order to
- # avoid too many warnings in the log files
-
- mtr_report("Restarting all servers");
-
- # mysqld processes
- My::SafeProcess::shutdown( $opt_shutdown_timeout, started(mysqlds()) );
-
- # cluster processes
- My::SafeProcess::shutdown( $opt_shutdown_timeout,
- started(ndbds(), ndb_mgmds()) );
- }
- else
- {
- mtr_report("Restarting ", started(@servers));
+ mtr_report("Restarting ", started(@servers));
- # Stop only some servers
- My::SafeProcess::shutdown( $opt_shutdown_timeout,
- started(@servers) );
- }
+ My::SafeProcess::shutdown($opt_shutdown_timeout,
+ started(@servers));
foreach my $server (@servers)
{
@@ -5031,145 +5122,14 @@ sub stop_servers($$) {
sub start_servers($) {
my ($tinfo)= @_;
- # Start clusters
- foreach my $cluster ( clusters() )
- {
- ndbcluster_start($cluster);
+ for (all_servers()) {
+ $_->{START}->($_, $tinfo) if $_->{START};
}
- # Start mysqlds
- foreach my $mysqld ( mysqlds() )
- {
- if ( $mysqld->{proc} )
- {
- # Already started
-
- # Write start of testcase to log file
- mark_log($mysqld->value('#log-error'), $tinfo);
-
- next;
- }
-
- my $datadir= $mysqld->value('datadir');
- if ($opt_start_dirty)
- {
- # Don't delete anything if starting dirty
- ;
- }
- else
- {
-
- my @options= ('log-bin', 'relay-log');
- foreach my $option_name ( @options ) {
- next unless $mysqld->option($option_name);
-
- my $file_name= $mysqld->value($option_name);
- next unless
- defined $file_name and
- -e $file_name;
-
- mtr_debug(" -removing '$file_name'");
- unlink($file_name) or die ("unable to remove file '$file_name'");
- }
-
- if (-d $datadir ) {
- preserve_error_log($mysqld);
- mtr_verbose(" - removing '$datadir'");
- rmtree($datadir);
- }
- }
-
- my $mysqld_basedir= $mysqld->value('basedir');
- if ( $basedir eq $mysqld_basedir )
- {
- if (! $opt_start_dirty) # If dirty, keep possibly grown system db
- {
- # Copy datadir from installed system db
- for my $path ( "$opt_vardir", "$opt_vardir/..") {
- my $install_db= "$path/install.db";
- copytree($install_db, $datadir)
- if -d $install_db;
- }
- mtr_error("Failed to copy system db to '$datadir'")
- unless -d $datadir;
- }
- }
- else
- {
- mysql_install_db($mysqld); # For versional testing
-
- mtr_error("Failed to install system db to '$datadir'")
- unless -d $datadir;
-
- }
- restore_error_log($mysqld);
-
- # Create the servers tmpdir
- my $tmpdir= $mysqld->value('tmpdir');
- mkpath($tmpdir) unless -d $tmpdir;
-
- # Write start of testcase to log file
- mark_log($mysqld->value('#log-error'), $tinfo);
-
- # Run <tname>-master.sh
- if ($mysqld->option('#!run-master-sh') and
- run_sh_script($tinfo->{master_sh}) )
- {
- $tinfo->{'comment'}= "Failed to execute '$tinfo->{master_sh}'";
- return 1;
- }
-
- # Run <tname>-slave.sh
- if ($mysqld->option('#!run-slave-sh') and
- run_sh_script($tinfo->{slave_sh}))
- {
- $tinfo->{'comment'}= "Failed to execute '$tinfo->{slave_sh}'";
- return 1;
- }
-
- if (!$opt_embedded_server)
- {
- my $extra_opts= get_extra_opts($mysqld, $tinfo);
- mysqld_start($mysqld,$extra_opts);
-
- # Save this test case information, so next can examine it
- $mysqld->{'started_tinfo'}= $tinfo;
- }
-
- }
-
- # Wait for clusters to start
- foreach my $cluster ( clusters() )
- {
- if (ndbcluster_wait_started($cluster, ""))
- {
- # failed to start
- $tinfo->{'comment'}= "Start of '".$cluster->name()."' cluster failed";
- return 1;
- }
- }
-
- # Wait for mysqlds to start
- foreach my $mysqld ( mysqlds() )
- {
- next if !started($mysqld);
-
- if (sleep_until_file_created($mysqld->value('pid-file'),
- $opt_start_timeout,
- $mysqld->{'proc'}) == 0) {
- $tinfo->{comment}=
- "Failed to start ".$mysqld->name();
-
- my $logfile= $mysqld->value('#log-error');
- if ( defined $logfile and -f $logfile )
- {
- my @srv_lines= extract_server_log($logfile, $tinfo->{name});
- $tinfo->{logfile}= "Server log is:\n" . join ("", @srv_lines);
- }
- else
- {
- $tinfo->{logfile}= "Could not open server logfile: '$logfile'";
- }
+ for (all_servers()) {
+ next unless $_->{WAIT} and started($_);
+ if ($_->{WAIT}->($_)) {
+ $tinfo->{comment}= "Failed to start ".$_->name();
return 1;
}
}
@@ -5602,6 +5562,33 @@ sub valgrind_arguments {
}
}
+#
+# Modify the exe and args so that program is run in strace
+#
+sub strace_arguments {
+ my $args= shift;
+ my $exe= shift;
+ my $mysqld_name= shift;
+
+ mtr_add_arg($args, "-f");
+ mtr_add_arg($args, "-o%s/var/log/%s.strace", $glob_mysql_test_dir, $mysqld_name);
+
+ # Add strace options, can be overriden by user
+ mtr_add_arg($args, '%s', $_) for (@strace_args);
+
+ mtr_add_arg($args, $$exe);
+
+ $$exe= "strace";
+
+ if ($exe_libtool)
+ {
+ # Add "libtool --mode-execute" before the test to execute
+ # if running in valgrind(to avoid valgrinding bash)
+ unshift(@$args, "--mode=execute", $$exe);
+ $$exe= $exe_libtool;
+ }
+}
+
#
# Usage
@@ -5729,9 +5716,6 @@ Options for debugging the product
test(s)
manual-ddd Let user manually start mysqld in ddd, before running
test(s)
- strace-client=[path] Create strace output for mysqltest client, optionally
- specifying name and path to the trace program to use.
- Example: $0 --strace-client=ktrace
max-save-core Limit the number of core files saved (to avoid filling
up disks for heavily crashing server). Defaults to
$opt_max_save_core, set to 0 for no limit. Set
@@ -5759,6 +5743,15 @@ Options for valgrind
valgrind-path=<EXE> Path to the valgrind executable
callgrind Instruct valgrind to use callgrind
+Options for strace
+
+ strace Run the "mysqld" executables using strace. Default
+ options are -f -o var/log/'mysqld-name'.strace
+ strace-option=ARGS Option to give strace, replaces default option(s),
+ strace-client=[path] Create strace output for mysqltest client, optionally
+ specifying name and path to the trace program to use.
+ Example: $0 --strace-client=ktrace
+
Misc options
user=USER User for connecting to mysqld(default: $opt_user)
comment=STR Write STR to the output
@@ -5834,3 +5827,25 @@ sub list_options ($) {
exit(1);
}
+
+sub time_format($) {
+ sprintf '%d:%02d:%02d', $_[0]/3600, ($_[0]/60)%60, $_[0]%60;
+}
+
+my $num_tests;
+
+sub xterm_stat {
+ if (-t STDOUT and defined $ENV{TERM} and $ENV{TERM} =~ /xterm/) {
+ my ($left) = @_;
+
+ # 2.5 -> best by test
+ $num_tests = $left + 2.5 unless $num_tests;
+
+ my $done = $num_tests - $left;
+ my $spent = time - $^T;
+
+ printf "\e];mtr: spent %s on %d tests. %s (%d tests) left\a",
+ time_format($spent), $done,
+ time_format($spent/$done * $left), $left;
+ }
+}
diff --git a/mysql-test/r/alter_table-big.result b/mysql-test/r/alter_table-big.result
index 9761754a02f..d6b936bd5d7 100644
--- a/mysql-test/r/alter_table-big.result
+++ b/mysql-test/r/alter_table-big.result
@@ -12,11 +12,11 @@ alter table t1 enable keys;;
insert into t2 values (1);
insert into t1 values (1, 1, 1);
set session debug="-d,sleep_alter_enable_indexes";
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; insert into t2 values (1)
-master-bin.000001 # Query 1 # use `test`; alter table t1 enable keys
-master-bin.000001 # Query 1 # use `test`; insert into t1 values (1, 1, 1)
+master-bin.000001 # Query # # use `test`; insert into t2 values (1)
+master-bin.000001 # Query # # use `test`; alter table t1 enable keys
+master-bin.000001 # Query # # use `test`; insert into t1 values (1, 1, 1)
drop tables t1, t2;
End of 5.0 tests
drop table if exists t1, t2, t3;
@@ -41,17 +41,17 @@ alter table t2 change c vc varchar(100) default 'Test2', rename to t1;;
rename table t1 to t3;
drop table t3;
set session debug="-d,sleep_alter_before_main_binlog";
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; alter table t1 change i c char(10) default 'Test1'
-master-bin.000001 # Query 1 # use `test`; insert into t1 values ()
-master-bin.000001 # Query 1 # use `test`; alter table t1 change c vc varchar(100) default 'Test2'
-master-bin.000001 # Query 1 # use `test`; rename table t1 to t2
-master-bin.000001 # Query 1 # use `test`; drop table t2
-master-bin.000001 # Query 1 # use `test`; create table t1 (i int)
-master-bin.000001 # Query 1 # use `test`; alter table t1 change i c char(10) default 'Test3', rename to t2
-master-bin.000001 # Query 1 # use `test`; insert into t2 values ()
-master-bin.000001 # Query 1 # use `test`; alter table t2 change c vc varchar(100) default 'Test2', rename to t1
-master-bin.000001 # Query 1 # use `test`; rename table t1 to t3
-master-bin.000001 # Query 1 # use `test`; drop table t3
+master-bin.000001 # Query # # use `test`; alter table t1 change i c char(10) default 'Test1'
+master-bin.000001 # Query # # use `test`; insert into t1 values ()
+master-bin.000001 # Query # # use `test`; alter table t1 change c vc varchar(100) default 'Test2'
+master-bin.000001 # Query # # use `test`; rename table t1 to t2
+master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t1 (i int)
+master-bin.000001 # Query # # use `test`; alter table t1 change i c char(10) default 'Test3', rename to t2
+master-bin.000001 # Query # # use `test`; insert into t2 values ()
+master-bin.000001 # Query # # use `test`; alter table t2 change c vc varchar(100) default 'Test2', rename to t1
+master-bin.000001 # Query # # use `test`; rename table t1 to t3
+master-bin.000001 # Query # # use `test`; drop table t3
End of 5.1 tests
diff --git a/mysql-test/r/alter_table_trans.result b/mysql-test/r/alter_table_trans.result
new file mode 100644
index 00000000000..3dd5c00d3d8
--- /dev/null
+++ b/mysql-test/r/alter_table_trans.result
@@ -0,0 +1,6 @@
+drop table if exists t1,t2;
+CREATE TABLE t1 (a INT, INDEX(a)) engine=innodb;
+ALTER TABLE t1 RENAME TO t2, DISABLE KEYS;
+Warnings:
+Note 1031 Table storage engine for 't1' doesn't have this option
+DROP TABLE t2;
diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result
index f90bcb521e1..5a731e6476c 100644
--- a/mysql-test/r/archive.result
+++ b/mysql-test/r/archive.result
@@ -12725,8 +12725,7 @@ INSERT INTO t1 (col1, col2) VALUES (1, "value");
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
REPAIR TABLE t1;
Table Op Msg_type Msg_text
-test.t1 repair Error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
-test.t1 repair error Corrupt
+test.t1 repair status OK
DROP TABLE t1;
#
# BUG#48757 - missing .ARZ file causes server crash
@@ -12756,3 +12755,12 @@ a
1
2
DROP TABLE t1;
+select * from t1;
+ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
+repair table t1;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+select sum(length(a)),sum(b) from t1;
+sum(length(a)) sum(b)
+8670 187
+drop table t1;
diff --git a/mysql-test/r/bug39022.result b/mysql-test/r/bug39022.result
index 5963709aa2a..75899ed686b 100644
--- a/mysql-test/r/bug39022.result
+++ b/mysql-test/r/bug39022.result
@@ -12,7 +12,7 @@ INSERT INTO t2 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
START TRANSACTION;
# in thread2
REPLACE INTO t2 VALUES (-17);
-SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
+SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE;
d
# in thread1
REPLACE INTO t1(a,b) VALUES (67,20);
@@ -21,10 +21,10 @@ COMMIT;
START TRANSACTION;
REPLACE INTO t1(a,b) VALUES (65,-50);
REPLACE INTO t2 VALUES (-91);
-SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
+SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE;
# in thread1
# should not crash
-SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
+SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
# in thread2
d
diff --git a/mysql-test/r/commit_1innodb.result b/mysql-test/r/commit_1innodb.result
index 51c4ac3002c..1f0b2c8019b 100644
--- a/mysql-test/r/commit_1innodb.result
+++ b/mysql-test/r/commit_1innodb.result
@@ -841,11 +841,11 @@ call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
alter table t3 rename t4;
-call p_verify_status_increment(2, 2, 2, 2);
+call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
rename table t4 to t3;
-call p_verify_status_increment(2, 2, 2, 2);
+call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
truncate table t3;
diff --git a/mysql-test/r/create-big.result b/mysql-test/r/create-big.result
index eb57bf59084..d062b59a008 100644
--- a/mysql-test/r/create-big.result
+++ b/mysql-test/r/create-big.result
@@ -175,12 +175,12 @@ t2 CREATE TABLE `t2` (
`i` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t2;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; insert into t1 values (1)
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; drop table t2
create table t1 (i int);
set session debug="-d,sleep_create_like_before_check_if_exists:+d,sleep_create_like_before_copy";
create table t2 like t1;;
@@ -197,11 +197,11 @@ reset master;
create table t2 like t1;;
drop table t1;
drop table t2;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; drop table t2
create table t1 (i int);
set session debug="-d,sleep_create_like_before_copy:+d,sleep_create_like_before_ha_create";
reset master;
@@ -213,16 +213,16 @@ drop table t2;
create table t2 like t1;;
drop table t1;
drop table t2;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; insert into t2 values (1)
-master-bin.000001 # Query 1 # use `test`; drop table t2
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; drop table t2
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; insert into t2 values (1)
+master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; drop table t2
create table t1 (i int);
set session debug="-d,sleep_create_like_before_ha_create:+d,sleep_create_like_before_binlogging";
reset master;
@@ -234,14 +234,14 @@ drop table t2;
create table t2 like t1;;
drop table t1;
drop table t2;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; insert into t2 values (1)
-master-bin.000001 # Query 1 # use `test`; drop table t2
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; drop table t2
-master-bin.000001 # Query 1 # use `test`; create table t2 like t1
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; insert into t2 values (1)
+master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; drop table t2
set session debug="-d,sleep_create_like_before_binlogging";
diff --git a/mysql-test/r/ctype_cp932_binlog_stm.result b/mysql-test/r/ctype_cp932_binlog_stm.result
index 044885d1ea7..8854a835e25 100644
--- a/mysql-test/r/ctype_cp932_binlog_stm.result
+++ b/mysql-test/r/ctype_cp932_binlog_stm.result
@@ -29,20 +29,20 @@ HEX(s1) HEX(s2) d
466F6F2773206120426172 ED40ED41ED42 47.93
DROP PROCEDURE bug18293|
DROP TABLE t4|
-SHOW BINLOG EVENTS FROM 370|
+show binlog events from <binlog_start>|
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 370 Query 1 536 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
+master-bin.000001 # Query # # use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))
-master-bin.000001 536 Query 1 785 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `bug18293`(IN ins1 CHAR(50),
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `bug18293`(IN ins1 CHAR(50),
IN ins2 CHAR(50) CHARACTER SET cp932,
IN ind DECIMAL(10,2))
BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind);
END
-master-bin.000001 785 Query 1 1049 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
-master-bin.000001 1049 Query 1 1138 use `test`; DROP PROCEDURE bug18293
-master-bin.000001 1138 Query 1 1217 use `test`; DROP TABLE t4
+master-bin.000001 # Query # # use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE bug18293
+master-bin.000001 # Query # # use `test`; DROP TABLE t4
End of 5.0 tests
SHOW BINLOG EVENTS FROM 365;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result
index 77b2071494d..36025cbfb35 100644
--- a/mysql-test/r/delete.result
+++ b/mysql-test/r/delete.result
@@ -349,4 +349,13 @@ END |
DELETE IGNORE FROM t1;
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
DROP TABLE t1;
+#
+# Bug #53450: Crash/assertion
+# "virtual int ha_myisam::index_first(uchar*)") at assert.c:81
+#
+CREATE TABLE t1 (a INT, b INT, c INT,
+INDEX(a), INDEX(b), INDEX(c));
+INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
+DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/drop.result b/mysql-test/r/drop.result
index b798b49dd34..602b2d03d80 100644
--- a/mysql-test/r/drop.result
+++ b/mysql-test/r/drop.result
@@ -115,9 +115,14 @@ create table `#mysql50#abc``def` ( id int );
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
ERROR 42000: Incorrect table name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
-create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
-create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
-ERROR 42000: Incorrect table name '#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
+create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1234` (a int);
+create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12345` (a int);
+ERROR 42000: Incorrect table name '#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12345'
+show tables;
+Tables_in_mysqltestbug26703
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1234
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+#mysql50#abc`def
use test;
drop database mysqltestbug26703;
End of 5.1 tests
diff --git a/mysql-test/r/error_simulation.result b/mysql-test/r/error_simulation.result
index 27e51a33112..b6b79cb596b 100644
--- a/mysql-test/r/error_simulation.result
+++ b/mysql-test/r/error_simulation.result
@@ -39,5 +39,49 @@ a
2
DROP TABLE t1;
#
+# Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string
+#
+CREATE TABLE t1(a BLOB);
+SET SESSION debug="+d,bug42064_simulate_oom";
+INSERT INTO t1 VALUES("");
+Got one of the listed errors
+SET SESSION debug=DEFAULT;
+DROP TABLE t1;
+#
+# Bug#41660: Sort-index_merge for non-first join table may require
+# O(#scans) memory
+#
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
+CREATE TABLE t2 (a INT, b INT, filler CHAR(100), KEY(a), KEY(b));
+INSERT INTO t2 SELECT 1000, 1000, 'filler' FROM t1 A, t1 B, t1 C;
+INSERT INTO t2 VALUES (1, 1, 'data');
+# the example query uses LEFT JOIN only for the sake of being able to
+# demonstrate the issue with a very small dataset. (left outer join
+# disables the use of join buffering, so we get the second table
+# re-scanned for every record in the outer table. if we used inner join,
+# we would need to have thousands of records and/or more columns in both
+# tables so that the join buffer is filled and re-scans are triggered).
+SET SESSION debug = '+d,only_one_Unique_may_be_created';
+EXPLAIN
+SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 );
+id select_type table type possible_keys key key_len ref rows Extra
+x x x x x x x x x
+x x x x x x x x x Using sort_union(a,b); Using where
+SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 );
+a a b filler
+0 1 1 data
+1 1 1 data
+2 1 1 data
+3 1 1 data
+4 1 1 data
+5 1 1 data
+6 1 1 data
+7 1 1 data
+8 1 1 data
+9 1 1 data
+SET SESSION debug = DEFAULT;
+DROP TABLE t1, t2;
+#
# End of 5.1 tests
#
diff --git a/mysql-test/r/events_scheduling.result b/mysql-test/r/events_scheduling.result
index 7dfd10a53f8..262caea3d7f 100644
--- a/mysql-test/r/events_scheduling.result
+++ b/mysql-test/r/events_scheduling.result
@@ -82,5 +82,24 @@ DROP TABLE table_1;
DROP TABLE table_2;
DROP TABLE table_3;
DROP TABLE table_4;
+
+Bug #50087 Interval arithmetic for Event_queue_element is not portable.
+
+CREATE TABLE t1(a int);
+CREATE EVENT e1 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW() - INTERVAL 1 MONTH
+ENDS NOW() + INTERVAL 2 MONTH
+ON COMPLETION PRESERVE
+DO
+INSERT INTO t1 VALUES (1);
+CREATE EVENT e2 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW()
+ENDS NOW() + INTERVAL 11 MONTH
+ON COMPLETION PRESERVE
+DO
+INSERT INTO t1 VALUES (1);
+DROP TABLE t1;
+DROP EVENT e1;
+DROP EVENT e2;
DROP DATABASE events_test;
SET GLOBAL event_scheduler=@event_scheduler;
diff --git a/mysql-test/r/exampledb.result b/mysql-test/r/exampledb.result
deleted file mode 100644
index 6eea24e2e1f..00000000000
--- a/mysql-test/r/exampledb.result
+++ /dev/null
@@ -1,8 +0,0 @@
-drop database if exists events_test;
-drop database if exists events_test2;
-drop table if exists t1;
-CREATE TABLE t1 (
-Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
-Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
-) ENGINE=example;
-drop table t1;
diff --git a/mysql-test/r/explain.result b/mysql-test/r/explain.result
index b57da6f99b6..66045ece27d 100644
--- a/mysql-test/r/explain.result
+++ b/mysql-test/r/explain.result
@@ -238,4 +238,17 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
DROP TABLE t1, t2;
+#
+# Bug #48573: difference of index selection between rpm binary and
+# .tar.gz, windows vs linux..
+#
+CREATE TABLE t1(c1 INT, c2 INT, c4 INT, c5 INT, KEY(c2, c5), KEY(c2, c4, c5));
+INSERT INTO t1 VALUES(4, 1, 1, 1);
+INSERT INTO t1 VALUES(3, 1, 1, 1);
+INSERT INTO t1 VALUES(2, 1, 1, 1);
+INSERT INTO t1 VALUES(1, 1, 1, 1);
+EXPLAIN SELECT c1 FROM t1 WHERE c2 = 1 AND c4 = 1 AND c5 = 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref c2,c2_2 c2 10 const,const 3 Using where
+DROP TABLE t1;
End of 5.1 tests.
diff --git a/mysql-test/r/flush_block_commit_notembedded.result b/mysql-test/r/flush_block_commit_notembedded.result
index c7fd7a11877..a81b1ce1e3a 100644
--- a/mysql-test/r/flush_block_commit_notembedded.result
+++ b/mysql-test/r/flush_block_commit_notembedded.result
@@ -7,15 +7,13 @@ SET AUTOCOMMIT=0;
INSERT t1 VALUES (1);
# Switch to connection con2
FLUSH TABLES WITH READ LOCK;
-SHOW MASTER STATUS;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
# Switch to connection con1
COMMIT;
# Switch to connection con2
-SHOW MASTER STATUS;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
UNLOCK TABLES;
# Switch to connection con1
DROP TABLE t1;
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index 766f3b6bfaa..ae48eb1e0ff 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -995,6 +995,7 @@ SELECT 1 FROM
1
1
DROP TABLE t1;
+End of 5.0 tests
#
# Bug #52397: another crash with explain extended and group_concat
#
@@ -1010,4 +1011,22 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
Warnings:
Note 1003 select 1 AS `1` from (select group_concat(`test`.`t1`.`a` order by `test`.`t1`.`a` ASC separator ',') AS `GROUP_CONCAT(t1.a ORDER BY t1.a ASC)` from `test`.`t1` `t2` join `test`.`t1` group by `test`.`t1`.`a`) `d`
DROP TABLE t1;
-End of 5.0 tests
+#
+# Bug #54476: crash when group_concat and 'with rollup' in prepared statements
+#
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1), (2);
+PREPARE stmt FROM "SELECT GROUP_CONCAT(t1.a ORDER BY t1.a) FROM t1 JOIN t1 t2 GROUP BY t1.a WITH ROLLUP";
+EXECUTE stmt;
+GROUP_CONCAT(t1.a ORDER BY t1.a)
+1,1
+2,2
+1,1,2,2
+EXECUTE stmt;
+GROUP_CONCAT(t1.a ORDER BY t1.a)
+1,1
+2,2
+1,1,2,2
+DEALLOCATE PREPARE stmt;
+DROP TABLE t1;
+End of 5.1 tests
diff --git a/mysql-test/r/func_in.result b/mysql-test/r/func_in.result
index 490eeb0640d..3ca4d9c2da5 100644
--- a/mysql-test/r/func_in.result
+++ b/mysql-test/r/func_in.result
@@ -750,4 +750,24 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
DROP TABLE t1;
#
+# Bug#54477: Crash on IN / CASE with NULL arguments
+#
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1), (2);
+SELECT 1 IN (NULL, a) FROM t1;
+1 IN (NULL, a)
+1
+NULL
+SELECT a IN (a, a) FROM t1 GROUP BY a WITH ROLLUP;
+a IN (a, a)
+1
+1
+NULL
+SELECT CASE a WHEN a THEN a END FROM t1 GROUP BY a WITH ROLLUP;
+CASE a WHEN a THEN a END
+1
+2
+NULL
+DROP TABLE t1;
+#
End of 5.1 tests
diff --git a/mysql-test/r/func_isnull.result b/mysql-test/r/func_isnull.result
index 20ddc87ee78..c1f5849c091 100644
--- a/mysql-test/r/func_isnull.result
+++ b/mysql-test/r/func_isnull.result
@@ -5,3 +5,17 @@ flush tables;
select * from t1 where isnull(to_days(mydate));
id mydate
drop table t1;
+#
+# Bug#53933 crash when using uncacheable subquery in the having clause of outer query
+#
+CREATE TABLE t1 (f1 INT);
+INSERT INTO t1 VALUES (0),(0);
+SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2
+FROM t1 GROUP BY f1 HAVING f2 = f2;
+f2
+0
+SELECT RELEASE_LOCK('Bug#53933');
+RELEASE_LOCK('Bug#53933')
+1
+DROP TABLE t1;
+End of 5.0 tests
diff --git a/mysql-test/r/func_like.result b/mysql-test/r/func_like.result
index 9338a76e320..21da211160b 100644
--- a/mysql-test/r/func_like.result
+++ b/mysql-test/r/func_like.result
@@ -169,3 +169,17 @@ select 'andre%' like 'andreÊ%' escape 'Ê';
select _cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê';
_cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê'
1
+End of 4.1 tests
+#
+# Bug #54575: crash when joining tables with unique set column
+#
+CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a));
+CREATE TABLE t2(b INT PRIMARY KEY);
+INSERT INTO t1 VALUES ();
+Warnings:
+Warning 1364 Field 'a' doesn't have a default value
+INSERT INTO t2 VALUES (1), (2), (3);
+SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a;
+1
+DROP TABLE t1, t2;
+End of 5.1 tests
diff --git a/mysql-test/r/func_misc.result b/mysql-test/r/func_misc.result
index 828d4bafc53..2f768140b33 100644
--- a/mysql-test/r/func_misc.result
+++ b/mysql-test/r/func_misc.result
@@ -243,4 +243,19 @@ End of 5.0 tests
select connection_id() > 0;
connection_id() > 0
1
+#
+# Bug #54461: crash with longblob and union or update with subquery
+#
+CREATE TABLE t1 (a INT, b LONGBLOB);
+INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2');
+SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
+LEAST(a, (SELECT b FROM t1 LIMIT 1))
+1
+2
+SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
+GREATEST(a, (SELECT b FROM t1 LIMIT 1))
+2
+3
+1
+DROP TABLE t1;
End of tests
diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result
index f410b26a1fe..b3cab2f409a 100644
--- a/mysql-test/r/grant.result
+++ b/mysql-test/r/grant.result
@@ -1425,7 +1425,7 @@ ERROR 42S02: Table 'db1.../db2/tb2' doesn't exist
SELECT * FROM `../db2`.tb2;
ERROR 42000: SELECT command denied to user 'testbug'@'localhost' for table 'tb2'
SELECT * FROM `#mysql50#/../db2/tb2`;
-ERROR 42S02: Table 'db1.#mysql50#/../db2/tb2' doesn't exist
+ERROR 42000: Incorrect table name '#mysql50#/../db2/tb2'
DROP USER 'testbug'@localhost;
DROP TABLE db2.t1;
DROP DATABASE db1;
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result
index d6f8c2d1e44..cd36e895022 100644
--- a/mysql-test/r/group_by.result
+++ b/mysql-test/r/group_by.result
@@ -1790,4 +1790,76 @@ aa b COUNT( b)
1 10 1
DROP TABLE t1, t2;
#
+# Bug#52051: Aggregate functions incorrectly returns NULL from outer
+# join query
+#
+CREATE TABLE t1 (a INT PRIMARY KEY);
+CREATE TABLE t2 (a INT PRIMARY KEY);
+INSERT INTO t2 VALUES (1), (2);
+EXPLAIN SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
+SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+MIN(t2.a)
+1
+EXPLAIN SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
+SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+MAX(t2.a)
+2
+DROP TABLE t1, t2;
+CREATE TABLE t1 (a int(11) NOT NULL);
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2 (
+key_col int(11) NOT NULL,
+KEY (key_col)
+);
+INSERT INTO t2 VALUES (1),(2);
+select min(t2.key_col) from t1,t2 where t1.a=1;
+min(t2.key_col)
+1
+select min(t2.key_col) from t1,t2 where t1.a > 1000;
+min(t2.key_col)
+NULL
+select min(t2.key_col)+1 from t1,t2 where t1.a> 1000;
+min(t2.key_col)+1
+NULL
+drop table t1,t2;
+#
+# Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results
+#
+CREATE TABLE t1 (a text, b varchar(10));
+INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two');
+EXPLAIN
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+id 1
+select_type SIMPLE
+table t1
+type ALL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows 2
+Extra Using filesort
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+SUBSTRING(a,1,10) LENGTH(a) GROUP_CONCAT(b)
+1111111111 1300 one,two
+EXPLAIN
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+id 1
+select_type SIMPLE
+table t1
+type ALL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows 2
+Extra Using temporary; Using filesort
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+SUBSTRING(a,1,10) LENGTH(a)
+1111111111 1300
+DROP TABLE t1;
# End of 5.1 tests
diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result
index f95188b88b1..471219dd1a0 100644
--- a/mysql-test/r/group_min_max.result
+++ b/mysql-test/r/group_min_max.result
@@ -2767,4 +2767,17 @@ SELECT MIN( a ) FROM t1 WHERE a IS NULL;
MIN( a )
NULL
DROP TABLE t1;
+#
+# Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List<Item>&, Item*) at
+# opt_sum.cc:305
+#
+CREATE TABLE t1 ( a INT, KEY (a) );
+INSERT INTO t1 VALUES (1), (2), (3);
+SELECT MIN( a ) AS min_a
+FROM t1
+WHERE a > 1 AND a IS NULL
+ORDER BY min_a;
+min_a
+NULL
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/handler_myisam.result b/mysql-test/r/handler_myisam.result
index a970e20a2c0..b20b8dbb138 100644
--- a/mysql-test/r/handler_myisam.result
+++ b/mysql-test/r/handler_myisam.result
@@ -769,4 +769,97 @@ a
1
HANDLER t1 CLOSE;
DROP TABLE t1;
+#
+# Bug #54007: assert in ha_myisam::index_next , HANDLER
+#
+CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+a b
+HANDLER t1 READ `PRIMARY` NEXT;
+a b
+HANDLER t1 READ ab NEXT;
+a b
+HANDLER t1 READ b NEXT;
+a b
+HANDLER t1 READ NEXT;
+a b
+HANDLER t1 CLOSE;
+INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+a b
+2 20
+HANDLER t1 READ NEXT;
+a b
+1 10
+HANDLER t1 READ `PRIMARY` NEXT;
+a b
+1 10
+HANDLER t1 READ `PRIMARY` NEXT;
+a b
+2 20
+HANDLER t1 READ ab NEXT;
+a b
+1 10
+HANDLER t1 READ ab NEXT;
+a b
+2 20
+HANDLER t1 READ b NEXT;
+a b
+1 10
+HANDLER t1 READ b NEXT;
+a b
+2 20
+HANDLER t1 READ b NEXT;
+a b
+3 30
+HANDLER t1 READ b NEXT;
+a b
+4 40
+HANDLER t1 READ b NEXT;
+a b
+HANDLER t1 READ NEXT;
+a b
+4 40
+HANDLER t1 READ NEXT;
+a b
+3 30
+HANDLER t1 READ NEXT;
+a b
+HANDLER t1 CLOSE;
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+a b
+2 20
+HANDLER t1 READ `PRIMARY` PREV;
+a b
+4 40
+HANDLER t1 READ `PRIMARY` PREV;
+a b
+3 30
+HANDLER t1 READ b PREV;
+a b
+4 40
+HANDLER t1 READ b PREV;
+a b
+3 30
+HANDLER t1 CLOSE;
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+a b
+2 20
+HANDLER t1 READ `PRIMARY` PREV LIMIT 3;
+a b
+4 40
+3 30
+2 20
+HANDLER t1 READ b NEXT LIMIT 5;
+a b
+1 10
+2 20
+3 30
+4 40
+HANDLER t1 CLOSE;
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/having.result b/mysql-test/r/having.result
index 19c23df1e84..cd1b4ae0218 100644
--- a/mysql-test/r/having.result
+++ b/mysql-test/r/having.result
@@ -470,10 +470,9 @@ WHERE table2.f1 = 2
GROUP BY table1.f1, table2.f2
HAVING (table2.f2 = 8 AND table1.f1 >= 6);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE table2 const PRIMARY PRIMARY 4 const 1 100.00 Using filesort
-1 SIMPLE table1 ALL NULL NULL NULL NULL 4 100.00 Using where
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables
Warnings:
-Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having (('7' = 8) and (`test`.`table1`.`f1` >= 6))
+Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having 0
EXPLAIN EXTENDED
SELECT table1.f1, table2.f2
FROM t1 AS table1
@@ -482,10 +481,9 @@ WHERE table2.f1 = 2
GROUP BY table1.f1, table2.f2
HAVING (table2.f2 = 8);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE table2 const PRIMARY PRIMARY 4 const 1 100.00 Using filesort
-1 SIMPLE table1 ALL NULL NULL NULL NULL 4 100.00 Using where
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables
Warnings:
-Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having ('7' = 8)
+Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having 0
DROP TABLE t1;
#
# Bug#52336 Segfault / crash in 5.1 copy_fields (param=0x9872980) at sql_select.cc:15355
@@ -532,3 +530,19 @@ MAX(t2.f2)
NULL
DROP TABLE t1,t2;
End of 5.0 tests
+#
+# Bug#54416 MAX from JOIN with HAVING returning NULL with 5.1 and Empty set
+#
+CREATE TABLE t1 (f1 INT(11), f2 VARCHAR(1), PRIMARY KEY (f1));
+INSERT INTO t1 VALUES (1,'f');
+CREATE TABLE t2 (f1 INT(11), f2 VARCHAR(1));
+INSERT INTO t2 VALUES (2,'m');
+INSERT INTO t2 VALUES (3,'m');
+INSERT INTO t2 VALUES (11,NULL);
+INSERT INTO t2 VALUES (12,'k');
+SELECT MAX(t1.f1) field1
+FROM t1 JOIN t2 ON t2.f2 LIKE 'x'
+HAVING field1 < 7;
+field1
+DROP TABLE t1,t2;
+End of 5.1 tests
diff --git a/mysql-test/r/index_merge_innodb.result b/mysql-test/r/index_merge_innodb.result
index ff00654aed8..bd49af16105 100644
--- a/mysql-test/r/index_merge_innodb.result
+++ b/mysql-test/r/index_merge_innodb.result
@@ -581,3 +581,58 @@ WHERE
`RUNID`= '' AND `SUBMITNR`= '' AND `ORDERNR`='' AND `PROGRAMM`='' AND
`TESTID`='' AND `UCCHECK`='';
drop table t1;
+#
+# BUG#56862/640419: Wrong result with sort_union index merge when one
+# of the merged index scans is the primary key scan
+#
+CREATE TABLE t1 (
+pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+a int,
+b int,
+INDEX idx(a))
+ENGINE=INNODB;
+INSERT INTO t1(a,b) VALUES
+(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
+(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
+(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
+(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
+INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
+INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
+INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1 VALUES (1000000, 0, 0);
+SET SESSION sort_buffer_size = 1024*36;
+EXPLAIN
+SELECT COUNT(*) FROM
+(SELECT * FROM t1
+WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
+2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 11419 Using sort_union(idx,PRIMARY); Using where
+SELECT COUNT(*) FROM
+(SELECT * FROM t1
+WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+COUNT(*)
+6145
+EXPLAIN
+SELECT COUNT(*) FROM
+(SELECT * FROM t1 IGNORE INDEX(idx)
+WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL # Select tables optimized away
+2 DERIVED t1 ALL PRIMARY NULL NULL NULL # Using where
+SELECT COUNT(*) FROM
+(SELECT * FROM t1 IGNORE INDEX(idx)
+WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+COUNT(*)
+6145
+DROP TABLE t1;
diff --git a/mysql-test/r/information_schema.result b/mysql-test/r/information_schema.result
index 7b9fc368af1..8a2b258e356 100644
--- a/mysql-test/r/information_schema.result
+++ b/mysql-test/r/information_schema.result
@@ -68,6 +68,7 @@ INNODB_LOCKS
INNODB_LOCK_WAITS
INNODB_RSEG
INNODB_SYS_INDEXES
+INNODB_SYS_STATS
INNODB_SYS_TABLES
INNODB_TABLE_STATS
INNODB_TRX
@@ -871,6 +872,8 @@ COLUMNS TABLE_NAME select
COLUMN_PRIVILEGES TABLE_NAME select
FILES TABLE_NAME select
INDEX_STATISTICS TABLE_NAME select
+INNODB_INDEX_STATS table_name select
+INNODB_TABLE_STATS table_name select
KEY_COLUMN_USAGE TABLE_NAME select
PARTITIONS TABLE_NAME select
REFERENTIAL_CONSTRAINTS TABLE_NAME select
@@ -880,9 +883,6 @@ TABLE_CONSTRAINTS TABLE_NAME select
TABLE_PRIVILEGES TABLE_NAME select
TABLE_STATISTICS TABLE_NAME select
VIEWS TABLE_NAME select
-INNODB_BUFFER_POOL_PAGES_INDEX table_name select
-INNODB_TABLE_STATS table_name select
-INNODB_INDEX_STATS table_name select
delete from mysql.user where user='mysqltest_4';
delete from mysql.db where user='mysqltest_4';
flush privileges;
@@ -1654,4 +1654,31 @@ COUNT(*)
DROP USER nonpriv;
DROP TABLE db1.t1;
DROP DATABASE db1;
+
+Bug#54422 query with = 'variables'
+
+CREATE TABLE variables(f1 INT);
+SELECT COLUMN_DEFAULT, TABLE_NAME
+FROM INFORMATION_SCHEMA.COLUMNS
+WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables';
+COLUMN_DEFAULT TABLE_NAME
+NULL variables
+DROP TABLE variables;
+#
+# Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19,
+# should be 20
+#
+CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED);
+SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION
+FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig';
+TABLE_NAME COLUMN_NAME NUMERIC_PRECISION
+ubig a 19
+ubig b 20
+INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF);
+Warnings:
+Warning 1264 Out of range value for column 'a' at row 1
+SELECT length(CAST(b AS CHAR)) FROM ubig;
+length(CAST(b AS CHAR))
+20
+DROP TABLE ubig;
End of 5.1 tests.
diff --git a/mysql-test/r/information_schema_all_engines.result b/mysql-test/r/information_schema_all_engines.result
index d3ff92544f2..7a2c548a329 100644
--- a/mysql-test/r/information_schema_all_engines.result
+++ b/mysql-test/r/information_schema_all_engines.result
@@ -44,13 +44,14 @@ XTRADB_ADMIN_COMMAND
INNODB_TRX
INNODB_SYS_TABLES
INNODB_LOCK_WAITS
-INNODB_CMPMEM_RESET
+INNODB_SYS_STATS
INNODB_LOCKS
INNODB_CMPMEM
INNODB_TABLE_STATS
INNODB_SYS_INDEXES
INNODB_CMP_RESET
INNODB_BUFFER_POOL_PAGES_BLOB
+INNODB_CMPMEM_RESET
INNODB_INDEX_STATS
SELECT t.table_name, c1.column_name
FROM information_schema.tables t
@@ -105,18 +106,19 @@ PBXT_STATISTICS ID
INNODB_CMP page_size
INNODB_RSEG rseg_id
XTRADB_ENHANCEMENTS name
-INNODB_BUFFER_POOL_PAGES_INDEX schema_name
+INNODB_BUFFER_POOL_PAGES_INDEX index_id
XTRADB_ADMIN_COMMAND result_message
INNODB_TRX trx_id
-INNODB_SYS_TABLES NAME
+INNODB_SYS_TABLES SCHEMA
INNODB_LOCK_WAITS requesting_trx_id
-INNODB_CMPMEM_RESET page_size
+INNODB_SYS_STATS INDEX_ID
INNODB_LOCKS lock_id
INNODB_CMPMEM page_size
INNODB_TABLE_STATS table_schema
INNODB_SYS_INDEXES TABLE_ID
INNODB_CMP_RESET page_size
INNODB_BUFFER_POOL_PAGES_BLOB space_id
+INNODB_CMPMEM_RESET page_size
INNODB_INDEX_STATS table_schema
SELECT t.table_name, c1.column_name
FROM information_schema.tables t
@@ -171,18 +173,19 @@ PBXT_STATISTICS ID
INNODB_CMP page_size
INNODB_RSEG rseg_id
XTRADB_ENHANCEMENTS name
-INNODB_BUFFER_POOL_PAGES_INDEX schema_name
+INNODB_BUFFER_POOL_PAGES_INDEX index_id
XTRADB_ADMIN_COMMAND result_message
INNODB_TRX trx_id
-INNODB_SYS_TABLES NAME
+INNODB_SYS_TABLES SCHEMA
INNODB_LOCK_WAITS requesting_trx_id
-INNODB_CMPMEM_RESET page_size
+INNODB_SYS_STATS INDEX_ID
INNODB_LOCKS lock_id
INNODB_CMPMEM page_size
INNODB_TABLE_STATS table_schema
INNODB_SYS_INDEXES TABLE_ID
INNODB_CMP_RESET page_size
INNODB_BUFFER_POOL_PAGES_BLOB space_id
+INNODB_CMPMEM_RESET page_size
INNODB_INDEX_STATS table_schema
select 1 as f1 from information_schema.tables where "CHARACTER_SETS"=
(select cast(table_name as char) from information_schema.tables
@@ -229,6 +232,7 @@ INNODB_LOCKS information_schema.INNODB_LOCKS 1
INNODB_LOCK_WAITS information_schema.INNODB_LOCK_WAITS 1
INNODB_RSEG information_schema.INNODB_RSEG 1
INNODB_SYS_INDEXES information_schema.INNODB_SYS_INDEXES 1
+INNODB_SYS_STATS information_schema.INNODB_SYS_STATS 1
INNODB_SYS_TABLES information_schema.INNODB_SYS_TABLES 1
INNODB_TABLE_STATS information_schema.INNODB_TABLE_STATS 1
INNODB_TRX information_schema.INNODB_TRX 1
@@ -302,13 +306,14 @@ Database: information_schema
| INNODB_TRX |
| INNODB_SYS_TABLES |
| INNODB_LOCK_WAITS |
-| INNODB_CMPMEM_RESET |
+| INNODB_SYS_STATS |
| INNODB_LOCKS |
| INNODB_CMPMEM |
| INNODB_TABLE_STATS |
| INNODB_SYS_INDEXES |
| INNODB_CMP_RESET |
| INNODB_BUFFER_POOL_PAGES_BLOB |
+| INNODB_CMPMEM_RESET |
| INNODB_INDEX_STATS |
+---------------------------------------+
Database: INFORMATION_SCHEMA
@@ -358,13 +363,14 @@ Database: INFORMATION_SCHEMA
| INNODB_TRX |
| INNODB_SYS_TABLES |
| INNODB_LOCK_WAITS |
-| INNODB_CMPMEM_RESET |
+| INNODB_SYS_STATS |
| INNODB_LOCKS |
| INNODB_CMPMEM |
| INNODB_TABLE_STATS |
| INNODB_SYS_INDEXES |
| INNODB_CMP_RESET |
| INNODB_BUFFER_POOL_PAGES_BLOB |
+| INNODB_CMPMEM_RESET |
| INNODB_INDEX_STATS |
+---------------------------------------+
Wildcard: inf_rmation_schema
@@ -375,5 +381,5 @@ Wildcard: inf_rmation_schema
+--------------------+
SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
table_schema count(*)
-information_schema 51
+information_schema 52
mysql 22
diff --git a/mysql-test/r/innodb-index.result b/mysql-test/r/innodb-index.result
deleted file mode 100644
index 9d199bb7260..00000000000
--- a/mysql-test/r/innodb-index.result
+++ /dev/null
@@ -1,1173 +0,0 @@
-create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
-insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
-commit;
-alter table t1 add index b (b), add index b (b);
-ERROR 42000: Duplicate key name 'b'
-alter table t1 add index (b,b);
-ERROR 42S21: Duplicate column name 'b'
-alter table t1 add index d2 (d);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- KEY `d2` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-explain select * from t1 force index(d2) order by d;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL d2 23 NULL 4
-select * from t1 force index (d2) order by d;
-a b c d
-3 4 ad ad
-2 3 ak ak
-5 5 oo oo
-4 4 tr tr
-alter table t1 add unique index (b);
-ERROR 23000: Duplicate entry '4' for key 'b'
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- KEY `d2` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t1 add index (b);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- KEY `d2` (`d`),
- KEY `b` (`b`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-CREATE TABLE `t1#1`(a INT PRIMARY KEY) ENGINE=InnoDB;
-call mtr.add_suppression(" table `test`\\.`t1#[12]` already exists in InnoDB internal");
-alter table t1 add unique index (c), add index (d);
-ERROR HY000: Table 'test.t1#1' already exists
-rename table `t1#1` to `t1#2`;
-alter table t1 add unique index (c), add index (d);
-ERROR HY000: Table 'test.t1#2' already exists
-drop table `t1#2`;
-alter table t1 add unique index (c), add index (d);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- UNIQUE KEY `c` (`c`),
- KEY `d2` (`d`),
- KEY `b` (`b`),
- KEY `d` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL c 10 NULL 4
-alter table t1 add primary key (a), drop index c;
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `d2` (`d`),
- KEY `b` (`b`),
- KEY `d` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t1 add primary key (c);
-ERROR 42000: Multiple primary key defined
-alter table t1 drop primary key, add primary key (b);
-ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
-create unique index c on t1 (c);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `c` (`c`),
- KEY `d2` (`d`),
- KEY `b` (`b`),
- KEY `d` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL c 10 NULL 4
-select * from t1 force index(c) order by c;
-a b c d
-3 4 ad ad
-2 3 ak ak
-5 5 oo oo
-4 4 tr tr
-alter table t1 drop index b, add index (b);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `c` (`c`),
- KEY `d2` (`d`),
- KEY `d` (`d`),
- KEY `b` (`b`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-insert into t1 values(6,1,'ggg','ggg');
-select * from t1;
-a b c d
-2 3 ak ak
-3 4 ad ad
-4 4 tr tr
-5 5 oo oo
-6 1 ggg ggg
-select * from t1 force index(b) order by b;
-a b c d
-6 1 ggg ggg
-2 3 ak ak
-3 4 ad ad
-4 4 tr tr
-5 5 oo oo
-select * from t1 force index(c) order by c;
-a b c d
-3 4 ad ad
-2 3 ak ak
-6 1 ggg ggg
-5 5 oo oo
-4 4 tr tr
-select * from t1 force index(d) order by d;
-a b c d
-3 4 ad ad
-2 3 ak ak
-6 1 ggg ggg
-5 5 oo oo
-4 4 tr tr
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 5 NULL 5
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL c 10 NULL 5
-explain select * from t1 force index(d) order by d;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL d 23 NULL 5
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) NOT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `c` (`c`),
- KEY `d2` (`d`),
- KEY `d` (`d`),
- KEY `b` (`b`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ad','ad'),(4,4,'afe','afe');
-commit;
-alter table t1 add index (c(2));
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `c` (`c`(2))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t1 add unique index (d(10));
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `d` (`d`(10)),
- KEY `c` (`c`(2))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-insert into t1 values(5,1,'ggg','ggg');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 3 ad ad
-4 4 afe afe
-5 1 ggg ggg
-select * from t1 force index(c) order by c;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 3 ad ad
-4 4 afe afe
-5 1 ggg ggg
-select * from t1 force index(d) order by d;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 3 ad ad
-4 4 afe afe
-5 1 ggg ggg
-explain select * from t1 order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using filesort
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using filesort
-explain select * from t1 force index(d) order by d;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using filesort
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `d` (`d`(10)),
- KEY `c` (`c`(2))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t1 drop index d;
-insert into t1 values(8,9,'fff','fff');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 3 ad ad
-4 4 afe afe
-5 1 ggg ggg
-8 9 fff fff
-select * from t1 force index(c) order by c;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 3 ad ad
-4 4 afe afe
-8 9 fff fff
-5 1 ggg ggg
-explain select * from t1 order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
-explain select * from t1 order by d;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `c` (`c`(2))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,2,'ad','ad'),(4,4,'afe','afe');
-commit;
-alter table t1 add unique index (b,c);
-insert into t1 values(8,9,'fff','fff');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-select * from t1 force index(b) order by b;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 16 NULL 5
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `b` (`b`,`c`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t1 add index (b,c);
-insert into t1 values(11,11,'kkk','kkk');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-11 11 kkk kkk
-select * from t1 force index(b) order by b;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-11 11 kkk kkk
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 16 NULL 6
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `b` (`b`,`c`),
- KEY `b_2` (`b`,`c`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t1 add unique index (c,d);
-insert into t1 values(13,13,'yyy','aaa');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-11 11 kkk kkk
-13 13 yyy aaa
-select * from t1 force index(b) order by b;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-11 11 kkk kkk
-13 13 yyy aaa
-select * from t1 force index(c) order by c;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-11 11 kkk kkk
-13 13 yyy aaa
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 16 NULL 7
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL c 34 NULL 7
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `b` (`b`,`c`),
- UNIQUE KEY `c` (`c`,`d`),
- KEY `b_2` (`b`,`c`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, b int not null, c int, primary key (a), key (b)) engine = innodb;
-create table t3(a int not null, c int not null, d int, primary key (a), key (c)) engine = innodb;
-create table t4(a int not null, d int not null, e int, primary key (a), key (d)) engine = innodb;
-create table t2(a int not null, b int not null, c int not null, d int not null, e int,
-foreign key (b) references t1(b) on delete cascade,
-foreign key (c) references t3(c), foreign key (d) references t4(d))
-engine = innodb;
-alter table t1 drop index b;
-ERROR HY000: Cannot drop index 'b': needed in a foreign key constraint
-alter table t3 drop index c;
-ERROR HY000: Cannot drop index 'c': needed in a foreign key constraint
-alter table t4 drop index d;
-ERROR HY000: Cannot drop index 'd': needed in a foreign key constraint
-alter table t2 drop index b;
-ERROR HY000: Cannot drop index 'b': needed in a foreign key constraint
-alter table t2 drop index b, drop index c, drop index d;
-ERROR HY000: Cannot drop index 'b': needed in a foreign key constraint
-create unique index dc on t2 (d,c);
-create index dc on t1 (b,c);
-alter table t2 add primary key (a);
-insert into t1 values (1,1,1);
-insert into t3 values (1,1,1);
-insert into t4 values (1,1,1);
-insert into t2 values (1,1,1,1,1);
-commit;
-alter table t4 add constraint dc foreign key (a) references t1(a);
-show create table t4;
-Table Create Table
-t4 CREATE TABLE `t4` (
- `a` int(11) NOT NULL,
- `d` int(11) NOT NULL,
- `e` int(11) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `d` (`d`),
- CONSTRAINT `dc` FOREIGN KEY (`a`) REFERENCES `t1` (`a`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t3 add constraint dc foreign key (a) references t1(a);
-ERROR HY000: Can't create table '#sql-temporary' (errno: 121)
-show create table t3;
-Table Create Table
-t3 CREATE TABLE `t3` (
- `a` int(11) NOT NULL,
- `c` int(11) NOT NULL,
- `d` int(11) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `c` (`c`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-alter table t2 drop index b, add index (b);
-show create table t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `a` int(11) NOT NULL,
- `b` int(11) NOT NULL,
- `c` int(11) NOT NULL,
- `d` int(11) NOT NULL,
- `e` int(11) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `dc` (`d`,`c`),
- KEY `c` (`c`),
- KEY `b` (`b`),
- CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`b`) ON DELETE CASCADE,
- CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`c`) REFERENCES `t3` (`c`),
- CONSTRAINT `t2_ibfk_3` FOREIGN KEY (`d`) REFERENCES `t4` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-delete from t1;
-ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `dc` FOREIGN KEY (`a`) REFERENCES `t1` (`a`))
-drop index dc on t4;
-ERROR 42000: Can't DROP 'dc'; check that column/key exists
-alter table t3 drop foreign key dc;
-ERROR HY000: Error on rename of './test/t3' to './#sql2-temporary' (errno: 152)
-alter table t4 drop foreign key dc;
-select * from t2;
-a b c d e
-1 1 1 1 1
-delete from t1;
-select * from t2;
-a b c d e
-drop table t2,t4,t3,t1;
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb default charset=utf8;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,2,'ad','ad'),(4,4,'afe','afe');
-commit;
-alter table t1 add unique index (b);
-ERROR 23000: Duplicate entry '2' for key 'b'
-insert into t1 values(8,9,'fff','fff');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8
-alter table t1 add index (b);
-insert into t1 values(10,10,'kkk','iii');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-10 10 kkk iii
-select * from t1 force index(b) order by b;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-10 10 kkk iii
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 5 NULL 6
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `b` (`b`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8
-alter table t1 add unique index (c), add index (d);
-insert into t1 values(11,11,'aaa','mmm');
-select * from t1;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-10 10 kkk iii
-11 11 aaa mmm
-select * from t1 force index(b) order by b;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-10 10 kkk iii
-11 11 aaa mmm
-select * from t1 force index(c) order by c;
-a b c d
-11 11 aaa mmm
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-10 10 kkk iii
-select * from t1 force index(d) order by d;
-a b c d
-1 1 ab ab
-2 2 ac ac
-3 2 ad ad
-4 4 afe afe
-8 9 fff fff
-10 10 kkk iii
-11 11 aaa mmm
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 5 NULL 7
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL c 31 NULL 7
-explain select * from t1 force index(d) order by d;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL d 63 NULL 7
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `c` (`c`),
- KEY `b` (`b`),
- KEY `d` (`d`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-drop table t1;
-create table t1(a int not null, b int) engine = innodb;
-insert into t1 values (1,1),(1,1),(1,1),(1,1);
-alter table t1 add unique index (a);
-ERROR 23000: Duplicate entry '1' for key 'a'
-alter table t1 add unique index (b);
-ERROR 23000: Duplicate entry '1' for key 'b'
-alter table t1 add unique index (a), add unique index(b);
-ERROR 23000: Duplicate entry '1' for key 'a'
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, c int not null,b int, primary key(a), unique key(c), key(b)) engine = innodb;
-alter table t1 drop index c, drop index b;
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `c` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- PRIMARY KEY (`a`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, b int, primary key(a)) engine = innodb;
-alter table t1 add index (b);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- PRIMARY KEY (`a`),
- KEY `b` (`b`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe');
-alter table t1 add unique index (b), add unique index (c), add unique index (d);
-ERROR 23000: Duplicate entry 'ac' for key 'c'
-alter table t1 add unique index (c), add unique index (b), add index (d);
-ERROR 23000: Duplicate entry 'ac' for key 'c'
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) DEFAULT NULL,
- `c` char(10) DEFAULT NULL,
- `d` varchar(20) DEFAULT NULL,
- PRIMARY KEY (`a`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-drop table t1;
-create table t1(a int not null, b int not null, c int, primary key (a), key(c)) engine=innodb;
-insert into t1 values (5,1,5),(4,2,4),(3,3,3),(2,4,2),(1,5,1);
-alter table t1 add unique index (b);
-insert into t1 values (10,20,20),(11,19,19),(12,18,18),(13,17,17);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) NOT NULL,
- `c` int(11) DEFAULT NULL,
- PRIMARY KEY (`a`),
- UNIQUE KEY `b` (`b`),
- KEY `c` (`c`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-explain select * from t1 force index(c) order by c;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL c 5 NULL 9
-explain select * from t1 order by a;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL PRIMARY 4 NULL 9
-explain select * from t1 force index(b) order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL b 4 NULL 9
-select * from t1 order by a;
-a b c
-1 5 1
-2 4 2
-3 3 3
-4 2 4
-5 1 5
-10 20 20
-11 19 19
-12 18 18
-13 17 17
-select * from t1 force index(b) order by b;
-a b c
-5 1 5
-4 2 4
-3 3 3
-2 4 2
-1 5 1
-13 17 17
-12 18 18
-11 19 19
-10 20 20
-select * from t1 force index(c) order by c;
-a b c
-1 5 1
-2 4 2
-3 3 3
-4 2 4
-5 1 5
-13 17 17
-12 18 18
-11 19 19
-10 20 20
-drop table t1;
-create table t1(a int not null, b int not null) engine=innodb;
-insert into t1 values (1,1);
-alter table t1 add primary key(b);
-insert into t1 values (2,2);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- `b` int(11) NOT NULL,
- PRIMARY KEY (`b`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-select * from t1;
-a b
-1 1
-2 2
-explain select * from t1;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 2
-explain select * from t1 order by a;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using filesort
-explain select * from t1 order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL PRIMARY 4 NULL 2
-checksum table t1;
-Table Checksum
-test.t1 582702641
-drop table t1;
-create table t1(a int not null) engine=innodb;
-insert into t1 values (1);
-alter table t1 add primary key(a);
-insert into t1 values (2);
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL,
- PRIMARY KEY (`a`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-commit;
-select * from t1;
-a
-1
-2
-explain select * from t1;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL PRIMARY 4 NULL 2 Using index
-explain select * from t1 order by a;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL PRIMARY 4 NULL 2 Using index
-drop table t1;
-create table t2(d varchar(17) primary key) engine=innodb default charset=utf8;
-create table t3(a int primary key) engine=innodb;
-insert into t3 values(22),(44),(33),(55),(66);
-insert into t2 values ('jejdkrun87'),('adfd72nh9k'),
-('adfdpplkeock'),('adfdijnmnb78k'),('adfdijn0loKNHJik');
-create table t1(a int, b blob, c text, d text not null)
-engine=innodb default charset = utf8;
-insert into t1
-select a,left(repeat(d,100*a),65535),repeat(d,20*a),d from t2,t3;
-drop table t2, t3;
-select count(*) from t1 where a=44;
-count(*)
-5
-select a,
-length(b),b=left(repeat(d,100*a),65535),length(c),c=repeat(d,20*a),d from t1;
-a length(b) b=left(repeat(d,100*a),65535) length(c) c=repeat(d,20*a) d
-22 22000 1 4400 1 adfd72nh9k
-22 35200 1 7040 1 adfdijn0loKNHJik
-22 28600 1 5720 1 adfdijnmnb78k
-22 26400 1 5280 1 adfdpplkeock
-22 22000 1 4400 1 jejdkrun87
-33 33000 1 6600 1 adfd72nh9k
-33 52800 1 10560 1 adfdijn0loKNHJik
-33 42900 1 8580 1 adfdijnmnb78k
-33 39600 1 7920 1 adfdpplkeock
-33 33000 1 6600 1 jejdkrun87
-44 44000 1 8800 1 adfd72nh9k
-44 65535 1 14080 1 adfdijn0loKNHJik
-44 57200 1 11440 1 adfdijnmnb78k
-44 52800 1 10560 1 adfdpplkeock
-44 44000 1 8800 1 jejdkrun87
-55 55000 1 11000 1 adfd72nh9k
-55 65535 1 17600 1 adfdijn0loKNHJik
-55 65535 1 14300 1 adfdijnmnb78k
-55 65535 1 13200 1 adfdpplkeock
-55 55000 1 11000 1 jejdkrun87
-66 65535 1 13200 1 adfd72nh9k
-66 65535 1 21120 1 adfdijn0loKNHJik
-66 65535 1 17160 1 adfdijnmnb78k
-66 65535 1 15840 1 adfdpplkeock
-66 65535 1 13200 1 jejdkrun87
-alter table t1 add primary key (a), add key (b(20));
-ERROR 23000: Duplicate entry '22' for key 'PRIMARY'
-delete from t1 where a%2;
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-alter table t1 add primary key (a,b(255),c(255)), add key (b(767));
-select count(*) from t1 where a=44;
-count(*)
-5
-select a,
-length(b),b=left(repeat(d,100*a),65535),length(c),c=repeat(d,20*a),d from t1;
-a length(b) b=left(repeat(d,100*a),65535) length(c) c=repeat(d,20*a) d
-22 22000 1 4400 1 adfd72nh9k
-22 35200 1 7040 1 adfdijn0loKNHJik
-22 28600 1 5720 1 adfdijnmnb78k
-22 26400 1 5280 1 adfdpplkeock
-22 22000 1 4400 1 jejdkrun87
-44 44000 1 8800 1 adfd72nh9k
-44 65535 1 14080 1 adfdijn0loKNHJik
-44 57200 1 11440 1 adfdijnmnb78k
-44 52800 1 10560 1 adfdpplkeock
-44 44000 1 8800 1 jejdkrun87
-66 65535 1 13200 1 adfd72nh9k
-66 65535 1 21120 1 adfdijn0loKNHJik
-66 65535 1 17160 1 adfdijnmnb78k
-66 65535 1 15840 1 adfdpplkeock
-66 65535 1 13200 1 jejdkrun87
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) NOT NULL DEFAULT '0',
- `b` blob NOT NULL,
- `c` text NOT NULL,
- `d` text NOT NULL,
- PRIMARY KEY (`a`,`b`(255),`c`(255)),
- KEY `b` (`b`(767))
-) ENGINE=InnoDB DEFAULT CHARSET=utf8
-check table t1;
-Table Op Msg_type Msg_text
-test.t1 check status OK
-explain select * from t1 where b like 'adfd%';
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 ALL b NULL NULL NULL 15 Using where
-create table t2(a int, b varchar(255), primary key(a,b)) engine=innodb;
-insert into t2 select a,left(b,255) from t1;
-drop table t1;
-rename table t2 to t1;
-set innodb_lock_wait_timeout=1;
-begin;
-select a from t1 limit 1 for update;
-a
-22
-set innodb_lock_wait_timeout=1;
-create index t1ba on t1 (b,a);
-ERROR HY000: Lock wait timeout exceeded; try restarting transaction
-commit;
-begin;
-select a from t1 limit 1 lock in share mode;
-a
-22
-create index t1ba on t1 (b,a);
-drop index t1ba on t1;
-ERROR HY000: Lock wait timeout exceeded; try restarting transaction
-commit;
-explain select a from t1 order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL t1ba 261 NULL 15 Using index
-select a,sleep(2+a/100) from t1 order by b limit 3;
-select sleep(1);
-sleep(1)
-0
-drop index t1ba on t1;
-a sleep(2+a/100)
-22 0
-44 0
-66 0
-explain select a from t1 order by b;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 index NULL PRIMARY 261 NULL 15 Using index; Using filesort
-select a from t1 order by b limit 3;
-a
-22
-66
-44
-commit;
-drop table t1;
-set global innodb_file_per_table=on;
-set global innodb_file_format='Barracuda';
-create table t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,h blob,
-i blob,j blob,k blob,l blob,m blob,n blob,o blob,p blob,
-q blob,r blob,s blob,t blob,u blob)
-engine=innodb row_format=dynamic;
-create index t1a on t1 (a(1));
-create index t1b on t1 (b(1));
-create index t1c on t1 (c(1));
-create index t1d on t1 (d(1));
-create index t1e on t1 (e(1));
-create index t1f on t1 (f(1));
-create index t1g on t1 (g(1));
-create index t1h on t1 (h(1));
-create index t1i on t1 (i(1));
-create index t1j on t1 (j(1));
-create index t1k on t1 (k(1));
-create index t1l on t1 (l(1));
-create index t1m on t1 (m(1));
-create index t1n on t1 (n(1));
-create index t1o on t1 (o(1));
-create index t1p on t1 (p(1));
-create index t1q on t1 (q(1));
-create index t1r on t1 (r(1));
-create index t1s on t1 (s(1));
-create index t1t on t1 (t(1));
-create index t1u on t1 (u(1));
-ERROR HY000: Too big row
-create index t1ut on t1 (u(1), t(1));
-ERROR HY000: Too big row
-create index t1st on t1 (s(1), t(1));
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` blob,
- `b` blob,
- `c` blob,
- `d` blob,
- `e` blob,
- `f` blob,
- `g` blob,
- `h` blob,
- `i` blob,
- `j` blob,
- `k` blob,
- `l` blob,
- `m` blob,
- `n` blob,
- `o` blob,
- `p` blob,
- `q` blob,
- `r` blob,
- `s` blob,
- `t` blob,
- `u` blob,
- KEY `t1a` (`a`(1)),
- KEY `t1b` (`b`(1)),
- KEY `t1c` (`c`(1)),
- KEY `t1d` (`d`(1)),
- KEY `t1e` (`e`(1)),
- KEY `t1f` (`f`(1)),
- KEY `t1g` (`g`(1)),
- KEY `t1h` (`h`(1)),
- KEY `t1i` (`i`(1)),
- KEY `t1j` (`j`(1)),
- KEY `t1k` (`k`(1)),
- KEY `t1l` (`l`(1)),
- KEY `t1m` (`m`(1)),
- KEY `t1n` (`n`(1)),
- KEY `t1o` (`o`(1)),
- KEY `t1p` (`p`(1)),
- KEY `t1q` (`q`(1)),
- KEY `t1r` (`r`(1)),
- KEY `t1s` (`s`(1)),
- KEY `t1t` (`t`(1)),
- KEY `t1st` (`s`(1),`t`(1))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
-create index t1u on t1 (u(1));
-ERROR HY000: Too big row
-alter table t1 row_format=compact;
-create index t1u on t1 (u(1));
-drop table t1;
-set global innodb_file_per_table=0;
-set global innodb_file_format=Antelope;
-set global innodb_file_format_check=Antelope;
-SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
-SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
-CREATE TABLE t1(
-c1 BIGINT(12) NOT NULL,
-PRIMARY KEY (c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-CREATE TABLE t2(
-c1 BIGINT(16) NOT NULL,
-c2 BIGINT(12) NOT NULL,
-c3 BIGINT(12) NOT NULL,
-PRIMARY KEY (c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3) REFERENCES t1(c1);
-SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
-SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`),
- KEY `fk_t2_ca` (`c3`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-CREATE INDEX i_t2_c3_c2 ON t2(c3, c2);
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`),
- KEY `i_t2_c3_c2` (`c3`,`c2`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
-SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-INSERT INTO t2 VALUES(0,0,0);
-ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`))
-INSERT INTO t1 VALUES(0);
-INSERT INTO t2 VALUES(0,0,0);
-DROP TABLE t2;
-CREATE TABLE t2(
-c1 BIGINT(16) NOT NULL,
-c2 BIGINT(12) NOT NULL,
-c3 BIGINT(12) NOT NULL,
-PRIMARY KEY (c1,c2,c3)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3) REFERENCES t1(c1);
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`,`c2`,`c3`),
- KEY `fk_t2_ca` (`c3`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-CREATE INDEX i_t2_c3_c2 ON t2(c3, c2);
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`,`c2`,`c3`),
- KEY `i_t2_c3_c2` (`c3`,`c2`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-INSERT INTO t2 VALUES(0,0,1);
-ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`))
-INSERT INTO t2 VALUES(0,0,0);
-DELETE FROM t1;
-ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`) REFERENCES `t1` (`c1`))
-DELETE FROM t2;
-DROP TABLE t2;
-DROP TABLE t1;
-CREATE TABLE t1(
-c1 BIGINT(12) NOT NULL,
-c2 INT(4) NOT NULL,
-PRIMARY KEY (c2,c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-CREATE TABLE t2(
-c1 BIGINT(16) NOT NULL,
-c2 BIGINT(12) NOT NULL,
-c3 BIGINT(12) NOT NULL,
-PRIMARY KEY (c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3,c2) REFERENCES t1(c1,c1);
-ERROR HY000: Can't create table '#sql-temporary' (errno: 150)
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2);
-ERROR HY000: Can't create table '#sql-temporary' (errno: 150)
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3,c2) REFERENCES t1(c2,c1);
-ERROR HY000: Can't create table '#sql-temporary' (errno: 150)
-ALTER TABLE t1 MODIFY COLUMN c2 BIGINT(12) NOT NULL;
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2);
-ERROR HY000: Can't create table '#sql-temporary' (errno: 150)
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
-FOREIGN KEY (c3,c2) REFERENCES t1(c2,c1);
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `c1` bigint(12) NOT NULL,
- `c2` bigint(12) NOT NULL,
- PRIMARY KEY (`c2`,`c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`),
- KEY `fk_t2_ca` (`c3`,`c2`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`, `c2`) REFERENCES `t1` (`c2`, `c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-CREATE INDEX i_t2_c2_c1 ON t2(c2, c1);
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`),
- KEY `fk_t2_ca` (`c3`,`c2`),
- KEY `i_t2_c2_c1` (`c2`,`c1`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`, `c2`) REFERENCES `t1` (`c2`, `c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-CREATE INDEX i_t2_c3_c1_c2 ON t2(c3, c1, c2);
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`),
- KEY `fk_t2_ca` (`c3`,`c2`),
- KEY `i_t2_c2_c1` (`c2`,`c1`),
- KEY `i_t2_c3_c1_c2` (`c3`,`c1`,`c2`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`, `c2`) REFERENCES `t1` (`c2`, `c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-CREATE INDEX i_t2_c3_c2 ON t2(c3, c2);
-SHOW CREATE TABLE t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `c1` bigint(16) NOT NULL,
- `c2` bigint(12) NOT NULL,
- `c3` bigint(12) NOT NULL,
- PRIMARY KEY (`c1`),
- KEY `i_t2_c2_c1` (`c2`,`c1`),
- KEY `i_t2_c3_c1_c2` (`c3`,`c1`,`c2`),
- KEY `i_t2_c3_c2` (`c3`,`c2`),
- CONSTRAINT `fk_t2_ca` FOREIGN KEY (`c3`, `c2`) REFERENCES `t1` (`c2`, `c1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1
-DROP TABLE t2;
-DROP TABLE t1;
-call mtr.add_suppression("InnoDB: insufficient history for index");
-CREATE TABLE t1 (a INT, b CHAR(1)) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (3,'a'),(3,'b'),(1,'c'),(0,'d'),(1,'e');
-BEGIN;
-SELECT * FROM t1;
-a b
-3 a
-3 b
-1 c
-0 d
-1 e
-CREATE INDEX t1a ON t1(a);
-SELECT * FROM t1;
-a b
-3 a
-3 b
-1 c
-0 d
-1 e
-SELECT * FROM t1 FORCE INDEX(t1a) ORDER BY a;
-ERROR HY000: Table definition has changed, please retry transaction
-SELECT * FROM t1;
-a b
-3 a
-3 b
-1 c
-0 d
-1 e
-COMMIT;
-SELECT * FROM t1 FORCE INDEX(t1a) ORDER BY a;
-a b
-0 d
-1 c
-1 e
-3 a
-3 b
-DROP TABLE t1;
diff --git a/mysql-test/r/innodb-use-sys-malloc.result b/mysql-test/r/innodb-use-sys-malloc.result
deleted file mode 100644
index 2ec4c7c8130..00000000000
--- a/mysql-test/r/innodb-use-sys-malloc.result
+++ /dev/null
@@ -1,48 +0,0 @@
-SELECT @@GLOBAL.innodb_use_sys_malloc;
-@@GLOBAL.innodb_use_sys_malloc
-1
-1 Expected
-SET @@GLOBAL.innodb_use_sys_malloc=0;
-ERROR HY000: Variable 'innodb_use_sys_malloc' is a read only variable
-Expected error 'Read only variable'
-SELECT @@GLOBAL.innodb_use_sys_malloc;
-@@GLOBAL.innodb_use_sys_malloc
-1
-1 Expected
-drop table if exists t1;
-create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
-insert into t1 values (1),(2),(3),(4),(5),(6),(7);
-select * from t1;
-a
-1
-2
-3
-4
-5
-6
-7
-drop table t1;
-SELECT @@GLOBAL.innodb_use_sys_malloc;
-@@GLOBAL.innodb_use_sys_malloc
-1
-1 Expected
-SET @@GLOBAL.innodb_use_sys_malloc=0;
-ERROR HY000: Variable 'innodb_use_sys_malloc' is a read only variable
-Expected error 'Read only variable'
-SELECT @@GLOBAL.innodb_use_sys_malloc;
-@@GLOBAL.innodb_use_sys_malloc
-1
-1 Expected
-drop table if exists t1;
-create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
-insert into t1 values (1),(2),(3),(4),(5),(6),(7);
-select * from t1;
-a
-1
-2
-3
-4
-5
-6
-7
-drop table t1;
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index 0bc3300f8a5..ea0972a6a43 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -691,14 +691,16 @@ count(*)
select count(*) from t1 where sca_pic is null;
count(*)
2
-alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);
+alter table t1 drop index sca_pic;
+alter table t1 add index sca_pic (cat_code, sca_pic);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
count(*)
1
select count(*) from t1 where cat_code='E';
count(*)
0
-alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
+alter table t1 drop index sca_pic;
+alter table t1 add index (sca_pic, cat_code);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
count(*)
1
@@ -1508,7 +1510,7 @@ t2 CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop index id2 on t2;
drop index id on t2;
-Got one of the listed errors
+ERROR HY000: Cannot drop index 'id': needed in a foreign key constraint
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
diff --git a/mysql-test/r/innodb_ignore_builtin.result b/mysql-test/r/innodb_ignore_builtin.result
index 4694a61b20a..e65cb3c7850 100644
--- a/mysql-test/r/innodb_ignore_builtin.result
+++ b/mysql-test/r/innodb_ignore_builtin.result
@@ -2,8 +2,5 @@ show variables like 'ignore_builtin_innodb';
Variable_name Value
ignore_builtin_innodb ON
select PLUGIN_NAME from information_schema.plugins
-where PLUGIN_NAME = "InnoDb";
+where PLUGIN_NAME = "InnoDb" and PLUGIN_LIBRARY IS NULL;
PLUGIN_NAME
-select ENGINE from information_schema.engines
-where ENGINE = "InnoDB";
-ENGINE
diff --git a/mysql-test/r/innodb_mysql_lock2.result b/mysql-test/r/innodb_mysql_lock2.result
new file mode 100644
index 00000000000..79606ea8bdc
--- /dev/null
+++ b/mysql-test/r/innodb_mysql_lock2.result
@@ -0,0 +1,601 @@
+#
+# Test how do we handle locking in various cases when
+# we read data from InnoDB tables.
+#
+# In fact by performing this test we check two things:
+# 1) That SQL-layer correctly determine type of thr_lock.c
+# lock to be acquired/passed to InnoDB engine.
+# 2) That InnoDB engine correctly interprets this lock
+# type and takes necessary row locks or does not
+# take them if they are not necessary.
+#
+# This test makes sense only in REPEATABLE-READ mode as
+# in SERIALIZABLE mode all statements that read data take
+# shared lock on them to enforce its semantics.
+select @@session.tx_isolation;
+@@session.tx_isolation
+REPEATABLE-READ
+# Prepare playground by creating tables, views,
+# routines and triggers used in tests.
+drop table if exists t0, t1, t2, t3, t4, t5, te;
+drop view if exists v1, v2;
+drop procedure if exists p1;
+drop procedure if exists p2;
+drop function if exists f1;
+drop function if exists f2;
+drop function if exists f3;
+drop function if exists f4;
+drop function if exists f5;
+drop function if exists f6;
+drop function if exists f7;
+drop function if exists f8;
+drop function if exists f9;
+drop function if exists f10;
+drop function if exists f11;
+drop function if exists f12;
+drop function if exists f13;
+drop function if exists f14;
+drop function if exists f15;
+create table t1 (i int primary key) engine=innodb;
+insert into t1 values (1), (2), (3), (4), (5);
+create table t2 (j int primary key) engine=innodb;
+insert into t2 values (1), (2), (3), (4), (5);
+create table t3 (k int primary key) engine=innodb;
+insert into t3 values (1), (2), (3);
+create table t4 (l int primary key) engine=innodb;
+insert into t4 values (1);
+create table t5 (l int primary key) engine=innodb;
+insert into t5 values (1);
+create table te(e int primary key);
+insert into te values (1);
+create view v1 as select i from t1;
+create view v2 as select j from t2 where j in (select i from t1);
+create procedure p1(k int) insert into t2 values (k);
+create function f1() returns int
+begin
+declare j int;
+select i from t1 where i = 1 into j;
+return j;
+end|
+create function f2() returns int
+begin
+declare k int;
+select i from t1 where i = 1 into k;
+insert into t2 values (k + 5);
+return 0;
+end|
+create function f3() returns int
+begin
+return (select i from t1 where i = 3);
+end|
+create function f4() returns int
+begin
+if (select i from t1 where i = 3) then
+return 1;
+else
+return 0;
+end if;
+end|
+create function f5() returns int
+begin
+insert into t2 values ((select i from t1 where i = 1) + 5);
+return 0;
+end|
+create function f6() returns int
+begin
+declare k int;
+select i from v1 where i = 1 into k;
+return k;
+end|
+create function f7() returns int
+begin
+declare k int;
+select j from v2 where j = 1 into k;
+return k;
+end|
+create function f8() returns int
+begin
+declare k int;
+select i from v1 where i = 1 into k;
+insert into t2 values (k+5);
+return k;
+end|
+create function f9() returns int
+begin
+update v2 set j=j+10 where j=1;
+return 1;
+end|
+create function f10() returns int
+begin
+return f1();
+end|
+create function f11() returns int
+begin
+declare k int;
+set k= f1();
+insert into t2 values (k+5);
+return k;
+end|
+create function f12(p int) returns int
+begin
+insert into t2 values (p);
+return p;
+end|
+create function f13(p int) returns int
+begin
+return p;
+end|
+create procedure p2(inout p int)
+begin
+select i from t1 where i = 1 into p;
+end|
+create function f14() returns int
+begin
+declare k int;
+call p2(k);
+insert into t2 values (k+5);
+return k;
+end|
+create function f15() returns int
+begin
+declare k int;
+call p2(k);
+return k;
+end|
+create trigger t4_bi before insert on t4 for each row
+begin
+declare k int;
+select i from t1 where i=1 into k;
+set new.l= k+1;
+end|
+create trigger t4_bu before update on t4 for each row
+begin
+if (select i from t1 where i=1) then
+set new.l= 2;
+end if;
+end|
+# Trigger below uses insertion of duplicate key in 'te'
+# table as a way to abort delete operation.
+create trigger t4_bd before delete on t4 for each row
+begin
+if !(select i from v1 where i=1) then
+insert into te values (1);
+end if;
+end|
+create trigger t5_bi before insert on t5 for each row
+begin
+set new.l= f1()+1;
+end|
+create trigger t5_bu before update on t5 for each row
+begin
+declare j int;
+call p2(j);
+set new.l= j + 1;
+end|
+#
+# Set common variables to be used by scripts called below.
+#
+#
+# 1. Statements that read tables and do not use subqueries.
+#
+#
+# 1.1 Simple SELECT statement.
+#
+# No locks are necessary as this statement won't be written
+# to the binary log and InnoDB supports snapshots.
+Success: 'select * from t1' doesn't take row locks on 't1'.
+#
+# 1.2 Multi-UPDATE statement.
+#
+# Has to take shared locks on rows in the table being read as this
+# statement will be written to the binary log and therefore should
+# be serialized with concurrent statements.
+Success: 'update t2, t1 set j= j - 1 where i = j' takes shared row locks on 't1'.
+#
+# 1.3 Multi-DELETE statement.
+#
+# The above is true for this statement as well.
+Success: 'delete t2 from t1, t2 where i = j' takes shared row locks on 't1'.
+#
+# 1.4 DESCRIBE statement.
+#
+# This statement does not really read data from the
+# target table and thus does not take any lock on it.
+# We check this for completeness of coverage.
+Success: 'describe t1' doesn't take row locks on 't1'.
+#
+# 1.5 SHOW statements.
+#
+# The above is true for SHOW statements as well.
+Success: 'show create table t1' doesn't take row locks on 't1'.
+Success: 'show keys from t1' doesn't take row locks on 't1'.
+#
+# 2. Statements which read tables through subqueries.
+#
+#
+# 2.1 CALL with a subquery.
+#
+# A strong lock is not necessary as this statement is not
+# written to the binary log as a whole (it is written
+# statement-by-statement) and thanks to MVCC we can always get
+# versions of rows prior to the update that has locked them.
+# But in practice InnoDB does locking reads for all statements
+# other than SELECT (unless it is a READ-COMITTED mode or
+# innodb_locks_unsafe_for_binlog is ON).
+Success: 'call p1((select i + 5 from t1 where i = 1))' takes shared row locks on 't1'.
+#
+# 2.2 CREATE TABLE with a subquery.
+#
+# Has to take shared locks on rows in the table being read as
+# this statement is written to the binary log and therefore
+# should be serialized with concurrent statements.
+Success: 'create table t0 engine=innodb select * from t1' takes shared row locks on 't1'.
+drop table t0;
+Success: 'create table t0 engine=innodb select j from t2 where j in (select i from t1)' takes shared row locks on 't1'.
+drop table t0;
+#
+# 2.3 DELETE with a subquery.
+#
+# The above is true for this statement as well.
+Success: 'delete from t2 where j in (select i from t1)' takes shared row locks on 't1'.
+#
+# 2.4 MULTI-DELETE with a subquery.
+#
+# Same is true for this statement as well.
+Success: 'delete t2 from t3, t2 where k = j and j in (select i from t1)' takes shared row locks on 't1'.
+#
+# 2.5 DO with a subquery.
+#
+# In theory should not take row locks as it is not logged.
+# In practice InnoDB takes shared row locks.
+Success: 'do (select i from t1 where i = 1)' takes shared row locks on 't1'.
+#
+# 2.6 INSERT with a subquery.
+#
+# Has to take shared locks on rows in the table being read as
+# this statement is written to the binary log and therefore
+# should be serialized with concurrent statements.
+Success: 'insert into t2 select i+5 from t1' takes shared row locks on 't1'.
+Success: 'insert into t2 values ((select i+5 from t1 where i = 4))' takes shared row locks on 't1'.
+#
+# 2.7 LOAD DATA with a subquery.
+#
+# The above is true for this statement as well.
+Success: 'load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1)' takes shared row locks on 't1'.
+#
+# 2.8 REPLACE with a subquery.
+#
+# Same is true for this statement as well.
+Success: 'replace into t2 select i+5 from t1' takes shared row locks on 't1'.
+Success: 'replace into t2 values ((select i+5 from t1 where i = 4))' takes shared row locks on 't1'.
+#
+# 2.9 SELECT with a subquery.
+#
+# Locks are not necessary as this statement is not written
+# to the binary log and thanks to MVCC we can always get
+# versions of rows prior to the update that has locked them.
+#
+# Also serves as a test case for bug #46947 "Embedded SELECT
+# without FOR UPDATE is causing a lock".
+Success: 'select * from t2 where j in (select i from t1)' doesn't take row locks on 't1'.
+#
+# 2.10 SET with a subquery.
+#
+# In theory should not require locking as it is not written
+# to the binary log. In practice InnoDB acquires shared row
+# locks.
+Success: 'set @a:= (select i from t1 where i = 1)' takes shared row locks on 't1'.
+#
+# 2.11 SHOW with a subquery.
+#
+# Similarly to the previous case, in theory should not require locking
+# as it is not written to the binary log. In practice InnoDB
+# acquires shared row locks.
+Success: 'show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1)' takes shared row locks on 't1'.
+Success: 'show columns from t2 where (select i from t1 where i = 1)' takes shared row locks on 't1'.
+#
+# 2.12 UPDATE with a subquery.
+#
+# Has to take shared locks on rows in the table being read as
+# this statement is written to the binary log and therefore
+# should be serialized with concurrent statements.
+Success: 'update t2 set j= j-10 where j in (select i from t1)' takes shared row locks on 't1'.
+#
+# 2.13 MULTI-UPDATE with a subquery.
+#
+# Same is true for this statement as well.
+Success: 'update t2, t3 set j= j -10 where j=k and j in (select i from t1)' takes shared row locks on 't1'.
+#
+# 3. Statements which read tables through a view.
+#
+#
+# 3.1 SELECT statement which uses some table through a view.
+#
+# Since this statement is not written to the binary log
+# and old version of rows are accessible thanks to MVCC,
+# no locking is necessary.
+Success: 'select * from v1' doesn't take row locks on 't1'.
+Success: 'select * from v2' doesn't take row locks on 't1'.
+Success: 'select * from t2 where j in (select i from v1)' doesn't take row locks on 't1'.
+Success: 'select * from t3 where k in (select j from v2)' doesn't take row locks on 't1'.
+#
+# 3.2 Statements which modify a table and use views.
+#
+# Since such statements are going to be written to the binary
+# log they need to be serialized against concurrent statements
+# and therefore should take shared row locks on data read.
+Success: 'update t2 set j= j-10 where j in (select i from v1)' takes shared row locks on 't1'.
+Success: 'update t3 set k= k-10 where k in (select j from v2)' takes shared row locks on 't1'.
+Success: 'update t2, v1 set j= j-10 where j = i' takes shared row locks on 't1'.
+Success: 'update v2 set j= j-10 where j = 3' takes shared row locks on 't1'.
+#
+# 4. Statements which read tables through stored functions.
+#
+#
+# 4.1 SELECT/SET with a stored function which does not
+# modify data and uses SELECT in its turn.
+#
+# Calls to such functions won't get into the binary log and
+# thus don't need to acquire strong locks.
+# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+# used stored functions may lead to broken SBR" strong locks
+# are taken (we accepted it as a trade-off for this fix).
+Success: 'select f1()' doesn't take row locks on 't1'.
+Success: 'set @a:= f1()' doesn't take row locks on 't1'.
+#
+# 4.2 INSERT (or other statement which modifies data) with
+# a stored function which does not modify data and uses
+# SELECT.
+#
+# Since such statement is written to the binary log it should
+# be serialized with concurrent statements affecting the data
+# it uses. Therefore it should take row locks on the data
+# it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'insert into t2 values (f1() + 5)' doesn't take row locks on 't1'.
+#
+# 4.3 SELECT/SET with a stored function which
+# reads and modifies data.
+#
+# Since a call to such function is written to the binary log,
+# it should be serialized with concurrent statements affecting
+# the data it uses. Hence, row locks on the data read
+# should be taken.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'select f2()' doesn't take row locks on 't1'.
+Success: 'set @a:= f2()' doesn't take row locks on 't1'.
+#
+# 4.4. SELECT/SET with a stored function which does not
+# modify data and reads a table through subselect
+# in a control construct.
+#
+# Again, in theory a call to this function won't get to the
+# binary log and thus no locking is needed. But in practice
+# we don't detect this fact early enough (get_lock_type_for_table())
+# to avoid taking row locks.
+Success: 'select f3()' takes shared row locks on 't1'.
+Success: 'set @a:= f3()' takes shared row locks on 't1'.
+Success: 'select f4()' takes shared row locks on 't1'.
+Success: 'set @a:= f4()' takes shared row locks on 't1'.
+#
+# 4.5. INSERT (or other statement which modifies data) with
+# a stored function which does not modify data and reads
+# the table through a subselect in one of its control
+# constructs.
+#
+# Since such statement is written to the binary log it should
+# be serialized with concurrent statements affecting data it
+# uses. Therefore it should take row locks on the data
+# it reads.
+Success: 'insert into t2 values (f3() + 5)' takes shared row locks on 't1'.
+Success: 'insert into t2 values (f4() + 6)' takes shared row locks on 't1'.
+#
+# 4.6 SELECT/SET which uses a stored function with
+# DML which reads a table via a subquery.
+#
+# Since call to such function is written to the binary log
+# it should be serialized with concurrent statements.
+# Hence reads should take row locks.
+Success: 'select f5()' takes shared row locks on 't1'.
+Success: 'set @a:= f5()' takes shared row locks on 't1'.
+#
+# 4.7 SELECT/SET which uses a stored function which
+# doesn't modify data and reads tables through
+# a view.
+#
+# Once again, in theory, calls to such functions won't
+# get into the binary log and thus don't need row
+# locks. In practice this fact is discovered
+# too late to have any effect.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken
+# in case of simple SELECT.
+Success: 'select f6()' doesn't take row locks on 't1'.
+Success: 'set @a:= f6()' doesn't take row locks on 't1'.
+Success: 'select f7()' takes shared row locks on 't1'.
+Success: 'set @a:= f7()' takes shared row locks on 't1'.
+#
+# 4.8 INSERT which uses stored function which
+# doesn't modify data and reads a table
+# through a view.
+#
+# Since such statement is written to the binary log and
+# should be serialized with concurrent statements affecting
+# the data it uses. Therefore it should take row locks on
+# the rows it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken
+# in case of simple SELECT.
+Success: 'insert into t3 values (f6() + 5)' doesn't take row locks on 't1'.
+Success: 'insert into t3 values (f7() + 5)' takes shared row locks on 't1'.
+#
+# 4.9 SELECT which uses a stored function which
+# modifies data and reads tables through a view.
+#
+# Since a call to such function is written to the binary log
+# it should be serialized with concurrent statements.
+# Hence, reads should take row locks.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken
+# in case of simple SELECT.
+Success: 'select f8()' doesn't take row locks on 't1'.
+Success: 'select f9()' takes shared row locks on 't1'.
+#
+# 4.10 SELECT which uses stored function which doesn't modify
+# data and reads a table indirectly, by calling another
+# function.
+#
+# Calls to such functions won't get into the binary log and
+# thus don't need to acquire strong locks.
+# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+# used stored functions may lead to broken SBR" strong locks
+# are taken (we accepted it as a trade-off for this fix).
+Success: 'select f10()' doesn't take row locks on 't1'.
+#
+# 4.11 INSERT which uses a stored function which doesn't modify
+# data and reads a table indirectly, by calling another
+# function.
+#
+# Since such statement is written to the binary log, it should
+# be serialized with concurrent statements affecting the data it
+# uses. Therefore it should take row locks on data it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'insert into t2 values (f10() + 5)' doesn't take row locks on 't1'.
+#
+# 4.12 SELECT which uses a stored function which modifies
+# data and reads a table indirectly, by calling another
+# function.
+#
+# Since a call to such function is written to the binary log
+# it should be serialized from concurrent statements.
+# Hence, reads should take row locks.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'select f11()' doesn't take row locks on 't1'.
+#
+# 4.13 SELECT that reads a table through a subquery passed
+# as a parameter to a stored function which modifies
+# data.
+#
+# Even though a call to this function is written to the
+# binary log, values of its parameters are written as literals.
+# So there is no need to acquire row locks on rows used in
+# the subquery.
+# But due to the fact that in 5.1 for prelocked statements
+# THD::in_lock_tables is set to TRUE we acquire strong locks
+# (see also bug#44613 "SELECT statement inside FUNCTION takes
+# a shared lock" [sic!!!]).
+Success: 'select f12((select i+10 from t1 where i=1))' takes shared row locks on 't1'.
+#
+# 4.14 INSERT that reads a table via a subquery passed
+# as a parameter to a stored function which doesn't
+# modify data.
+#
+# Since this statement is written to the binary log it should
+# be serialized with concurrent statements affecting the data it
+# uses. Therefore it should take row locks on the data it reads.
+Success: 'insert into t2 values (f13((select i+10 from t1 where i=1)))' takes shared row locks on 't1'.
+#
+# 5. Statements that read tables through stored procedures.
+#
+#
+# 5.1 CALL statement which reads a table via SELECT.
+#
+# Since neither this statement nor its components are
+# written to the binary log, there is no need to take
+# row locks on the data it reads.
+Success: 'call p2(@a)' doesn't take row locks on 't1'.
+#
+# 5.2 Function that modifies data and uses CALL,
+# which reads a table through SELECT.
+#
+# Since a call to such function is written to the binary
+# log, it should be serialized with concurrent statements.
+# Hence, in this case reads should take row locks on data.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'select f14()' doesn't take row locks on 't1'.
+#
+# 5.3 SELECT that calls a function that doesn't modify data and
+# uses a CALL statement that reads a table via SELECT.
+#
+# Calls to such functions won't get into the binary log and
+# thus don't need to acquire strong locks.
+# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+# used stored functions may lead to broken SBR" strong locks
+# are taken (we accepted it as a trade-off for this fix).
+Success: 'select f15()' doesn't take row locks on 't1'.
+#
+# 5.4 INSERT which calls function which doesn't modify data and
+# uses CALL statement which reads table through SELECT.
+#
+# Since such statement is written to the binary log it should
+# be serialized with concurrent statements affecting data it
+# uses. Therefore it should take row locks on data it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'insert into t2 values (f15()+5)' doesn't take row locks on 't1'.
+#
+# 6. Statements that use triggers.
+#
+#
+# 6.1 Statement invoking a trigger that reads table via SELECT.
+#
+# Since this statement is written to the binary log it should
+# be serialized with concurrent statements affecting the data
+# it uses. Therefore, it should take row locks on the data
+# it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'insert into t4 values (2)' doesn't take row locks on 't1'.
+#
+# 6.2 Statement invoking a trigger that reads table through
+# a subquery in a control construct.
+#
+# The above is true for this statement as well.
+Success: 'update t4 set l= 2 where l = 1' takes shared row locks on 't1'.
+#
+# 6.3 Statement invoking a trigger that reads a table through
+# a view.
+#
+# And for this statement.
+Success: 'delete from t4 where l = 1' takes shared row locks on 't1'.
+#
+# 6.4 Statement invoking a trigger that reads a table through
+# a stored function.
+#
+# And for this statement.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'insert into t5 values (2)' doesn't take row locks on 't1'.
+#
+# 6.5 Statement invoking a trigger that reads a table through
+# stored procedure.
+#
+# And for this statement.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" no lock is taken.
+Success: 'update t5 set l= 2 where l = 1' doesn't take row locks on 't1'.
+# Clean-up.
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+drop function f7;
+drop function f8;
+drop function f9;
+drop function f10;
+drop function f11;
+drop function f12;
+drop function f13;
+drop function f14;
+drop function f15;
+drop view v1, v2;
+drop procedure p1;
+drop procedure p2;
+drop table t1, t2, t3, t4, t5, te;
diff --git a/mysql-test/r/innodb_xtradb_bug317074.result b/mysql-test/r/innodb_xtradb_bug317074.result
deleted file mode 100644
index fff87ced019..00000000000
--- a/mysql-test/r/innodb_xtradb_bug317074.result
+++ /dev/null
@@ -1,31 +0,0 @@
-SET @old_innodb_file_format=@@innodb_file_format;
-SET @old_innodb_file_per_table=@@innodb_file_per_table;
-SET GLOBAL innodb_file_format='Barracuda';
-SET GLOBAL innodb_file_per_table=ON;
-DROP TABLE IF EXISTS `test1`;
-CREATE TABLE IF NOT EXISTS `test1` (
-`a` int primary key auto_increment,
-`b` int default 0,
-`c` char(100) default 'testtest'
-) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
-set autocommit=0;
-CREATE PROCEDURE insert_many(p1 int)
-BEGIN
-SET @x = 0;
-SET @y = 0;
-REPEAT
-insert into test1 set b=1;
-SET @x = @x + 1;
-SET @y = @y + 1;
-IF @y >= 1000 THEN
-commit;
-SET @y = 0;
-END IF;
-UNTIL @x >= p1 END REPEAT;
-END|
-DROP PROCEDURE insert_many;
-ALTER TABLE test1 ENGINE=MyISAM;
-DROP TABLE test1;
-SET GLOBAL innodb_file_format=@old_innodb_file_format;
-SET GLOBAL innodb_file_per_table=@old_innodb_file_per_table;
-set global innodb_file_format_check=Antelope;
diff --git a/mysql-test/r/join_nested.result b/mysql-test/r/join_nested.result
index 6718274184d..5fcb3dee31a 100644
--- a/mysql-test/r/join_nested.result
+++ b/mysql-test/r/join_nested.result
@@ -232,7 +232,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using join buffer
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
+Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and (`test`.`t8`.`b` = `test`.`t7`.`b`))) where 1
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM (t6, t7)
LEFT JOIN
@@ -553,7 +553,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t0,t1
@@ -649,7 +649,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
SELECT t9.a,t9.b
FROM t9;
a b
@@ -840,7 +840,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2)
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) where (`test`.`t1`.`a` <= 2)
CREATE INDEX idx_b ON t2(b);
EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
@@ -854,7 +854,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ref idx_b idx_b 5 test.t3.b 2 100.00 Using where
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
Warnings:
-Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and (`test`.`t3`.`b` = `test`.`t2`.`b`) and (`test`.`t2`.`b` = `test`.`t4`.`b`))) where 1
+Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) and (`test`.`t2`.`b` = `test`.`t3`.`b`)))) where 1
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM (t3,t4)
LEFT JOIN
@@ -916,7 +916,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t4(b);
CREATE INDEX idx_b ON t5(b);
EXPLAIN EXTENDED
@@ -966,7 +966,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t8(b);
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
@@ -1015,7 +1015,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a);
EXPLAIN EXTENDED
@@ -1065,7 +1065,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
@@ -1463,9 +1463,9 @@ join t5 on t5.a=t3.b) on t3.a=t2.b;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL X
1 SIMPLE t3 ref a a 5 test.t2.b X
-1 SIMPLE t4 ref a a 5 test.t3.b X
-1 SIMPLE t6 ref a a 5 test.t4.b X
1 SIMPLE t5 ref a a 5 test.t3.b X
+1 SIMPLE t4 ref a a 5 test.t5.a X
+1 SIMPLE t6 ref a a 5 test.t4.b X
drop table t0, t1, t2, t3, t4, t5, t6, t7;
create table t1 (a int);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
@@ -1479,7 +1479,7 @@ on (t1.a = t2.a);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 10
1 SIMPLE t2 ref a a 5 test.t1.a 1
-1 SIMPLE t3 ref a a 5 test.t2.a 1
+1 SIMPLE t3 ref a a 5 test.t1.a 1
drop table t1, t2, t3;
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10));
CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10));
@@ -1743,4 +1743,62 @@ ON t4.carrier = t1.carrier;
COUNT(*)
6
DROP TABLE t1,t2,t3,t4,t5;
+CREATE TABLE t1 (
+pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+a int DEFAULT NULL,
+KEY idx(a)
+);
+CREATE TABLE t2 (
+pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+a int DEFAULT NULL,
+KEY idx(a)
+);
+CREATE TABLE t3 (
+pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+a int DEFAULT NULL,
+KEY idx(a)
+);
+INSERT INTO t1 VALUES
+(1,2), (2,7), (3,5), (4,7), (5,5), (6,NULL), (7,NULL), (8,9);
+INSERT INTO t2 VALUES
+(1,NULL), (4,2), (5,2), (3,4), (2,8);
+INSERT INTO t3 VALUES
+(1,9), (2,2), (3,5), (4,2), (5,7), (6,0), (7,5);
+SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
+FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a;
+pk a pk a pk a
+1 2 4 2 2 2
+1 2 4 2 4 2
+1 2 5 2 2 2
+1 2 5 2 4 2
+2 7 NULL NULL NULL NULL
+3 5 NULL NULL NULL NULL
+4 7 NULL NULL NULL NULL
+5 5 NULL NULL NULL NULL
+6 NULL NULL NULL NULL NULL
+7 NULL NULL NULL NULL NULL
+8 9 NULL NULL NULL NULL
+SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
+FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a
+WHERE t2.pk IS NULL;
+pk a pk a pk a
+2 7 NULL NULL NULL NULL
+3 5 NULL NULL NULL NULL
+4 7 NULL NULL NULL NULL
+5 5 NULL NULL NULL NULL
+6 NULL NULL NULL NULL NULL
+7 NULL NULL NULL NULL NULL
+8 9 NULL NULL NULL NULL
+SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
+FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a
+WHERE t3.pk IS NULL;
+pk a pk a pk a
+2 7 NULL NULL NULL NULL
+3 5 NULL NULL NULL NULL
+4 7 NULL NULL NULL NULL
+5 5 NULL NULL NULL NULL
+6 NULL NULL NULL NULL NULL
+7 NULL NULL NULL NULL NULL
+8 9 NULL NULL NULL NULL
+DROP TABLE t1, t2, t3;
End of 5.0 tests
diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result
index c448bddd3c9..490ef12535d 100644
--- a/mysql-test/r/join_outer.result
+++ b/mysql-test/r/join_outer.result
@@ -1308,4 +1308,204 @@ WHERE (COALESCE(t1.f1, t2.f1), f3) IN ((1, 3), (2, 2));
f1 f2 f3 f1 f2
1 NULL 3 NULL NULL
DROP TABLE t1, t2;
+#
+# Bug#52357: Assertion failed: join->best_read in greedy_search
+# optimizer_search_depth=0
+#
+CREATE TABLE t1( a INT );
+INSERT INTO t1 VALUES (1),(2);
+SET optimizer_search_depth = 0;
+# Should not core dump on query preparation
+EXPLAIN
+SELECT 1
+FROM t1 tt3 LEFT OUTER JOIN t1 tt4 ON 1
+LEFT OUTER JOIN t1 tt5 ON 1
+LEFT OUTER JOIN t1 tt6 ON 1
+LEFT OUTER JOIN t1 tt7 ON 1
+LEFT OUTER JOIN t1 tt8 ON 1
+RIGHT OUTER JOIN t1 tt2 ON 1
+RIGHT OUTER JOIN t1 tt1 ON 1
+STRAIGHT_JOIN t1 tt9 ON 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE tt1 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt2 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt3 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt4 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt5 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt6 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt7 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt8 ALL NULL NULL NULL NULL 2
+1 SIMPLE tt9 ALL NULL NULL NULL NULL 2 Using join buffer
+SET optimizer_search_depth = DEFAULT;
+DROP TABLE t1;
+#
+# Bug#46091 STRAIGHT_JOIN + RIGHT JOIN returns different result
+#
+CREATE TABLE t1 (f1 INT NOT NULL);
+INSERT INTO t1 VALUES (9),(0);
+CREATE TABLE t2 (f1 INT NOT NULL);
+INSERT INTO t2 VALUES
+(5),(3),(0),(3),(1),(0),(1),(7),(1),(0),(0),(8),(4),(9),(0),(2),(0),(8),(5),(1);
+SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1
+RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1;
+COUNT(*)
+476
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1
+RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE TA2 ALL NULL NULL NULL NULL 20 Using where
+1 SIMPLE TA3 ALL NULL NULL NULL NULL 20 Using join buffer
+1 SIMPLE TA1 ALL NULL NULL NULL NULL 2
+DROP TABLE t1, t2;
+#
+# Bug#48971 Segfault in add_found_match_trig_cond () at sql_select.cc:5990
+#
+CREATE TABLE t1(f1 INT, PRIMARY KEY (f1));
+INSERT INTO t1 VALUES (1),(2);
+EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
+LEFT JOIN t1 AS jt2
+RIGHT JOIN t1 AS jt3
+JOIN t1 AS jt4 ON 1
+LEFT JOIN t1 AS jt5 ON 1
+ON 1
+RIGHT JOIN t1 AS jt6 ON jt6.f1
+ON 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt6 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt3 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt4 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using index
+Warnings:
+Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt1` left join (`test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1))) on(1) where 1
+EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
+RIGHT JOIN t1 AS jt2
+RIGHT JOIN t1 AS jt3
+JOIN t1 AS jt4 ON 1
+LEFT JOIN t1 AS jt5 ON 1
+ON 1
+RIGHT JOIN t1 AS jt6 ON jt6.f1
+ON 1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE jt6 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt3 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt4 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt5 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt2 index NULL PRIMARY 4 NULL 2 100.00 Using index
+1 SIMPLE jt1 index NULL PRIMARY 4 NULL 2 100.00 Using index
+Warnings:
+Note 1003 select straight_join `test`.`jt1`.`f1` AS `f1` from `test`.`t1` `jt6` left join (`test`.`t1` `jt3` join `test`.`t1` `jt4` left join `test`.`t1` `jt5` on(1) left join `test`.`t1` `jt2` on(1)) on((`test`.`jt6`.`f1` and 1)) left join `test`.`t1` `jt1` on(1) where 1
+DROP TABLE t1;
+#
+# Bug#49600: outer join of two single-row tables with joining attributes
+# evaluated to nulls
+create table t1 (a int, b int);
+create table t2 (a int, b int);
+insert into t1 values (1, NULL);
+insert into t2 values (2, NULL);
+select * from t1 left join t2 on t1.b=t2.b;
+a b a b
+1 NULL NULL NULL
+select * from t1 left join t2 on t1.b=t2.b where 1=1;
+a b a b
+1 NULL NULL NULL
+drop table t1,t2;
+#
+# Bug#53161: outer join in the derived table is erroneously converted
+# into an inner join for a query with a group by clause
+#
+create table t1 (pk int not null primary key, a int not null);
+create table t2 like t1;
+create table t3 like t1;
+create table t4 (pk int not null primary key);
+insert into t1 values (1000, 1), (1001, 1);
+insert into t2 values (2000, 2), (2001, 2);
+insert into t3 values (3000, 3), (3001, 2);
+insert into t4 values (4000), (4001);
+explain extended
+select t2.pk,
+(select t3.pk+if(isnull(t4.pk),0,t4.pk)
+from t3 left join t4 on t4.pk=t3.pk
+where t3.pk=t2.pk+1000 limit 1 ) as t
+from t1,t2
+where t2.pk=t1.pk+1000 and t1.pk>1000
+group by t2.pk;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 index PRIMARY PRIMARY 4 NULL 2 100.00 Using where; Using index; Using temporary; Using filesort
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
+2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 func 1 100.00 Using where; Using index
+2 DEPENDENT SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 test.t3.pk 1 100.00 Using where; Using index
+Warnings:
+Note 1276 Field or reference 'test.t2.pk' of SELECT #2 was resolved in SELECT #1
+Note 1003 select `test`.`t2`.`pk` AS `pk`,(select (`test`.`t3`.`pk` + if(isnull(`test`.`t4`.`pk`),0,`test`.`t4`.`pk`)) from `test`.`t3` left join `test`.`t4` on((`test`.`t4`.`pk` = `test`.`t3`.`pk`)) where (`test`.`t3`.`pk` = (`test`.`t2`.`pk` + 1000)) limit 1) AS `t` from `test`.`t1` join `test`.`t2` where ((`test`.`t2`.`pk` = (`test`.`t1`.`pk` + 1000)) and (`test`.`t1`.`pk` > 1000)) group by `test`.`t2`.`pk`
+select t2.pk,
+(select t3.pk+if(isnull(t4.pk),0,t4.pk)
+from t3 left join t4 on t4.pk=t3.pk
+where t3.pk=t2.pk+1000 limit 1 ) as t
+from t1,t2
+where t2.pk=t1.pk+1000 and t1.pk>1000
+group by t2.pk;
+pk t
+2001 3001
+drop table t1,t2,t3,t4;
+#
+# Bug#57024: Poor performance when conjunctive condition over the outer
+# table is used in the on condition of an outer join
+#
+create table t1 (a int);
+insert into t1 values (NULL), (NULL), (NULL), (NULL);
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 values (4), (2), (1), (3);
+create table t2 like t1;
+insert into t2 select if(t1.a is null, 10, t1.a) from t1;
+create table t3 (a int, b int, index idx(a));
+insert into t3 values (1, 100), (3, 301), (4, 402), (1, 102), (1, 101);
+analyze table t1,t2,t3;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+test.t2 analyze status OK
+test.t3 analyze status OK
+flush status;
+select sum(t3.b) from t1 left join t3 on t3.a=t1.a and t1.a is not null;
+sum(t3.b)
+1006
+show status like "handler_read%";
+Variable_name Value
+Handler_read_first 0
+Handler_read_key 4
+Handler_read_next 5
+Handler_read_prev 0
+Handler_read_rnd 0
+Handler_read_rnd_next 1048581
+flush status;
+select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
+sum(t3.b)
+1006
+show status like "handler_read%";
+Variable_name Value
+Handler_read_first 0
+Handler_read_key 4
+Handler_read_next 5
+Handler_read_prev 0
+Handler_read_rnd 0
+Handler_read_rnd_next 1048581
+drop table t1,t2,t3;
End of 5.1 tests
diff --git a/mysql-test/r/loaddata.result b/mysql-test/r/loaddata.result
index b3487d376a1..40c278380b1 100644
--- a/mysql-test/r/loaddata.result
+++ b/mysql-test/r/loaddata.result
@@ -496,4 +496,40 @@ SELECT * FROM t1;
col0
test
DROP TABLE t1;
+#
+# Bug #52512 : Assertion `! is_set()' in
+# Diagnostics_area::set_ok_status on LOAD DATA
+#
+CREATE TABLE t1 (id INT NOT NULL);
+LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1;
+DROP TABLE t1;
+#
+# Bug #51876 : crash/memory underrun when loading data with ucs2
+# and reverse() function
+#
+# Problem # 1 (original report): wrong parsing of ucs2 data
+SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
+CREATE TABLE t1(a INT);
+LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
+(@b) SET a=REVERSE(@b);
+Warnings:
+Warning 1366 Incorrect integer value: '00' for column 'a' at row 1
+Warning 1366 Incorrect integer value: '10' for column 'a' at row 2
+# should return 2 zeroes (as the value is truncated)
+SELECT * FROM t1;
+a
+0
+0
+DROP TABLE t1;
+# Problem # 2 : if you write and read ucs2 data to a file they're lost
+SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
+CREATE TABLE t1(a INT);
+LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
+(@b) SET a=REVERSE(@b);
+# should return 0 and 1 (10 reversed)
+SELECT * FROM t1;
+a
+0
+1
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/lock_sync.result b/mysql-test/r/lock_sync.result
new file mode 100644
index 00000000000..752f278a2b4
--- /dev/null
+++ b/mysql-test/r/lock_sync.result
@@ -0,0 +1,631 @@
+#
+# Test how we handle locking in various cases when
+# we read data from MyISAM tables.
+#
+# In this test we mostly check that the SQL-layer correctly
+# determines the type of thr_lock.c lock for a table being
+# read.
+# I.e. that it disallows concurrent inserts when the statement
+# is going to be written to the binary log and therefore
+# should be serialized, and allows concurrent inserts when
+# such serialization is not necessary (e.g. when
+# the statement is not written to binary log).
+#
+# Force concurrent inserts to be performed even if the table
+# has gaps. This allows to simplify clean up in scripts
+# used below (instead of backing up table being inserted
+# into and then restoring it from backup at the end of the
+# script we can simply delete rows which were inserted).
+set @old_concurrent_insert= @@global.concurrent_insert;
+set @@global.concurrent_insert= 2;
+select @@global.concurrent_insert;
+@@global.concurrent_insert
+2
+# Prepare playground by creating tables, views,
+# routines and triggers used in tests.
+drop table if exists t0, t1, t2, t3, t4, t5, te;
+drop view if exists v1, v2;
+drop procedure if exists p1;
+drop procedure if exists p2;
+drop function if exists f1;
+drop function if exists f2;
+drop function if exists f3;
+drop function if exists f4;
+drop function if exists f5;
+drop function if exists f6;
+drop function if exists f7;
+drop function if exists f8;
+drop function if exists f9;
+drop function if exists f10;
+drop function if exists f11;
+drop function if exists f12;
+drop function if exists f13;
+drop function if exists f14;
+drop function if exists f15;
+create table t1 (i int primary key);
+insert into t1 values (1), (2), (3), (4), (5);
+create table t2 (j int primary key);
+insert into t2 values (1), (2), (3), (4), (5);
+create table t3 (k int primary key);
+insert into t3 values (1), (2), (3);
+create table t4 (l int primary key);
+insert into t4 values (1);
+create table t5 (l int primary key);
+insert into t5 values (1);
+create table te(e int primary key);
+insert into te values (1);
+create view v1 as select i from t1;
+create view v2 as select j from t2 where j in (select i from t1);
+create procedure p1(k int) insert into t2 values (k);
+create function f1() returns int
+begin
+declare j int;
+select i from t1 where i = 1 into j;
+return j;
+end|
+create function f2() returns int
+begin
+declare k int;
+select i from t1 where i = 1 into k;
+insert into t2 values (k + 5);
+return 0;
+end|
+create function f3() returns int
+begin
+return (select i from t1 where i = 3);
+end|
+create function f4() returns int
+begin
+if (select i from t1 where i = 3) then
+return 1;
+else
+return 0;
+end if;
+end|
+create function f5() returns int
+begin
+insert into t2 values ((select i from t1 where i = 1) + 5);
+return 0;
+end|
+create function f6() returns int
+begin
+declare k int;
+select i from v1 where i = 1 into k;
+return k;
+end|
+create function f7() returns int
+begin
+declare k int;
+select j from v2 where j = 1 into k;
+return k;
+end|
+create function f8() returns int
+begin
+declare k int;
+select i from v1 where i = 1 into k;
+insert into t2 values (k+5);
+return k;
+end|
+create function f9() returns int
+begin
+update v2 set j=j+10 where j=1;
+return 1;
+end|
+create function f10() returns int
+begin
+return f1();
+end|
+create function f11() returns int
+begin
+declare k int;
+set k= f1();
+insert into t2 values (k+5);
+return k;
+end|
+create function f12(p int) returns int
+begin
+insert into t2 values (p);
+return p;
+end|
+create function f13(p int) returns int
+begin
+return p;
+end|
+create procedure p2(inout p int)
+begin
+select i from t1 where i = 1 into p;
+end|
+create function f14() returns int
+begin
+declare k int;
+call p2(k);
+insert into t2 values (k+5);
+return k;
+end|
+create function f15() returns int
+begin
+declare k int;
+call p2(k);
+return k;
+end|
+create trigger t4_bi before insert on t4 for each row
+begin
+declare k int;
+select i from t1 where i=1 into k;
+set new.l= k+1;
+end|
+create trigger t4_bu before update on t4 for each row
+begin
+if (select i from t1 where i=1) then
+set new.l= 2;
+end if;
+end|
+# Trigger below uses insertion of duplicate key in 'te'
+# table as a way to abort delete operation.
+create trigger t4_bd before delete on t4 for each row
+begin
+if !(select i from v1 where i=1) then
+insert into te values (1);
+end if;
+end|
+create trigger t5_bi before insert on t5 for each row
+begin
+set new.l= f1()+1;
+end|
+create trigger t5_bu before update on t5 for each row
+begin
+declare j int;
+call p2(j);
+set new.l= j + 1;
+end|
+#
+# Set common variables to be used by the scripts
+# called below.
+#
+# Switch to connection 'con1'.
+# Cache all functions used in the tests below so statements
+# calling them won't need to open and lock mysql.proc table
+# and we can assume that each statement locks its tables
+# once during its execution.
+show create procedure p1;
+show create procedure p2;
+show create function f1;
+show create function f2;
+show create function f3;
+show create function f4;
+show create function f5;
+show create function f6;
+show create function f7;
+show create function f8;
+show create function f9;
+show create function f10;
+show create function f11;
+show create function f12;
+show create function f13;
+show create function f14;
+show create function f15;
+# Switch back to connection 'default'.
+#
+# 1. Statements that read tables and do not use subqueries.
+#
+#
+# 1.1 Simple SELECT statement.
+#
+# No locks are necessary as this statement won't be written
+# to the binary log and thanks to how MyISAM works SELECT
+# will see version of the table prior to concurrent insert.
+Success: 'select * from t1' allows concurrent inserts into 't1'.
+#
+# 1.2 Multi-UPDATE statement.
+#
+# Has to take shared locks on rows in the table being read as this
+# statement will be written to the binary log and therefore should
+# be serialized with concurrent statements.
+Success: 'update t2, t1 set j= j - 1 where i = j' doesn't allow concurrent inserts into 't1'.
+#
+# 1.3 Multi-DELETE statement.
+#
+# The above is true for this statement as well.
+Success: 'delete t2 from t1, t2 where i = j' doesn't allow concurrent inserts into 't1'.
+#
+# 1.4 DESCRIBE statement.
+#
+# This statement does not really read data from the
+# target table and thus does not take any lock on it.
+# We check this for completeness of coverage.
+lock table t1 write;
+# Switching to connection 'con1'.
+# This statement should not be blocked.
+describe t1;
+# Switching to connection 'default'.
+unlock tables;
+#
+# 1.5 SHOW statements.
+#
+# The above is true for SHOW statements as well.
+lock table t1 write;
+# Switching to connection 'con1'.
+# These statements should not be blocked.
+show keys from t1;
+# Switching to connection 'default'.
+unlock tables;
+#
+# 2. Statements which read tables through subqueries.
+#
+#
+# 2.1 CALL with a subquery.
+#
+# In theory strong lock is not necessary as this statement
+# is not written to the binary log as a whole (it is written
+# statement-by-statement). But in practice in 5.1 for
+# almost everything except SELECT we take strong lock.
+Success: 'call p1((select i + 5 from t1 where i = 1))' doesn't allow concurrent inserts into 't1'.
+#
+# 2.2 CREATE TABLE with a subquery.
+#
+# Has to take a strong lock on the table being read as
+# this statement is written to the binary log and therefore
+# should be serialized with concurrent statements.
+Success: 'create table t0 select * from t1' doesn't allow concurrent inserts into 't1'.
+drop table t0;
+Success: 'create table t0 select j from t2 where j in (select i from t1)' doesn't allow concurrent inserts into 't1'.
+drop table t0;
+#
+# 2.3 DELETE with a subquery.
+#
+# The above is true for this statement as well.
+Success: 'delete from t2 where j in (select i from t1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.4 MULTI-DELETE with a subquery.
+#
+# Same is true for this statement as well.
+Success: 'delete t2 from t3, t2 where k = j and j in (select i from t1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.5 DO with a subquery.
+#
+# In theory strong lock is not necessary as it is not logged.
+# But in practice in 5.1 for almost everything except SELECT
+# we take strong lock.
+Success: 'do (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.6 INSERT with a subquery.
+#
+# Has to take a strong lock on the table being read as
+# this statement is written to the binary log and therefore
+# should be serialized with concurrent inserts.
+Success: 'insert into t2 select i+5 from t1' doesn't allow concurrent inserts into 't1'.
+Success: 'insert into t2 values ((select i+5 from t1 where i = 4))' doesn't allow concurrent inserts into 't1'.
+#
+# 2.7 LOAD DATA with a subquery.
+#
+# The above is true for this statement as well.
+Success: 'load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.8 REPLACE with a subquery.
+#
+# Same is true for this statement as well.
+Success: 'replace into t2 select i+5 from t1' doesn't allow concurrent inserts into 't1'.
+Success: 'replace into t2 values ((select i+5 from t1 where i = 4))' doesn't allow concurrent inserts into 't1'.
+#
+# 2.9 SELECT with a subquery.
+#
+# Strong locks are not necessary as this statement is not written
+# to the binary log and thanks to how MyISAM works this statement
+# sees a version of the table prior to the concurrent insert.
+Success: 'select * from t2 where j in (select i from t1)' allows concurrent inserts into 't1'.
+#
+# 2.10 SET with a subquery.
+#
+# In theory the same is true for this statement as well.
+# But in practice in 5.1 we acquire strong lock in this
+# case as well.
+Success: 'set @a:= (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.11 SHOW with a subquery.
+#
+# The same is true for this statement too.
+Success: 'show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'.
+Success: 'show columns from t2 where (select i from t1 where i = 1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.12 UPDATE with a subquery.
+#
+# Has to take a strong lock on the table being read as
+# this statement is written to the binary log and therefore
+# should be serialized with concurrent inserts.
+Success: 'update t2 set j= j-10 where j in (select i from t1)' doesn't allow concurrent inserts into 't1'.
+#
+# 2.13 MULTI-UPDATE with a subquery.
+#
+# Same is true for this statement as well.
+Success: 'update t2, t3 set j= j -10 where j=k and j in (select i from t1)' doesn't allow concurrent inserts into 't1'.
+#
+# 3. Statements which read tables through a view.
+#
+#
+# 3.1 SELECT statement which uses some table through a view.
+#
+# Since this statement is not written to the binary log and
+# an old version of the table is accessible thanks to how MyISAM
+# handles concurrent insert, no locking is necessary.
+Success: 'select * from v1' allows concurrent inserts into 't1'.
+Success: 'select * from v2' allows concurrent inserts into 't1'.
+Success: 'select * from t2 where j in (select i from v1)' allows concurrent inserts into 't1'.
+Success: 'select * from t3 where k in (select j from v2)' allows concurrent inserts into 't1'.
+#
+# 3.2 Statements which modify a table and use views.
+#
+# Since such statements are going to be written to the binary
+# log they need to be serialized against concurrent statements
+# and therefore should take strong locks on the data read.
+Success: 'update t2 set j= j-10 where j in (select i from v1)' doesn't allow concurrent inserts into 't1'.
+Success: 'update t3 set k= k-10 where k in (select j from v2)' doesn't allow concurrent inserts into 't1'.
+Success: 'update t2, v1 set j= j-10 where j = i' doesn't allow concurrent inserts into 't1'.
+Success: 'update v2 set j= j-10 where j = 3' doesn't allow concurrent inserts into 't1'.
+#
+# 4. Statements which read tables through stored functions.
+#
+#
+# 4.1 SELECT/SET with a stored function which does not
+# modify data and uses SELECT in its turn.
+#
+# Calls to such functions won't get into the binary log and
+# thus don't need to acquire strong locks.
+# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+# used stored functions may lead to broken SBR" strong locks
+# are taken (we accepted it as a trade-off for this fix).
+Success: 'select f1()' allows concurrent inserts into 't1'.
+Success: 'set @a:= f1()' allows concurrent inserts into 't1'.
+#
+# 4.2 INSERT (or other statement which modifies data) with
+# a stored function which does not modify data and uses
+# SELECT.
+#
+# Since such statement is written to the binary log it should
+# be serialized with concurrent statements affecting the data
+# it uses. Therefore it should take strong lock on the data
+# it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'insert into t2 values (f1() + 5)' allows concurrent inserts into 't1'.
+#
+# 4.3 SELECT/SET with a stored function which
+# reads and modifies data.
+#
+# Since a call to such function is written to the binary log,
+# it should be serialized with concurrent statements affecting
+# the data it uses. Hence, a strong lock on the data read
+# should be taken.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'select f2()' allows concurrent inserts into 't1'.
+Success: 'set @a:= f2()' allows concurrent inserts into 't1'.
+#
+# 4.4. SELECT/SET with a stored function which does not
+# modify data and reads a table through subselect
+# in a control construct.
+#
+# Again, in theory a call to this function won't get to the
+# binary log and thus no strong lock is needed. But in practice
+# we don't detect this fact early enough (get_lock_type_for_table())
+# to avoid taking a strong lock.
+Success: 'select f3()' doesn't allow concurrent inserts into 't1'.
+Success: 'set @a:= f3()' doesn't allow concurrent inserts into 't1'.
+Success: 'select f4()' doesn't allow concurrent inserts into 't1'.
+Success: 'set @a:= f4()' doesn't allow concurrent inserts into 't1'.
+#
+# 4.5. INSERT (or other statement which modifies data) with
+# a stored function which does not modify data and reads
+# the table through a subselect in one of its control
+# constructs.
+#
+# Since such statement is written to the binary log it should
+# be serialized with concurrent statements affecting data it
+# uses. Therefore it should take a strong lock on the data
+# it reads.
+Success: 'insert into t2 values (f3() + 5)' doesn't allow concurrent inserts into 't1'.
+Success: 'insert into t2 values (f4() + 6)' doesn't allow concurrent inserts into 't1'.
+#
+# 4.6 SELECT/SET which uses a stored function with
+# DML which reads a table via a subquery.
+#
+# Since call to such function is written to the binary log
+# it should be serialized with concurrent statements.
+# Hence reads should take a strong lock.
+Success: 'select f5()' doesn't allow concurrent inserts into 't1'.
+Success: 'set @a:= f5()' doesn't allow concurrent inserts into 't1'.
+#
+# 4.7 SELECT/SET which uses a stored function which
+# doesn't modify data and reads tables through
+# a view.
+#
+# Once again, in theory, calls to such functions won't
+# get into the binary log and thus don't need strong
+# locks. In practice this fact is discovered
+# too late to have any effect.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken
+# in case when simple SELECT is used.
+Success: 'select f6()' allows concurrent inserts into 't1'.
+Success: 'set @a:= f6()' allows concurrent inserts into 't1'.
+Success: 'select f7()' doesn't allow concurrent inserts into 't1'.
+Success: 'set @a:= f7()' doesn't allow concurrent inserts into 't1'.
+#
+# 4.8 INSERT which uses stored function which
+# doesn't modify data and reads a table
+# through a view.
+#
+# Since such statement is written to the binary log and
+# should be serialized with concurrent statements affecting
+# the data it uses. Therefore it should take a strong lock on
+# the table it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken
+# in case when simple SELECT is used.
+Success: 'insert into t3 values (f6() + 5)' allows concurrent inserts into 't1'.
+Success: 'insert into t3 values (f7() + 5)' doesn't allow concurrent inserts into 't1'.
+#
+# 4.9 SELECT which uses a stored function which
+# modifies data and reads tables through a view.
+#
+# Since a call to such function is written to the binary log
+# it should be serialized with concurrent statements.
+# Hence, reads should take strong locks.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken
+# in case when simple SELECT is used.
+Success: 'select f8()' allows concurrent inserts into 't1'.
+Success: 'select f9()' doesn't allow concurrent inserts into 't1'.
+#
+# 4.10 SELECT which uses a stored function which doesn't modify
+# data and reads a table indirectly, by calling another
+# function.
+#
+# Calls to such functions won't get into the binary log and
+# thus don't need to acquire strong locks.
+# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+# used stored functions may lead to broken SBR" strong locks
+# are taken (we accepted it as a trade-off for this fix).
+Success: 'select f10()' allows concurrent inserts into 't1'.
+#
+# 4.11 INSERT which uses a stored function which doesn't modify
+# data and reads a table indirectly, by calling another
+# function.
+#
+# Since such statement is written to the binary log, it should
+# be serialized with concurrent statements affecting the data it
+# uses. Therefore it should take strong locks on data it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'insert into t2 values (f10() + 5)' allows concurrent inserts into 't1'.
+#
+# 4.12 SELECT which uses a stored function which modifies
+# data and reads a table indirectly, by calling another
+# function.
+#
+# Since a call to such function is written to the binary log
+# it should be serialized from concurrent statements.
+# Hence, read should take a strong lock.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'select f11()' allows concurrent inserts into 't1'.
+#
+# 4.13 SELECT that reads a table through a subquery passed
+# as a parameter to a stored function which modifies
+# data.
+#
+# Even though a call to this function is written to the
+# binary log, values of its parameters are written as literals.
+# So there is no need to acquire strong locks for tables used in
+# the subquery.
+Success: 'select f12((select i+10 from t1 where i=1))' allows concurrent inserts into 't1'.
+#
+# 4.14 INSERT that reads a table via a subquery passed
+# as a parameter to a stored function which doesn't
+# modify data.
+#
+# Since this statement is written to the binary log it should
+# be serialized with concurrent statements affecting the data it
+# uses. Therefore it should take strong locks on the data it reads.
+Success: 'insert into t2 values (f13((select i+10 from t1 where i=1)))' doesn't allow concurrent inserts into 't1'.
+#
+# 5. Statements that read tables through stored procedures.
+#
+#
+# 5.1 CALL statement which reads a table via SELECT.
+#
+# Since neither this statement nor its components are
+# written to the binary log, there is no need to take
+# strong locks on the data it reads.
+Success: 'call p2(@a)' allows concurrent inserts into 't1'.
+#
+# 5.2 Function that modifies data and uses CALL,
+# which reads a table through SELECT.
+#
+# Since a call to such function is written to the binary
+# log, it should be serialized with concurrent statements.
+# Hence, in this case reads should take strong locks on data.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'select f14()' allows concurrent inserts into 't1'.
+#
+# 5.3 SELECT that calls a function that doesn't modify data and
+# uses a CALL statement that reads a table via SELECT.
+#
+# Calls to such functions won't get into the binary log and
+# thus don't need to acquire strong locks.
+# In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+# used stored functions may lead to broken SBR" strong locks
+# are taken (we accepted it as a trade-off for this fix).
+Success: 'select f15()' allows concurrent inserts into 't1'.
+#
+# 5.4 INSERT which calls function which doesn't modify data and
+# uses CALL statement which reads table through SELECT.
+#
+# Since such statement is written to the binary log it should
+# be serialized with concurrent statements affecting data it
+# uses. Therefore it should take strong locks on data it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'insert into t2 values (f15()+5)' allows concurrent inserts into 't1'.
+#
+# 6. Statements that use triggers.
+#
+#
+# 6.1 Statement invoking a trigger that reads table via SELECT.
+#
+# Since this statement is written to the binary log it should
+# be serialized with concurrent statements affecting the data
+# it uses. Therefore, it should take strong locks on the data
+# it reads.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'insert into t4 values (2)' allows concurrent inserts into 't1'.
+#
+# 6.2 Statement invoking a trigger that reads table through
+# a subquery in a control construct.
+#
+# The above is true for this statement as well.
+Success: 'update t4 set l= 2 where l = 1' doesn't allow concurrent inserts into 't1'.
+#
+# 6.3 Statement invoking a trigger that reads a table through
+# a view.
+#
+# And for this statement.
+Success: 'delete from t4 where l = 1' doesn't allow concurrent inserts into 't1'.
+#
+# 6.4 Statement invoking a trigger that reads a table through
+# a stored function.
+#
+# And for this statement.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'insert into t5 values (2)' allows concurrent inserts into 't1'.
+#
+# 6.5 Statement invoking a trigger that reads a table through
+# stored procedure.
+#
+# And for this statement.
+# But due to bug #53921 "Wrong locks for SELECTs used stored
+# functions may lead to broken SBR" weak locks are taken.
+Success: 'update t5 set l= 2 where l = 1' allows concurrent inserts into 't1'.
+# Clean-up.
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+drop function f7;
+drop function f8;
+drop function f9;
+drop function f10;
+drop function f11;
+drop function f12;
+drop function f13;
+drop function f14;
+drop function f15;
+drop view v1, v2;
+drop procedure p1;
+drop procedure p2;
+drop table t1, t2, t3, t4, t5, te;
+set @@global.concurrent_insert= @old_concurrent_insert;
diff --git a/mysql-test/r/log_state.result b/mysql-test/r/log_state.result
index 4ce678e37aa..654f9d127d3 100644
--- a/mysql-test/r/log_state.result
+++ b/mysql-test/r/log_state.result
@@ -308,8 +308,41 @@ SET @@global.general_log = @old_general_log;
SET @@global.general_log_file = @old_general_log_file;
SET @@global.slow_query_log = @old_slow_query_log;
SET @@global.slow_query_log_file = @old_slow_query_log_file;
+#
+# Bug #49756 Rows_examined is always 0 in the slow query log
+# for update statements
+#
+SET @old_log_output = @@global.log_output;
+SET GLOBAL log_output = "TABLE";
+SET GLOBAL slow_query_log = ON;
+SET GLOBAL long_query_time = 0.001;
+TRUNCATE TABLE mysql.slow_log;
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT, PRIMARY KEY (b));
+INSERT INTO t2 VALUES (3),(4);
+INSERT INTO t1 VALUES (1+sleep(.01)),(2);
+INSERT INTO t1 SELECT b+sleep(.01) from t2;
+UPDATE t1 SET a=a+sleep(.01) WHERE a>2;
+UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC;
+UPDATE t2 set b=b+sleep(.01) limit 1;
+UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2);
+DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2;
+SELECT rows_examined,sql_text FROM mysql.slow_log;
+rows_examined sql_text
+0 INSERT INTO t1 VALUES (1+sleep(.01)),(2)
+2 INSERT INTO t1 SELECT b+sleep(.01) from t2
+4 UPDATE t1 SET a=a+sleep(.01) WHERE a>2
+8 UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC
+2 UPDATE t2 set b=b+sleep(.01) limit 1
+4 UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2)
+6 DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2
+DROP TABLE t1,t2;
+TRUNCATE TABLE mysql.slow_log;
+# end of bug#49756
End of 5.1 tests
# Close connection con1
+SET GLOBAL long_query_time = DEFAULT;
+SET GLOBAL log_output = @old_log_output;
SET global general_log = @old_general_log;
SET global general_log_file = @old_general_log_file;
SET global slow_query_log = @old_slow_query_log;
diff --git a/mysql-test/r/log_tables_upgrade.result b/mysql-test/r/log_tables_upgrade.result
index 5d9be85a48a..a9d1b41cf2c 100644
--- a/mysql-test/r/log_tables_upgrade.result
+++ b/mysql-test/r/log_tables_upgrade.result
@@ -11,15 +11,18 @@ Table Op Msg_type Msg_text
test.bug49823 repair status OK
RENAME TABLE general_log TO renamed_general_log;
RENAME TABLE test.bug49823 TO general_log;
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
+mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-Error : You can't use locks with log tables.
-status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -31,9 +34,6 @@ mysql.proc OK
mysql.procs_priv OK
mysql.renamed_general_log OK
mysql.servers OK
-mysql.slow_log
-Error : You can't use locks with log tables.
-status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -41,6 +41,9 @@ mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
DROP TABLE general_log;
RENAME TABLE renamed_general_log TO general_log;
SET GLOBAL general_log = @saved_general_log;
diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result
index 51c2ac0faf5..c9a46b70fab 100644
--- a/mysql-test/r/lowercase_table2.result
+++ b/mysql-test/r/lowercase_table2.result
@@ -56,6 +56,7 @@ CREATE DATABASE `TEST_$1`;
SHOW DATABASES LIKE "TEST%";
Database (TEST%)
TEST_$1
+test
DROP DATABASE `test_$1`;
CREATE TABLE T1 (a int) engine=innodb;
INSERT INTO T1 VALUES (1);
@@ -171,6 +172,6 @@ create table myUC (i int);
select TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES
where TABLE_SCHEMA ='mysqltest_LC2';
TABLE_SCHEMA TABLE_NAME
-mysqltest_LC2 myUC
+mysqltest_lc2 myUC
use test;
drop database mysqltest_LC2;
diff --git a/mysql-test/r/lowercase_view.result b/mysql-test/r/lowercase_view.result
index c37dc41c495..33c87ec101c 100644
--- a/mysql-test/r/lowercase_view.result
+++ b/mysql-test/r/lowercase_view.result
@@ -148,3 +148,20 @@ a
DROP VIEW v1;
DROP TABLE t1;
End of 5.0 tests.
+#
+# Bug #53095: SELECT column_name FROM INFORMATION_SCHEMA.STATISTICS
+# returns nothing
+#
+CREATE TABLE `ttt` (
+`f1` char(3) NOT NULL,
+PRIMARY KEY (`f1`)
+) ENGINE=myisam DEFAULT CHARSET=latin1;
+SELECT count(COLUMN_NAME) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME =
+'TTT';
+count(COLUMN_NAME)
+1
+SELECT count(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'TTT';
+count(*)
+1
+DROP TABLE `ttt`;
+End of 5.0 tests.
diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result
index 04bf7720c43..ae72f416c79 100644
--- a/mysql-test/r/multi_update.result
+++ b/mysql-test/r/multi_update.result
@@ -602,9 +602,6 @@ select * from t2 /* must be (3,1), (4,4) */;
a b
3 1
4 4
-show master status /* there must be the UPDATE query event */;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 206
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
@@ -612,9 +609,6 @@ insert into t2 values (1,2),(3,4),(4,4);
reset master;
UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
-show master status /* there must be the UPDATE query event */;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 221
drop table t1, t2;
set @@session.binlog_format= @sav_binlog_format;
drop table if exists t1, t2, t3;
diff --git a/mysql-test/r/mysql_client_test.result b/mysql-test/r/mysql_client_test.result
index 08d982c85e3..edda7980e97 100644
--- a/mysql-test/r/mysql_client_test.result
+++ b/mysql-test/r/mysql_client_test.result
@@ -1,3 +1,5 @@
SET @old_general_log= @@global.general_log;
+SET @old_slow_query_log= @@global.slow_query_log;
ok
SET @@global.general_log= @old_general_log;
+SET @@global.slow_query_log= @old_slow_query_log;
diff --git a/mysql-test/r/mysql_upgrade.result b/mysql-test/r/mysql_upgrade.result
index 821ad31871f..ca23dc9cca1 100644
--- a/mysql-test/r/mysql_upgrade.result
+++ b/mysql-test/r/mysql_upgrade.result
@@ -1,13 +1,16 @@
Run mysql_upgrade once
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
+mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-Error : You can't use locks with log tables.
-status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -18,9 +21,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-Error : You can't use locks with log tables.
-status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -28,18 +28,24 @@ mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
Run it again - should say already completed
This installation of MySQL is already upgraded to VERSION, use --force if you still need to run mysql_upgrade
Force should run it regardless of wether it's been run before
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
+mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-Error : You can't use locks with log tables.
-status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -50,9 +56,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-Error : You can't use locks with log tables.
-status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -60,18 +63,24 @@ mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila';
GRANT ALL ON *.* TO mysqltest1@'%';
Run mysql_upgrade with password protected account
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
+mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-Error : You can't use locks with log tables.
-status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -82,9 +91,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-Error : You can't use locks with log tables.
-status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -92,20 +98,27 @@ mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
DROP USER mysqltest1@'%';
Run mysql_upgrade with a non existing server socket
+Phase 1/3: Fixing table and database names
mysqlcheck: Got error: 2005: Unknown MySQL server host 'not_existing_host' (errno) when trying to connect
FATAL ERROR: Upgrade failed
set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
+mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-Error : You can't use locks with log tables.
-status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -116,9 +129,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-Error : You can't use locks with log tables.
-status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -126,6 +136,9 @@ mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
set GLOBAL sql_mode=default;
#
# Bug #41569 mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table
@@ -135,15 +148,18 @@ CREATE PROCEDURE testproc() BEGIN END;
UPDATE mysql.proc SET character_set_client = NULL WHERE name LIKE 'testproc';
UPDATE mysql.proc SET collation_connection = NULL WHERE name LIKE 'testproc';
UPDATE mysql.proc SET db_collation = NULL WHERE name LIKE 'testproc';
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
+mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-Error : You can't use locks with log tables.
-status : OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -154,9 +170,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-Error : You can't use locks with log tables.
-status : OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -164,8 +177,56 @@ mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
CALL testproc();
DROP PROCEDURE testproc;
WARNING: NULL values of the 'character_set_client' column ('mysql.proc' table) have been updated with a default value (latin1). Please verify if necessary.
WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (latin1_swedish_ci). Please verify if necessary.
WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary.
+#
+# Bug #53613: mysql_upgrade incorrectly revokes
+# TRIGGER privilege on given table
+#
+GRANT USAGE ON *.* TO 'user3'@'%';
+GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%';
+Run mysql_upgrade with all privileges on a user
+Phase 1/3: Fixing table and database names
+Phase 2/3: Checking and upgrading tables
+Processing databases
+information_schema
+mtr
+mtr.global_suppressions OK
+mtr.test_suppressions OK
+mysql
+mysql.columns_priv OK
+mysql.db OK
+mysql.event OK
+mysql.func OK
+mysql.help_category OK
+mysql.help_keyword OK
+mysql.help_relation OK
+mysql.help_topic OK
+mysql.host OK
+mysql.ndb_binlog_index OK
+mysql.plugin OK
+mysql.proc OK
+mysql.procs_priv OK
+mysql.servers OK
+mysql.tables_priv OK
+mysql.time_zone OK
+mysql.time_zone_leap_second OK
+mysql.time_zone_name OK
+mysql.time_zone_transition OK
+mysql.time_zone_transition_type OK
+mysql.user OK
+test
+Phase 3/3: Running 'mysql_fix_privilege_tables'...
+OK
+SHOW GRANTS FOR 'user3'@'%';
+Grants for user3@%
+GRANT USAGE ON *.* TO 'user3'@'%'
+GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'
+DROP USER 'user3'@'%';
+End of 5.1 tests
diff --git a/mysql-test/r/mysqlcheck.result b/mysql-test/r/mysqlcheck.result
index 5f1a0565b10..812fd12e197 100644
--- a/mysql-test/r/mysqlcheck.result
+++ b/mysql-test/r/mysqlcheck.result
@@ -7,8 +7,6 @@ mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-note : The storage engine for the table doesn't support optimize
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -19,8 +17,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-note : The storage engine for the table doesn't support optimize
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
@@ -32,8 +28,6 @@ mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
-mysql.general_log
-note : The storage engine for the table doesn't support optimize
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
@@ -44,8 +38,6 @@ mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.servers OK
-mysql.slow_log
-note : The storage engine for the table doesn't support optimize
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result
index 328f7e2a675..2b041aee05a 100644
--- a/mysql-test/r/mysqldump.result
+++ b/mysql-test/r/mysqldump.result
@@ -1,3 +1,4 @@
+call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
# Bug#37938 Test "mysqldump" lacks various insert statements
# Turn off concurrent inserts to avoid random errors
# NOTE: We reset the variable back to saved value at the end of test
@@ -1658,8 +1659,8 @@ mysqldump: Couldn't find table: "T_1"
mysqldump: Couldn't find table: "T_"
test_sequence
------ Testing with illegal database names ------
-mysqldump: Got error: 1049: Unknown database 'mysqldump_test_d' when selecting the database
-mysqldump: Got error: 1049: Unknown database 'mysqld\ump_test_db' when selecting the database
+mysqldump: Got error: 1049: "Unknown database 'mysqldump_test_d'" when selecting the database
+mysqldump: Got error: 1049: "Unknown database 'mysqld\ump_test_db'" when selecting the database
drop table t1, t2, t3;
drop database mysqldump_test_db;
use test;
@@ -1833,7 +1834,7 @@ drop table t1, t2, t3;
#
create table t1 (a int);
mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `t1` WHERE xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 (1064)
-mysqldump: Got error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1 when retrieving data from server
+mysqldump: Got error: 1064: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' at line 1" when retrieving data from server
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -4561,5 +4562,20 @@ a b c
SET NAMES default;
DROP TABLE t1, t2;
#
+# Bug #53088: mysqldump with -T & --default-character-set set
+# truncates text/blob to 766 chars
+#
+# Also see outfile_loaddata.test
+#
+CREATE TABLE t1 (a BLOB) CHARSET latin1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t1 VALUES (REPEAT('.', 800));
+LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1.txt' INTO TABLE t2 CHARACTER SET latin1;
+# should be 800
+SELECT LENGTH(a) FROM t2;
+LENGTH(a)
+800
+DROP TABLE t1, t2;
+#
# End of 5.1 tests
#
diff --git a/mysql-test/r/mysqlhotcopy_archive.result b/mysql-test/r/mysqlhotcopy_archive.result
new file mode 100644
index 00000000000..bea78597336
--- /dev/null
+++ b/mysql-test/r/mysqlhotcopy_archive.result
@@ -0,0 +1,118 @@
+DROP DATABASE IF EXISTS hotcopy_test;
+CREATE DATABASE hotcopy_test;
+USE hotcopy_test;
+CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=archive;
+CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=archive;
+CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=archive;
+INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+Warnings:
+Warning 1265 Data truncated for column 'c2' at row 2
+INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+Warnings:
+Warning 1265 Data truncated for column 'c2' at row 2
+INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+Warnings:
+Warning 1265 Data truncated for column 'c2' at row 2
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+USE hotcopy_save;
+SELECT * FROM t1;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t2;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t3;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+USE hotcopy_test;
+DROP TABLE t2;
+db.opt
+t1.ARZ
+t1.frm
+t3.ARZ
+t3.frm
+FLUSH TABLES;
+SELECT * FROM t1;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t2;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t3;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+USE hotcopy_test;
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+DROP DATABASE hotcopy_save;
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+DROP DATABASE hotcopy_save;
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+db.opt
+t1.ARZ
+t1.frm
+t2.ARZ
+t2.frm
+t3.ARZ
+t3.frm
+DROP DATABASE hotcopy_test_cpy;
+DROP DATABASE hotcopy_test;
+DROP DATABASE hotcopy_save;
+DROP DATABASE hotcopy_save_old;
diff --git a/mysql-test/r/mysqlhotcopy_myisam.result b/mysql-test/r/mysqlhotcopy_myisam.result
new file mode 100644
index 00000000000..52aeffce5cf
--- /dev/null
+++ b/mysql-test/r/mysqlhotcopy_myisam.result
@@ -0,0 +1,164 @@
+DROP DATABASE IF EXISTS hotcopy_test;
+CREATE DATABASE hotcopy_test;
+USE hotcopy_test;
+CREATE TABLE t1 (c1 int, c2 varchar(20)) ENGINE=MyISAM;
+CREATE TABLE t2 (c1 int, c2 varchar(20)) ENGINE=MyISAM;
+CREATE TABLE t3 (c1 int, c2 varchar(20)) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+Warnings:
+Warning 1265 Data truncated for column 'c2' at row 2
+INSERT INTO t2 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+Warnings:
+Warning 1265 Data truncated for column 'c2' at row 2
+INSERT INTO t3 VALUES (1,'aaaaaaaaaaaaaaaaaaaa'),(2, 'bbbbbbbbbbbbbbbbbbbbbbb');
+Warnings:
+Warning 1265 Data truncated for column 'c2' at row 2
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+USE hotcopy_save;
+SELECT * FROM t1;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t2;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t3;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+USE hotcopy_test;
+DELETE FROM t1;
+SELECT * FROM t1;
+c1 c2
+USE hotcopy_save;
+SELECT * FROM t1;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t2;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t3;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+USE hotcopy_test;
+DROP TABLE t2;
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t3.MYD
+t3.MYI
+t3.frm
+FLUSH TABLES;
+SELECT * FROM t1;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t2;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+SELECT * FROM t3;
+c1 c2
+1 aaaaaaaaaaaaaaaaaaaa
+2 bbbbbbbbbbbbbbbbbbbb
+USE hotcopy_test;
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+DROP DATABASE hotcopy_save;
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+DROP DATABASE hotcopy_save;
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+db.opt
+t1.MYD
+t1.MYI
+t1.frm
+t2.MYD
+t2.MYI
+t2.frm
+t3.MYD
+t3.MYI
+t3.frm
+DROP DATABASE hotcopy_test_cpy;
+DROP DATABASE hotcopy_test;
+DROP DATABASE hotcopy_save;
+DROP DATABASE hotcopy_save_old;
diff --git a/mysql-test/r/not_partition.result b/mysql-test/r/not_partition.result
index f516f8634ce..b17594d0ded 100644
--- a/mysql-test/r/not_partition.result
+++ b/mysql-test/r/not_partition.result
@@ -1,47 +1,47 @@
DROP TABLE IF EXISTS t1;
FLUSH TABLES;
SELECT * FROM t1;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown table engine 'partition'
TRUNCATE TABLE t1;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown table engine 'partition'
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
-test.t1 analyze Error Unknown table engine 'partition'
+test.t1 analyze Error Unknown table engine 'partition'
test.t1 analyze error Corrupt
CHECK TABLE t1;
Table Op Msg_type Msg_text
-test.t1 check Error Unknown table engine 'partition'
+test.t1 check Error Unknown table engine 'partition'
test.t1 check error Corrupt
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
-test.t1 optimize Error Unknown table engine 'partition'
+test.t1 optimize Error Unknown table engine 'partition'
test.t1 optimize error Corrupt
REPAIR TABLE t1;
Table Op Msg_type Msg_text
-test.t1 repair Error Unknown table engine 'partition'
+test.t1 repair Error Unknown table engine 'partition'
test.t1 repair error Corrupt
ALTER TABLE t1 REPAIR PARTITION ALL;
Table Op Msg_type Msg_text
-test.t1 repair Error Unknown table engine 'partition'
+test.t1 repair Error Unknown table engine 'partition'
test.t1 repair error Corrupt
ALTER TABLE t1 CHECK PARTITION ALL;
Table Op Msg_type Msg_text
-test.t1 check Error Unknown table engine 'partition'
+test.t1 check Error Unknown table engine 'partition'
test.t1 check error Corrupt
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
Table Op Msg_type Msg_text
-test.t1 optimize Error Unknown table engine 'partition'
+test.t1 optimize Error Unknown table engine 'partition'
test.t1 optimize error Corrupt
ALTER TABLE t1 ANALYZE PARTITION ALL;
Table Op Msg_type Msg_text
-test.t1 analyze Error Unknown table engine 'partition'
+test.t1 analyze Error Unknown table engine 'partition'
test.t1 analyze error Corrupt
ALTER TABLE t1 REBUILD PARTITION ALL;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown table engine 'partition'
ALTER TABLE t1 ENGINE Memory;
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown table engine 'partition'
ALTER TABLE t1 ADD (new INT);
-ERROR 42000: Unknown table engine 'partition'
+ERROR 42000: Unknown table engine 'partition'
DROP TABLE t1;
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
diff --git a/mysql-test/r/openssl_1.result b/mysql-test/r/openssl_1.result
index d68b436d089..d87aeefbc34 100644
--- a/mysql-test/r/openssl_1.result
+++ b/mysql-test/r/openssl_1.result
@@ -189,7 +189,7 @@ UNLOCK TABLES;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
SSL error: Unable to get private key from 'MYSQL_TEST_DIR/std_data/client-cert.pem'
-mysqldump: Got error: 2026: SSL connection error when trying to connect
+mysqldump: Got error: 2026: "SSL connection error" when trying to connect
DROP TABLE t1;
Variable_name Value
Ssl_cipher DHE-RSA-AES256-SHA
diff --git a/mysql-test/r/outfile_loaddata.result b/mysql-test/r/outfile_loaddata.result
index 453e3adb54c..36a72fd84ce 100644
--- a/mysql-test/r/outfile_loaddata.result
+++ b/mysql-test/r/outfile_loaddata.result
@@ -239,4 +239,24 @@ a b c
2 NULL NULL
SET NAMES default;
DROP TABLE t1, t2;
+#
+# Bug #53088: mysqldump with -T & --default-character-set set
+# truncates text/blob to 766 chars
+#
+# Also see mysqldump.test
+#
+CREATE TABLE t1 (a BLOB) CHARSET latin1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t1 VALUES (REPEAT('.', 800));
+SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug53088.txt' CHARACTER SET latin1 FROM t1;
+# should be greater than 800
+SELECT LENGTH(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug53088.txt'));
+LENGTH(LOAD_FILE('MYSQLTEST_VARDIR/tmp/bug53088.txt'))
+801
+LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug53088.txt' INTO TABLE t2;
+# should be 800
+SELECT LENGTH(a) FROM t2;
+LENGTH(a)
+800
+DROP TABLE t1, t2;
# End of 5.1 tests.
diff --git a/mysql-test/r/partition_error.result b/mysql-test/r/partition_error.result
index 6ebf033adb7..16428fba4d9 100644
--- a/mysql-test/r/partition_error.result
+++ b/mysql-test/r/partition_error.result
@@ -1,5 +1,29 @@
drop table if exists t1;
#
+# Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
+#
+CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
+FLUSH TABLES;
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check Error Failed to read from the .par file
+test.t1 check Error Incorrect information in file: './test/t1.frm'
+test.t1 check error Corrupt
+SELECT * FROM t1;
+ERROR HY000: Failed to read from the .par file
+# Note that it is currently impossible to drop a partitioned table
+# without the .par file
+DROP TABLE t1;
+ERROR 42S02: Unknown table 't1'
+#
+# Bug#49477: Assertion `0' failed in ha_partition.cc:5530
+# with temporary table and partitions
+#
+CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
+CREATE TEMPORARY TABLE tmp_t1 LIKE t1;
+ERROR HY000: Cannot create temporary table with partitions
+DROP TABLE t1;
+#
# Bug#50392: insert_id is not reset for partitioned tables
# auto_increment on duplicate entry
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY);
diff --git a/mysql-test/r/plugin.result b/mysql-test/r/plugin.result
index 8d765945329..8169bd458e8 100644
--- a/mysql-test/r/plugin.result
+++ b/mysql-test/r/plugin.result
@@ -75,9 +75,9 @@ SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
#illegal value fixed
CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS;
Warnings:
-Warning 1651 Incorrect value '10000000000000000000' for option 'ULL'
-Warning 1651 Incorrect value 'ttt' for option 'one_or_two'
-Warning 1651 Incorrect value 'SSS' for option 'YESNO'
+Warning 1652 Incorrect value '10000000000000000000' for option 'ULL'
+Warning 1652 Incorrect value 'ttt' for option 'one_or_two'
+Warning 1652 Incorrect value 'SSS' for option 'YESNO'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/r/plugin_maturity.result b/mysql-test/r/plugin_maturity.result
new file mode 100644
index 00000000000..97147459f6f
--- /dev/null
+++ b/mysql-test/r/plugin_maturity.result
@@ -0,0 +1,2 @@
+INSTALL PLUGIN example SONAME 'ha_example.so';
+ERROR HY000: Can't open shared library 'ha_example.so' (errno: 0 Loading of experimental plugins is prohibited by --plugin-maturity=stable)
diff --git a/mysql-test/r/renamedb.result b/mysql-test/r/renamedb.result
index ff8f89592fc..e77aca0d0b7 100644
--- a/mysql-test/r/renamedb.result
+++ b/mysql-test/r/renamedb.result
@@ -7,6 +7,6 @@ ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and n
ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME;
ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name
ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME;
-ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name
+ERROR 42000: Incorrect database name '#mysql50#'
ALTER DATABASE `#mysql50#upgrade-me` UPGRADE DATA DIRECTORY NAME;
ERROR 42000: Unknown database '#mysql50#upgrade-me'
diff --git a/mysql-test/r/schema.result b/mysql-test/r/schema.result
index 564fb3626df..e6af4e312a3 100644
--- a/mysql-test/r/schema.result
+++ b/mysql-test/r/schema.result
@@ -11,3 +11,22 @@ mtr
mysql
test
drop schema foo;
+#
+# Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER
+#
+CREATE DATABASE db1;
+CREATE TABLE db1.t1 (a INT);
+INSERT INTO db1.t1 VALUES (1), (2);
+# Connection con1
+HANDLER db1.t1 OPEN;
+# Connection default
+# Sending:
+DROP DATABASE db1;
+# Connection con2
+# Waiting for 'DROP DATABASE db1' to sync in.
+# Connection con1
+CREATE DATABASE db2;
+ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
+DROP DATABASE db2;
+# Connection default
+# Reaping: DROP DATABASE db1
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result
index 5e9a336ca9e..252006cfcf3 100644
--- a/mysql-test/r/select.result
+++ b/mysql-test/r/select.result
@@ -4781,4 +4781,19 @@ a b c
SELECT * FROM t1 WHERE 102 < c;
a b c
DROP TABLE t1;
+#
+# Bug #54459: Assertion failed: param.sort_length,
+# file .\filesort.cc, line 149 (part II)
+#
+CREATE TABLE t1(a ENUM('') NOT NULL);
+INSERT INTO t1 VALUES (), (), ();
+EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3
+SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
+1
+1
+1
+1
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/select_pkeycache.result b/mysql-test/r/select_pkeycache.result
index 5e9a336ca9e..252006cfcf3 100644
--- a/mysql-test/r/select_pkeycache.result
+++ b/mysql-test/r/select_pkeycache.result
@@ -4781,4 +4781,19 @@ a b c
SELECT * FROM t1 WHERE 102 < c;
a b c
DROP TABLE t1;
+#
+# Bug #54459: Assertion failed: param.sort_length,
+# file .\filesort.cc, line 149 (part II)
+#
+CREATE TABLE t1(a ENUM('') NOT NULL);
+INSERT INTO t1 VALUES (), (), ();
+EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3
+SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
+1
+1
+1
+1
+DROP TABLE t1;
End of 5.1 tests
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index 4da176aa1a6..31c612500d9 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -977,7 +977,7 @@ NULL test t1 c NULL NO int NULL NULL int(11) PRI select,insert,update,reference
----------------------------------------------------------------
SHOW TABLES LIKE 't1';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def TABLE_NAMES TABLE_NAME Tables_in_test (t1) 253 192 2 N 1 0 33
+def TABLE_NAMES TABLE_NAME Tables_in_test (t1) 253 219 2 N 1 0 33
Tables_in_test (t1)
t1
----------------------------------------------------------------
diff --git a/mysql-test/r/sp_trans_log.result b/mysql-test/r/sp_trans_log.result
index 7a6173b89e2..7b7d05617ab 100644
--- a/mysql-test/r/sp_trans_log.result
+++ b/mysql-test/r/sp_trans_log.result
@@ -14,13 +14,13 @@ end|
reset master|
insert into t2 values (bug23333(),1)|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
-show binlog events from 106 /* with fixes for #23333 will show there is the query */|
+show binlog events from <binlog_start>|
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # #
-master-bin.000001 # Table_map 1 # #
-master-bin.000001 # Table_map 1 # #
-master-bin.000001 # Write_rows 1 # #
-master-bin.000001 # Query 1 # #
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
select count(*),@a from t1 /* must be 1,1 */|
count(*) @a
1 1
diff --git a/mysql-test/r/status_user.result b/mysql-test/r/status_user.result
index a39f0819c58..636eeabfffc 100644
--- a/mysql-test/r/status_user.result
+++ b/mysql-test/r/status_user.result
@@ -3,66 +3,66 @@ select variable_value from information_schema.global_status where variable_name=
show columns from information_schema.client_statistics;
Field Type Null Key Default Extra
CLIENT varchar(64) NO
-TOTAL_CONNECTIONS int(21) NO 0
-CONCURRENT_CONNECTIONS int(21) NO 0
-CONNECTED_TIME int(21) NO 0
+TOTAL_CONNECTIONS bigint(21) NO 0
+CONCURRENT_CONNECTIONS bigint(21) NO 0
+CONNECTED_TIME bigint(21) NO 0
BUSY_TIME double NO 0
CPU_TIME double NO 0
-BYTES_RECEIVED int(21) NO 0
-BYTES_SENT int(21) NO 0
-BINLOG_BYTES_WRITTEN int(21) NO 0
-ROWS_READ int(21) NO 0
-ROWS_SENT int(21) NO 0
-ROWS_DELETED int(21) NO 0
-ROWS_INSERTED int(21) NO 0
-ROWS_UPDATED int(21) NO 0
-SELECT_COMMANDS int(21) NO 0
-UPDATE_COMMANDS int(21) NO 0
-OTHER_COMMANDS int(21) NO 0
-COMMIT_TRANSACTIONS int(21) NO 0
-ROLLBACK_TRANSACTIONS int(21) NO 0
-DENIED_CONNECTIONS int(21) NO 0
-LOST_CONNECTIONS int(21) NO 0
-ACCESS_DENIED int(21) NO 0
-EMPTY_QUERIES int(21) NO 0
+BYTES_RECEIVED bigint(21) NO 0
+BYTES_SENT bigint(21) NO 0
+BINLOG_BYTES_WRITTEN bigint(21) NO 0
+ROWS_READ bigint(21) NO 0
+ROWS_SENT bigint(21) NO 0
+ROWS_DELETED bigint(21) NO 0
+ROWS_INSERTED bigint(21) NO 0
+ROWS_UPDATED bigint(21) NO 0
+SELECT_COMMANDS bigint(21) NO 0
+UPDATE_COMMANDS bigint(21) NO 0
+OTHER_COMMANDS bigint(21) NO 0
+COMMIT_TRANSACTIONS bigint(21) NO 0
+ROLLBACK_TRANSACTIONS bigint(21) NO 0
+DENIED_CONNECTIONS bigint(21) NO 0
+LOST_CONNECTIONS bigint(21) NO 0
+ACCESS_DENIED bigint(21) NO 0
+EMPTY_QUERIES bigint(21) NO 0
show columns from information_schema.user_statistics;
Field Type Null Key Default Extra
USER varchar(48) NO
-TOTAL_CONNECTIONS int(21) NO 0
-CONCURRENT_CONNECTIONS int(21) NO 0
-CONNECTED_TIME int(21) NO 0
+TOTAL_CONNECTIONS int(11) NO 0
+CONCURRENT_CONNECTIONS int(11) NO 0
+CONNECTED_TIME int(11) NO 0
BUSY_TIME double NO 0
CPU_TIME double NO 0
-BYTES_RECEIVED int(21) NO 0
-BYTES_SENT int(21) NO 0
-BINLOG_BYTES_WRITTEN int(21) NO 0
-ROWS_READ int(21) NO 0
-ROWS_SENT int(21) NO 0
-ROWS_DELETED int(21) NO 0
-ROWS_INSERTED int(21) NO 0
-ROWS_UPDATED int(21) NO 0
-SELECT_COMMANDS int(21) NO 0
-UPDATE_COMMANDS int(21) NO 0
-OTHER_COMMANDS int(21) NO 0
-COMMIT_TRANSACTIONS int(21) NO 0
-ROLLBACK_TRANSACTIONS int(21) NO 0
-DENIED_CONNECTIONS int(21) NO 0
-LOST_CONNECTIONS int(21) NO 0
-ACCESS_DENIED int(21) NO 0
-EMPTY_QUERIES int(21) NO 0
+BYTES_RECEIVED bigint(21) NO 0
+BYTES_SENT bigint(21) NO 0
+BINLOG_BYTES_WRITTEN bigint(21) NO 0
+ROWS_READ bigint(21) NO 0
+ROWS_SENT bigint(21) NO 0
+ROWS_DELETED bigint(21) NO 0
+ROWS_INSERTED bigint(21) NO 0
+ROWS_UPDATED bigint(21) NO 0
+SELECT_COMMANDS bigint(21) NO 0
+UPDATE_COMMANDS bigint(21) NO 0
+OTHER_COMMANDS bigint(21) NO 0
+COMMIT_TRANSACTIONS bigint(21) NO 0
+ROLLBACK_TRANSACTIONS bigint(21) NO 0
+DENIED_CONNECTIONS bigint(21) NO 0
+LOST_CONNECTIONS bigint(21) NO 0
+ACCESS_DENIED bigint(21) NO 0
+EMPTY_QUERIES bigint(21) NO 0
show columns from information_schema.index_statistics;
Field Type Null Key Default Extra
TABLE_SCHEMA varchar(192) NO
TABLE_NAME varchar(192) NO
INDEX_NAME varchar(192) NO
-ROWS_READ int(21) NO 0
+ROWS_READ bigint(21) NO 0
show columns from information_schema.table_statistics;
Field Type Null Key Default Extra
TABLE_SCHEMA varchar(192) NO
TABLE_NAME varchar(192) NO
-ROWS_READ int(21) NO 0
-ROWS_CHANGED int(21) NO 0
-ROWS_CHANGED_X_INDEXES int(21) NO 0
+ROWS_READ bigint(21) NO 0
+ROWS_CHANGED bigint(21) NO 0
+ROWS_CHANGED_X_INDEXES bigint(21) NO 0
set @save_general_log=@@global.general_log;
set @@global.general_log=0;
set @@global.userstat=1;
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index 1c1846a1e38..3844b7615e6 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -4920,3 +4920,20 @@ t1_id total_amount
DROP TABLE t3;
DROP TABLE t2;
DROP TABLE t1;
+#
+# Bug #52711: Segfault when doing EXPLAIN SELECT with
+# union...order by (select... where...)
+#
+CREATE TABLE t1 (a VARCHAR(10), FULLTEXT KEY a (a));
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2 (b INT);
+INSERT INTO t2 VALUES (1),(2);
+# Should not crash
+EXPLAIN
+SELECT * FROM t2 UNION SELECT * FROM t2
+ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
+# Should not crash
+SELECT * FROM t2 UNION SELECT * FROM t2
+ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
+DROP TABLE t1,t2;
+End of 5.1 tests
diff --git a/mysql-test/r/subselect4.result b/mysql-test/r/subselect4.result
index ca212e6f731..176920a8fa8 100644
--- a/mysql-test/r/subselect4.result
+++ b/mysql-test/r/subselect4.result
@@ -59,6 +59,7 @@ FROM t3 WHERE 1 = 0 GROUP BY 1;
(SELECT 1 FROM t1,t2 WHERE t2.b > t3.b)
DROP TABLE t1,t2,t3;
End of 5.0 tests.
+<<<<<<< TREE
#
# BUG#46743 "Azalea processing correlated, aggregate SELECT
# subqueries incorrectly"
@@ -329,7 +330,12 @@ i3 INT,
KEY i1_index (i1_key)
);
INSERT INTO t1 VALUES (9,1,2), (9,2,1);
+=======
+CREATE TABLE t1 (col_int_nokey int(11) NOT NULL, col_varchar_nokey varchar(1) NOT NULL) engine=myisam;
+INSERT INTO t1 VALUES (2,'s'),(0,'v'),(2,'s');
+>>>>>>> MERGE-SOURCE
CREATE TABLE t2 (
+<<<<<<< TREE
pk INT NOT NULL,
i1 INT,
PRIMARY KEY (pk)
@@ -353,4 +359,28 @@ pk
9
# Restore old value for Index condition pushdown
SET SESSION engine_condition_pushdown=@old_icp;
+=======
+pk int(11) NOT NULL AUTO_INCREMENT,
+`col_int_key` int(11) NOT NULL,
+col_varchar_key varchar(1) NOT NULL,
+PRIMARY KEY (pk),
+KEY `col_int_key` (`col_int_key`),
+KEY `col_varchar_key` (`col_varchar_key`)
+) ENGINE=MyISAM;
+INSERT INTO t2 VALUES (4,10,'g'), (5,20,'v');
+SELECT t1.col_int_nokey,(SELECT MIN( t2_a.col_int_key ) FROM t2 t2_a, t2 t2_b, t1 t1_a WHERE t1_a.col_varchar_nokey = t2_b.col_varchar_key and t1.col_int_nokey ) as sub FROM t1;
+col_int_nokey sub
+2 10
+0 NULL
+2 10
+SELECT t1.col_int_nokey,(SELECT MIN( t2_a.col_int_key ) +1 FROM t2 t2_a, t2 t2_b, t1 t1_a WHERE t1_a.col_varchar_nokey = t2_b.col_varchar_key and t1.col_int_nokey ) as sub FROM t1;
+col_int_nokey sub
+2 11
+0 NULL
+2 11
+>>>>>>> MERGE-SOURCE
DROP TABLE t1,t2;
+<<<<<<< TREE
+=======
+End of 5.1 tests.
+>>>>>>> MERGE-SOURCE
diff --git a/mysql-test/r/table_elim.result b/mysql-test/r/table_elim.result
index a1b8ba0018d..6da1e716efa 100644
--- a/mysql-test/r/table_elim.result
+++ b/mysql-test/r/table_elim.result
@@ -60,7 +60,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 4 100.00
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00 Using where
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t0` left join (`test`.`t1`) on((`test`.`t0`.`a` = `test`.`t1`.`a`)) where 1
+Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t0` left join (`test`.`t1`) on((`test`.`t1`.`a` = `test`.`t0`.`a`)) where 1
# Elimination with aggregate functions
explain select count(*) from t1 left join t2 on t2.a=t1.a;
id select_type table type possible_keys key key_len ref rows Extra
diff --git a/mysql-test/r/table_options.result b/mysql-test/r/table_options.result
index e5b23ea4a5a..ed6fe4fb3de 100644
--- a/mysql-test/r/table_options.result
+++ b/mysql-test/r/table_options.result
@@ -3,9 +3,9 @@ SET @OLD_SQL_MODE=@@SQL_MODE;
SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1='1v1';
Warnings:
-Warning 1650 Unknown option 'fkey'
-Warning 1650 Unknown option 'dff'
-Warning 1650 Unknown option 'tkey1'
+Warning 1651 Unknown option 'fkey'
+Warning 1651 Unknown option 'dff'
+Warning 1651 Unknown option 'tkey1'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -16,10 +16,10 @@ drop table t1;
#reassiginig options in the same line
create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1=1v1 TKEY1=DEFAULT tkey1=1v2 tkey2=2v1;
Warnings:
-Warning 1650 Unknown option 'fkey'
-Warning 1650 Unknown option 'dff'
-Warning 1650 Unknown option 'tkey1'
-Warning 1650 Unknown option 'tkey2'
+Warning 1651 Unknown option 'fkey'
+Warning 1651 Unknown option 'dff'
+Warning 1651 Unknown option 'tkey1'
+Warning 1651 Unknown option 'tkey2'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -29,7 +29,7 @@ t1 CREATE TABLE `t1` (
#add option
alter table t1 tkey4=4v1;
Warnings:
-Warning 1650 Unknown option 'tkey4'
+Warning 1651 Unknown option 'tkey4'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -39,8 +39,8 @@ t1 CREATE TABLE `t1` (
#remove options
alter table t1 tkey3=DEFAULT tkey4=DEFAULT;
Warnings:
-Warning 1650 Unknown option 'tkey3'
-Warning 1650 Unknown option 'tkey4'
+Warning 1651 Unknown option 'tkey3'
+Warning 1651 Unknown option 'tkey4'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -50,11 +50,11 @@ t1 CREATE TABLE `t1` (
drop table t1;
create table t1 (a int fkey1=v1, key akey (a) kkey1=v1) tkey1=1v1 tkey1=1v2 TKEY1=DEFAULT tkey2=2v1 tkey3=3v1;
Warnings:
-Warning 1650 Unknown option 'fkey1'
-Warning 1650 Unknown option 'kkey1'
-Warning 1650 Unknown option 'TKEY1'
-Warning 1650 Unknown option 'tkey2'
-Warning 1650 Unknown option 'tkey3'
+Warning 1651 Unknown option 'fkey1'
+Warning 1651 Unknown option 'kkey1'
+Warning 1651 Unknown option 'TKEY1'
+Warning 1651 Unknown option 'tkey2'
+Warning 1651 Unknown option 'tkey3'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -64,7 +64,7 @@ t1 CREATE TABLE `t1` (
#change field with option with the same value
alter table t1 change a a int `FKEY1`='v1';
Warnings:
-Warning 1650 Unknown option 'FKEY1'
+Warning 1651 Unknown option 'FKEY1'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -74,7 +74,7 @@ t1 CREATE TABLE `t1` (
#change field with option with a different value
alter table t1 change a a int fkey1=v2;
Warnings:
-Warning 1650 Unknown option 'fkey1'
+Warning 1651 Unknown option 'fkey1'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -93,7 +93,7 @@ t1 CREATE TABLE `t1` (
#new key with options
alter table t1 add key bkey (b) kkey2=v1;
Warnings:
-Warning 1650 Unknown option 'kkey2'
+Warning 1651 Unknown option 'kkey2'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -105,8 +105,8 @@ t1 CREATE TABLE `t1` (
#new column with options
alter table t1 add column c int fkey1=v1 fkey2=v2;
Warnings:
-Warning 1650 Unknown option 'fkey1'
-Warning 1650 Unknown option 'fkey2'
+Warning 1651 Unknown option 'fkey1'
+Warning 1651 Unknown option 'fkey2'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -141,7 +141,7 @@ t1 CREATE TABLE `t1` (
#add column with options after delete
alter table t1 add column b int fkey2=v1;
Warnings:
-Warning 1650 Unknown option 'fkey2'
+Warning 1651 Unknown option 'fkey2'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -154,7 +154,7 @@ t1 CREATE TABLE `t1` (
#add key
alter table t1 add key bkey (b) kkey2=v2;
Warnings:
-Warning 1650 Unknown option 'kkey2'
+Warning 1651 Unknown option 'kkey2'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -168,7 +168,7 @@ t1 CREATE TABLE `t1` (
drop table t1;
create table t1 (a int) tkey1=100;
Warnings:
-Warning 1650 Unknown option 'tkey1'
+Warning 1651 Unknown option 'tkey1'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result
index e4b90196c2d..86712bebfa1 100644
--- a/mysql-test/r/type_time.result
+++ b/mysql-test/r/type_time.result
@@ -138,3 +138,13 @@ CAST(c AS TIME)
00:00:00
DROP TABLE t1;
End of 5.0 tests
+#
+# Bug#53942 valgrind warnings with timestamp() function and incomplete datetime values
+#
+CREATE TABLE t1(f1 TIME);
+INSERT INTO t1 VALUES ('23:38:57');
+SELECT TIMESTAMP(f1,'1') FROM t1;
+TIMESTAMP(f1,'1')
+NULL
+DROP TABLE t1;
+End of 5.1 tests
diff --git a/mysql-test/r/update.result b/mysql-test/r/update.result
index 006eaba4e69..63baf639487 100644
--- a/mysql-test/r/update.result
+++ b/mysql-test/r/update.result
@@ -527,3 +527,17 @@ ERROR HY000: You are using safe update mode and you tried to update a table with
SET SESSION sql_safe_updates = DEFAULT;
DROP TABLE t1;
DROP VIEW v1;
+#
+# Bug#54734 assert in Diagnostics_area::set_ok_status
+#
+DROP TABLE IF EXISTS t1, not_exists;
+DROP FUNCTION IF EXISTS f1;
+DROP VIEW IF EXISTS v1;
+CREATE TABLE t1 (PRIMARY KEY(pk)) AS SELECT 1 AS pk;
+CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists);
+CREATE VIEW v1 AS SELECT pk FROM t1 WHERE f1() = 13;
+UPDATE v1 SET pk = 7 WHERE pk > 0;
+ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
+DROP VIEW v1;
+DROP FUNCTION f1;
+DROP TABLE t1;
diff --git a/mysql-test/r/upgrade.result b/mysql-test/r/upgrade.result
index 034242079b1..f2c8886c915 100644
--- a/mysql-test/r/upgrade.result
+++ b/mysql-test/r/upgrade.result
@@ -112,3 +112,39 @@ select * from `a-b-c`.v1;
f1
drop database `a-b-c`;
use test;
+# End of 5.0 tests
+#
+# Bug #53804: serious flaws in the alter database .. upgrade data
+# directory name command
+#
+ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Unknown database '#mysql50#:'
+ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#.'
+ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#../'
+ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#../..'
+ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#../../'
+ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#./blablabla'
+ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#../blablabla'
+ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#/'
+ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME;
+ERROR 42000: Incorrect database name '#mysql50#/.'
+USE `#mysql50#.`;
+ERROR 42000: Incorrect database name '#mysql50#.'
+USE `#mysql50#../blablabla`;
+ERROR 42000: Incorrect database name '#mysql50#../blablabla'
+show full tables;
+Tables_in_test Table_type
+#mysql50#ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com BASE TABLE
+rename table `#mysql50#ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com` to `ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com`;
+show full tables;
+Tables_in_test Table_type
+ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com BASE TABLE
+drop table `ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com`;
+# End of 5.1 tests
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result
index 54506a9a4a2..832c679f8d5 100644
--- a/mysql-test/r/variables.result
+++ b/mysql-test/r/variables.result
@@ -576,7 +576,7 @@ set global table_open_cache=100;
set storage_engine=myisam;
set global thread_cache_size=100;
set timestamp=1, timestamp=default;
-set tmp_table_size=100;
+set tmp_table_size=1024;
set tx_isolation="READ-COMMITTED";
set wait_timeout=100;
set log_warnings=1;
@@ -1017,6 +1017,13 @@ hostname #
# Test 'myisam_mmap_size' option is not dynamic
SET @@myisam_mmap_size= 500M;
ERROR HY000: Variable 'myisam_mmap_size' is a read only variable
+#
+# Bug #52315: utc_date() crashes when system time > year 2037
+#
+SET TIMESTAMP=2*1024*1024*1024;
+#Should not crash
+SELECT UTC_DATE();
+SET TIMESTAMP=DEFAULT;
End of 5.0 tests
set join_buffer_size=1;
Warnings:
diff --git a/mysql-test/r/variables_debug.result b/mysql-test/r/variables_debug.result
index 85eaf34b033..d578fa957fc 100644
--- a/mysql-test/r/variables_debug.result
+++ b/mysql-test/r/variables_debug.result
@@ -1,3 +1,4 @@
+SET @old_debug = @@GLOBAL.debug;
set debug= 'T';
select @@debug;
@@debug
@@ -22,4 +23,5 @@ SET GLOBAL debug='';
SELECT @@global.debug;
@@global.debug
+SET GLOBAL debug=@old_debug;
End of 5.1 tests
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result
index 1d9f8a84e24..29c3fc4d901 100644
--- a/mysql-test/r/view.result
+++ b/mysql-test/r/view.result
@@ -1418,7 +1418,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join `test`.`t2` on((`test`.`t1`.`a` = `test`.`t2`.`a`))) on((`test`.`t3`.`a` = `test`.`t1`.`a`)) where 1
+Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join `test`.`t2` on(((`test`.`t1`.`a` = `test`.`t3`.`a`) and (`test`.`t2`.`a` = `test`.`t3`.`a`)))) on((`test`.`t1`.`a` = `test`.`t3`.`a`)) where 1
create view v1 (a) as select a from t1;
create view v2 (a) as select a from t2;
create view v4 (a,b) as select v1.a as a, v2.a as b from v1 left join v2 on (v1.a=v2.a);
@@ -1433,7 +1433,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join (`test`.`t2`) on((`test`.`t1`.`a` = `test`.`t2`.`a`))) on((`test`.`t3`.`a` = `test`.`t1`.`a`)) where 1
+Note 1003 select `test`.`t3`.`a` AS `a`,`test`.`t1`.`a` AS `a`,`test`.`t2`.`a` AS `b` from `test`.`t3` left join (`test`.`t1` left join (`test`.`t2`) on(((`test`.`t1`.`a` = `test`.`t3`.`a`) and (`test`.`t2`.`a` = `test`.`t3`.`a`)))) on((`test`.`t1`.`a` = `test`.`t3`.`a`)) where 1
prepare stmt1 from "select * from t3 left join v4 on (t3.a = v4.a);";
execute stmt1;
a a b
diff --git a/mysql-test/r/warnings_engine_disabled.result b/mysql-test/r/warnings_engine_disabled.result
index e5d35fdaa5f..2cc68eed653 100644
--- a/mysql-test/r/warnings_engine_disabled.result
+++ b/mysql-test/r/warnings_engine_disabled.result
@@ -1,15 +1,14 @@
-create table t1 (id int) engine=NDB;
+create table t1 (id int) engine=InnoDB;
Warnings:
-Warning 1286 Unknown table engine 'NDB'
+Warning 1286 Unknown table engine 'InnoDB'
Warning 1266 Using storage engine MyISAM for table 't1'
-alter table t1 engine=NDB;
+alter table t1 engine=InnoDB;
Warnings:
-Warning 1286 Unknown table engine 'NDB'
+Warning 1286 Unknown table engine 'InnoDB'
drop table t1;
-SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='ndbcluster';
+SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='InnoDB';
ENGINE SUPPORT
-ndbcluster NO
-SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE
-PLUGIN_NAME='ndbcluster';
+InnoDB NO
+SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME='InnoDB';
PLUGIN_NAME PLUGIN_STATUS
-ndbcluster DISABLED
+InnoDB DISABLED
diff --git a/mysql-test/std_data/archive_5_0.ARM b/mysql-test/std_data/archive_5_0.ARM
new file mode 100644
index 00000000000..8f1111437d8
--- /dev/null
+++ b/mysql-test/std_data/archive_5_0.ARM
Binary files differ
diff --git a/mysql-test/std_data/archive_5_0.ARZ b/mysql-test/std_data/archive_5_0.ARZ
new file mode 100644
index 00000000000..d24e76884cc
--- /dev/null
+++ b/mysql-test/std_data/archive_5_0.ARZ
Binary files differ
diff --git a/mysql-test/std_data/archive_5_0.frm b/mysql-test/std_data/archive_5_0.frm
new file mode 100644
index 00000000000..827213d329d
--- /dev/null
+++ b/mysql-test/std_data/archive_5_0.frm
Binary files differ
diff --git a/mysql-test/std_data/intersect-bug50389.tsv b/mysql-test/std_data/intersect-bug50389.tsv
new file mode 100644
index 00000000000..f84359603a8
--- /dev/null
+++ b/mysql-test/std_data/intersect-bug50389.tsv
@@ -0,0 +1,441 @@
+3304605 1221256 0 0 abcdefghijklmnopwrst
+3304606 1221259 0 0 abcdefghijklmnopwrst
+3304607 1221260 0 0 asdfghjklzxcvbnm
+3304629 1221273 0 0 asdfghjklzxcvbnm
+3304630 1221273 0 0 asdfghjklzxcvbnm
+3304634 1221259 0 0 asdfghjklzxcvbnm
+3304644 1221278 0 0 abcdefghijklmnopwrst
+3304648 1221278 0 0 abcdefghijklmnopwrst
+3304649 1221278 0 1 asdfghjklzxcvbnm
+3304650 1221278 0 0 asdfghjklzxcvbnm
+3304651 1221282 0 0 abcdefghijklmnopwrst
+3304660 1221287 0 0 asdfghjklzxcvbnm
+3304662 1221288 0 0 abcdefghijklmnopwrst
+3304663 1221288 0 0 abcdefghijklmnopwrst
+3304664 1221290 0 0 abcdefghijklmnopwrst
+3304670 1221290 0 0 asdfghjklzxcvbnm
+3304671 1221292 0 0 abcdefghijklmnopwrst
+3304672 1221287 0 0 asdfghjklzxcvbnm
+3304673 1221294 0 0 asdfghjklzxcvbnm
+3304674 1221287 0 0 asdfghjklzxcvbnm
+3304676 1221296 0 0 abcdefghijklmnopwrst
+3304677 1221287 0 0 abcdefghijklmnopwrst
+3304678 1221287 0 0 abcdefghijklmnopwrst
+3304679 1221297 0 0 asdfghjklzxcvbnm
+3304680 1221290 0 0 abcdefghijklmnopwrst
+3304681 1221290 0 0 abcdefghijklmnopwrst
+3304685 1221300 0 0 asdfghjklzxcvbnm
+3304687 1221302 0 0 abcdefghijklmnopwrst
+3304688 1221296 1221298 0 abcdefghijklmnopwrst
+3304692 1221309 0 0 asdfghjklzxcvbnm
+3304694 1221309 0 0 asdfghjklzxcvbnm
+3304695 1221290 0 0 abcdefghijklmnopwrst
+3304696 1221313 0 0 asdfghjklzxcvbnm
+3304701 1221314 0 0 asdfghjklzxcvbnm
+3304703 1221313 0 0 abcdefghijklmnopwrst
+3304707 1221313 0 0 asdfghjklzxcvbnm
+3304709 1221313 0 0 abcdefghijklmnopwrst
+3304713 1221314 0 0 abcdefghijklmnopwrst
+3304715 1221317 0 0 abcdefghijklmnopwrst
+3304717 1221319 0 0 asdfghjklzxcvbnm
+3304718 1221320 0 0 abcdefghijklmnopwrst
+3304723 1221314 0 0 abcdefghijklmnopwrst
+3304724 1221314 0 0 asdfghjklzxcvbnm
+3304725 1221300 0 0 asdfghjklzxcvbnm
+3304726 1221314 0 0 asdfghjklzxcvbnm
+3304730 1221326 0 0 asdfghjklzxcvbnm
+3304732 1221328 0 0 asdfghjklzxcvbnm
+3304733 1221329 0 0 asdfghjklzxcvbnm
+3304745 1221331 0 0 abcdefghijklmnopwrst
+3304747 1221300 0 0 abcdefghijklmnopwrst
+3304752 1221332 0 0 asdfghjklzxcvbnm
+3304756 1221333 0 0 asdfghjklzxcvbnm
+3304765 1221336 0 0 asdfghjklzxcvbnm
+3304767 1221338 0 0 abcdefghijklmnopwrst
+3304769 1221340 0 0 asdfghjklzxcvbnm
+3304770 1221328 0 0 asdfghjklzxcvbnm
+3304771 1221328 0 0 abcdefghijklmnopwrst
+3304773 1221340 0 0 asdfghjklzxcvbnm
+3304774 1221340 0 0 abcdefghijklmnopwrst
+3304775 1221338 1221342 1 asdfghjklzxcvbnm
+3304778 1221345 0 0 asdfghjklzxcvbnm
+3304786 1221332 0 0 asdfghjklzxcvbnm
+3304787 1221347 0 0 abcdefghijklmnopwrst
+3304789 1221347 0 0 asdfghjklzxcvbnm
+3304793 1221349 0 0 abcdefghijklmnopwrst
+3304794 1221350 0 0 asdfghjklzxcvbnm
+3304800 1221290 0 0 asdfghjklzxcvbnm
+3304802 1221290 0 0 asdfghjklzxcvbnm
+3304803 1221290 0 0 asdfghjklzxcvbnm
+3304810 1221356 0 0 asdfghjklzxcvbnm
+3304811 1221356 0 0 asdfghjklzxcvbnm
+3304821 1221364 0 0 asdfghjklzxcvbnm
+3304823 1221365 0 0 asdfghjklzxcvbnm
+3304824 1221366 0 0 abcdefghijklmnopwrst
+3304825 1221365 0 0 asdfghjklzxcvbnm
+3304826 1221367 0 0 asdfghjklzxcvbnm
+3304828 1221369 0 0 abcdefghijklmnopwrst
+3304829 1221366 1221368 0 asdfghjklzxcvbnm
+3304831 1221372 0 0 abcdefghijklmnopwrst
+3304832 1221364 1221373 0 abcdefghijklmnopwrst
+3304833 1221364 1221371 0 asdfghjklzxcvbnm
+3304834 1221364 0 0 abcdefghijklmnopwrst
+3304836 1221375 0 0 abcdefghijklmnopwrst
+3304837 1221364 0 0 abcdefghijklmnopwrst
+3304838 1221364 1221376 0 asdfghjklzxcvbnm
+3304840 1221372 0 0 asdfghjklzxcvbnm
+3304842 1221372 0 1 abcdefghijklmnopwrst
+3304844 1221372 0 0 asdfghjklzxcvbnm
+3304845 1221372 0 0 abcdefghijklmnopwrst
+3304847 1221382 0 0 abcdefghijklmnopwrst
+3304848 1221372 0 0 abcdefghijklmnopwrst
+3304849 1221372 0 0 asdfghjklzxcvbnm
+3304852 1221364 1221378 0 asdfghjklzxcvbnm
+3304853 1221383 0 0 abcdefghijklmnopwrst
+3304854 1221384 0 0 asdfghjklzxcvbnm
+3304855 1221347 0 0 asdfghjklzxcvbnm
+3304858 1221383 0 0 abcdefghijklmnopwrst
+3304862 1221386 0 0 abcdefghijklmnopwrst
+3304864 1221387 0 0 abcdefghijklmnopwrst
+3304867 1221389 0 0 abcdefghijklmnopwrst
+3304868 1221390 0 0 asdfghjklzxcvbnm
+3304869 1221391 0 0 asdfghjklzxcvbnm
+3304871 1221393 0 0 asdfghjklzxcvbnm
+3304874 1221395 0 0 abcdefghijklmnopwrst
+3304877 1221396 0 0 abcdefghijklmnopwrst
+3304879 1221396 0 0 asdfghjklzxcvbnm
+3304882 1221398 0 0 abcdefghijklmnopwrst
+3304883 1221399 0 0 abcdefghijklmnopwrst
+3304884 1221400 0 0 abcdefghijklmnopwrst
+3304889 1221405 0 0 abcdefghijklmnopwrst
+3304895 1221409 0 0 asdfghjklzxcvbnm
+3304899 1221395 0 0 asdfghjklzxcvbnm
+3304900 1221395 0 0 asdfghjklzxcvbnm
+3304902 1221395 0 0 abcdefghijklmnopwrst
+3304903 1221395 0 0 asdfghjklzxcvbnm
+3304924 1221414 0 0 abcdefghijklmnopwrst
+3304925 1221415 0 0 asdfghjklzxcvbnm
+3304935 1221416 0 0 asdfghjklzxcvbnm
+3304936 1221418 0 0 asdfghjklzxcvbnm
+3304944 1221419 0 0 abcdefghijklmnopwrst
+3304959 1221427 0 0 asdfghjklzxcvbnm
+3304963 1221415 0 0 asdfghjklzxcvbnm
+3304964 1221428 0 0 asdfghjklzxcvbnm
+3304965 1221429 0 0 abcdefghijklmnopwrst
+3304978 1221433 0 0 abcdefghijklmnopwrst
+3304986 1221437 0 0 asdfghjklzxcvbnm
+3304988 1221439 0 0 asdfghjklzxcvbnm
+3304994 1221441 0 0 asdfghjklzxcvbnm
+3304996 1221442 0 0 asdfghjklzxcvbnm
+3304998 1221443 0 0 asdfghjklzxcvbnm
+3305003 1221446 0 0 abcdefghijklmnopwrst
+3305008 1221433 0 0 abcdefghijklmnopwrst
+3305009 1221447 0 0 asdfghjklzxcvbnm
+3305012 1221447 0 0 asdfghjklzxcvbnm
+3305013 1221449 0 0 abcdefghijklmnopwrst
+3305015 1221451 0 0 asdfghjklzxcvbnm
+3305019 1221453 0 0 asdfghjklzxcvbnm
+3305023 1221449 0 0 asdfghjklzxcvbnm
+3305026 1221456 0 0 abcdefghijklmnopwrst
+3305028 1221457 0 0 asdfghjklzxcvbnm
+3305032 1221449 0 0 asdfghjklzxcvbnm
+3305037 1221453 0 0 asdfghjklzxcvbnm
+3305040 1221451 0 0 asdfghjklzxcvbnm
+3305061 1221446 0 0 abcdefghijklmnopwrst
+3305175 1221457 0 0 abcdefghijklmnopwrst
+3305304 1221453 0 0 abcdefghijklmnopwrst
+3305308 1221453 0 1 abcdefghijklmnopwrst
+3305333 1221457 1221577 0 asdfghjklzxcvbnm
+3305335 1221453 0 0 asdfghjklzxcvbnm
+3305354 1221457 0 1 asdfghjklzxcvbnm
+3306089 1221442 0 0 abcdefghijklmnopwrst
+3306090 1221442 0 0 abcdefghijklmnopwrst
+3306092 1221442 0 0 asdfghjklzxcvbnm
+3306345 1221366 0 0 asdfghjklzxcvbnm
+3306349 1221366 0 0 asdfghjklzxcvbnm
+3306419 1221364 1221371 0 asdfghjklzxcvbnm
+3307390 1221453 0 0 abcdefghijklmnopwrst
+3308002 1221416 1221417 0 abcdefghijklmnopwrst
+3308331 1221366 1222821 0 abcdefghijklmnopwrst
+3309991 1221347 0 0 asdfghjklzxcvbnm
+3311917 1221287 0 0 abcdefghijklmnopwrst
+3311937 1221287 0 0 abcdefghijklmnopwrst
+3311945 1221287 0 0 asdfghjklzxcvbnm
+3311955 1221287 0 0 abcdefghijklmnopwrst
+3311961 1221287 0 0 asdfghjklzxcvbnm
+3311963 1221287 0 1 asdfghjklzxcvbnm
+3311968 1221287 0 0 asdfghjklzxcvbnm
+3311974 1221287 0 1 abcdefghijklmnopwrst
+3311976 1221287 0 1 abcdefghijklmnopwrst
+3311981 1221287 0 1 abcdefghijklmnopwrst
+3311985 1221287 0 1 asdfghjklzxcvbnm
+3312014 1221287 0 0 abcdefghijklmnopwrst
+3312018 1221287 0 1 abcdefghijklmnopwrst
+3312025 1221287 0 0 abcdefghijklmnopwrst
+3312027 1221287 0 0 abcdefghijklmnopwrst
+3312030 1221287 0 0 abcdefghijklmnopwrst
+3313755 1221288 0 0 abcdefghijklmnopwrst
+3313767 1221288 0 0 asdfghjklzxcvbnm
+3314668 1221290 0 0 asdfghjklzxcvbnm
+3314670 1221290 0 0 abcdefghijklmnopwrst
+3323440 1221338 0 0 abcdefghijklmnopwrst
+3323736 1221338 0 0 asdfghjklzxcvbnm
+3323739 1221338 0 0 asdfghjklzxcvbnm
+3324077 1221290 0 0 asdfghjklzxcvbnm
+3324081 1221290 0 0 abcdefghijklmnopwrst
+3324082 1221290 0 0 abcdefghijklmnopwrst
+3324639 1221457 1221563 1 asdfghjklzxcvbnm
+3326180 1221287 0 0 abcdefghijklmnopwrst
+3326204 1221287 0 0 asdfghjklzxcvbnm
+3326945 1221457 1221563 1 asdfghjklzxcvbnm
+3328393 1221364 1221373 0 asdfghjklzxcvbnm
+3328966 1221287 0 0 abcdefghijklmnopwrst
+3329875 1221457 1382427 0 abcdefghijklmnopwrst
+3333449 1221278 1231113 0 abcdefghijklmnopwrst
+3336022 1221457 0 0 abcdefghijklmnopwrst
+3340069 1221364 1221373 0 abcdefghijklmnopwrst
+3340073 1221364 1221373 0 abcdefghijklmnopwrst
+3340563 1221290 0 0 asdfghjklzxcvbnm
+3341553 1221453 0 0 abcdefghijklmnopwrst
+3345868 1221287 0 0 asdfghjklzxcvbnm
+3345873 1221287 0 0 abcdefghijklmnopwrst
+3345879 1221287 0 0 asdfghjklzxcvbnm
+3346860 1221457 0 0 abcdefghijklmnopwrst
+3347053 1221287 0 0 asdfghjklzxcvbnm
+3347109 1221287 0 1 abcdefghijklmnopwrst
+3350589 1221372 1236415 0 abcdefghijklmnopwrst
+3350594 1221372 1236415 1 asdfghjklzxcvbnm
+3353871 1221457 0 0 asdfghjklzxcvbnm
+3354727 1221364 1221373 0 abcdefghijklmnopwrst
+3355270 1221393 0 1 abcdefghijklmnopwrst
+3357638 1221287 0 0 asdfghjklzxcvbnm
+3357644 1221287 0 0 abcdefghijklmnopwrst
+3357648 1221287 0 0 abcdefghijklmnopwrst
+3357651 1221287 0 0 asdfghjklzxcvbnm
+3357661 1221287 0 0 abcdefghijklmnopwrst
+3357678 1221287 0 0 abcdefghijklmnopwrst
+3357697 1221287 0 0 asdfghjklzxcvbnm
+3357737 1221287 0 0 asdfghjklzxcvbnm
+3357744 1221287 0 0 abcdefghijklmnopwrst
+3357754 1221287 0 1 asdfghjklzxcvbnm
+3357760 1221287 0 1 abcdefghijklmnopwrst
+3357774 1221287 0 1 abcdefghijklmnopwrst
+3357779 1221287 0 0 abcdefghijklmnopwrst
+3357796 1221287 0 0 asdfghjklzxcvbnm
+3357814 1221287 0 0 asdfghjklzxcvbnm
+3357833 1221287 0 1 asdfghjklzxcvbnm
+3357835 1221287 0 0 abcdefghijklmnopwrst
+3357840 1221287 0 1 asdfghjklzxcvbnm
+3357842 1221287 0 0 abcdefghijklmnopwrst
+3357845 1221287 0 1 abcdefghijklmnopwrst
+3357849 1221287 0 1 abcdefghijklmnopwrst
+3357852 1221287 0 0 abcdefghijklmnopwrst
+3358935 1221443 0 1 abcdefghijklmnopwrst
+3358967 1221443 0 1 abcdefghijklmnopwrst
+3359181 1221256 0 0 abcdefghijklmnopwrst
+3360512 1221319 0 0 asdfghjklzxcvbnm
+3362004 1221287 0 0 abcdefghijklmnopwrst
+3362009 1221287 0 1 abcdefghijklmnopwrst
+3362358 1221287 0 0 asdfghjklzxcvbnm
+3363214 1221287 0 0 abcdefghijklmnopwrst
+3363238 1221287 0 1 asdfghjklzxcvbnm
+3363616 1221287 0 1 asdfghjklzxcvbnm
+3363631 1221287 0 0 asdfghjklzxcvbnm
+3364281 1221287 0 0 abcdefghijklmnopwrst
+3365900 1221347 0 0 asdfghjklzxcvbnm
+3365901 1221347 0 0 asdfghjklzxcvbnm
+3365906 1221347 0 0 asdfghjklzxcvbnm
+3365907 1221347 0 0 asdfghjklzxcvbnm
+3365910 1221347 0 0 abcdefghijklmnopwrst
+3365936 1221347 0 0 abcdefghijklmnopwrst
+3367846 1221287 0 0 abcdefghijklmnopwrst
+3368011 1221428 0 0 abcdefghijklmnopwrst
+3369882 1221300 0 0 asdfghjklzxcvbnm
+3370856 1221443 0 0 asdfghjklzxcvbnm
+3370861 1221443 1221445 0 abcdefghijklmnopwrst
+3375327 1221443 0 0 abcdefghijklmnopwrst
+3375333 1221443 1221445 0 abcdefghijklmnopwrst
+3376219 1221453 0 1 abcdefghijklmnopwrst
+3376228 1221453 0 0 abcdefghijklmnopwrst
+3376238 1221453 0 0 asdfghjklzxcvbnm
+3376243 1221453 0 0 abcdefghijklmnopwrst
+3376248 1221453 0 1 abcdefghijklmnopwrst
+3376254 1221453 0 0 abcdefghijklmnopwrst
+3376263 1221453 0 0 abcdefghijklmnopwrst
+3376272 1221453 0 1 asdfghjklzxcvbnm
+3376281 1221453 0 0 asdfghjklzxcvbnm
+3376290 1221453 0 0 abcdefghijklmnopwrst
+3376296 1221453 0 1 abcdefghijklmnopwrst
+3376301 1221453 0 0 asdfghjklzxcvbnm
+3376350 1221453 0 0 asdfghjklzxcvbnm
+3379002 1221453 0 0 abcdefghijklmnopwrst
+3379015 1221453 0 0 asdfghjklzxcvbnm
+3379025 1221453 0 0 abcdefghijklmnopwrst
+3379032 1221453 0 0 asdfghjklzxcvbnm
+3380181 1221372 1245650 0 asdfghjklzxcvbnm
+3380186 1221372 1245650 0 abcdefghijklmnopwrst
+3380190 1221372 1245650 0 asdfghjklzxcvbnm
+3380195 1221372 1245650 0 abcdefghijklmnopwrst
+3380202 1221372 1245650 0 asdfghjklzxcvbnm
+3380683 1221287 0 0 asdfghjklzxcvbnm
+3382317 1221453 0 0 abcdefghijklmnopwrst
+3382417 1221287 0 0 asdfghjklzxcvbnm
+3383523 1221338 0 1 abcdefghijklmnopwrst
+3387213 1221287 0 0 abcdefghijklmnopwrst
+3388139 1221453 0 0 asdfghjklzxcvbnm
+3398039 1221443 1251164 0 abcdefghijklmnopwrst
+3401835 1221453 0 0 asdfghjklzxcvbnm
+3412582 1221443 1255886 0 asdfghjklzxcvbnm
+3412583 1221443 1255886 0 asdfghjklzxcvbnm
+3413795 1221443 1255886 0 asdfghjklzxcvbnm
+3413813 1221443 1256258 0 asdfghjklzxcvbnm
+3420306 1221453 0 0 asdfghjklzxcvbnm
+3420354 1221453 0 0 asdfghjklzxcvbnm
+3425653 1221443 0 0 abcdefghijklmnopwrst
+3425658 1221443 0 0 asdfghjklzxcvbnm
+3431409 1221453 0 0 asdfghjklzxcvbnm
+3432510 1221443 1262320 0 asdfghjklzxcvbnm
+3432513 1221443 1262320 0 asdfghjklzxcvbnm
+3444444 1221443 1262320 0 abcdefghijklmnopwrst
+3445447 1221287 0 1 asdfghjklzxcvbnm
+3448662 1221338 0 0 asdfghjklzxcvbnm
+3450032 1221347 0 0 abcdefghijklmnopwrst
+3450259 1221453 0 0 abcdefghijklmnopwrst
+3452176 1221453 0 0 asdfghjklzxcvbnm
+3459239 1221347 0 0 asdfghjklzxcvbnm
+3463196 1221347 0 0 abcdefghijklmnopwrst
+3468759 1221453 0 0 abcdefghijklmnopwrst
+3470988 1221457 0 0 asdfghjklzxcvbnm
+3477116 1221287 0 0 asdfghjklzxcvbnm
+3477639 1221372 1277136 0 abcdefghijklmnopwrst
+3477656 1221372 1277136 0 asdfghjklzxcvbnm
+3488071 1221256 1238964 0 abcdefghijklmnopwrst
+3488079 1221256 0 0 asdfghjklzxcvbnm
+3488108 1221256 0 1 asdfghjklzxcvbnm
+3507126 1221287 0 1 asdfghjklzxcvbnm
+3511898 1221347 0 0 asdfghjklzxcvbnm
+3521780 1221453 0 0 abcdefghijklmnopwrst
+3536908 1221287 0 0 abcdefghijklmnopwrst
+3544231 1221329 0 1 asdfghjklzxcvbnm
+3545379 1221329 1298955 0 abcdefghijklmnopwrst
+3545384 1221329 1298955 0 abcdefghijklmnopwrst
+3545387 1221329 1298955 0 abcdefghijklmnopwrst
+3545389 1221329 1298955 1 abcdefghijklmnopwrst
+3545398 1221329 1298955 1 abcdefghijklmnopwrst
+3555715 1221287 0 0 asdfghjklzxcvbnm
+3563557 1221329 1298955 0 abcdefghijklmnopwrst
+3564322 1221338 0 0 asdfghjklzxcvbnm
+3565475 1221453 0 0 abcdefghijklmnopwrst
+3577588 1221287 0 0 asdfghjklzxcvbnm
+3600047 1221453 0 0 abcdefghijklmnopwrst
+3600062 1221453 0 0 asdfghjklzxcvbnm
+3600071 1221453 0 0 abcdefghijklmnopwrst
+3600080 1221453 0 1 abcdefghijklmnopwrst
+3600086 1221453 0 0 asdfghjklzxcvbnm
+3600091 1221453 0 1 abcdefghijklmnopwrst
+3600097 1221453 0 0 asdfghjklzxcvbnm
+3600103 1221453 0 0 asdfghjklzxcvbnm
+3600106 1221453 0 0 abcdefghijklmnopwrst
+3600113 1221453 0 0 abcdefghijklmnopwrst
+3600119 1221453 0 0 asdfghjklzxcvbnm
+3600124 1221453 0 0 abcdefghijklmnopwrst
+3600144 1221453 0 0 asdfghjklzxcvbnm
+3600152 1221453 0 0 asdfghjklzxcvbnm
+3600165 1221453 0 0 asdfghjklzxcvbnm
+3610561 1221287 0 0 abcdefghijklmnopwrst
+3617030 1221329 0 0 asdfghjklzxcvbnm
+3628347 1221443 1327098 0 abcdefghijklmnopwrst
+3628348 1221443 1327098 0 abcdefghijklmnopwrst
+3628646 1221443 0 0 asdfghjklzxcvbnm
+3633673 1221372 1328838 0 abcdefghijklmnopwrst
+3648489 1221443 0 0 asdfghjklzxcvbnm
+3648490 1221443 0 0 asdfghjklzxcvbnm
+3648534 1221443 1333827 0 asdfghjklzxcvbnm
+3653046 1221329 1298955 0 asdfghjklzxcvbnm
+3662680 1221287 0 0 asdfghjklzxcvbnm
+3699529 1221288 0 0 asdfghjklzxcvbnm
+3706659 1221453 0 0 asdfghjklzxcvbnm
+3723399 1221287 0 1 asdfghjklzxcvbnm
+3749934 1221278 0 0 abcdefghijklmnopwrst
+3761370 1221443 1371176 0 asdfghjklzxcvbnm
+3765884 1221443 1333827 0 abcdefghijklmnopwrst
+3772880 1221457 0 0 abcdefghijklmnopwrst
+3779574 1221457 1372998 1 abcdefghijklmnopwrst
+3784656 1221457 1372998 1 abcdefghijklmnopwrst
+3784700 1221457 1372998 1 abcdefghijklmnopwrst
+3784744 1221457 1382427 0 abcdefghijklmnopwrst
+3796187 1221457 1382427 1 abcdefghijklmnopwrst
+3796193 1221457 0 0 abcdefghijklmnopwrst
+3817277 1221457 1382427 0 asdfghjklzxcvbnm
+3828282 1221457 0 0 abcdefghijklmnopwrst
+3828297 1221457 0 0 abcdefghijklmnopwrst
+3828300 1221457 0 0 abcdefghijklmnopwrst
+3833022 1221287 0 0 asdfghjklzxcvbnm
+3856380 1221457 1395359 0 asdfghjklzxcvbnm
+3856391 1221457 0 0 asdfghjklzxcvbnm
+3861413 1221256 0 0 abcdefghijklmnopwrst
+3864734 1221393 0 1 abcdefghijklmnopwrst
+3868051 1221329 0 0 abcdefghijklmnopwrst
+3868059 1221329 0 0 abcdefghijklmnopwrst
+3869088 1221329 0 0 abcdefghijklmnopwrst
+3878669 1221329 1298955 0 asdfghjklzxcvbnm
+3878684 1221329 1298955 0 asdfghjklzxcvbnm
+3881785 1221287 0 0 abcdefghijklmnopwrst
+3882333 1221287 0 0 asdfghjklzxcvbnm
+3882389 1221287 0 0 abcdefghijklmnopwrst
+3908680 1221372 1245650 0 asdfghjklzxcvbnm
+3908690 1221372 1245650 0 asdfghjklzxcvbnm
+3908697 1221372 1245650 0 abcdefghijklmnopwrst
+3911434 1221453 0 0 abcdefghijklmnopwrst
+3911446 1221453 0 0 asdfghjklzxcvbnm
+3911448 1221453 0 0 abcdefghijklmnopwrst
+3911489 1221453 0 0 abcdefghijklmnopwrst
+3917384 1221453 0 0 abcdefghijklmnopwrst
+3939602 1221457 0 1 asdfghjklzxcvbnm
+3962210 1221453 0 0 asdfghjklzxcvbnm
+3963734 1221457 0 0 asdfghjklzxcvbnm
+3977364 1221287 0 0 asdfghjklzxcvbnm
+3981725 1221453 0 0 abcdefghijklmnopwrst
+4042952 1221453 0 0 abcdefghijklmnopwrst
+4042953 1221453 0 0 abcdefghijklmnopwrst
+4042958 1221453 0 0 abcdefghijklmnopwrst
+4042960 1221453 0 1 abcdefghijklmnopwrst
+4042965 1221453 0 0 asdfghjklzxcvbnm
+4066893 1221453 0 1 abcdefghijklmnopwrst
+4066896 1221453 0 0 abcdefghijklmnopwrst
+4066900 1221453 0 0 abcdefghijklmnopwrst
+4066908 1221453 0 0 abcdefghijklmnopwrst
+4066912 1221453 0 0 asdfghjklzxcvbnm
+4066915 1221453 0 0 asdfghjklzxcvbnm
+4066919 1221453 0 0 abcdefghijklmnopwrst
+4066924 1221453 0 0 asdfghjklzxcvbnm
+4066929 1221453 0 0 abcdefghijklmnopwrst
+4066934 1221453 0 0 asdfghjklzxcvbnm
+4066941 1221453 0 0 abcdefghijklmnopwrst
+4066946 1221453 0 0 asdfghjklzxcvbnm
+4066955 1221453 0 0 abcdefghijklmnopwrst
+4116291 1221433 1487238 0 asdfghjklzxcvbnm
+4116295 1221433 1487238 0 abcdefghijklmnopwrst
+4116450 1221433 1487238 0 abcdefghijklmnopwrst
+4121149 1221287 0 0 asdfghjklzxcvbnm
+4137325 1221453 0 0 abcdefghijklmnopwrst
+4149051 1221287 0 0 abcdefghijklmnopwrst
+4162347 1221287 0 0 abcdefghijklmnopwrst
+4164485 1221457 0 1 asdfghjklzxcvbnm
+4174706 1221457 0 0 abcdefghijklmnopwrst
+4178645 1221457 0 0 abcdefghijklmnopwrst
+4180122 1221457 1382427 0 asdfghjklzxcvbnm
+4180925 1221457 1382427 0 asdfghjklzxcvbnm
+4186417 1221457 0 0 abcdefghijklmnopwrst
+4189624 1221457 0 1 asdfghjklzxcvbnm
+4203132 1221453 0 0 asdfghjklzxcvbnm
+4228206 1221457 0 0 abcdefghijklmnopwrst
+4278829 1221453 0 0 abcdefghijklmnopwrst
+4326422 1221453 0 0 abcdefghijklmnopwrst
+4337061 1221287 0 0 abcdefghijklmnopwrst
+4379354 1221287 0 0 abcdefghijklmnopwrst
+4404901 1221457 0 0 abcdefghijklmnopwrst
+4494153 1221457 0 0 abcdefghijklmnopwrst
+4535721 1221287 0 0 asdfghjklzxcvbnm
+4559596 1221457 0 0 abcdefghijklmnopwrst
+4617751 1221393 0 0 abcdefghijklmnopwrst
diff --git a/mysql-test/std_data/long_table_name.MYD b/mysql-test/std_data/long_table_name.MYD
new file mode 100644
index 00000000000..2ff33451b5f
--- /dev/null
+++ b/mysql-test/std_data/long_table_name.MYD
Binary files differ
diff --git a/mysql-test/std_data/long_table_name.MYI b/mysql-test/std_data/long_table_name.MYI
new file mode 100644
index 00000000000..cffa158beae
--- /dev/null
+++ b/mysql-test/std_data/long_table_name.MYI
Binary files differ
diff --git a/mysql-test/std_data/long_table_name.frm b/mysql-test/std_data/long_table_name.frm
new file mode 100644
index 00000000000..6a812a8b137
--- /dev/null
+++ b/mysql-test/std_data/long_table_name.frm
Binary files differ
diff --git a/mysql-test/std_data/server8k-cert.pem b/mysql-test/std_data/server8k-cert.pem
index 06e118cf034..e71ba5722b9 100644
--- a/mysql-test/std_data/server8k-cert.pem
+++ b/mysql-test/std_data/server8k-cert.pem
@@ -1,125 +1,51 @@
-Certificate:
- Data:
- Version: 1 (0x0)
- Serial Number: 1048579 (0x100003)
- Signature Algorithm: md5WithRSAEncryption
- Issuer: C=SE, ST=Uppsala, L=Uppsala, O=MySQL AB
- Validity
- Not Before: Jan 29 12:01:53 2010 GMT
- Not After : Jan 28 12:01:53 2015 GMT
- Subject: C=SE, ST=Uppsala, O=MySQL AB, CN=server
- Subject Public Key Info:
- Public Key Algorithm: rsaEncryption
- Public-Key: (8192 bit)
- Modulus:
- 00:ca:aa:1d:c4:11:ec:91:f0:c7:ff:5f:90:92:fc:
- 40:0c:5e:b7:3d:00:c5:20:d5:0f:89:31:07:d7:41:
- 4c:8b:60:80:aa:38:14:de:93:6b:9c:74:88:41:68:
- b5:02:41:01:2d:86:a2:7a:95:53:5e:7b:67:2f:6c:
- 1e:29:51:f9:44:fd:4a:80:be:b2:23:a1:3e:1b:38:
- cf:88:c4:71:ee:f8:6b:41:c5:2d:c0:c3:52:ac:59:
- 7d:81:34:19:95:32:b8:9a:51:b6:41:36:d4:c4:a1:
- ae:84:e6:38:b9:e8:bf:96:be:19:7a:6b:77:4d:e0:
- de:e6:b3:b6:6b:bc:3d:dd:68:bc:4b:c4:eb:f5:36:
- 93:ed:56:a2:15:50:8a:10:e8:d6:22:ed:6c:b1:cd:
- c3:18:c9:f6:0a:e1:de:61:65:62:d6:14:41:8c:b5:
- fb:14:68:c1:cf:12:5d:41:21:9d:57:11:43:7d:bb:
- 43:2c:21:bb:c3:44:7d:a8:cf:1f:c3:71:75:b5:47:
- c2:7d:ce:38:3c:73:64:9e:15:d8:a7:27:cf:bd:40:
- c8:45:08:e3:c8:39:a8:0b:8e:c2:5b:7b:f1:47:91:
- 12:91:cc:e1:00:e0:94:5b:bd:32:e4:0c:8d:c3:be:
- cc:76:32:52:12:69:b0:18:e0:b0:c2:76:34:5a:5f:
- 79:d9:f6:81:9d:02:0a:61:69:1c:33:ce:49:fa:76:
- 03:1e:07:5b:27:0b:bf:34:9e:34:96:b8:03:9b:50:
- 3a:6a:2f:17:7a:14:cf:65:63:00:37:52:a8:73:ce:
- 4b:14:40:f4:d2:9a:56:54:33:b8:77:2e:42:5b:8f:
- ec:1f:18:f4:ad:ab:8a:4a:8d:6d:70:25:f3:58:e7:
- cb:66:51:14:7d:16:f4:eb:6d:56:76:76:51:6e:d6:
- 1d:da:d3:8d:c0:64:5a:67:4e:af:e2:bf:33:d1:b8:
- f6:2a:fc:57:87:a7:35:5e:80:c9:ac:fc:87:c9:71:
- 17:91:bf:b7:4d:a3:ed:3c:1b:27:f4:66:a0:f9:46:
- 03:27:cc:ea:80:f6:4b:40:f6:41:94:cd:bd:0a:b3:
- ef:26:be:de:6f:69:ae:0f:3f:1c:55:63:33:90:9b:
- ed:ca:5a:12:4d:de:4b:06:c2:a2:92:b0:42:3d:31:
- af:a4:15:12:15:f8:8a:e9:88:8d:cf:fd:85:66:50:
- 6f:11:f1:9f:48:f3:b5:ba:9d:86:68:24:a2:5d:a8:
- 7c:54:42:fa:d8:b5:c5:f2:dd:0e:0f:d0:68:e4:54:
- 7e:c5:b9:a0:9b:65:2d:77:f4:8f:b9:30:0a:d5:86:
- 5c:ed:c9:7c:d1:da:9d:0d:63:50:ee:e5:1e:92:63:
- cc:a2:0c:e8:4a:96:02:4d:dc:8f:df:7c:8f:08:18:
- a8:30:88:d7:af:89:ad:fc:57:4b:10:f9:f1:cb:48:
- e8:b6:3b:c8:3f:fc:c2:d3:d1:4a:10:3c:1b:6b:64:
- dc:e5:65:1e:5b:b2:da:b1:e2:24:97:8f:ee:c0:4b:
- 8e:18:83:7c:17:a6:3c:45:b3:60:06:23:f2:2f:18:
- 13:9e:17:8a:c6:72:79:8c:4d:04:f3:9d:ea:e0:25:
- d3:33:8c:1e:11:47:63:1f:a5:45:3f:bd:85:b3:fe:
- a5:68:ee:48:b7:0c:a4:c9:7f:72:d0:75:66:9b:6a:
- f9:a0:50:f3:a8:59:6d:a3:dd:38:4f:70:2b:bb:ff:
- 92:2e:71:ab:ef:e9:00:ed:0d:d1:b4:6f:f0:8e:b2:
- 09:fb:4d:61:0d:d9:10:d5:54:11:cd:03:94:84:fd:
- a8:68:e4:45:6e:1e:6a:1e:2f:85:a1:6d:f5:b6:c0:
- f1:ee:f7:36:e9:fe:c2:f7:ad:cc:13:46:5b:88:42:
- f0:2d:1f:b5:0e:7e:b5:2b:e4:8d:ab:b9:87:30:6a:
- 3d:12:f4:ad:f3:1c:ac:cc:1a:48:29:2a:96:7b:80:
- 00:0b:6e:59:87:bf:a3:ca:70:99:1b:1c:fd:72:3d:
- b2:d3:94:4a:cf:55:75:be:1f:40:ec:55:35:48:2d:
- 55:f0:00:da:3c:b0:60:ba:11:32:66:54:0b:be:06:
- a4:5e:b7:c9:59:bb:4d:f4:92:06:26:48:6e:c2:12:
- d4:7c:f0:20:b8:a2:e1:bc:6a:b6:19:0e:37:47:55:
- c9:f2:49:0d:96:75:a2:84:64:bf:34:fc:be:b2:41:
- e4:f5:88:eb:e1:b7:26:a5:e5:41:c2:20:0c:f6:e2:
- a8:a5:e7:76:54:a5:fb:4b:80:05:7d:18:85:7a:ba:
- bc:b7:ad:c0:2f:60:85:cc:15:12:1c:2f:0a:9e:f3:
- 7c:40:cf:f4:3e:23:d2:95:ca:d0:06:58:52:f0:84:
- d8:0f:3d:eb:ff:12:68:94:79:8f:be:40:29:5f:98:
- c8:90:6c:05:2f:99:8c:2a:63:78:1f:23:b1:29:c5:
- e7:49:c9:b2:92:0f:53:0b:d5:71:28:17:c2:19:bf:
- 60:bf:7c:87:a8:ab:c1:f4:0a:c1:b8:d2:68:ee:c1:
- ce:a7:13:13:17:6d:24:5d:a2:37:a6:d7:7d:48:8b:
- 2b:74:2d:40:2e:ca:19:d5:b6:3e:6c:42:71:fa:cf:
- 85:87:f9:de:80:73:8b:89:f4:70:f0:d8:d7:ff:40:
- 41:9c:c7:15:6d:9b:6e:4c:b5:52:02:99:79:32:73:
- ca:26:a0:ac:31:6f:c4:b0:f5:da:bb:c2:1f:e0:9f:
- 44:ba:25:f7:9f
- Exponent: 65537 (0x10001)
- Signature Algorithm: md5WithRSAEncryption
- 08:75:dc:b9:3f:aa:b6:7e:81:7a:39:d1:ee:ed:44:b6:ce:1b:
- 37:c4:4c:19:d0:66:e6:eb:b5:4f:2a:ef:95:58:64:21:55:01:
- 12:30:ac:8a:95:d1:06:de:29:46:a4:f1:7d:7f:b0:1e:d2:4e:
- fb:f6:fa:9a:74:be:85:62:db:0b:82:90:58:62:c5:5f:f1:80:
- 02:9f:c5:fb:f3:6b:b0:b4:3b:04:b1:e5:53:c2:d0:00:a1:1a:
- 9d:65:60:6f:73:98:67:e0:9c:c8:12:94:79:59:bf:43:7b:f5:
- 77:c8:8f:df:b1:cd:11:1c:01:19:99:c2:22:42:f7:41:ae:b4:
- b8:1a
-----BEGIN CERTIFICATE-----
-MIIFfDCCBOUCAxAAAzANBgkqhkiG9w0BAQQFADBEMQswCQYDVQQGEwJTRTEQMA4G
-A1UECBMHVXBwc2FsYTEQMA4GA1UEBxMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwg
-QUIwHhcNMTAwMTI5MTIwMTUzWhcNMTUwMTI4MTIwMTUzWjBDMQswCQYDVQQGEwJT
-RTEQMA4GA1UECBMHVXBwc2FsYTERMA8GA1UEChMITXlTUUwgQUIxDzANBgNVBAMT
-BnNlcnZlcjCCBCIwDQYJKoZIhvcNAQEBBQADggQPADCCBAoCggQBAMqqHcQR7JHw
-x/9fkJL8QAxetz0AxSDVD4kxB9dBTItggKo4FN6Ta5x0iEFotQJBAS2GonqVU157
-Zy9sHilR+UT9SoC+siOhPhs4z4jEce74a0HFLcDDUqxZfYE0GZUyuJpRtkE21MSh
-roTmOLnov5a+GXprd03g3uaztmu8Pd1ovEvE6/U2k+1WohVQihDo1iLtbLHNwxjJ
-9grh3mFlYtYUQYy1+xRowc8SXUEhnVcRQ327Qywhu8NEfajPH8NxdbVHwn3OODxz
-ZJ4V2Kcnz71AyEUI48g5qAuOwlt78UeREpHM4QDglFu9MuQMjcO+zHYyUhJpsBjg
-sMJ2NFpfedn2gZ0CCmFpHDPOSfp2Ax4HWycLvzSeNJa4A5tQOmovF3oUz2VjADdS
-qHPOSxRA9NKaVlQzuHcuQluP7B8Y9K2rikqNbXAl81jny2ZRFH0W9OttVnZ2UW7W
-HdrTjcBkWmdOr+K/M9G49ir8V4enNV6Ayaz8h8lxF5G/t02j7TwbJ/RmoPlGAyfM
-6oD2S0D2QZTNvQqz7ya+3m9prg8/HFVjM5Cb7cpaEk3eSwbCopKwQj0xr6QVEhX4
-iumIjc/9hWZQbxHxn0jztbqdhmgkol2ofFRC+ti1xfLdDg/QaORUfsW5oJtlLXf0
-j7kwCtWGXO3JfNHanQ1jUO7lHpJjzKIM6EqWAk3cj998jwgYqDCI16+JrfxXSxD5
-8ctI6LY7yD/8wtPRShA8G2tk3OVlHluy2rHiJJeP7sBLjhiDfBemPEWzYAYj8i8Y
-E54XisZyeYxNBPOd6uAl0zOMHhFHYx+lRT+9hbP+pWjuSLcMpMl/ctB1Zptq+aBQ
-86hZbaPdOE9wK7v/ki5xq+/pAO0N0bRv8I6yCftNYQ3ZENVUEc0DlIT9qGjkRW4e
-ah4vhaFt9bbA8e73Nun+wvetzBNGW4hC8C0ftQ5+tSvkjau5hzBqPRL0rfMcrMwa
-SCkqlnuAAAtuWYe/o8pwmRsc/XI9stOUSs9Vdb4fQOxVNUgtVfAA2jywYLoRMmZU
-C74GpF63yVm7TfSSBiZIbsIS1HzwILii4bxqthkON0dVyfJJDZZ1ooRkvzT8vrJB
-5PWI6+G3JqXlQcIgDPbiqKXndlSl+0uABX0YhXq6vLetwC9ghcwVEhwvCp7zfEDP
-9D4j0pXK0AZYUvCE2A896/8SaJR5j75AKV+YyJBsBS+ZjCpjeB8jsSnF50nJspIP
-UwvVcSgXwhm/YL98h6irwfQKwbjSaO7BzqcTExdtJF2iN6bXfUiLK3QtQC7KGdW2
-PmxCcfrPhYf53oBzi4n0cPDY1/9AQZzHFW2bbky1UgKZeTJzyiagrDFvxLD12rvC
-H+CfRLol958CAwEAATANBgkqhkiG9w0BAQQFAAOBgQAIddy5P6q2foF6OdHu7US2
-zhs3xEwZ0Gbm67VPKu+VWGQhVQESMKyKldEG3ilGpPF9f7Ae0k779vqadL6FYtsL
-gpBYYsVf8YACn8X782uwtDsEseVTwtAAoRqdZWBvc5hn4JzIEpR5Wb9De/V3yI/f
-sc0RHAEZmcIiQvdBrrS4Gg==
+MIIJFDCCBPwCAQEwDQYJKoZIhvcNAQEEBQAwTjELMAkGA1UEBhMCU0UxEDAOBgNV
+BAgTB1VwcHNhbGExETAPBgNVBAoTCE15U1FMIEFCMQ0wCwYDVQQLEwRUZXN0MQsw
+CQYDVQQDEwJDQTAeFw0xMDA3MjgxNDA3MjhaFw0xODEwMTQxNDA3MjhaMFIxCzAJ
+BgNVBAYTAlNFMRAwDgYDVQQIEwdVcHBzYWxhMREwDwYDVQQKEwhNeVNRTCBBQjEN
+MAsGA1UECxMEVGVzdDEPMA0GA1UEAxMGc2VydmVyMIIEIjANBgkqhkiG9w0BAQEF
+AAOCBA8AMIIECgKCBAEA6h3v1OWb9I9U/Z8diBu/xYGS8NCTD3ZESboHxVI2qSEC
+PgxNNcG8Lh0ktQdgYcOe64MnDTZX0Bibm47hoDldrAlTSffFxQhylqBBoXxDF+Lr
+hXIqCz7K0PsK+bYusL9ezJ7PETDnCT7oy95q4GXbKsutbNsm9if4ZE41gs2KnoU2
+DA7kvMmkKojrMIL4+BqTXA20LLo0iSbgvUTvpSJw4u96BeyzMNnxK2wP5vvTtUo5
+hACbfU87YjaSKs+q2VXCzfyYGZk1L1xk5GUI0bP+jutf1dDzNttW2/q2Nf5rxx09
+Gh/GwmOnEk1O7cOZ8VQCsOHirIM39NuSARsY6Y3G5XM4k2W4nxyR/RtdG9bvs/33
+aGsZ5V5yp7WSs8s9HHwaCPSsUiLKckQ7uA0TTRgbeweMrrLKovG57jsbBBB8pQD4
+PRd31qgxCdstWXHiWwRyI8vOLWENPXPFqA/rJwwqNdWTogy38aqVXxGYR8PIwjA2
+OaIwFjwGZcsPNLqw6bgAN8O2UBqZHWiMF8mi7brvioDvAIufZuqa2SqT/At45H83
+psQ6R4FsxZt6SAK7EsdPo8OYTrY1i4iPZd/eKhnEu2srEZgsKRwY5H1mvDH5fWCc
+HSFu07sWmlmK6Or65Fsa0IaKLJiQDVVETd6xrI0wkM4AOcbKDrS7aywJ426dopbs
++LFdt4N0cdII4gBgJAfLuuA2yrDXRq4P6cgpVMy0R+0dEYE8zzm8zf1a+Ud273LS
+9+LB+LJKwqbW8nOPBoiekimIKfJYoOA4+C/mAjsYl1sVjjEhXJAs9S9L2UvnUk1P
+sZi4UKHI6eAIEl7VM1sQ4GbdZ0px2dF2Ax7pGkhD+DLpYyYkCprharKZdmuUNLUd
+NhXxi/HSEiE+Uy+o8RIzmH7LuROl/ZgnfHjJEiBLt2qPvwrwYd4c3XuXWs4YsWfV
+JTt8Mx2ihgVcdGy9//shCSmgJwR1oWrhgC10AEL2fKeRnYUal1i+IxFPp7nb8uwx
+UADgR0cY4A3qR/JP489QFIcxBTVs65De+Bq3ecnujk6yeGpD9iptonq4Y8uNZMc1
+kOE7GiFGwR4EufT5SEMh+tUkjth2r+842vmZZuxrVQaohDiATmIJA07W51zKH+nQ
+uw4qVKnAhPaDLCLc7YMIH9JcmkeQX0nf8/S2O2WYDH8glVDi5hfW08tCmV647vRY
+nTIywUTO0lFpz7M+VyMNaJ6yXU6biBV5hLAI8C5ldr/SWI789W2+ebBaJ9gfK+PT
+trohFSK37GcoSH4V6qSLJHCBASEsiddqHIHMLJZRYD+B6J3tLhjVUM43u+MEGbFT
+d33ZDke/WzLTExWkaOv36e67gDBmgDuj9yroq3wGfwIDAQABMA0GCSqGSIb3DQEB
+BAUAA4IEAQCc9RBhRbuWlmRZPZkqIdi5/+enyjoMmOa6ryJPxFSP8D2jrlHgQsk1
++GsJmPFT3rwWfoGAQu/aeSX4sp8OhKVJtqNA6MJrGYnZIMolgYa1wZPbkjJsdEfi
+UsZdIB0n2+KA0xwEdGPdkGCfNPBtOg557DkcyEvsIZ9ELp4Pp2XzWRhyFGasJZc4
+YwgD/3K2rpOPZoMkBKeKqV19j41OfLKGBVyuaqzitbu9+KT4RU1ibr2a+UuFCwdT
+oqyN7bfWXjcjXOMkxCsOmLfKmqQxs7TEOVrYPTdYjamDxLy/e5g5FgoCxGY8iil0
++YFLZyH6eEx/Os9DlG/M3O1MeRD9U97CdsphbDVZIDyWw5xeX8qQHJe0KSprAgiG
+TLhTZHeyrKujQCQS1oFFmNy4gSqXt0j1/6/9T80j6HeyjiiYEaEQK9YLTAjRoA7W
+VN8wtHI5F3RlNOVQEJks/bjdlpLL3VhaWtfewGh/mXRGcow84cgcsejMexmhreHm
+JfTUl9+X1IFFxGq2/606A9ROQ7kN/s4rXu7/TiMODXI/kZijoWd2SCc7Z0YWoNo7
+IRKkmZtrsflJbObEuK2Jk59uqzSxyQOBId8qtbPo8qJJyHGV5GCp34g4x67BxJBo
+h1iyVMamBAS5Ip1ejghuROrB8Hit8NhAZApXju62btJeXLX+mQayXb/wC/IXNJJD
+83tXiLfZgs6GzLAq7+KW/64sZSvj87CPiNtxkvjchAvyr+fhbBXCrf4rlOjJE6SH
+Je2/Jon7uqijncARGLBeYUT0Aa6k1slpXuSKxDNt7EIkP21kDZ5/OJ0Y1u587KVB
+dEhuDgNf2/8ij7gAQBwBoZMe1DrwddrxgLLBlyHpAZetNYFZNT+Cs/OlpqI0Jm59
+kK9pX0BY4AGOd23XM3K/uLawdmf67kkftim7aVaqXFHPiWsJVtlzmidKvNSmbmZe
+dOmMXp6PBoqcdusFVUS7vjd3KAes5wUX/CaTyOOPRu0LMSnpwEnaL76IC9x4Jd6d
+7QqY/OFTjpPH8nP57LwouiT6MgSUCWGaOkPuBJ9w9sENSbbINpgJJ42iAe2kE+R7
+qEIvf/2ETCTseeQUqm2nWiSPLkNagEh6kojmEoKrGyrv3YjrSXSOY1a70tDVy43+
+ueQDQzNZm3Q7inpke2ZKvWyY0LQmLzP2te+tnNBcdLyKJx7emPRTuMUlEdK7cLbt
+V3Sy9IKtyAXqqd66fPFj4NhJygyncj8M6CSqhG5L0GhDbkA8UJ8yK/gfKm3h5xe2
+utULK5VMtAhQt6cVahO59A9t/OI17y45bmlIgdlEQISzVFe9ZbIUJW44zBfPx74k
+/w8pMRr8gEuRqpL2WdJiKGG6lhMHLVFo
-----END CERTIFICATE-----
diff --git a/mysql-test/std_data/server8k-key.pem b/mysql-test/std_data/server8k-key.pem
index faf4b43fa56..99e7417733e 100644
--- a/mysql-test/std_data/server8k-key.pem
+++ b/mysql-test/std_data/server8k-key.pem
@@ -1,99 +1,99 @@
-----BEGIN RSA PRIVATE KEY-----
-MIISKgIBAAKCBAEAyqodxBHskfDH/1+QkvxADF63PQDFINUPiTEH10FMi2CAqjgU
-3pNrnHSIQWi1AkEBLYaiepVTXntnL2weKVH5RP1KgL6yI6E+GzjPiMRx7vhrQcUt
-wMNSrFl9gTQZlTK4mlG2QTbUxKGuhOY4uei/lr4Zemt3TeDe5rO2a7w93Wi8S8Tr
-9TaT7VaiFVCKEOjWIu1ssc3DGMn2CuHeYWVi1hRBjLX7FGjBzxJdQSGdVxFDfbtD
-LCG7w0R9qM8fw3F1tUfCfc44PHNknhXYpyfPvUDIRQjjyDmoC47CW3vxR5ESkczh
-AOCUW70y5AyNw77MdjJSEmmwGOCwwnY0Wl952faBnQIKYWkcM85J+nYDHgdbJwu/
-NJ40lrgDm1A6ai8XehTPZWMAN1Koc85LFED00ppWVDO4dy5CW4/sHxj0rauKSo1t
-cCXzWOfLZlEUfRb0621WdnZRbtYd2tONwGRaZ06v4r8z0bj2KvxXh6c1XoDJrPyH
-yXEXkb+3TaPtPBsn9Gag+UYDJ8zqgPZLQPZBlM29CrPvJr7eb2muDz8cVWMzkJvt
-yloSTd5LBsKikrBCPTGvpBUSFfiK6YiNz/2FZlBvEfGfSPO1up2GaCSiXah8VEL6
-2LXF8t0OD9Bo5FR+xbmgm2Utd/SPuTAK1YZc7cl80dqdDWNQ7uUekmPMogzoSpYC
-TdyP33yPCBioMIjXr4mt/FdLEPnxy0jotjvIP/zC09FKEDwba2Tc5WUeW7LaseIk
-l4/uwEuOGIN8F6Y8RbNgBiPyLxgTnheKxnJ5jE0E853q4CXTM4weEUdjH6VFP72F
-s/6laO5ItwykyX9y0HVmm2r5oFDzqFlto904T3Aru/+SLnGr7+kA7Q3RtG/wjrIJ
-+01hDdkQ1VQRzQOUhP2oaORFbh5qHi+FoW31tsDx7vc26f7C963ME0ZbiELwLR+1
-Dn61K+SNq7mHMGo9EvSt8xyszBpIKSqWe4AAC25Zh7+jynCZGxz9cj2y05RKz1V1
-vh9A7FU1SC1V8ADaPLBguhEyZlQLvgakXrfJWbtN9JIGJkhuwhLUfPAguKLhvGq2
-GQ43R1XJ8kkNlnWihGS/NPy+skHk9Yjr4bcmpeVBwiAM9uKoped2VKX7S4AFfRiF
-erq8t63AL2CFzBUSHC8KnvN8QM/0PiPSlcrQBlhS8ITYDz3r/xJolHmPvkApX5jI
-kGwFL5mMKmN4HyOxKcXnScmykg9TC9VxKBfCGb9gv3yHqKvB9ArBuNJo7sHOpxMT
-F20kXaI3ptd9SIsrdC1ALsoZ1bY+bEJx+s+Fh/negHOLifRw8NjX/0BBnMcVbZtu
-TLVSApl5MnPKJqCsMW/EsPXau8If4J9EuiX3nwIDAQABAoIEAElnTjqq502AsV+c
-hGfId4ZDdAjjU4LtyJ+/I4DihM/ilxeQEnb/XDWhu4w9WXpEgyGzJvxRQ43wElKJ
-zW7X4voK58Yzy5++EhmX/QsjY8TTMz3yJf0wgawtCZkXfsCcS2KRf/qk2nGRwf0e
-yaMEWwhFOEMv01lgvjs/Ei55Usrz2Wd0HqaFKxUGkNQ5hJhVTOH/rqPDzAsZc0VD
-w+Dw8NhrI8bMTvF4c+IFW8NwYmWbuh87CTxdx30VPJI82ttWJ/UN1bLtU08J2IKt
-lPgOIl8ArMjcTGxD/cqZ3Wl3Pc/XCqvGUiSYMwP7Rgh1R4+DdtjEpxdGMmMAVuVI
-HPQyqpa4gv+UMqBPish0yjSuM7jXnztINOvg9Vk1sxC5AT9eaRltmiS1s+lVxe+T
-43ulf0ccYXJD/WclWSGCwloNFuokPIV+Lgo1pKsp4XDgoxQfkXwH8Q4dEqebY9rT
-Tv9FGb1bMbdl22X1oSu2lBltBZaB/QnruV7L2GaQ0tqLKizgBRuvZFSE+DWdMb6d
-9mnEB8LWtca/nzogXb5qv4GEMUX4FUAmSf1FnGWZwwDi1DFfJ860RVKf0xokGGQ3
-cm3H/F4veds88Z1hsAu0bG8h/bEAim+Whvag995cFHDD4on41KXW8wX1on9VFA1W
-CkaGUPhLRytXDBVCSJkOYYFSJlb2wqONiWe4Tn5hsantCfliTj/GVkgDq2h7dAGR
-WyoqTntJAv/xJsUOV9WmGXnWNeZX8BSO3P5dnXnMzhCWQGoprXmWFyJ3TYCJ2+CO
-rzkZbtuKvTvGc3sDJgrSVmmg0BrOkH+GyYVlJdTDBmfzoORludDCFHECa8oK7NwY
-t3o0eNlG6IqTxl2HIoPneW9nXFQtCXv6tpJjljwjlz5WpJG+kBW6bDedcxZu7olZ
-fqtnyZTB2SjzzbGdQ4JvFup8MxNyPvYiqumQXJgkyXFVDl/UFhjWuGe04i8NBJgJ
-xORcjfgLrKH1XKVBWPJdh/2YeUKIIvQ9RB4WVqXgGmD/21tgv1bVEMYabh23e/HE
-Fe1U2XQPJKxGCEtG6b4zhFP+PeZACS+Vk5IVJYK9n4SepPBPgX/wbJLOcKGpsKjp
-yx5WjopMO6T+VUV8HIduuZ+E8+uAILHDmo2Bq+LHblaxd4SkM0+hL2H36imK5CUO
-5fLuvHW88LvFtQw6xhP20s+BnmgzE5ZvNG4Iedkjvwe9HmdNDew0UYT5vNJN0ehh
-OlraBC++JYwEclrBD9SRvprT63XKDG735pPvzLQi7WKDCBn1/JEgxDIO8nkMewOZ
-FU48Mdmkn9wqPeIigQciwl62fuAQCGRG+RXMQqra4A1apqMZQEauTK50VhHDGdbc
-ye9LHaECggIBAO9lAzoYS/Lu0ticMt24P8BSbGdxSNIpEyIlTTs+7A0UjpfXsoK9
-4EJWZ7lhgbQh+SCTS662SeC+s8M6bT+3mELxUC5S/N3aCPyfjcM3JaoACkI9+VMn
-9otJZjAEwH7cNpMN0Xa8fHCEma3l3XKiVxEJbuJC86S5mpkjeXVnDajAidBtevBd
-LWJ9n2yXk+ZKUyI0mjpqItwUxOgQ/MOIvqAu66xyjg08/I1QQTuIrReAA+oaVKhp
-c42Ufn26hUhNrQCBAtMAO3VC/chciet6vEMNEM13GqLp4+PcPhRX90gO4+bNrScD
-WgiW/jc24CGan8gAenBWC/3l/C6JUsMp+ZYmPozsa0zo6edgiO/f2KXe5nP87wZT
-MxaYJgnyXJxMefI79kUHPrhpXZxuiSCEWLhCBN34Lhpr2L491i2g/FJj9i6N3EzE
-N3ic5Q63o4QFusjqIm3taQQFoGP2Cgg9owz5WJ0uRz/gtOE3XQiQA7+ozoAXOlTw
-pJK5MMtVrEoOLIbVJIpxfDcKDp3yorR8QCQLHgDBmFeNCDmk+7YP33dRIc/AVNLF
-q7cecqEc7D8AkXX8Q53GfCEg+uqbdeMQXK4BUE9iwRK9RiFhas/RJe73+Iio3S0L
-ekLpnnOfvk744ws+JWsLpsfC/ZE7OxBLPtq2xvGl/RT2G7tCjmpX3CbPAoICAQDY
-uOEJks2T105EcMPJjzNHCCqjK6S7qZaWkF3KT1Z0Mu5oUZwwHamsMg4BQJ2mjMrL
-fRBKfXQLA6vgE7zysw3F300RDxE1RVow5+JLDQ4bqupp27/M0a8fuwksyOdKHqCV
-YHzuTCxbVIFZawTjfOxJVXDHKCFCilfY1LsA+V+oFe3Ej8YYxWXkXA9ZLigpmt3s
-Wu6eFcZgF3utzIGjI6eP6lL5bWp6Bh9Avp2xrOvpFwE2m02Y7/Zom6MT4DXvByY2
-KHHQLsasEMpeLuxQXjLeTocwcxBwBFKhX95yFuv31k00VydT+NExtaZeUYi9l19J
-WmM4GjFjAqa3uUwMNVv5JfWtKMyk4FOox2XftLvMiIhV95B8hAGxtYr3hPkGg80O
-AWPq6OKUD332COXRaHkmL5aQdN3gP5zh9+rH6icLrrZbrQidVRyDw03doRoGrH7i
-ixXLyYoW80PHgqUDPohd5bFkZpi2vwXMl1YQ2TfN9TvYFSGme9YCm9ZuypnqauW/
-aAf0FI1MNwS+XDREtzPdFi0me6WxpKL4a2Z3GGNxIFuBjQ/uydWpjxkny9qI3KAp
-SgjI3kBUDGq3gf0R+Xo/d4d/4asK9Nv2Fi0X+RfGqioFaTbQl/1zhNdvhP9IcwEJ
-DLVQ3UhMdfg285RarC2Sihui0M8Smi9od9Dj6rdWMQKCAgEAiQVRFoRnnDGz/wVQ
-W/Wkj6jdoUuG+btG10lwbhOyuj3k6+Yqp4iUfoPENKgpu/eiB1InhGWT3Y5ph7m+
-ZDTqco56bTlUwIqWkDmmw3CiHy6MsKOWPFFoXQry8VMW9sWGex7yoDp8I07SQ2WJ
-HZ7rpLW4gMr/d25AnZxfXaJRgCBMAT9YmZFLc88hW99aaPproO1oxTyQnVVJ6uYm
-NqjjKv4QKJEc21jn2N5xp+iv4f6Evw65G/fXitbOm5oRxXOoLNyqyCie35wrc+37
-hwumC97DmkasuUiUBoy9/5jl0ZmsOiPJEsZpVvdNpD7FhJZjE++qJPgrPvTPJbe1
-5jz1PUrAjJqZQ9kgYC2x01JVR4NQdlz0VrNyT2FgjFrrRQ7E0bAeYh4meRjd2rat
-yC3YNgabkI0HnlnSIfl0yIMXSPUsKDNMP6gjc+aheI4FioBZC7xvXmn/rKynw+9E
-iLj2xWtGnBir8VTlUu8EUe1UJ/Qv1cL1wT5HhC95TTjJN03rkHUYyCDyjvIzsZX6
-KMHhWIAAeUBVuO7hIVVcOTXWmw2WA7o7ErTPdy13QN40Hk9t8pEkBn9f9vpQg83d
-aMypr3LTC80jY11wcZS3tSEpzCCkYVv91FV4cioTZmytWbg9A+dbNWzi1f22ctTr
-FoVrAXaSYie2trOy5bjPmPCW8qMCggIBALQUKymBSkDmTqqf6I+65ajIKGWdBizJ
-Jc/F9aj9c6DqER+tcFKq0ym6DdkMj/KsWnXrXXYH+DyOuGpg/EfOcEtS2P6rvmi9
-T8wDYg1qs6ZZxp5fcmgGc7Wx/FWyOj1kZZq5qhV4RgM9nJ1oR4+fZdcpn6RcvAZG
-XehWG20byVgpoIAL11cN7zRpKne32rd3b5/NjyjcfxGpcaNgovej0L/MvVV0jV0H
-aUCrIu1X+k6cRu3Q7hF+kwkpCcCiNS6AikfGI4wQ0hR3fy/zXXkKTMpcBglEEwyB
-Cwf8WSID2d79uvka0hr8TRc5ERyeMzkWZp7U9EzRtufGdDGFTqN2Uw4bdKCFnkYC
-AIHl7ciMrN+vM1n7c5uDNMUtTGOPojy/l8tjbFrtWBgfJ1Mg4ZW3cbNBJ6Kw+Qw0
-z28USYoEDp2uduiGRvo0lpUF29Wk37Nb8bLcTygeNxgK2u8Up3iipT0gdt4uQgbX
-g0IVHfayB6SjeS57oJJto85XHz7AKlSWroD1OGagDSifLtneU7AlanryymGHrI6H
-dsNkuqeLJFYDxQVI6UxJebiCpyxiPxwp9wtX8SS3SEyOZL5GzLn6ypGiCH1CTpW0
-EHHSy3V4DUGOc4w7eMirAnbSkxCfOmBA70NNw/uFY2XlQHKow0T0fImfKIeJagbT
-B0GPDYvUpLKBAoICAQCzYnq8xupXK7lvTLaj936qGSe54OC2sj9+UpsFiPxglNY2
-sO5zKWKyY7+rjK6zG2ciGfPEDsZNIqKw1W/KBfR2kRLqkt4bC3fSCvUztx0vtGUe
-veXlqiwETdE7RJXoaGJrgJArYJvpOd8PtWGeM+sSJNNrUlGlJnSiZ0CcypqUZgZL
-WzGFfLOQYAXCykdB1iZkBqU2C5wktvCb9sVz6G3TmAwSKTENOWWZWmh+W0J4pZFV
-ZEyvsxViJRQbwxa0kC0F5J/UtWZknO79/ZFj1H4jiAR45EjWHE+UZAkFwG8BSl54
-EKOx7GDanuRILr0dtbyi4d31nCYXdjs3x2+1N3exw4oKQIvNuF54WoowbNPu0kEb
-G+7/kLwcJqRnSV4AiLuMz5aOte7JJSw5tzgZZlAQwJO7IDfrLqodivcXF5yirwiF
-dyBpzSDmupy/aTHnCpT+l0H96jRU2awxaeRHZUqZog8gMHsslNVZEFvUFDJ7AUN/
-yyfUzJYjH18pZt0hS7jNb1O7KxZCkWGMiEcxHkgF/UINab5qruNBVKOkJ5vqGhYi
-uNkgeGsQtXJcpqMRRiVXJE0kE+26gk+iaYnBJN9jnwy8OEAlYFUHsbCPObe/vPMQ
-3RLl+ZoKdFkN/gTiy70wUTRVw+tWk+iAZc7GPX1CqDFOqGZ2t+xdF8hpsMtEww==
+MIISKQIBAAKCBAEA6h3v1OWb9I9U/Z8diBu/xYGS8NCTD3ZESboHxVI2qSECPgxN
+NcG8Lh0ktQdgYcOe64MnDTZX0Bibm47hoDldrAlTSffFxQhylqBBoXxDF+LrhXIq
+Cz7K0PsK+bYusL9ezJ7PETDnCT7oy95q4GXbKsutbNsm9if4ZE41gs2KnoU2DA7k
+vMmkKojrMIL4+BqTXA20LLo0iSbgvUTvpSJw4u96BeyzMNnxK2wP5vvTtUo5hACb
+fU87YjaSKs+q2VXCzfyYGZk1L1xk5GUI0bP+jutf1dDzNttW2/q2Nf5rxx09Gh/G
+wmOnEk1O7cOZ8VQCsOHirIM39NuSARsY6Y3G5XM4k2W4nxyR/RtdG9bvs/33aGsZ
+5V5yp7WSs8s9HHwaCPSsUiLKckQ7uA0TTRgbeweMrrLKovG57jsbBBB8pQD4PRd3
+1qgxCdstWXHiWwRyI8vOLWENPXPFqA/rJwwqNdWTogy38aqVXxGYR8PIwjA2OaIw
+FjwGZcsPNLqw6bgAN8O2UBqZHWiMF8mi7brvioDvAIufZuqa2SqT/At45H83psQ6
+R4FsxZt6SAK7EsdPo8OYTrY1i4iPZd/eKhnEu2srEZgsKRwY5H1mvDH5fWCcHSFu
+07sWmlmK6Or65Fsa0IaKLJiQDVVETd6xrI0wkM4AOcbKDrS7aywJ426dopbs+LFd
+t4N0cdII4gBgJAfLuuA2yrDXRq4P6cgpVMy0R+0dEYE8zzm8zf1a+Ud273LS9+LB
++LJKwqbW8nOPBoiekimIKfJYoOA4+C/mAjsYl1sVjjEhXJAs9S9L2UvnUk1PsZi4
+UKHI6eAIEl7VM1sQ4GbdZ0px2dF2Ax7pGkhD+DLpYyYkCprharKZdmuUNLUdNhXx
+i/HSEiE+Uy+o8RIzmH7LuROl/ZgnfHjJEiBLt2qPvwrwYd4c3XuXWs4YsWfVJTt8
+Mx2ihgVcdGy9//shCSmgJwR1oWrhgC10AEL2fKeRnYUal1i+IxFPp7nb8uwxUADg
+R0cY4A3qR/JP489QFIcxBTVs65De+Bq3ecnujk6yeGpD9iptonq4Y8uNZMc1kOE7
+GiFGwR4EufT5SEMh+tUkjth2r+842vmZZuxrVQaohDiATmIJA07W51zKH+nQuw4q
+VKnAhPaDLCLc7YMIH9JcmkeQX0nf8/S2O2WYDH8glVDi5hfW08tCmV647vRYnTIy
+wUTO0lFpz7M+VyMNaJ6yXU6biBV5hLAI8C5ldr/SWI789W2+ebBaJ9gfK+PTtroh
+FSK37GcoSH4V6qSLJHCBASEsiddqHIHMLJZRYD+B6J3tLhjVUM43u+MEGbFTd33Z
+Dke/WzLTExWkaOv36e67gDBmgDuj9yroq3wGfwIDAQABAoIEAQCSt6YoZqigz/50
+XvYT6Uf6T6S1lBDFXNmY1qOuDkLBJTWRiwYMDViQEaWCaZgGTKDYeT3M8uR/Phyu
+lRFi5vCEMufmcAeZ3hxptw7KU+R8ILJ207/zgit6YglTys9h5txTIack39+6FJmx
+wbZ64HpETJZnpMO6+fuZaMXyLjuT8mmXjvHcOgXOvjWeFkZOveDhjJkAesUXuqyX
+EI+ajoXuQiPXeKonkD2qd7NTjzfy4gw/ZF4NXs0ZVJeviqtIPo2xp33udOw2vRFh
+bMvlF4cNLAbIKYVyOG0ruOfd2I7Unsc/CvD1u5vlRVuUd8OO0JZLIZR7hlRX+A58
+8O1g2H/wJZAsF1BnLnFzDGYCX2WjCCK3Zn85FkKGRa0lTdYDduad/C/N3Y2/pHFE
+e7U/2D7IkEei59tD2HcsDBB3MJnckkn/hyiL9qWcxqWZ61vurE+XjU6tc6fnfhk9
+pJQ6yU3epPU7Vfsk0UGA7bbgKpsyzyH8Zl76YC2mN2ZVJjZekfhY+ibT9odEPdOl
+yLB5iXA6/WhKkDWaOqZGOH+7MblWgT9wHINlcn+nKzOr00JHl26ac6aMlXXi9vbe
+4jgJbFK1HYlFIndyX/BdqRTsFemDoDrVqrEYsaONoVYDd9c5qrqYOeh34DhOksQW
+hNwWBfmMlfzgOGtCYhMeK+AajqTtUbMYQA6qp47KJd/Oa5Dvi3ZCpvZh3Ll5iIau
+rqCtmojsWCqmpWSu7P+Wu4+O3XkUMPdQUuQ5rJFESEBB3yEJcxqk/RItTcKNElNC
+PASrPrMD9cli7S/pJ+frbhu1Gna1ArXzXQE9pMozPaBpjCig7+15R0lL3pmOKO6e
+WK3dgSwrnW6TQdLPlSD4lbRoiIdTHVBczztDeUqVvFiV3/cuaEi1nvaVdAYLqjuL
+ogK4HwE/FQ54S0ijAsP52n25usoH6OTU3bSd/7NTp0vZCy3yf10x7HUdsh2DvhRO
+3+TSK5t0yz0Nt7hNwcI6pLmWUIYcZgpFc/WsiiGscTfhy8rh3kRHI8ylGq53KNF+
+yCVmjqnBRWs91ArxmeF1ctX2t3w5p7gf65hJWqoX/2DiSi5FBsr6HLxa5sUi4wRZ
+136aCNt5Wu7w+AzPDbQW6qKUGSyfHJAw4JZasZcaZLise5IWb1ks0DtFbWWdT3ux
+8r2AM7IO1WopnekrYCnx/aBvBAv4NjWozVA517ztVttPERt3AGb4nm387nYt5R2U
+NO2GBWcDyT8JQLKmffE1AkWolCR1GsvcNLQfLCbnNppgsnsLE/viTG4mq1wjnd8O
+2Q8nH1SVTuyGFREMp/zsiAEaGfdd0hI2r1J7OdNPBBCtmhITsy9ZYHqm5vrGvy3s
+vi2GuB2RAoICAQD/oWUsg4eTJxHifTJLz/tVSTXnw7DhfbFVa1K1rUV63/MRQAFW
+pabN4T6Yfp3CpdRkljCA8KPJZj7euwhm4OEg1ulpOouA+cfWlE9RFE8wyOK5SYwM
+k+nk31P9MUC866pZg/ghzBGDub91OW1+ZGEtqnLI/n/LhiAIWt0hJvgZclTc1cAL
+xffHVlFwoSyNl/nc3ueZCC95nOLst2XcuxZLLbOFtZCmDYsp49q/Jn6EFjn4Ge2o
+qp38z6eZgDMP1F4lb9nDqXPHfUSt2jxKlmpfXS+IPKdba67+EjhbtmUYzaR4EoPI
+zh+o6SrVWT6Yve7KGiYv06fuRz1m/lLQO/Arbd9ntSjgn+ZEXGOkbhnHUX3DJ4ny
+/6XEGB9NLQjern4uNTn0AaV+uvhncapFMaIBnVfq0Cw8eog0136PBYRaVX7T44j5
+HwIyGXWtYGA/SzDEQoksD0Y/T61BEGnLZaKeavNd82WwFvcYHZtE0J4aQGjCEE7N
++nijzCy+j5ETmme9KJvQHpEyXP3N4RBko1eWvyTwFZDdIXtoa6TTEI51lm+FXJ/b
+Y+BzMr6KRo29FB+7//1ptUoMvn5hzL0PwOv2ZSTQuoG5hLDEbxWXLNhd1VHcfznF
+3EZHwfD2F8aGQ3kz+fkMTNfK955KorDrmLgvmV9eZZ5yQxGZrs5H5YfKpwKCAgEA
+6nSUbzfSdVFUH89NM5FmEJgkD06vqCgHl2mpyF+VmDGcay4K06eA4QbRO5kns13+
+n6PcBl/YVW/rNE8iFi+WxfqUpAjdR1HlShvTuTRVqtFTfuN8XhbYU6VMjKyuE0kd
+LKe3KRdwubjVNhXRZLBknU+3Y/4hnIR7mcE3/M5Zv5hjb7XnwWg/SzxV9WojCKiu
+vQ7cXhH5/o7EuKcl1d6vueGhWsRylCG9RimwgViR2H7zD9kpkOc0nNym9cSpb0Gv
+Lui4cf/fVwIt2HfNEGBjbM/83e2MH6b8Xp1fFAy0aXCdRtOo4LVOzJVAxn5dERMX
+4JJ4d5cSFbssDN1bITOKzuytfBqRIQGNkOfizgQNWUiaFI0MhEN/icymjm1ybOIh
+Gc9tzqKI4wP2X9g+u3+Oof1QaBcZ4UbZEU9ITN87Pa6XVJmpNx7A81BafWoEPFeE
+ahoO4XDwlHZazDuSlOseEShxXcVwaIiqySy7OBEPBVuYdEd2Qw/z3JTx9Kw8MKnf
+hu+ar5tz5dPnJIsvLeYCcJDe/K6loiZuHTtPbWEy9p6It7qubQNPBvTSBN5eVDKc
+Q2bTQNCx8SAAA9C5gJiwWoQKsXJzbRFRY77P9JjuGpua3YJ2nYBHEJmF+fp1R33c
+uHIyMphPMkKC4GC3/43kkMr6tck8kZbXGSYsLsBr2GkCggIBAJvvrjILQianzKcm
+zAmnI6AQ+ssYesvyyrxaraeZvSqJdlLtgmOCxVANuQt5IW9djUSWwZvGL4Np1aw0
+15k6UNqhftzsE7FnrVneOsww4WXXBUcV8FKz4Bf3i9qFswILmGzmrfSf8YczRfGS
+SJKzVPxwX3jwlrBmbx/pnb7dcLbFIbNcyLvl1ZJJu4BDMVRmgssTRp/5eExtQZg4
+//A4SA8wH7TO3yAMXvn8vrGgH8kfbdlEp88d1SYk3g4rP/rGB3A63NIYikIEzmJn
+ICQ3wUfPJnGq3kRMWgEuyCZaCy2oNE3yrWVPJ8z3/2MJ/79ZDVNHxEeki2o1FuW+
++nGAPq+fZIp03iy4HdVRro7dgugtc9QaSHJtNId8V4vSjviX5Oz3FxUb9AJst58S
+nVV8Q2FMxBa/SlzSOkhRtCg2q1gXkzhaMnIVUleRZFGQ2uWBToxKMjcoUifIyN1J
+z999bkfI4hBLq5pRSAXz+YVu5SMKa10GaawIwJLat+i+1zboF6QyI2o/Wz8nrsNq
+KX/ajFGu5C94WFgsVoWKNI90KBLe48Ssje9c68waBlV/WHMg1YLvU3yqVDOV+K5c
+IHB9tPMnG+AgBYZPxSzuvnLrrkj/GeKx0WI7TrvzOLRGKJo6irMEJ8IzFegASRUq
+TVZKYQDYRG7m+lKlSxU+pyMAh2c9AoICAE4kavCip1eIssQjYLTGSkFPo/0iGbOv
+G9CgXAE3snFWX67tWphupKrbjdMSWcQTmPD2OTg6q6zWL4twsIi6dcMooHAHsFC7
+//LyUV/SDJdxSyXohiQJ8zH1zwy35RDydnHSuF5OvLh53T44iWDI1dAEqLgAFI3J
+LjTxzEpLMGiGTuYFt+ejai0WQAQayvBw4ESM9m+4CB2K0hBFTXv5y5HlnNTW0uWC
+VUZUUMrbjUieDz8B/zOXi9aYSGFzmZFGUDAPSqJcSMEELemPDF7f8WNr8vi42tIV
+4tlaFD1nep4F9bWMiCXU6B2RxVQi+7vcJEIqL1KUnGd3ydfD00K+ng4Xnj7Vz/cz
+QE7CqrpFaXmPlCMzW6+dm51/AyhHXDLkL2od05hiXcNkJ7KMLWRqwExHVIxM3shR
+x7lYNl3ArUsCrNd6m4aOjnrKFk7kjeLavHxskPccoGKrC9o0JMfTkWLgmuBJFQ0S
+N/HzIbcvIFWF0Ms4ojb50yp6ziXhXfJOO/0KUQEki71XIhvw89mVZszDzD5lqzjf
+HCZMBU4MbmL6NdEevFIDH0zPPkx3HPNtJt3kIJbit9wI8VhUMe+ldGnGxpWb8tKw
+SfM3vrHkYr+lizk26XfXMFhdAuVtT7dzQKSNEyP/1a2Hs307Xzgiv8JulJ8QIkrX
+/nsYWPOAGLG5AoICABmdW9Ppkvuhb1AEcjTWb+XCyopoBc6vit/uQWD9uO+CeX7a
+cfzq+iH01CAjyVMc4E1JDc5Lpi106U+GRGcAAaPJB2Sp5NznoxaOVrb71blu4Q4x
+bNjtKM/P/DXpO+yJYoOPdKtaSDhtnfNDM7H/jztJ3XIrOltKA7CcRDohbBWIx8Q0
+0uEpvfFpZZBco3yVmjP0RLgIVYn/ZDj9wGhSvFWIJ5vv6GXmtDrcHGMLxcfv7t76
+UVcMW/Yy4mYJRCzGOrWagyVijJ6MTVNciqadWcH1KcbB3EGoMFYMn61or2qJABPM
+xz89IlhnROU1Re3X/QRx5t86cw6oa+FqrWMOhSs31I0dNWSuS/xDympG27YIYSDd
+mv5seT78GjFmMJC5pPOLoXsbTPB0HpsX2/UL/w/eRAfilTOef/Cf9VE5MP/C2YR7
+NBxUU7/+21D6WvdtBTcZbrXWGroAo8zPP+PwX0+c6WoAvqDJvCPndp8xZhSgEJN/
+0kScptezi8n3ZHI95EA9U5mAHxHz0IhDDVzWw/z1f1SBPxKVX3+By3zaa3lrD2ch
+cHq7nBkX72veEevnHUY8Z2rHE2G2jdmRfOtwm4sjL0VBV9fRRoxzJWRduKyeOtDL
+EhhBhUoTrT48UnfW9hxnbNLB9P/hh+UJu9HrS2uAwHoGE1+8gcyundupGDBn
-----END RSA PRIVATE KEY-----
diff --git a/mysql-test/suite/binlog/r/binlog_base64_flag.result b/mysql-test/suite/binlog/r/binlog_base64_flag.result
index 58c444c9571..7fb5e50a219 100644
--- a/mysql-test/suite/binlog/r/binlog_base64_flag.result
+++ b/mysql-test/suite/binlog/r/binlog_base64_flag.result
@@ -91,3 +91,14 @@ iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4AQAAAAMAMTIzAQAAAA==
';
ERROR HY000: master may suffer from http://bugs.mysql.com/bug.php?id=37426 so slave stops; check error log on slave for more info
drop table t1, char63_utf8, char128_utf8;
+#
+# Bug #54393: crash and/or valgrind errors in
+# mysql_client_binlog_statement
+#
+BINLOG '';
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
+BINLOG '123';
+BINLOG '-2079193929';
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
+BINLOG 'xç↓%~∙D╒ƒ╡';
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
diff --git a/mysql-test/suite/binlog/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result
index 1922897f631..881d8d2719e 100644
--- a/mysql-test/suite/binlog/r/binlog_innodb.result
+++ b/mysql-test/suite/binlog/r/binlog_innodb.result
@@ -156,9 +156,9 @@ select * from t2 /* must be (3,1), (4,4) */;
a b
1 1
4 4
-show master status /* there must no UPDATE in binlog */;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+# There must no UPDATE in binlog;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
@@ -166,8 +166,8 @@ insert into t2 values (1,2),(3,4),(4,4);
reset master;
UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
-show master status /* there must be no UPDATE query event */;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106
+# There must be no UPDATE query event;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
drop table t1, t2;
End of tests
diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result
index 4d32a4f4739..d612e7adde1 100644
--- a/mysql-test/suite/binlog/r/binlog_row_binlog.result
+++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result
@@ -26,215 +26,215 @@ create table t1 (n int) engine=innodb;
begin;
commit;
drop table t1;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # COMMIT /* xid= */
-master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
-show binlog events in 'master-bin.000002' from 106;
+master-bin.000001 # Query # # use `test`; create table t1 (n int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Rotate # # master-bin.000002;pos=4
+show binlog events in 'master-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000002 # Query 1 # use `test`; drop table t1
+master-bin.000002 # Query # # use `test`; drop table t1
set @ac = @@autocommit;
set autocommit= 0;
reset master;
@@ -245,830 +245,828 @@ insert into t1 values (2);
insert into t1 values (3);
commit;
drop table t1;
-show binlog events from 0;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
-master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb
-master-bin.000001 205 Query 1 273 BEGIN
-master-bin.000001 273 Table_map 1 314 table_id: # (test.t1)
-master-bin.000001 314 Write_rows 1 348 table_id: # flags: STMT_END_F
-master-bin.000001 348 Table_map 1 389 table_id: # (test.t1)
-master-bin.000001 389 Write_rows 1 423 table_id: # flags: STMT_END_F
-master-bin.000001 423 Table_map 1 464 table_id: # (test.t1)
-master-bin.000001 464 Write_rows 1 498 table_id: # flags: STMT_END_F
-master-bin.000001 498 Xid 1 525 COMMIT /* XID */
-master-bin.000001 525 Query 1 601 use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1(n int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; drop table t1
set @bcs = @@binlog_cache_size;
set global binlog_cache_size=4096;
reset master;
create table t1 (a int) engine=innodb;
-show binlog events from 0;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
-master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb
-master-bin.000001 206 Query 1 274 BEGIN
-master-bin.000001 274 Table_map 1 315 table_id: # (test.t1)
-master-bin.000001 315 Write_rows 1 349 table_id: # flags: STMT_END_F
-master-bin.000001 349 Table_map 1 390 table_id: # (test.t1)
-master-bin.000001 390 Write_rows 1 424 table_id: # flags: STMT_END_F
-master-bin.000001 424 Table_map 1 465 table_id: # (test.t1)
-master-bin.000001 465 Write_rows 1 499 table_id: # flags: STMT_END_F
-master-bin.000001 499 Table_map 1 540 table_id: # (test.t1)
-master-bin.000001 540 Write_rows 1 574 table_id: # flags: STMT_END_F
-master-bin.000001 574 Table_map 1 615 table_id: # (test.t1)
-master-bin.000001 615 Write_rows 1 649 table_id: # flags: STMT_END_F
-master-bin.000001 649 Table_map 1 690 table_id: # (test.t1)
-master-bin.000001 690 Write_rows 1 724 table_id: # flags: STMT_END_F
-master-bin.000001 724 Table_map 1 765 table_id: # (test.t1)
-master-bin.000001 765 Write_rows 1 799 table_id: # flags: STMT_END_F
-master-bin.000001 799 Table_map 1 840 table_id: # (test.t1)
-master-bin.000001 840 Write_rows 1 874 table_id: # flags: STMT_END_F
-master-bin.000001 874 Table_map 1 915 table_id: # (test.t1)
-master-bin.000001 915 Write_rows 1 949 table_id: # flags: STMT_END_F
-master-bin.000001 949 Table_map 1 990 table_id: # (test.t1)
-master-bin.000001 990 Write_rows 1 1024 table_id: # flags: STMT_END_F
-master-bin.000001 1024 Table_map 1 1065 table_id: # (test.t1)
-master-bin.000001 1065 Write_rows 1 1099 table_id: # flags: STMT_END_F
-master-bin.000001 1099 Table_map 1 1140 table_id: # (test.t1)
-master-bin.000001 1140 Write_rows 1 1174 table_id: # flags: STMT_END_F
-master-bin.000001 1174 Table_map 1 1215 table_id: # (test.t1)
-master-bin.000001 1215 Write_rows 1 1249 table_id: # flags: STMT_END_F
-master-bin.000001 1249 Table_map 1 1290 table_id: # (test.t1)
-master-bin.000001 1290 Write_rows 1 1324 table_id: # flags: STMT_END_F
-master-bin.000001 1324 Table_map 1 1365 table_id: # (test.t1)
-master-bin.000001 1365 Write_rows 1 1399 table_id: # flags: STMT_END_F
-master-bin.000001 1399 Table_map 1 1440 table_id: # (test.t1)
-master-bin.000001 1440 Write_rows 1 1474 table_id: # flags: STMT_END_F
-master-bin.000001 1474 Table_map 1 1515 table_id: # (test.t1)
-master-bin.000001 1515 Write_rows 1 1549 table_id: # flags: STMT_END_F
-master-bin.000001 1549 Table_map 1 1590 table_id: # (test.t1)
-master-bin.000001 1590 Write_rows 1 1624 table_id: # flags: STMT_END_F
-master-bin.000001 1624 Table_map 1 1665 table_id: # (test.t1)
-master-bin.000001 1665 Write_rows 1 1699 table_id: # flags: STMT_END_F
-master-bin.000001 1699 Table_map 1 1740 table_id: # (test.t1)
-master-bin.000001 1740 Write_rows 1 1774 table_id: # flags: STMT_END_F
-master-bin.000001 1774 Table_map 1 1815 table_id: # (test.t1)
-master-bin.000001 1815 Write_rows 1 1849 table_id: # flags: STMT_END_F
-master-bin.000001 1849 Table_map 1 1890 table_id: # (test.t1)
-master-bin.000001 1890 Write_rows 1 1924 table_id: # flags: STMT_END_F
-master-bin.000001 1924 Table_map 1 1965 table_id: # (test.t1)
-master-bin.000001 1965 Write_rows 1 1999 table_id: # flags: STMT_END_F
-master-bin.000001 1999 Table_map 1 2040 table_id: # (test.t1)
-master-bin.000001 2040 Write_rows 1 2074 table_id: # flags: STMT_END_F
-master-bin.000001 2074 Table_map 1 2115 table_id: # (test.t1)
-master-bin.000001 2115 Write_rows 1 2149 table_id: # flags: STMT_END_F
-master-bin.000001 2149 Table_map 1 2190 table_id: # (test.t1)
-master-bin.000001 2190 Write_rows 1 2224 table_id: # flags: STMT_END_F
-master-bin.000001 2224 Table_map 1 2265 table_id: # (test.t1)
-master-bin.000001 2265 Write_rows 1 2299 table_id: # flags: STMT_END_F
-master-bin.000001 2299 Table_map 1 2340 table_id: # (test.t1)
-master-bin.000001 2340 Write_rows 1 2374 table_id: # flags: STMT_END_F
-master-bin.000001 2374 Table_map 1 2415 table_id: # (test.t1)
-master-bin.000001 2415 Write_rows 1 2449 table_id: # flags: STMT_END_F
-master-bin.000001 2449 Table_map 1 2490 table_id: # (test.t1)
-master-bin.000001 2490 Write_rows 1 2524 table_id: # flags: STMT_END_F
-master-bin.000001 2524 Table_map 1 2565 table_id: # (test.t1)
-master-bin.000001 2565 Write_rows 1 2599 table_id: # flags: STMT_END_F
-master-bin.000001 2599 Table_map 1 2640 table_id: # (test.t1)
-master-bin.000001 2640 Write_rows 1 2674 table_id: # flags: STMT_END_F
-master-bin.000001 2674 Table_map 1 2715 table_id: # (test.t1)
-master-bin.000001 2715 Write_rows 1 2749 table_id: # flags: STMT_END_F
-master-bin.000001 2749 Table_map 1 2790 table_id: # (test.t1)
-master-bin.000001 2790 Write_rows 1 2824 table_id: # flags: STMT_END_F
-master-bin.000001 2824 Table_map 1 2865 table_id: # (test.t1)
-master-bin.000001 2865 Write_rows 1 2899 table_id: # flags: STMT_END_F
-master-bin.000001 2899 Table_map 1 2940 table_id: # (test.t1)
-master-bin.000001 2940 Write_rows 1 2974 table_id: # flags: STMT_END_F
-master-bin.000001 2974 Table_map 1 3015 table_id: # (test.t1)
-master-bin.000001 3015 Write_rows 1 3049 table_id: # flags: STMT_END_F
-master-bin.000001 3049 Table_map 1 3090 table_id: # (test.t1)
-master-bin.000001 3090 Write_rows 1 3124 table_id: # flags: STMT_END_F
-master-bin.000001 3124 Table_map 1 3165 table_id: # (test.t1)
-master-bin.000001 3165 Write_rows 1 3199 table_id: # flags: STMT_END_F
-master-bin.000001 3199 Table_map 1 3240 table_id: # (test.t1)
-master-bin.000001 3240 Write_rows 1 3274 table_id: # flags: STMT_END_F
-master-bin.000001 3274 Table_map 1 3315 table_id: # (test.t1)
-master-bin.000001 3315 Write_rows 1 3349 table_id: # flags: STMT_END_F
-master-bin.000001 3349 Table_map 1 3390 table_id: # (test.t1)
-master-bin.000001 3390 Write_rows 1 3424 table_id: # flags: STMT_END_F
-master-bin.000001 3424 Table_map 1 3465 table_id: # (test.t1)
-master-bin.000001 3465 Write_rows 1 3499 table_id: # flags: STMT_END_F
-master-bin.000001 3499 Table_map 1 3540 table_id: # (test.t1)
-master-bin.000001 3540 Write_rows 1 3574 table_id: # flags: STMT_END_F
-master-bin.000001 3574 Table_map 1 3615 table_id: # (test.t1)
-master-bin.000001 3615 Write_rows 1 3649 table_id: # flags: STMT_END_F
-master-bin.000001 3649 Table_map 1 3690 table_id: # (test.t1)
-master-bin.000001 3690 Write_rows 1 3724 table_id: # flags: STMT_END_F
-master-bin.000001 3724 Table_map 1 3765 table_id: # (test.t1)
-master-bin.000001 3765 Write_rows 1 3799 table_id: # flags: STMT_END_F
-master-bin.000001 3799 Table_map 1 3840 table_id: # (test.t1)
-master-bin.000001 3840 Write_rows 1 3874 table_id: # flags: STMT_END_F
-master-bin.000001 3874 Table_map 1 3915 table_id: # (test.t1)
-master-bin.000001 3915 Write_rows 1 3949 table_id: # flags: STMT_END_F
-master-bin.000001 3949 Table_map 1 3990 table_id: # (test.t1)
-master-bin.000001 3990 Write_rows 1 4024 table_id: # flags: STMT_END_F
-master-bin.000001 4024 Table_map 1 4065 table_id: # (test.t1)
-master-bin.000001 4065 Write_rows 1 4099 table_id: # flags: STMT_END_F
-master-bin.000001 4099 Table_map 1 4140 table_id: # (test.t1)
-master-bin.000001 4140 Write_rows 1 4174 table_id: # flags: STMT_END_F
-master-bin.000001 4174 Table_map 1 4215 table_id: # (test.t1)
-master-bin.000001 4215 Write_rows 1 4249 table_id: # flags: STMT_END_F
-master-bin.000001 4249 Table_map 1 4290 table_id: # (test.t1)
-master-bin.000001 4290 Write_rows 1 4324 table_id: # flags: STMT_END_F
-master-bin.000001 4324 Table_map 1 4365 table_id: # (test.t1)
-master-bin.000001 4365 Write_rows 1 4399 table_id: # flags: STMT_END_F
-master-bin.000001 4399 Table_map 1 4440 table_id: # (test.t1)
-master-bin.000001 4440 Write_rows 1 4474 table_id: # flags: STMT_END_F
-master-bin.000001 4474 Table_map 1 4515 table_id: # (test.t1)
-master-bin.000001 4515 Write_rows 1 4549 table_id: # flags: STMT_END_F
-master-bin.000001 4549 Table_map 1 4590 table_id: # (test.t1)
-master-bin.000001 4590 Write_rows 1 4624 table_id: # flags: STMT_END_F
-master-bin.000001 4624 Table_map 1 4665 table_id: # (test.t1)
-master-bin.000001 4665 Write_rows 1 4699 table_id: # flags: STMT_END_F
-master-bin.000001 4699 Table_map 1 4740 table_id: # (test.t1)
-master-bin.000001 4740 Write_rows 1 4774 table_id: # flags: STMT_END_F
-master-bin.000001 4774 Table_map 1 4815 table_id: # (test.t1)
-master-bin.000001 4815 Write_rows 1 4849 table_id: # flags: STMT_END_F
-master-bin.000001 4849 Table_map 1 4890 table_id: # (test.t1)
-master-bin.000001 4890 Write_rows 1 4924 table_id: # flags: STMT_END_F
-master-bin.000001 4924 Table_map 1 4965 table_id: # (test.t1)
-master-bin.000001 4965 Write_rows 1 4999 table_id: # flags: STMT_END_F
-master-bin.000001 4999 Table_map 1 5040 table_id: # (test.t1)
-master-bin.000001 5040 Write_rows 1 5074 table_id: # flags: STMT_END_F
-master-bin.000001 5074 Table_map 1 5115 table_id: # (test.t1)
-master-bin.000001 5115 Write_rows 1 5149 table_id: # flags: STMT_END_F
-master-bin.000001 5149 Table_map 1 5190 table_id: # (test.t1)
-master-bin.000001 5190 Write_rows 1 5224 table_id: # flags: STMT_END_F
-master-bin.000001 5224 Table_map 1 5265 table_id: # (test.t1)
-master-bin.000001 5265 Write_rows 1 5299 table_id: # flags: STMT_END_F
-master-bin.000001 5299 Table_map 1 5340 table_id: # (test.t1)
-master-bin.000001 5340 Write_rows 1 5374 table_id: # flags: STMT_END_F
-master-bin.000001 5374 Table_map 1 5415 table_id: # (test.t1)
-master-bin.000001 5415 Write_rows 1 5449 table_id: # flags: STMT_END_F
-master-bin.000001 5449 Table_map 1 5490 table_id: # (test.t1)
-master-bin.000001 5490 Write_rows 1 5524 table_id: # flags: STMT_END_F
-master-bin.000001 5524 Table_map 1 5565 table_id: # (test.t1)
-master-bin.000001 5565 Write_rows 1 5599 table_id: # flags: STMT_END_F
-master-bin.000001 5599 Table_map 1 5640 table_id: # (test.t1)
-master-bin.000001 5640 Write_rows 1 5674 table_id: # flags: STMT_END_F
-master-bin.000001 5674 Table_map 1 5715 table_id: # (test.t1)
-master-bin.000001 5715 Write_rows 1 5749 table_id: # flags: STMT_END_F
-master-bin.000001 5749 Table_map 1 5790 table_id: # (test.t1)
-master-bin.000001 5790 Write_rows 1 5824 table_id: # flags: STMT_END_F
-master-bin.000001 5824 Table_map 1 5865 table_id: # (test.t1)
-master-bin.000001 5865 Write_rows 1 5899 table_id: # flags: STMT_END_F
-master-bin.000001 5899 Table_map 1 5940 table_id: # (test.t1)
-master-bin.000001 5940 Write_rows 1 5974 table_id: # flags: STMT_END_F
-master-bin.000001 5974 Table_map 1 6015 table_id: # (test.t1)
-master-bin.000001 6015 Write_rows 1 6049 table_id: # flags: STMT_END_F
-master-bin.000001 6049 Table_map 1 6090 table_id: # (test.t1)
-master-bin.000001 6090 Write_rows 1 6124 table_id: # flags: STMT_END_F
-master-bin.000001 6124 Table_map 1 6165 table_id: # (test.t1)
-master-bin.000001 6165 Write_rows 1 6199 table_id: # flags: STMT_END_F
-master-bin.000001 6199 Table_map 1 6240 table_id: # (test.t1)
-master-bin.000001 6240 Write_rows 1 6274 table_id: # flags: STMT_END_F
-master-bin.000001 6274 Table_map 1 6315 table_id: # (test.t1)
-master-bin.000001 6315 Write_rows 1 6349 table_id: # flags: STMT_END_F
-master-bin.000001 6349 Table_map 1 6390 table_id: # (test.t1)
-master-bin.000001 6390 Write_rows 1 6424 table_id: # flags: STMT_END_F
-master-bin.000001 6424 Table_map 1 6465 table_id: # (test.t1)
-master-bin.000001 6465 Write_rows 1 6499 table_id: # flags: STMT_END_F
-master-bin.000001 6499 Table_map 1 6540 table_id: # (test.t1)
-master-bin.000001 6540 Write_rows 1 6574 table_id: # flags: STMT_END_F
-master-bin.000001 6574 Table_map 1 6615 table_id: # (test.t1)
-master-bin.000001 6615 Write_rows 1 6649 table_id: # flags: STMT_END_F
-master-bin.000001 6649 Table_map 1 6690 table_id: # (test.t1)
-master-bin.000001 6690 Write_rows 1 6724 table_id: # flags: STMT_END_F
-master-bin.000001 6724 Table_map 1 6765 table_id: # (test.t1)
-master-bin.000001 6765 Write_rows 1 6799 table_id: # flags: STMT_END_F
-master-bin.000001 6799 Table_map 1 6840 table_id: # (test.t1)
-master-bin.000001 6840 Write_rows 1 6874 table_id: # flags: STMT_END_F
-master-bin.000001 6874 Table_map 1 6915 table_id: # (test.t1)
-master-bin.000001 6915 Write_rows 1 6949 table_id: # flags: STMT_END_F
-master-bin.000001 6949 Table_map 1 6990 table_id: # (test.t1)
-master-bin.000001 6990 Write_rows 1 7024 table_id: # flags: STMT_END_F
-master-bin.000001 7024 Table_map 1 7065 table_id: # (test.t1)
-master-bin.000001 7065 Write_rows 1 7099 table_id: # flags: STMT_END_F
-master-bin.000001 7099 Table_map 1 7140 table_id: # (test.t1)
-master-bin.000001 7140 Write_rows 1 7174 table_id: # flags: STMT_END_F
-master-bin.000001 7174 Table_map 1 7215 table_id: # (test.t1)
-master-bin.000001 7215 Write_rows 1 7249 table_id: # flags: STMT_END_F
-master-bin.000001 7249 Table_map 1 7290 table_id: # (test.t1)
-master-bin.000001 7290 Write_rows 1 7324 table_id: # flags: STMT_END_F
-master-bin.000001 7324 Table_map 1 7365 table_id: # (test.t1)
-master-bin.000001 7365 Write_rows 1 7399 table_id: # flags: STMT_END_F
-master-bin.000001 7399 Table_map 1 7440 table_id: # (test.t1)
-master-bin.000001 7440 Write_rows 1 7474 table_id: # flags: STMT_END_F
-master-bin.000001 7474 Table_map 1 7515 table_id: # (test.t1)
-master-bin.000001 7515 Write_rows 1 7549 table_id: # flags: STMT_END_F
-master-bin.000001 7549 Table_map 1 7590 table_id: # (test.t1)
-master-bin.000001 7590 Write_rows 1 7624 table_id: # flags: STMT_END_F
-master-bin.000001 7624 Table_map 1 7665 table_id: # (test.t1)
-master-bin.000001 7665 Write_rows 1 7699 table_id: # flags: STMT_END_F
-master-bin.000001 7699 Table_map 1 7740 table_id: # (test.t1)
-master-bin.000001 7740 Write_rows 1 7774 table_id: # flags: STMT_END_F
-master-bin.000001 7774 Table_map 1 7815 table_id: # (test.t1)
-master-bin.000001 7815 Write_rows 1 7849 table_id: # flags: STMT_END_F
-master-bin.000001 7849 Table_map 1 7890 table_id: # (test.t1)
-master-bin.000001 7890 Write_rows 1 7924 table_id: # flags: STMT_END_F
-master-bin.000001 7924 Table_map 1 7965 table_id: # (test.t1)
-master-bin.000001 7965 Write_rows 1 7999 table_id: # flags: STMT_END_F
-master-bin.000001 7999 Table_map 1 8040 table_id: # (test.t1)
-master-bin.000001 8040 Write_rows 1 8074 table_id: # flags: STMT_END_F
-master-bin.000001 8074 Table_map 1 8115 table_id: # (test.t1)
-master-bin.000001 8115 Write_rows 1 8149 table_id: # flags: STMT_END_F
-master-bin.000001 8149 Table_map 1 8190 table_id: # (test.t1)
-master-bin.000001 8190 Write_rows 1 8224 table_id: # flags: STMT_END_F
-master-bin.000001 8224 Table_map 1 8265 table_id: # (test.t1)
-master-bin.000001 8265 Write_rows 1 8299 table_id: # flags: STMT_END_F
-master-bin.000001 8299 Table_map 1 8340 table_id: # (test.t1)
-master-bin.000001 8340 Write_rows 1 8374 table_id: # flags: STMT_END_F
-master-bin.000001 8374 Table_map 1 8415 table_id: # (test.t1)
-master-bin.000001 8415 Write_rows 1 8449 table_id: # flags: STMT_END_F
-master-bin.000001 8449 Table_map 1 8490 table_id: # (test.t1)
-master-bin.000001 8490 Write_rows 1 8524 table_id: # flags: STMT_END_F
-master-bin.000001 8524 Table_map 1 8565 table_id: # (test.t1)
-master-bin.000001 8565 Write_rows 1 8599 table_id: # flags: STMT_END_F
-master-bin.000001 8599 Table_map 1 8640 table_id: # (test.t1)
-master-bin.000001 8640 Write_rows 1 8674 table_id: # flags: STMT_END_F
-master-bin.000001 8674 Table_map 1 8715 table_id: # (test.t1)
-master-bin.000001 8715 Write_rows 1 8749 table_id: # flags: STMT_END_F
-master-bin.000001 8749 Table_map 1 8790 table_id: # (test.t1)
-master-bin.000001 8790 Write_rows 1 8824 table_id: # flags: STMT_END_F
-master-bin.000001 8824 Table_map 1 8865 table_id: # (test.t1)
-master-bin.000001 8865 Write_rows 1 8899 table_id: # flags: STMT_END_F
-master-bin.000001 8899 Table_map 1 8940 table_id: # (test.t1)
-master-bin.000001 8940 Write_rows 1 8974 table_id: # flags: STMT_END_F
-master-bin.000001 8974 Table_map 1 9015 table_id: # (test.t1)
-master-bin.000001 9015 Write_rows 1 9049 table_id: # flags: STMT_END_F
-master-bin.000001 9049 Table_map 1 9090 table_id: # (test.t1)
-master-bin.000001 9090 Write_rows 1 9124 table_id: # flags: STMT_END_F
-master-bin.000001 9124 Table_map 1 9165 table_id: # (test.t1)
-master-bin.000001 9165 Write_rows 1 9199 table_id: # flags: STMT_END_F
-master-bin.000001 9199 Table_map 1 9240 table_id: # (test.t1)
-master-bin.000001 9240 Write_rows 1 9274 table_id: # flags: STMT_END_F
-master-bin.000001 9274 Table_map 1 9315 table_id: # (test.t1)
-master-bin.000001 9315 Write_rows 1 9349 table_id: # flags: STMT_END_F
-master-bin.000001 9349 Table_map 1 9390 table_id: # (test.t1)
-master-bin.000001 9390 Write_rows 1 9424 table_id: # flags: STMT_END_F
-master-bin.000001 9424 Table_map 1 9465 table_id: # (test.t1)
-master-bin.000001 9465 Write_rows 1 9499 table_id: # flags: STMT_END_F
-master-bin.000001 9499 Table_map 1 9540 table_id: # (test.t1)
-master-bin.000001 9540 Write_rows 1 9574 table_id: # flags: STMT_END_F
-master-bin.000001 9574 Table_map 1 9615 table_id: # (test.t1)
-master-bin.000001 9615 Write_rows 1 9649 table_id: # flags: STMT_END_F
-master-bin.000001 9649 Table_map 1 9690 table_id: # (test.t1)
-master-bin.000001 9690 Write_rows 1 9724 table_id: # flags: STMT_END_F
-master-bin.000001 9724 Table_map 1 9765 table_id: # (test.t1)
-master-bin.000001 9765 Write_rows 1 9799 table_id: # flags: STMT_END_F
-master-bin.000001 9799 Table_map 1 9840 table_id: # (test.t1)
-master-bin.000001 9840 Write_rows 1 9874 table_id: # flags: STMT_END_F
-master-bin.000001 9874 Table_map 1 9915 table_id: # (test.t1)
-master-bin.000001 9915 Write_rows 1 9949 table_id: # flags: STMT_END_F
-master-bin.000001 9949 Table_map 1 9990 table_id: # (test.t1)
-master-bin.000001 9990 Write_rows 1 10024 table_id: # flags: STMT_END_F
-master-bin.000001 10024 Table_map 1 10065 table_id: # (test.t1)
-master-bin.000001 10065 Write_rows 1 10099 table_id: # flags: STMT_END_F
-master-bin.000001 10099 Table_map 1 10140 table_id: # (test.t1)
-master-bin.000001 10140 Write_rows 1 10174 table_id: # flags: STMT_END_F
-master-bin.000001 10174 Table_map 1 10215 table_id: # (test.t1)
-master-bin.000001 10215 Write_rows 1 10249 table_id: # flags: STMT_END_F
-master-bin.000001 10249 Table_map 1 10290 table_id: # (test.t1)
-master-bin.000001 10290 Write_rows 1 10324 table_id: # flags: STMT_END_F
-master-bin.000001 10324 Table_map 1 10365 table_id: # (test.t1)
-master-bin.000001 10365 Write_rows 1 10399 table_id: # flags: STMT_END_F
-master-bin.000001 10399 Table_map 1 10440 table_id: # (test.t1)
-master-bin.000001 10440 Write_rows 1 10474 table_id: # flags: STMT_END_F
-master-bin.000001 10474 Table_map 1 10515 table_id: # (test.t1)
-master-bin.000001 10515 Write_rows 1 10549 table_id: # flags: STMT_END_F
-master-bin.000001 10549 Table_map 1 10590 table_id: # (test.t1)
-master-bin.000001 10590 Write_rows 1 10624 table_id: # flags: STMT_END_F
-master-bin.000001 10624 Table_map 1 10665 table_id: # (test.t1)
-master-bin.000001 10665 Write_rows 1 10699 table_id: # flags: STMT_END_F
-master-bin.000001 10699 Table_map 1 10740 table_id: # (test.t1)
-master-bin.000001 10740 Write_rows 1 10774 table_id: # flags: STMT_END_F
-master-bin.000001 10774 Table_map 1 10815 table_id: # (test.t1)
-master-bin.000001 10815 Write_rows 1 10849 table_id: # flags: STMT_END_F
-master-bin.000001 10849 Table_map 1 10890 table_id: # (test.t1)
-master-bin.000001 10890 Write_rows 1 10924 table_id: # flags: STMT_END_F
-master-bin.000001 10924 Table_map 1 10965 table_id: # (test.t1)
-master-bin.000001 10965 Write_rows 1 10999 table_id: # flags: STMT_END_F
-master-bin.000001 10999 Table_map 1 11040 table_id: # (test.t1)
-master-bin.000001 11040 Write_rows 1 11074 table_id: # flags: STMT_END_F
-master-bin.000001 11074 Table_map 1 11115 table_id: # (test.t1)
-master-bin.000001 11115 Write_rows 1 11149 table_id: # flags: STMT_END_F
-master-bin.000001 11149 Table_map 1 11190 table_id: # (test.t1)
-master-bin.000001 11190 Write_rows 1 11224 table_id: # flags: STMT_END_F
-master-bin.000001 11224 Table_map 1 11265 table_id: # (test.t1)
-master-bin.000001 11265 Write_rows 1 11299 table_id: # flags: STMT_END_F
-master-bin.000001 11299 Table_map 1 11340 table_id: # (test.t1)
-master-bin.000001 11340 Write_rows 1 11374 table_id: # flags: STMT_END_F
-master-bin.000001 11374 Table_map 1 11415 table_id: # (test.t1)
-master-bin.000001 11415 Write_rows 1 11449 table_id: # flags: STMT_END_F
-master-bin.000001 11449 Table_map 1 11490 table_id: # (test.t1)
-master-bin.000001 11490 Write_rows 1 11524 table_id: # flags: STMT_END_F
-master-bin.000001 11524 Table_map 1 11565 table_id: # (test.t1)
-master-bin.000001 11565 Write_rows 1 11599 table_id: # flags: STMT_END_F
-master-bin.000001 11599 Table_map 1 11640 table_id: # (test.t1)
-master-bin.000001 11640 Write_rows 1 11674 table_id: # flags: STMT_END_F
-master-bin.000001 11674 Table_map 1 11715 table_id: # (test.t1)
-master-bin.000001 11715 Write_rows 1 11749 table_id: # flags: STMT_END_F
-master-bin.000001 11749 Table_map 1 11790 table_id: # (test.t1)
-master-bin.000001 11790 Write_rows 1 11824 table_id: # flags: STMT_END_F
-master-bin.000001 11824 Table_map 1 11865 table_id: # (test.t1)
-master-bin.000001 11865 Write_rows 1 11899 table_id: # flags: STMT_END_F
-master-bin.000001 11899 Table_map 1 11940 table_id: # (test.t1)
-master-bin.000001 11940 Write_rows 1 11974 table_id: # flags: STMT_END_F
-master-bin.000001 11974 Table_map 1 12015 table_id: # (test.t1)
-master-bin.000001 12015 Write_rows 1 12049 table_id: # flags: STMT_END_F
-master-bin.000001 12049 Table_map 1 12090 table_id: # (test.t1)
-master-bin.000001 12090 Write_rows 1 12124 table_id: # flags: STMT_END_F
-master-bin.000001 12124 Table_map 1 12165 table_id: # (test.t1)
-master-bin.000001 12165 Write_rows 1 12199 table_id: # flags: STMT_END_F
-master-bin.000001 12199 Table_map 1 12240 table_id: # (test.t1)
-master-bin.000001 12240 Write_rows 1 12274 table_id: # flags: STMT_END_F
-master-bin.000001 12274 Table_map 1 12315 table_id: # (test.t1)
-master-bin.000001 12315 Write_rows 1 12349 table_id: # flags: STMT_END_F
-master-bin.000001 12349 Table_map 1 12390 table_id: # (test.t1)
-master-bin.000001 12390 Write_rows 1 12424 table_id: # flags: STMT_END_F
-master-bin.000001 12424 Table_map 1 12465 table_id: # (test.t1)
-master-bin.000001 12465 Write_rows 1 12499 table_id: # flags: STMT_END_F
-master-bin.000001 12499 Table_map 1 12540 table_id: # (test.t1)
-master-bin.000001 12540 Write_rows 1 12574 table_id: # flags: STMT_END_F
-master-bin.000001 12574 Table_map 1 12615 table_id: # (test.t1)
-master-bin.000001 12615 Write_rows 1 12649 table_id: # flags: STMT_END_F
-master-bin.000001 12649 Table_map 1 12690 table_id: # (test.t1)
-master-bin.000001 12690 Write_rows 1 12724 table_id: # flags: STMT_END_F
-master-bin.000001 12724 Table_map 1 12765 table_id: # (test.t1)
-master-bin.000001 12765 Write_rows 1 12799 table_id: # flags: STMT_END_F
-master-bin.000001 12799 Table_map 1 12840 table_id: # (test.t1)
-master-bin.000001 12840 Write_rows 1 12874 table_id: # flags: STMT_END_F
-master-bin.000001 12874 Table_map 1 12915 table_id: # (test.t1)
-master-bin.000001 12915 Write_rows 1 12949 table_id: # flags: STMT_END_F
-master-bin.000001 12949 Table_map 1 12990 table_id: # (test.t1)
-master-bin.000001 12990 Write_rows 1 13024 table_id: # flags: STMT_END_F
-master-bin.000001 13024 Table_map 1 13065 table_id: # (test.t1)
-master-bin.000001 13065 Write_rows 1 13099 table_id: # flags: STMT_END_F
-master-bin.000001 13099 Table_map 1 13140 table_id: # (test.t1)
-master-bin.000001 13140 Write_rows 1 13174 table_id: # flags: STMT_END_F
-master-bin.000001 13174 Table_map 1 13215 table_id: # (test.t1)
-master-bin.000001 13215 Write_rows 1 13249 table_id: # flags: STMT_END_F
-master-bin.000001 13249 Table_map 1 13290 table_id: # (test.t1)
-master-bin.000001 13290 Write_rows 1 13324 table_id: # flags: STMT_END_F
-master-bin.000001 13324 Table_map 1 13365 table_id: # (test.t1)
-master-bin.000001 13365 Write_rows 1 13399 table_id: # flags: STMT_END_F
-master-bin.000001 13399 Table_map 1 13440 table_id: # (test.t1)
-master-bin.000001 13440 Write_rows 1 13474 table_id: # flags: STMT_END_F
-master-bin.000001 13474 Table_map 1 13515 table_id: # (test.t1)
-master-bin.000001 13515 Write_rows 1 13549 table_id: # flags: STMT_END_F
-master-bin.000001 13549 Table_map 1 13590 table_id: # (test.t1)
-master-bin.000001 13590 Write_rows 1 13624 table_id: # flags: STMT_END_F
-master-bin.000001 13624 Table_map 1 13665 table_id: # (test.t1)
-master-bin.000001 13665 Write_rows 1 13699 table_id: # flags: STMT_END_F
-master-bin.000001 13699 Table_map 1 13740 table_id: # (test.t1)
-master-bin.000001 13740 Write_rows 1 13774 table_id: # flags: STMT_END_F
-master-bin.000001 13774 Table_map 1 13815 table_id: # (test.t1)
-master-bin.000001 13815 Write_rows 1 13849 table_id: # flags: STMT_END_F
-master-bin.000001 13849 Table_map 1 13890 table_id: # (test.t1)
-master-bin.000001 13890 Write_rows 1 13924 table_id: # flags: STMT_END_F
-master-bin.000001 13924 Table_map 1 13965 table_id: # (test.t1)
-master-bin.000001 13965 Write_rows 1 13999 table_id: # flags: STMT_END_F
-master-bin.000001 13999 Table_map 1 14040 table_id: # (test.t1)
-master-bin.000001 14040 Write_rows 1 14074 table_id: # flags: STMT_END_F
-master-bin.000001 14074 Table_map 1 14115 table_id: # (test.t1)
-master-bin.000001 14115 Write_rows 1 14149 table_id: # flags: STMT_END_F
-master-bin.000001 14149 Table_map 1 14190 table_id: # (test.t1)
-master-bin.000001 14190 Write_rows 1 14224 table_id: # flags: STMT_END_F
-master-bin.000001 14224 Table_map 1 14265 table_id: # (test.t1)
-master-bin.000001 14265 Write_rows 1 14299 table_id: # flags: STMT_END_F
-master-bin.000001 14299 Table_map 1 14340 table_id: # (test.t1)
-master-bin.000001 14340 Write_rows 1 14374 table_id: # flags: STMT_END_F
-master-bin.000001 14374 Table_map 1 14415 table_id: # (test.t1)
-master-bin.000001 14415 Write_rows 1 14449 table_id: # flags: STMT_END_F
-master-bin.000001 14449 Table_map 1 14490 table_id: # (test.t1)
-master-bin.000001 14490 Write_rows 1 14524 table_id: # flags: STMT_END_F
-master-bin.000001 14524 Table_map 1 14565 table_id: # (test.t1)
-master-bin.000001 14565 Write_rows 1 14599 table_id: # flags: STMT_END_F
-master-bin.000001 14599 Table_map 1 14640 table_id: # (test.t1)
-master-bin.000001 14640 Write_rows 1 14674 table_id: # flags: STMT_END_F
-master-bin.000001 14674 Table_map 1 14715 table_id: # (test.t1)
-master-bin.000001 14715 Write_rows 1 14749 table_id: # flags: STMT_END_F
-master-bin.000001 14749 Table_map 1 14790 table_id: # (test.t1)
-master-bin.000001 14790 Write_rows 1 14824 table_id: # flags: STMT_END_F
-master-bin.000001 14824 Table_map 1 14865 table_id: # (test.t1)
-master-bin.000001 14865 Write_rows 1 14899 table_id: # flags: STMT_END_F
-master-bin.000001 14899 Table_map 1 14940 table_id: # (test.t1)
-master-bin.000001 14940 Write_rows 1 14974 table_id: # flags: STMT_END_F
-master-bin.000001 14974 Table_map 1 15015 table_id: # (test.t1)
-master-bin.000001 15015 Write_rows 1 15049 table_id: # flags: STMT_END_F
-master-bin.000001 15049 Table_map 1 15090 table_id: # (test.t1)
-master-bin.000001 15090 Write_rows 1 15124 table_id: # flags: STMT_END_F
-master-bin.000001 15124 Table_map 1 15165 table_id: # (test.t1)
-master-bin.000001 15165 Write_rows 1 15199 table_id: # flags: STMT_END_F
-master-bin.000001 15199 Table_map 1 15240 table_id: # (test.t1)
-master-bin.000001 15240 Write_rows 1 15274 table_id: # flags: STMT_END_F
-master-bin.000001 15274 Table_map 1 15315 table_id: # (test.t1)
-master-bin.000001 15315 Write_rows 1 15349 table_id: # flags: STMT_END_F
-master-bin.000001 15349 Table_map 1 15390 table_id: # (test.t1)
-master-bin.000001 15390 Write_rows 1 15424 table_id: # flags: STMT_END_F
-master-bin.000001 15424 Table_map 1 15465 table_id: # (test.t1)
-master-bin.000001 15465 Write_rows 1 15499 table_id: # flags: STMT_END_F
-master-bin.000001 15499 Table_map 1 15540 table_id: # (test.t1)
-master-bin.000001 15540 Write_rows 1 15574 table_id: # flags: STMT_END_F
-master-bin.000001 15574 Table_map 1 15615 table_id: # (test.t1)
-master-bin.000001 15615 Write_rows 1 15649 table_id: # flags: STMT_END_F
-master-bin.000001 15649 Table_map 1 15690 table_id: # (test.t1)
-master-bin.000001 15690 Write_rows 1 15724 table_id: # flags: STMT_END_F
-master-bin.000001 15724 Table_map 1 15765 table_id: # (test.t1)
-master-bin.000001 15765 Write_rows 1 15799 table_id: # flags: STMT_END_F
-master-bin.000001 15799 Table_map 1 15840 table_id: # (test.t1)
-master-bin.000001 15840 Write_rows 1 15874 table_id: # flags: STMT_END_F
-master-bin.000001 15874 Table_map 1 15915 table_id: # (test.t1)
-master-bin.000001 15915 Write_rows 1 15949 table_id: # flags: STMT_END_F
-master-bin.000001 15949 Table_map 1 15990 table_id: # (test.t1)
-master-bin.000001 15990 Write_rows 1 16024 table_id: # flags: STMT_END_F
-master-bin.000001 16024 Table_map 1 16065 table_id: # (test.t1)
-master-bin.000001 16065 Write_rows 1 16099 table_id: # flags: STMT_END_F
-master-bin.000001 16099 Table_map 1 16140 table_id: # (test.t1)
-master-bin.000001 16140 Write_rows 1 16174 table_id: # flags: STMT_END_F
-master-bin.000001 16174 Table_map 1 16215 table_id: # (test.t1)
-master-bin.000001 16215 Write_rows 1 16249 table_id: # flags: STMT_END_F
-master-bin.000001 16249 Table_map 1 16290 table_id: # (test.t1)
-master-bin.000001 16290 Write_rows 1 16324 table_id: # flags: STMT_END_F
-master-bin.000001 16324 Table_map 1 16365 table_id: # (test.t1)
-master-bin.000001 16365 Write_rows 1 16399 table_id: # flags: STMT_END_F
-master-bin.000001 16399 Table_map 1 16440 table_id: # (test.t1)
-master-bin.000001 16440 Write_rows 1 16474 table_id: # flags: STMT_END_F
-master-bin.000001 16474 Table_map 1 16515 table_id: # (test.t1)
-master-bin.000001 16515 Write_rows 1 16549 table_id: # flags: STMT_END_F
-master-bin.000001 16549 Table_map 1 16590 table_id: # (test.t1)
-master-bin.000001 16590 Write_rows 1 16624 table_id: # flags: STMT_END_F
-master-bin.000001 16624 Table_map 1 16665 table_id: # (test.t1)
-master-bin.000001 16665 Write_rows 1 16699 table_id: # flags: STMT_END_F
-master-bin.000001 16699 Table_map 1 16740 table_id: # (test.t1)
-master-bin.000001 16740 Write_rows 1 16774 table_id: # flags: STMT_END_F
-master-bin.000001 16774 Table_map 1 16815 table_id: # (test.t1)
-master-bin.000001 16815 Write_rows 1 16849 table_id: # flags: STMT_END_F
-master-bin.000001 16849 Table_map 1 16890 table_id: # (test.t1)
-master-bin.000001 16890 Write_rows 1 16924 table_id: # flags: STMT_END_F
-master-bin.000001 16924 Table_map 1 16965 table_id: # (test.t1)
-master-bin.000001 16965 Write_rows 1 16999 table_id: # flags: STMT_END_F
-master-bin.000001 16999 Table_map 1 17040 table_id: # (test.t1)
-master-bin.000001 17040 Write_rows 1 17074 table_id: # flags: STMT_END_F
-master-bin.000001 17074 Table_map 1 17115 table_id: # (test.t1)
-master-bin.000001 17115 Write_rows 1 17149 table_id: # flags: STMT_END_F
-master-bin.000001 17149 Table_map 1 17190 table_id: # (test.t1)
-master-bin.000001 17190 Write_rows 1 17224 table_id: # flags: STMT_END_F
-master-bin.000001 17224 Table_map 1 17265 table_id: # (test.t1)
-master-bin.000001 17265 Write_rows 1 17299 table_id: # flags: STMT_END_F
-master-bin.000001 17299 Table_map 1 17340 table_id: # (test.t1)
-master-bin.000001 17340 Write_rows 1 17374 table_id: # flags: STMT_END_F
-master-bin.000001 17374 Table_map 1 17415 table_id: # (test.t1)
-master-bin.000001 17415 Write_rows 1 17449 table_id: # flags: STMT_END_F
-master-bin.000001 17449 Table_map 1 17490 table_id: # (test.t1)
-master-bin.000001 17490 Write_rows 1 17524 table_id: # flags: STMT_END_F
-master-bin.000001 17524 Table_map 1 17565 table_id: # (test.t1)
-master-bin.000001 17565 Write_rows 1 17599 table_id: # flags: STMT_END_F
-master-bin.000001 17599 Table_map 1 17640 table_id: # (test.t1)
-master-bin.000001 17640 Write_rows 1 17674 table_id: # flags: STMT_END_F
-master-bin.000001 17674 Table_map 1 17715 table_id: # (test.t1)
-master-bin.000001 17715 Write_rows 1 17749 table_id: # flags: STMT_END_F
-master-bin.000001 17749 Table_map 1 17790 table_id: # (test.t1)
-master-bin.000001 17790 Write_rows 1 17824 table_id: # flags: STMT_END_F
-master-bin.000001 17824 Table_map 1 17865 table_id: # (test.t1)
-master-bin.000001 17865 Write_rows 1 17899 table_id: # flags: STMT_END_F
-master-bin.000001 17899 Table_map 1 17940 table_id: # (test.t1)
-master-bin.000001 17940 Write_rows 1 17974 table_id: # flags: STMT_END_F
-master-bin.000001 17974 Table_map 1 18015 table_id: # (test.t1)
-master-bin.000001 18015 Write_rows 1 18049 table_id: # flags: STMT_END_F
-master-bin.000001 18049 Table_map 1 18090 table_id: # (test.t1)
-master-bin.000001 18090 Write_rows 1 18124 table_id: # flags: STMT_END_F
-master-bin.000001 18124 Table_map 1 18165 table_id: # (test.t1)
-master-bin.000001 18165 Write_rows 1 18199 table_id: # flags: STMT_END_F
-master-bin.000001 18199 Table_map 1 18240 table_id: # (test.t1)
-master-bin.000001 18240 Write_rows 1 18274 table_id: # flags: STMT_END_F
-master-bin.000001 18274 Table_map 1 18315 table_id: # (test.t1)
-master-bin.000001 18315 Write_rows 1 18349 table_id: # flags: STMT_END_F
-master-bin.000001 18349 Table_map 1 18390 table_id: # (test.t1)
-master-bin.000001 18390 Write_rows 1 18424 table_id: # flags: STMT_END_F
-master-bin.000001 18424 Table_map 1 18465 table_id: # (test.t1)
-master-bin.000001 18465 Write_rows 1 18499 table_id: # flags: STMT_END_F
-master-bin.000001 18499 Table_map 1 18540 table_id: # (test.t1)
-master-bin.000001 18540 Write_rows 1 18574 table_id: # flags: STMT_END_F
-master-bin.000001 18574 Table_map 1 18615 table_id: # (test.t1)
-master-bin.000001 18615 Write_rows 1 18649 table_id: # flags: STMT_END_F
-master-bin.000001 18649 Table_map 1 18690 table_id: # (test.t1)
-master-bin.000001 18690 Write_rows 1 18724 table_id: # flags: STMT_END_F
-master-bin.000001 18724 Table_map 1 18765 table_id: # (test.t1)
-master-bin.000001 18765 Write_rows 1 18799 table_id: # flags: STMT_END_F
-master-bin.000001 18799 Table_map 1 18840 table_id: # (test.t1)
-master-bin.000001 18840 Write_rows 1 18874 table_id: # flags: STMT_END_F
-master-bin.000001 18874 Table_map 1 18915 table_id: # (test.t1)
-master-bin.000001 18915 Write_rows 1 18949 table_id: # flags: STMT_END_F
-master-bin.000001 18949 Table_map 1 18990 table_id: # (test.t1)
-master-bin.000001 18990 Write_rows 1 19024 table_id: # flags: STMT_END_F
-master-bin.000001 19024 Table_map 1 19065 table_id: # (test.t1)
-master-bin.000001 19065 Write_rows 1 19099 table_id: # flags: STMT_END_F
-master-bin.000001 19099 Table_map 1 19140 table_id: # (test.t1)
-master-bin.000001 19140 Write_rows 1 19174 table_id: # flags: STMT_END_F
-master-bin.000001 19174 Table_map 1 19215 table_id: # (test.t1)
-master-bin.000001 19215 Write_rows 1 19249 table_id: # flags: STMT_END_F
-master-bin.000001 19249 Table_map 1 19290 table_id: # (test.t1)
-master-bin.000001 19290 Write_rows 1 19324 table_id: # flags: STMT_END_F
-master-bin.000001 19324 Table_map 1 19365 table_id: # (test.t1)
-master-bin.000001 19365 Write_rows 1 19399 table_id: # flags: STMT_END_F
-master-bin.000001 19399 Table_map 1 19440 table_id: # (test.t1)
-master-bin.000001 19440 Write_rows 1 19474 table_id: # flags: STMT_END_F
-master-bin.000001 19474 Table_map 1 19515 table_id: # (test.t1)
-master-bin.000001 19515 Write_rows 1 19549 table_id: # flags: STMT_END_F
-master-bin.000001 19549 Table_map 1 19590 table_id: # (test.t1)
-master-bin.000001 19590 Write_rows 1 19624 table_id: # flags: STMT_END_F
-master-bin.000001 19624 Table_map 1 19665 table_id: # (test.t1)
-master-bin.000001 19665 Write_rows 1 19699 table_id: # flags: STMT_END_F
-master-bin.000001 19699 Table_map 1 19740 table_id: # (test.t1)
-master-bin.000001 19740 Write_rows 1 19774 table_id: # flags: STMT_END_F
-master-bin.000001 19774 Table_map 1 19815 table_id: # (test.t1)
-master-bin.000001 19815 Write_rows 1 19849 table_id: # flags: STMT_END_F
-master-bin.000001 19849 Table_map 1 19890 table_id: # (test.t1)
-master-bin.000001 19890 Write_rows 1 19924 table_id: # flags: STMT_END_F
-master-bin.000001 19924 Table_map 1 19965 table_id: # (test.t1)
-master-bin.000001 19965 Write_rows 1 19999 table_id: # flags: STMT_END_F
-master-bin.000001 19999 Table_map 1 20040 table_id: # (test.t1)
-master-bin.000001 20040 Write_rows 1 20074 table_id: # flags: STMT_END_F
-master-bin.000001 20074 Table_map 1 20115 table_id: # (test.t1)
-master-bin.000001 20115 Write_rows 1 20149 table_id: # flags: STMT_END_F
-master-bin.000001 20149 Table_map 1 20190 table_id: # (test.t1)
-master-bin.000001 20190 Write_rows 1 20224 table_id: # flags: STMT_END_F
-master-bin.000001 20224 Table_map 1 20265 table_id: # (test.t1)
-master-bin.000001 20265 Write_rows 1 20299 table_id: # flags: STMT_END_F
-master-bin.000001 20299 Table_map 1 20340 table_id: # (test.t1)
-master-bin.000001 20340 Write_rows 1 20374 table_id: # flags: STMT_END_F
-master-bin.000001 20374 Table_map 1 20415 table_id: # (test.t1)
-master-bin.000001 20415 Write_rows 1 20449 table_id: # flags: STMT_END_F
-master-bin.000001 20449 Table_map 1 20490 table_id: # (test.t1)
-master-bin.000001 20490 Write_rows 1 20524 table_id: # flags: STMT_END_F
-master-bin.000001 20524 Table_map 1 20565 table_id: # (test.t1)
-master-bin.000001 20565 Write_rows 1 20599 table_id: # flags: STMT_END_F
-master-bin.000001 20599 Table_map 1 20640 table_id: # (test.t1)
-master-bin.000001 20640 Write_rows 1 20674 table_id: # flags: STMT_END_F
-master-bin.000001 20674 Table_map 1 20715 table_id: # (test.t1)
-master-bin.000001 20715 Write_rows 1 20749 table_id: # flags: STMT_END_F
-master-bin.000001 20749 Table_map 1 20790 table_id: # (test.t1)
-master-bin.000001 20790 Write_rows 1 20824 table_id: # flags: STMT_END_F
-master-bin.000001 20824 Table_map 1 20865 table_id: # (test.t1)
-master-bin.000001 20865 Write_rows 1 20899 table_id: # flags: STMT_END_F
-master-bin.000001 20899 Table_map 1 20940 table_id: # (test.t1)
-master-bin.000001 20940 Write_rows 1 20974 table_id: # flags: STMT_END_F
-master-bin.000001 20974 Table_map 1 21015 table_id: # (test.t1)
-master-bin.000001 21015 Write_rows 1 21049 table_id: # flags: STMT_END_F
-master-bin.000001 21049 Table_map 1 21090 table_id: # (test.t1)
-master-bin.000001 21090 Write_rows 1 21124 table_id: # flags: STMT_END_F
-master-bin.000001 21124 Table_map 1 21165 table_id: # (test.t1)
-master-bin.000001 21165 Write_rows 1 21199 table_id: # flags: STMT_END_F
-master-bin.000001 21199 Table_map 1 21240 table_id: # (test.t1)
-master-bin.000001 21240 Write_rows 1 21274 table_id: # flags: STMT_END_F
-master-bin.000001 21274 Table_map 1 21315 table_id: # (test.t1)
-master-bin.000001 21315 Write_rows 1 21349 table_id: # flags: STMT_END_F
-master-bin.000001 21349 Table_map 1 21390 table_id: # (test.t1)
-master-bin.000001 21390 Write_rows 1 21424 table_id: # flags: STMT_END_F
-master-bin.000001 21424 Table_map 1 21465 table_id: # (test.t1)
-master-bin.000001 21465 Write_rows 1 21499 table_id: # flags: STMT_END_F
-master-bin.000001 21499 Table_map 1 21540 table_id: # (test.t1)
-master-bin.000001 21540 Write_rows 1 21574 table_id: # flags: STMT_END_F
-master-bin.000001 21574 Table_map 1 21615 table_id: # (test.t1)
-master-bin.000001 21615 Write_rows 1 21649 table_id: # flags: STMT_END_F
-master-bin.000001 21649 Table_map 1 21690 table_id: # (test.t1)
-master-bin.000001 21690 Write_rows 1 21724 table_id: # flags: STMT_END_F
-master-bin.000001 21724 Table_map 1 21765 table_id: # (test.t1)
-master-bin.000001 21765 Write_rows 1 21799 table_id: # flags: STMT_END_F
-master-bin.000001 21799 Table_map 1 21840 table_id: # (test.t1)
-master-bin.000001 21840 Write_rows 1 21874 table_id: # flags: STMT_END_F
-master-bin.000001 21874 Table_map 1 21915 table_id: # (test.t1)
-master-bin.000001 21915 Write_rows 1 21949 table_id: # flags: STMT_END_F
-master-bin.000001 21949 Table_map 1 21990 table_id: # (test.t1)
-master-bin.000001 21990 Write_rows 1 22024 table_id: # flags: STMT_END_F
-master-bin.000001 22024 Table_map 1 22065 table_id: # (test.t1)
-master-bin.000001 22065 Write_rows 1 22099 table_id: # flags: STMT_END_F
-master-bin.000001 22099 Table_map 1 22140 table_id: # (test.t1)
-master-bin.000001 22140 Write_rows 1 22174 table_id: # flags: STMT_END_F
-master-bin.000001 22174 Table_map 1 22215 table_id: # (test.t1)
-master-bin.000001 22215 Write_rows 1 22249 table_id: # flags: STMT_END_F
-master-bin.000001 22249 Table_map 1 22290 table_id: # (test.t1)
-master-bin.000001 22290 Write_rows 1 22324 table_id: # flags: STMT_END_F
-master-bin.000001 22324 Table_map 1 22365 table_id: # (test.t1)
-master-bin.000001 22365 Write_rows 1 22399 table_id: # flags: STMT_END_F
-master-bin.000001 22399 Table_map 1 22440 table_id: # (test.t1)
-master-bin.000001 22440 Write_rows 1 22474 table_id: # flags: STMT_END_F
-master-bin.000001 22474 Table_map 1 22515 table_id: # (test.t1)
-master-bin.000001 22515 Write_rows 1 22549 table_id: # flags: STMT_END_F
-master-bin.000001 22549 Table_map 1 22590 table_id: # (test.t1)
-master-bin.000001 22590 Write_rows 1 22624 table_id: # flags: STMT_END_F
-master-bin.000001 22624 Table_map 1 22665 table_id: # (test.t1)
-master-bin.000001 22665 Write_rows 1 22699 table_id: # flags: STMT_END_F
-master-bin.000001 22699 Table_map 1 22740 table_id: # (test.t1)
-master-bin.000001 22740 Write_rows 1 22774 table_id: # flags: STMT_END_F
-master-bin.000001 22774 Table_map 1 22815 table_id: # (test.t1)
-master-bin.000001 22815 Write_rows 1 22849 table_id: # flags: STMT_END_F
-master-bin.000001 22849 Table_map 1 22890 table_id: # (test.t1)
-master-bin.000001 22890 Write_rows 1 22924 table_id: # flags: STMT_END_F
-master-bin.000001 22924 Table_map 1 22965 table_id: # (test.t1)
-master-bin.000001 22965 Write_rows 1 22999 table_id: # flags: STMT_END_F
-master-bin.000001 22999 Table_map 1 23040 table_id: # (test.t1)
-master-bin.000001 23040 Write_rows 1 23074 table_id: # flags: STMT_END_F
-master-bin.000001 23074 Table_map 1 23115 table_id: # (test.t1)
-master-bin.000001 23115 Write_rows 1 23149 table_id: # flags: STMT_END_F
-master-bin.000001 23149 Table_map 1 23190 table_id: # (test.t1)
-master-bin.000001 23190 Write_rows 1 23224 table_id: # flags: STMT_END_F
-master-bin.000001 23224 Table_map 1 23265 table_id: # (test.t1)
-master-bin.000001 23265 Write_rows 1 23299 table_id: # flags: STMT_END_F
-master-bin.000001 23299 Table_map 1 23340 table_id: # (test.t1)
-master-bin.000001 23340 Write_rows 1 23374 table_id: # flags: STMT_END_F
-master-bin.000001 23374 Table_map 1 23415 table_id: # (test.t1)
-master-bin.000001 23415 Write_rows 1 23449 table_id: # flags: STMT_END_F
-master-bin.000001 23449 Table_map 1 23490 table_id: # (test.t1)
-master-bin.000001 23490 Write_rows 1 23524 table_id: # flags: STMT_END_F
-master-bin.000001 23524 Table_map 1 23565 table_id: # (test.t1)
-master-bin.000001 23565 Write_rows 1 23599 table_id: # flags: STMT_END_F
-master-bin.000001 23599 Table_map 1 23640 table_id: # (test.t1)
-master-bin.000001 23640 Write_rows 1 23674 table_id: # flags: STMT_END_F
-master-bin.000001 23674 Table_map 1 23715 table_id: # (test.t1)
-master-bin.000001 23715 Write_rows 1 23749 table_id: # flags: STMT_END_F
-master-bin.000001 23749 Table_map 1 23790 table_id: # (test.t1)
-master-bin.000001 23790 Write_rows 1 23824 table_id: # flags: STMT_END_F
-master-bin.000001 23824 Table_map 1 23865 table_id: # (test.t1)
-master-bin.000001 23865 Write_rows 1 23899 table_id: # flags: STMT_END_F
-master-bin.000001 23899 Table_map 1 23940 table_id: # (test.t1)
-master-bin.000001 23940 Write_rows 1 23974 table_id: # flags: STMT_END_F
-master-bin.000001 23974 Table_map 1 24015 table_id: # (test.t1)
-master-bin.000001 24015 Write_rows 1 24049 table_id: # flags: STMT_END_F
-master-bin.000001 24049 Table_map 1 24090 table_id: # (test.t1)
-master-bin.000001 24090 Write_rows 1 24124 table_id: # flags: STMT_END_F
-master-bin.000001 24124 Table_map 1 24165 table_id: # (test.t1)
-master-bin.000001 24165 Write_rows 1 24199 table_id: # flags: STMT_END_F
-master-bin.000001 24199 Table_map 1 24240 table_id: # (test.t1)
-master-bin.000001 24240 Write_rows 1 24274 table_id: # flags: STMT_END_F
-master-bin.000001 24274 Table_map 1 24315 table_id: # (test.t1)
-master-bin.000001 24315 Write_rows 1 24349 table_id: # flags: STMT_END_F
-master-bin.000001 24349 Table_map 1 24390 table_id: # (test.t1)
-master-bin.000001 24390 Write_rows 1 24424 table_id: # flags: STMT_END_F
-master-bin.000001 24424 Table_map 1 24465 table_id: # (test.t1)
-master-bin.000001 24465 Write_rows 1 24499 table_id: # flags: STMT_END_F
-master-bin.000001 24499 Table_map 1 24540 table_id: # (test.t1)
-master-bin.000001 24540 Write_rows 1 24574 table_id: # flags: STMT_END_F
-master-bin.000001 24574 Table_map 1 24615 table_id: # (test.t1)
-master-bin.000001 24615 Write_rows 1 24649 table_id: # flags: STMT_END_F
-master-bin.000001 24649 Table_map 1 24690 table_id: # (test.t1)
-master-bin.000001 24690 Write_rows 1 24724 table_id: # flags: STMT_END_F
-master-bin.000001 24724 Table_map 1 24765 table_id: # (test.t1)
-master-bin.000001 24765 Write_rows 1 24799 table_id: # flags: STMT_END_F
-master-bin.000001 24799 Table_map 1 24840 table_id: # (test.t1)
-master-bin.000001 24840 Write_rows 1 24874 table_id: # flags: STMT_END_F
-master-bin.000001 24874 Table_map 1 24915 table_id: # (test.t1)
-master-bin.000001 24915 Write_rows 1 24949 table_id: # flags: STMT_END_F
-master-bin.000001 24949 Table_map 1 24990 table_id: # (test.t1)
-master-bin.000001 24990 Write_rows 1 25024 table_id: # flags: STMT_END_F
-master-bin.000001 25024 Table_map 1 25065 table_id: # (test.t1)
-master-bin.000001 25065 Write_rows 1 25099 table_id: # flags: STMT_END_F
-master-bin.000001 25099 Table_map 1 25140 table_id: # (test.t1)
-master-bin.000001 25140 Write_rows 1 25174 table_id: # flags: STMT_END_F
-master-bin.000001 25174 Table_map 1 25215 table_id: # (test.t1)
-master-bin.000001 25215 Write_rows 1 25249 table_id: # flags: STMT_END_F
-master-bin.000001 25249 Table_map 1 25290 table_id: # (test.t1)
-master-bin.000001 25290 Write_rows 1 25324 table_id: # flags: STMT_END_F
-master-bin.000001 25324 Table_map 1 25365 table_id: # (test.t1)
-master-bin.000001 25365 Write_rows 1 25399 table_id: # flags: STMT_END_F
-master-bin.000001 25399 Table_map 1 25440 table_id: # (test.t1)
-master-bin.000001 25440 Write_rows 1 25474 table_id: # flags: STMT_END_F
-master-bin.000001 25474 Table_map 1 25515 table_id: # (test.t1)
-master-bin.000001 25515 Write_rows 1 25549 table_id: # flags: STMT_END_F
-master-bin.000001 25549 Table_map 1 25590 table_id: # (test.t1)
-master-bin.000001 25590 Write_rows 1 25624 table_id: # flags: STMT_END_F
-master-bin.000001 25624 Table_map 1 25665 table_id: # (test.t1)
-master-bin.000001 25665 Write_rows 1 25699 table_id: # flags: STMT_END_F
-master-bin.000001 25699 Table_map 1 25740 table_id: # (test.t1)
-master-bin.000001 25740 Write_rows 1 25774 table_id: # flags: STMT_END_F
-master-bin.000001 25774 Table_map 1 25815 table_id: # (test.t1)
-master-bin.000001 25815 Write_rows 1 25849 table_id: # flags: STMT_END_F
-master-bin.000001 25849 Table_map 1 25890 table_id: # (test.t1)
-master-bin.000001 25890 Write_rows 1 25924 table_id: # flags: STMT_END_F
-master-bin.000001 25924 Table_map 1 25965 table_id: # (test.t1)
-master-bin.000001 25965 Write_rows 1 25999 table_id: # flags: STMT_END_F
-master-bin.000001 25999 Table_map 1 26040 table_id: # (test.t1)
-master-bin.000001 26040 Write_rows 1 26074 table_id: # flags: STMT_END_F
-master-bin.000001 26074 Table_map 1 26115 table_id: # (test.t1)
-master-bin.000001 26115 Write_rows 1 26149 table_id: # flags: STMT_END_F
-master-bin.000001 26149 Table_map 1 26190 table_id: # (test.t1)
-master-bin.000001 26190 Write_rows 1 26224 table_id: # flags: STMT_END_F
-master-bin.000001 26224 Table_map 1 26265 table_id: # (test.t1)
-master-bin.000001 26265 Write_rows 1 26299 table_id: # flags: STMT_END_F
-master-bin.000001 26299 Table_map 1 26340 table_id: # (test.t1)
-master-bin.000001 26340 Write_rows 1 26374 table_id: # flags: STMT_END_F
-master-bin.000001 26374 Table_map 1 26415 table_id: # (test.t1)
-master-bin.000001 26415 Write_rows 1 26449 table_id: # flags: STMT_END_F
-master-bin.000001 26449 Table_map 1 26490 table_id: # (test.t1)
-master-bin.000001 26490 Write_rows 1 26524 table_id: # flags: STMT_END_F
-master-bin.000001 26524 Table_map 1 26565 table_id: # (test.t1)
-master-bin.000001 26565 Write_rows 1 26599 table_id: # flags: STMT_END_F
-master-bin.000001 26599 Table_map 1 26640 table_id: # (test.t1)
-master-bin.000001 26640 Write_rows 1 26674 table_id: # flags: STMT_END_F
-master-bin.000001 26674 Table_map 1 26715 table_id: # (test.t1)
-master-bin.000001 26715 Write_rows 1 26749 table_id: # flags: STMT_END_F
-master-bin.000001 26749 Table_map 1 26790 table_id: # (test.t1)
-master-bin.000001 26790 Write_rows 1 26824 table_id: # flags: STMT_END_F
-master-bin.000001 26824 Table_map 1 26865 table_id: # (test.t1)
-master-bin.000001 26865 Write_rows 1 26899 table_id: # flags: STMT_END_F
-master-bin.000001 26899 Table_map 1 26940 table_id: # (test.t1)
-master-bin.000001 26940 Write_rows 1 26974 table_id: # flags: STMT_END_F
-master-bin.000001 26974 Table_map 1 27015 table_id: # (test.t1)
-master-bin.000001 27015 Write_rows 1 27049 table_id: # flags: STMT_END_F
-master-bin.000001 27049 Table_map 1 27090 table_id: # (test.t1)
-master-bin.000001 27090 Write_rows 1 27124 table_id: # flags: STMT_END_F
-master-bin.000001 27124 Table_map 1 27165 table_id: # (test.t1)
-master-bin.000001 27165 Write_rows 1 27199 table_id: # flags: STMT_END_F
-master-bin.000001 27199 Table_map 1 27240 table_id: # (test.t1)
-master-bin.000001 27240 Write_rows 1 27274 table_id: # flags: STMT_END_F
-master-bin.000001 27274 Table_map 1 27315 table_id: # (test.t1)
-master-bin.000001 27315 Write_rows 1 27349 table_id: # flags: STMT_END_F
-master-bin.000001 27349 Table_map 1 27390 table_id: # (test.t1)
-master-bin.000001 27390 Write_rows 1 27424 table_id: # flags: STMT_END_F
-master-bin.000001 27424 Table_map 1 27465 table_id: # (test.t1)
-master-bin.000001 27465 Write_rows 1 27499 table_id: # flags: STMT_END_F
-master-bin.000001 27499 Table_map 1 27540 table_id: # (test.t1)
-master-bin.000001 27540 Write_rows 1 27574 table_id: # flags: STMT_END_F
-master-bin.000001 27574 Table_map 1 27615 table_id: # (test.t1)
-master-bin.000001 27615 Write_rows 1 27649 table_id: # flags: STMT_END_F
-master-bin.000001 27649 Table_map 1 27690 table_id: # (test.t1)
-master-bin.000001 27690 Write_rows 1 27724 table_id: # flags: STMT_END_F
-master-bin.000001 27724 Table_map 1 27765 table_id: # (test.t1)
-master-bin.000001 27765 Write_rows 1 27799 table_id: # flags: STMT_END_F
-master-bin.000001 27799 Table_map 1 27840 table_id: # (test.t1)
-master-bin.000001 27840 Write_rows 1 27874 table_id: # flags: STMT_END_F
-master-bin.000001 27874 Table_map 1 27915 table_id: # (test.t1)
-master-bin.000001 27915 Write_rows 1 27949 table_id: # flags: STMT_END_F
-master-bin.000001 27949 Table_map 1 27990 table_id: # (test.t1)
-master-bin.000001 27990 Write_rows 1 28024 table_id: # flags: STMT_END_F
-master-bin.000001 28024 Table_map 1 28065 table_id: # (test.t1)
-master-bin.000001 28065 Write_rows 1 28099 table_id: # flags: STMT_END_F
-master-bin.000001 28099 Table_map 1 28140 table_id: # (test.t1)
-master-bin.000001 28140 Write_rows 1 28174 table_id: # flags: STMT_END_F
-master-bin.000001 28174 Table_map 1 28215 table_id: # (test.t1)
-master-bin.000001 28215 Write_rows 1 28249 table_id: # flags: STMT_END_F
-master-bin.000001 28249 Table_map 1 28290 table_id: # (test.t1)
-master-bin.000001 28290 Write_rows 1 28324 table_id: # flags: STMT_END_F
-master-bin.000001 28324 Table_map 1 28365 table_id: # (test.t1)
-master-bin.000001 28365 Write_rows 1 28399 table_id: # flags: STMT_END_F
-master-bin.000001 28399 Table_map 1 28440 table_id: # (test.t1)
-master-bin.000001 28440 Write_rows 1 28474 table_id: # flags: STMT_END_F
-master-bin.000001 28474 Table_map 1 28515 table_id: # (test.t1)
-master-bin.000001 28515 Write_rows 1 28549 table_id: # flags: STMT_END_F
-master-bin.000001 28549 Table_map 1 28590 table_id: # (test.t1)
-master-bin.000001 28590 Write_rows 1 28624 table_id: # flags: STMT_END_F
-master-bin.000001 28624 Table_map 1 28665 table_id: # (test.t1)
-master-bin.000001 28665 Write_rows 1 28699 table_id: # flags: STMT_END_F
-master-bin.000001 28699 Table_map 1 28740 table_id: # (test.t1)
-master-bin.000001 28740 Write_rows 1 28774 table_id: # flags: STMT_END_F
-master-bin.000001 28774 Table_map 1 28815 table_id: # (test.t1)
-master-bin.000001 28815 Write_rows 1 28849 table_id: # flags: STMT_END_F
-master-bin.000001 28849 Table_map 1 28890 table_id: # (test.t1)
-master-bin.000001 28890 Write_rows 1 28924 table_id: # flags: STMT_END_F
-master-bin.000001 28924 Table_map 1 28965 table_id: # (test.t1)
-master-bin.000001 28965 Write_rows 1 28999 table_id: # flags: STMT_END_F
-master-bin.000001 28999 Table_map 1 29040 table_id: # (test.t1)
-master-bin.000001 29040 Write_rows 1 29074 table_id: # flags: STMT_END_F
-master-bin.000001 29074 Table_map 1 29115 table_id: # (test.t1)
-master-bin.000001 29115 Write_rows 1 29149 table_id: # flags: STMT_END_F
-master-bin.000001 29149 Table_map 1 29190 table_id: # (test.t1)
-master-bin.000001 29190 Write_rows 1 29224 table_id: # flags: STMT_END_F
-master-bin.000001 29224 Table_map 1 29265 table_id: # (test.t1)
-master-bin.000001 29265 Write_rows 1 29299 table_id: # flags: STMT_END_F
-master-bin.000001 29299 Table_map 1 29340 table_id: # (test.t1)
-master-bin.000001 29340 Write_rows 1 29374 table_id: # flags: STMT_END_F
-master-bin.000001 29374 Table_map 1 29415 table_id: # (test.t1)
-master-bin.000001 29415 Write_rows 1 29449 table_id: # flags: STMT_END_F
-master-bin.000001 29449 Table_map 1 29490 table_id: # (test.t1)
-master-bin.000001 29490 Write_rows 1 29524 table_id: # flags: STMT_END_F
-master-bin.000001 29524 Table_map 1 29565 table_id: # (test.t1)
-master-bin.000001 29565 Write_rows 1 29599 table_id: # flags: STMT_END_F
-master-bin.000001 29599 Table_map 1 29640 table_id: # (test.t1)
-master-bin.000001 29640 Write_rows 1 29674 table_id: # flags: STMT_END_F
-master-bin.000001 29674 Table_map 1 29715 table_id: # (test.t1)
-master-bin.000001 29715 Write_rows 1 29749 table_id: # flags: STMT_END_F
-master-bin.000001 29749 Table_map 1 29790 table_id: # (test.t1)
-master-bin.000001 29790 Write_rows 1 29824 table_id: # flags: STMT_END_F
-master-bin.000001 29824 Table_map 1 29865 table_id: # (test.t1)
-master-bin.000001 29865 Write_rows 1 29899 table_id: # flags: STMT_END_F
-master-bin.000001 29899 Table_map 1 29940 table_id: # (test.t1)
-master-bin.000001 29940 Write_rows 1 29974 table_id: # flags: STMT_END_F
-master-bin.000001 29974 Table_map 1 30015 table_id: # (test.t1)
-master-bin.000001 30015 Write_rows 1 30049 table_id: # flags: STMT_END_F
-master-bin.000001 30049 Table_map 1 30090 table_id: # (test.t1)
-master-bin.000001 30090 Write_rows 1 30124 table_id: # flags: STMT_END_F
-master-bin.000001 30124 Table_map 1 30165 table_id: # (test.t1)
-master-bin.000001 30165 Write_rows 1 30199 table_id: # flags: STMT_END_F
-master-bin.000001 30199 Table_map 1 30240 table_id: # (test.t1)
-master-bin.000001 30240 Write_rows 1 30274 table_id: # flags: STMT_END_F
-master-bin.000001 30274 Xid 1 30301 COMMIT /* XID */
-master-bin.000001 30301 Rotate 1 30345 master-bin.000002;pos=4
+master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Rotate # # master-bin.000002;pos=4
drop table t1;
set global binlog_cache_size=@bcs;
set session autocommit = @ac;
@@ -1081,15 +1079,14 @@ set @b= 14632475938453979136;
execute stmt using @a, @b;
deallocate prepare stmt;
drop table t1;
-show binlog events from 0;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
-master-bin.000001 106 Query 1 227 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
-master-bin.000001 227 Query 1 295 BEGIN
-master-bin.000001 295 Table_map 1 337 table_id: # (test.t1)
-master-bin.000001 337 Write_rows 1 383 table_id: # flags: STMT_END_F
-master-bin.000001 383 Query 1 452 COMMIT
-master-bin.000001 452 Query 1 528 use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
@@ -1289,14 +1286,14 @@ drop table if exists t3;
create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 346
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
-show master status /* must show new binlog index after rotating */;
+show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000002 106
+master-bin.000002 # <Binlog_Do_DB> <Binlog_Ignore_DB>
drop table t3;
#
# Bug #45998: database crashes when running "create as select"
diff --git a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
index 9057395ab82..8b42cadf6cb 100644
--- a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
+++ b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
@@ -879,11 +879,11 @@ delete from t4;
insert into t3 values (1,1),(2,2);
insert into t4 values (1,1),(2,2);
reset master;
-UPDATE t3,t4 SET t3.a=t4.a + bug27417(1);
+UPDATE t3,t4 SET t3.a = t4.a + bug27417(1) where t3.a = 1;
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
select count(*) from t1 /* must be 1 */;
count(*)
-2
+1
drop table t4;
delete from t1;
delete from t2;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_binlog.result b/mysql-test/suite/binlog/r/binlog_stm_binlog.result
index a7f79e53895..abfd6a33a7d 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result
@@ -3,14 +3,13 @@ create table t1 (a int, b int) engine=innodb;
begin;
insert into t1 values (1,2);
commit;
-show binlog events;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: #, Binlog ver: #
-master-bin.000001 106 Query 1 192 use `test`; drop table if exists t1
-master-bin.000001 192 Query 1 299 use `test`; create table t1 (a int, b int) engine=innodb
-master-bin.000001 299 Query 1 367 BEGIN
-master-bin.000001 367 Query 1 457 use `test`; insert into t1 values (1,2)
-master-bin.000001 457 Xid 1 484 COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; drop table if exists t1
+master-bin.000001 # Query # # use `test`; create table t1 (a int, b int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into t1 values (1,2)
+master-bin.000001 # Xid # # COMMIT /* XID */
drop table t1;
drop table if exists t1, t2;
reset master;
@@ -38,115 +37,115 @@ create table t1 (n int) engine=innodb;
begin;
commit;
drop table t1;
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(100 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(99 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(98 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(97 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(96 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(95 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(94 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(93 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(92 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(91 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(90 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(89 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(88 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(87 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(86 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(85 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(84 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(83 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(82 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(81 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(80 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(79 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(78 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(77 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(76 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(75 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(74 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(73 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(72 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(71 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(70 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(69 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(68 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(67 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(66 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(65 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(64 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(63 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(62 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(61 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(60 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(59 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(58 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(57 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(56 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(55 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(54 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(53 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(52 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(51 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(50 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(49 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(48 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(47 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(46 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(45 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(44 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(43 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(42 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(41 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(40 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(39 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(38 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(37 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(36 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(35 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(34 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(33 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(32 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(31 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(30 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(29 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(28 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(27 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(26 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(25 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(24 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(23 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(22 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(21 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(20 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(19 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(18 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(17 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(16 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(15 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(14 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(13 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(12 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(11 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(10 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(9 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(8 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(7 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(6 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(5 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(4 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(3 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(2 + 4)
-master-bin.000001 # Query 1 # use `test`; insert into t1 values(1 + 4)
-master-bin.000001 # Xid 1 # COMMIT /* xid= */
-master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
-show binlog events in 'master-bin.000002' from 106;
+master-bin.000001 # Query # # use `test`; create table t1 (n int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into t1 values(100 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(99 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(98 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(97 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(96 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(95 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(94 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(93 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(92 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(91 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(90 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(89 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(88 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(87 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(86 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(85 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(84 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(83 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(82 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(81 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(80 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(79 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(78 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(77 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(76 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(75 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(74 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(73 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(72 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(71 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(70 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(69 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(68 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(67 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(66 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(65 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(64 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(63 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(62 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(61 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(60 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(59 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(58 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(57 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(56 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(55 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(54 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(53 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(52 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(51 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(50 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(49 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(48 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(47 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(46 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(45 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(44 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(43 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(42 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(41 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(40 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(39 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(38 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(37 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(36 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(35 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(34 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(33 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(32 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(31 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(30 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(29 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(28 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(27 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(26 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(25 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(24 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(23 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(22 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(21 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(20 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(19 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(18 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(17 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(16 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(15 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(14 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(13 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(12 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(11 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(10 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(9 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(8 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(7 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(6 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(5 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(4 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(3 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(2 + 4)
+master-bin.000001 # Query # # use `test`; insert into t1 values(1 + 4)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Rotate # # master-bin.000002;pos=4
+show binlog events in 'master-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000002 # Query 1 # use `test`; drop table t1
+master-bin.000002 # Query # # use `test`; drop table t1
set @ac = @@autocommit;
set autocommit= 0;
reset master;
@@ -157,427 +156,425 @@ insert into t1 values (2);
insert into t1 values (3);
commit;
drop table t1;
-show binlog events from 0;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
-master-bin.000001 106 Query 1 205 use `test`; create table t1(n int) engine=innodb
-master-bin.000001 205 Query 1 273 BEGIN
-master-bin.000001 273 Query 1 361 use `test`; insert into t1 values (1)
-master-bin.000001 361 Query 1 449 use `test`; insert into t1 values (2)
-master-bin.000001 449 Query 1 537 use `test`; insert into t1 values (3)
-master-bin.000001 537 Xid 1 564 COMMIT /* XID */
-master-bin.000001 564 Query 1 640 use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1(n int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # use `test`; insert into t1 values (2)
+master-bin.000001 # Query # # use `test`; insert into t1 values (3)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; drop table t1
set @bcs = @@binlog_cache_size;
set global binlog_cache_size=4096;
reset master;
create table t1 (a int) engine=innodb;
-show binlog events from 0;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
-master-bin.000001 106 Query 1 206 use `test`; create table t1 (a int) engine=innodb
-master-bin.000001 206 Query 1 274 BEGIN
-master-bin.000001 274 Query 1 365 use `test`; insert into t1 values( 400 )
-master-bin.000001 365 Query 1 456 use `test`; insert into t1 values( 399 )
-master-bin.000001 456 Query 1 547 use `test`; insert into t1 values( 398 )
-master-bin.000001 547 Query 1 638 use `test`; insert into t1 values( 397 )
-master-bin.000001 638 Query 1 729 use `test`; insert into t1 values( 396 )
-master-bin.000001 729 Query 1 820 use `test`; insert into t1 values( 395 )
-master-bin.000001 820 Query 1 911 use `test`; insert into t1 values( 394 )
-master-bin.000001 911 Query 1 1002 use `test`; insert into t1 values( 393 )
-master-bin.000001 1002 Query 1 1093 use `test`; insert into t1 values( 392 )
-master-bin.000001 1093 Query 1 1184 use `test`; insert into t1 values( 391 )
-master-bin.000001 1184 Query 1 1275 use `test`; insert into t1 values( 390 )
-master-bin.000001 1275 Query 1 1366 use `test`; insert into t1 values( 389 )
-master-bin.000001 1366 Query 1 1457 use `test`; insert into t1 values( 388 )
-master-bin.000001 1457 Query 1 1548 use `test`; insert into t1 values( 387 )
-master-bin.000001 1548 Query 1 1639 use `test`; insert into t1 values( 386 )
-master-bin.000001 1639 Query 1 1730 use `test`; insert into t1 values( 385 )
-master-bin.000001 1730 Query 1 1821 use `test`; insert into t1 values( 384 )
-master-bin.000001 1821 Query 1 1912 use `test`; insert into t1 values( 383 )
-master-bin.000001 1912 Query 1 2003 use `test`; insert into t1 values( 382 )
-master-bin.000001 2003 Query 1 2094 use `test`; insert into t1 values( 381 )
-master-bin.000001 2094 Query 1 2185 use `test`; insert into t1 values( 380 )
-master-bin.000001 2185 Query 1 2276 use `test`; insert into t1 values( 379 )
-master-bin.000001 2276 Query 1 2367 use `test`; insert into t1 values( 378 )
-master-bin.000001 2367 Query 1 2458 use `test`; insert into t1 values( 377 )
-master-bin.000001 2458 Query 1 2549 use `test`; insert into t1 values( 376 )
-master-bin.000001 2549 Query 1 2640 use `test`; insert into t1 values( 375 )
-master-bin.000001 2640 Query 1 2731 use `test`; insert into t1 values( 374 )
-master-bin.000001 2731 Query 1 2822 use `test`; insert into t1 values( 373 )
-master-bin.000001 2822 Query 1 2913 use `test`; insert into t1 values( 372 )
-master-bin.000001 2913 Query 1 3004 use `test`; insert into t1 values( 371 )
-master-bin.000001 3004 Query 1 3095 use `test`; insert into t1 values( 370 )
-master-bin.000001 3095 Query 1 3186 use `test`; insert into t1 values( 369 )
-master-bin.000001 3186 Query 1 3277 use `test`; insert into t1 values( 368 )
-master-bin.000001 3277 Query 1 3368 use `test`; insert into t1 values( 367 )
-master-bin.000001 3368 Query 1 3459 use `test`; insert into t1 values( 366 )
-master-bin.000001 3459 Query 1 3550 use `test`; insert into t1 values( 365 )
-master-bin.000001 3550 Query 1 3641 use `test`; insert into t1 values( 364 )
-master-bin.000001 3641 Query 1 3732 use `test`; insert into t1 values( 363 )
-master-bin.000001 3732 Query 1 3823 use `test`; insert into t1 values( 362 )
-master-bin.000001 3823 Query 1 3914 use `test`; insert into t1 values( 361 )
-master-bin.000001 3914 Query 1 4005 use `test`; insert into t1 values( 360 )
-master-bin.000001 4005 Query 1 4096 use `test`; insert into t1 values( 359 )
-master-bin.000001 4096 Query 1 4187 use `test`; insert into t1 values( 358 )
-master-bin.000001 4187 Query 1 4278 use `test`; insert into t1 values( 357 )
-master-bin.000001 4278 Query 1 4369 use `test`; insert into t1 values( 356 )
-master-bin.000001 4369 Query 1 4460 use `test`; insert into t1 values( 355 )
-master-bin.000001 4460 Query 1 4551 use `test`; insert into t1 values( 354 )
-master-bin.000001 4551 Query 1 4642 use `test`; insert into t1 values( 353 )
-master-bin.000001 4642 Query 1 4733 use `test`; insert into t1 values( 352 )
-master-bin.000001 4733 Query 1 4824 use `test`; insert into t1 values( 351 )
-master-bin.000001 4824 Query 1 4915 use `test`; insert into t1 values( 350 )
-master-bin.000001 4915 Query 1 5006 use `test`; insert into t1 values( 349 )
-master-bin.000001 5006 Query 1 5097 use `test`; insert into t1 values( 348 )
-master-bin.000001 5097 Query 1 5188 use `test`; insert into t1 values( 347 )
-master-bin.000001 5188 Query 1 5279 use `test`; insert into t1 values( 346 )
-master-bin.000001 5279 Query 1 5370 use `test`; insert into t1 values( 345 )
-master-bin.000001 5370 Query 1 5461 use `test`; insert into t1 values( 344 )
-master-bin.000001 5461 Query 1 5552 use `test`; insert into t1 values( 343 )
-master-bin.000001 5552 Query 1 5643 use `test`; insert into t1 values( 342 )
-master-bin.000001 5643 Query 1 5734 use `test`; insert into t1 values( 341 )
-master-bin.000001 5734 Query 1 5825 use `test`; insert into t1 values( 340 )
-master-bin.000001 5825 Query 1 5916 use `test`; insert into t1 values( 339 )
-master-bin.000001 5916 Query 1 6007 use `test`; insert into t1 values( 338 )
-master-bin.000001 6007 Query 1 6098 use `test`; insert into t1 values( 337 )
-master-bin.000001 6098 Query 1 6189 use `test`; insert into t1 values( 336 )
-master-bin.000001 6189 Query 1 6280 use `test`; insert into t1 values( 335 )
-master-bin.000001 6280 Query 1 6371 use `test`; insert into t1 values( 334 )
-master-bin.000001 6371 Query 1 6462 use `test`; insert into t1 values( 333 )
-master-bin.000001 6462 Query 1 6553 use `test`; insert into t1 values( 332 )
-master-bin.000001 6553 Query 1 6644 use `test`; insert into t1 values( 331 )
-master-bin.000001 6644 Query 1 6735 use `test`; insert into t1 values( 330 )
-master-bin.000001 6735 Query 1 6826 use `test`; insert into t1 values( 329 )
-master-bin.000001 6826 Query 1 6917 use `test`; insert into t1 values( 328 )
-master-bin.000001 6917 Query 1 7008 use `test`; insert into t1 values( 327 )
-master-bin.000001 7008 Query 1 7099 use `test`; insert into t1 values( 326 )
-master-bin.000001 7099 Query 1 7190 use `test`; insert into t1 values( 325 )
-master-bin.000001 7190 Query 1 7281 use `test`; insert into t1 values( 324 )
-master-bin.000001 7281 Query 1 7372 use `test`; insert into t1 values( 323 )
-master-bin.000001 7372 Query 1 7463 use `test`; insert into t1 values( 322 )
-master-bin.000001 7463 Query 1 7554 use `test`; insert into t1 values( 321 )
-master-bin.000001 7554 Query 1 7645 use `test`; insert into t1 values( 320 )
-master-bin.000001 7645 Query 1 7736 use `test`; insert into t1 values( 319 )
-master-bin.000001 7736 Query 1 7827 use `test`; insert into t1 values( 318 )
-master-bin.000001 7827 Query 1 7918 use `test`; insert into t1 values( 317 )
-master-bin.000001 7918 Query 1 8009 use `test`; insert into t1 values( 316 )
-master-bin.000001 8009 Query 1 8100 use `test`; insert into t1 values( 315 )
-master-bin.000001 8100 Query 1 8191 use `test`; insert into t1 values( 314 )
-master-bin.000001 8191 Query 1 8282 use `test`; insert into t1 values( 313 )
-master-bin.000001 8282 Query 1 8373 use `test`; insert into t1 values( 312 )
-master-bin.000001 8373 Query 1 8464 use `test`; insert into t1 values( 311 )
-master-bin.000001 8464 Query 1 8555 use `test`; insert into t1 values( 310 )
-master-bin.000001 8555 Query 1 8646 use `test`; insert into t1 values( 309 )
-master-bin.000001 8646 Query 1 8737 use `test`; insert into t1 values( 308 )
-master-bin.000001 8737 Query 1 8828 use `test`; insert into t1 values( 307 )
-master-bin.000001 8828 Query 1 8919 use `test`; insert into t1 values( 306 )
-master-bin.000001 8919 Query 1 9010 use `test`; insert into t1 values( 305 )
-master-bin.000001 9010 Query 1 9101 use `test`; insert into t1 values( 304 )
-master-bin.000001 9101 Query 1 9192 use `test`; insert into t1 values( 303 )
-master-bin.000001 9192 Query 1 9283 use `test`; insert into t1 values( 302 )
-master-bin.000001 9283 Query 1 9374 use `test`; insert into t1 values( 301 )
-master-bin.000001 9374 Query 1 9465 use `test`; insert into t1 values( 300 )
-master-bin.000001 9465 Query 1 9556 use `test`; insert into t1 values( 299 )
-master-bin.000001 9556 Query 1 9647 use `test`; insert into t1 values( 298 )
-master-bin.000001 9647 Query 1 9738 use `test`; insert into t1 values( 297 )
-master-bin.000001 9738 Query 1 9829 use `test`; insert into t1 values( 296 )
-master-bin.000001 9829 Query 1 9920 use `test`; insert into t1 values( 295 )
-master-bin.000001 9920 Query 1 10011 use `test`; insert into t1 values( 294 )
-master-bin.000001 10011 Query 1 10102 use `test`; insert into t1 values( 293 )
-master-bin.000001 10102 Query 1 10193 use `test`; insert into t1 values( 292 )
-master-bin.000001 10193 Query 1 10284 use `test`; insert into t1 values( 291 )
-master-bin.000001 10284 Query 1 10375 use `test`; insert into t1 values( 290 )
-master-bin.000001 10375 Query 1 10466 use `test`; insert into t1 values( 289 )
-master-bin.000001 10466 Query 1 10557 use `test`; insert into t1 values( 288 )
-master-bin.000001 10557 Query 1 10648 use `test`; insert into t1 values( 287 )
-master-bin.000001 10648 Query 1 10739 use `test`; insert into t1 values( 286 )
-master-bin.000001 10739 Query 1 10830 use `test`; insert into t1 values( 285 )
-master-bin.000001 10830 Query 1 10921 use `test`; insert into t1 values( 284 )
-master-bin.000001 10921 Query 1 11012 use `test`; insert into t1 values( 283 )
-master-bin.000001 11012 Query 1 11103 use `test`; insert into t1 values( 282 )
-master-bin.000001 11103 Query 1 11194 use `test`; insert into t1 values( 281 )
-master-bin.000001 11194 Query 1 11285 use `test`; insert into t1 values( 280 )
-master-bin.000001 11285 Query 1 11376 use `test`; insert into t1 values( 279 )
-master-bin.000001 11376 Query 1 11467 use `test`; insert into t1 values( 278 )
-master-bin.000001 11467 Query 1 11558 use `test`; insert into t1 values( 277 )
-master-bin.000001 11558 Query 1 11649 use `test`; insert into t1 values( 276 )
-master-bin.000001 11649 Query 1 11740 use `test`; insert into t1 values( 275 )
-master-bin.000001 11740 Query 1 11831 use `test`; insert into t1 values( 274 )
-master-bin.000001 11831 Query 1 11922 use `test`; insert into t1 values( 273 )
-master-bin.000001 11922 Query 1 12013 use `test`; insert into t1 values( 272 )
-master-bin.000001 12013 Query 1 12104 use `test`; insert into t1 values( 271 )
-master-bin.000001 12104 Query 1 12195 use `test`; insert into t1 values( 270 )
-master-bin.000001 12195 Query 1 12286 use `test`; insert into t1 values( 269 )
-master-bin.000001 12286 Query 1 12377 use `test`; insert into t1 values( 268 )
-master-bin.000001 12377 Query 1 12468 use `test`; insert into t1 values( 267 )
-master-bin.000001 12468 Query 1 12559 use `test`; insert into t1 values( 266 )
-master-bin.000001 12559 Query 1 12650 use `test`; insert into t1 values( 265 )
-master-bin.000001 12650 Query 1 12741 use `test`; insert into t1 values( 264 )
-master-bin.000001 12741 Query 1 12832 use `test`; insert into t1 values( 263 )
-master-bin.000001 12832 Query 1 12923 use `test`; insert into t1 values( 262 )
-master-bin.000001 12923 Query 1 13014 use `test`; insert into t1 values( 261 )
-master-bin.000001 13014 Query 1 13105 use `test`; insert into t1 values( 260 )
-master-bin.000001 13105 Query 1 13196 use `test`; insert into t1 values( 259 )
-master-bin.000001 13196 Query 1 13287 use `test`; insert into t1 values( 258 )
-master-bin.000001 13287 Query 1 13378 use `test`; insert into t1 values( 257 )
-master-bin.000001 13378 Query 1 13469 use `test`; insert into t1 values( 256 )
-master-bin.000001 13469 Query 1 13560 use `test`; insert into t1 values( 255 )
-master-bin.000001 13560 Query 1 13651 use `test`; insert into t1 values( 254 )
-master-bin.000001 13651 Query 1 13742 use `test`; insert into t1 values( 253 )
-master-bin.000001 13742 Query 1 13833 use `test`; insert into t1 values( 252 )
-master-bin.000001 13833 Query 1 13924 use `test`; insert into t1 values( 251 )
-master-bin.000001 13924 Query 1 14015 use `test`; insert into t1 values( 250 )
-master-bin.000001 14015 Query 1 14106 use `test`; insert into t1 values( 249 )
-master-bin.000001 14106 Query 1 14197 use `test`; insert into t1 values( 248 )
-master-bin.000001 14197 Query 1 14288 use `test`; insert into t1 values( 247 )
-master-bin.000001 14288 Query 1 14379 use `test`; insert into t1 values( 246 )
-master-bin.000001 14379 Query 1 14470 use `test`; insert into t1 values( 245 )
-master-bin.000001 14470 Query 1 14561 use `test`; insert into t1 values( 244 )
-master-bin.000001 14561 Query 1 14652 use `test`; insert into t1 values( 243 )
-master-bin.000001 14652 Query 1 14743 use `test`; insert into t1 values( 242 )
-master-bin.000001 14743 Query 1 14834 use `test`; insert into t1 values( 241 )
-master-bin.000001 14834 Query 1 14925 use `test`; insert into t1 values( 240 )
-master-bin.000001 14925 Query 1 15016 use `test`; insert into t1 values( 239 )
-master-bin.000001 15016 Query 1 15107 use `test`; insert into t1 values( 238 )
-master-bin.000001 15107 Query 1 15198 use `test`; insert into t1 values( 237 )
-master-bin.000001 15198 Query 1 15289 use `test`; insert into t1 values( 236 )
-master-bin.000001 15289 Query 1 15380 use `test`; insert into t1 values( 235 )
-master-bin.000001 15380 Query 1 15471 use `test`; insert into t1 values( 234 )
-master-bin.000001 15471 Query 1 15562 use `test`; insert into t1 values( 233 )
-master-bin.000001 15562 Query 1 15653 use `test`; insert into t1 values( 232 )
-master-bin.000001 15653 Query 1 15744 use `test`; insert into t1 values( 231 )
-master-bin.000001 15744 Query 1 15835 use `test`; insert into t1 values( 230 )
-master-bin.000001 15835 Query 1 15926 use `test`; insert into t1 values( 229 )
-master-bin.000001 15926 Query 1 16017 use `test`; insert into t1 values( 228 )
-master-bin.000001 16017 Query 1 16108 use `test`; insert into t1 values( 227 )
-master-bin.000001 16108 Query 1 16199 use `test`; insert into t1 values( 226 )
-master-bin.000001 16199 Query 1 16290 use `test`; insert into t1 values( 225 )
-master-bin.000001 16290 Query 1 16381 use `test`; insert into t1 values( 224 )
-master-bin.000001 16381 Query 1 16472 use `test`; insert into t1 values( 223 )
-master-bin.000001 16472 Query 1 16563 use `test`; insert into t1 values( 222 )
-master-bin.000001 16563 Query 1 16654 use `test`; insert into t1 values( 221 )
-master-bin.000001 16654 Query 1 16745 use `test`; insert into t1 values( 220 )
-master-bin.000001 16745 Query 1 16836 use `test`; insert into t1 values( 219 )
-master-bin.000001 16836 Query 1 16927 use `test`; insert into t1 values( 218 )
-master-bin.000001 16927 Query 1 17018 use `test`; insert into t1 values( 217 )
-master-bin.000001 17018 Query 1 17109 use `test`; insert into t1 values( 216 )
-master-bin.000001 17109 Query 1 17200 use `test`; insert into t1 values( 215 )
-master-bin.000001 17200 Query 1 17291 use `test`; insert into t1 values( 214 )
-master-bin.000001 17291 Query 1 17382 use `test`; insert into t1 values( 213 )
-master-bin.000001 17382 Query 1 17473 use `test`; insert into t1 values( 212 )
-master-bin.000001 17473 Query 1 17564 use `test`; insert into t1 values( 211 )
-master-bin.000001 17564 Query 1 17655 use `test`; insert into t1 values( 210 )
-master-bin.000001 17655 Query 1 17746 use `test`; insert into t1 values( 209 )
-master-bin.000001 17746 Query 1 17837 use `test`; insert into t1 values( 208 )
-master-bin.000001 17837 Query 1 17928 use `test`; insert into t1 values( 207 )
-master-bin.000001 17928 Query 1 18019 use `test`; insert into t1 values( 206 )
-master-bin.000001 18019 Query 1 18110 use `test`; insert into t1 values( 205 )
-master-bin.000001 18110 Query 1 18201 use `test`; insert into t1 values( 204 )
-master-bin.000001 18201 Query 1 18292 use `test`; insert into t1 values( 203 )
-master-bin.000001 18292 Query 1 18383 use `test`; insert into t1 values( 202 )
-master-bin.000001 18383 Query 1 18474 use `test`; insert into t1 values( 201 )
-master-bin.000001 18474 Query 1 18565 use `test`; insert into t1 values( 200 )
-master-bin.000001 18565 Query 1 18656 use `test`; insert into t1 values( 199 )
-master-bin.000001 18656 Query 1 18747 use `test`; insert into t1 values( 198 )
-master-bin.000001 18747 Query 1 18838 use `test`; insert into t1 values( 197 )
-master-bin.000001 18838 Query 1 18929 use `test`; insert into t1 values( 196 )
-master-bin.000001 18929 Query 1 19020 use `test`; insert into t1 values( 195 )
-master-bin.000001 19020 Query 1 19111 use `test`; insert into t1 values( 194 )
-master-bin.000001 19111 Query 1 19202 use `test`; insert into t1 values( 193 )
-master-bin.000001 19202 Query 1 19293 use `test`; insert into t1 values( 192 )
-master-bin.000001 19293 Query 1 19384 use `test`; insert into t1 values( 191 )
-master-bin.000001 19384 Query 1 19475 use `test`; insert into t1 values( 190 )
-master-bin.000001 19475 Query 1 19566 use `test`; insert into t1 values( 189 )
-master-bin.000001 19566 Query 1 19657 use `test`; insert into t1 values( 188 )
-master-bin.000001 19657 Query 1 19748 use `test`; insert into t1 values( 187 )
-master-bin.000001 19748 Query 1 19839 use `test`; insert into t1 values( 186 )
-master-bin.000001 19839 Query 1 19930 use `test`; insert into t1 values( 185 )
-master-bin.000001 19930 Query 1 20021 use `test`; insert into t1 values( 184 )
-master-bin.000001 20021 Query 1 20112 use `test`; insert into t1 values( 183 )
-master-bin.000001 20112 Query 1 20203 use `test`; insert into t1 values( 182 )
-master-bin.000001 20203 Query 1 20294 use `test`; insert into t1 values( 181 )
-master-bin.000001 20294 Query 1 20385 use `test`; insert into t1 values( 180 )
-master-bin.000001 20385 Query 1 20476 use `test`; insert into t1 values( 179 )
-master-bin.000001 20476 Query 1 20567 use `test`; insert into t1 values( 178 )
-master-bin.000001 20567 Query 1 20658 use `test`; insert into t1 values( 177 )
-master-bin.000001 20658 Query 1 20749 use `test`; insert into t1 values( 176 )
-master-bin.000001 20749 Query 1 20840 use `test`; insert into t1 values( 175 )
-master-bin.000001 20840 Query 1 20931 use `test`; insert into t1 values( 174 )
-master-bin.000001 20931 Query 1 21022 use `test`; insert into t1 values( 173 )
-master-bin.000001 21022 Query 1 21113 use `test`; insert into t1 values( 172 )
-master-bin.000001 21113 Query 1 21204 use `test`; insert into t1 values( 171 )
-master-bin.000001 21204 Query 1 21295 use `test`; insert into t1 values( 170 )
-master-bin.000001 21295 Query 1 21386 use `test`; insert into t1 values( 169 )
-master-bin.000001 21386 Query 1 21477 use `test`; insert into t1 values( 168 )
-master-bin.000001 21477 Query 1 21568 use `test`; insert into t1 values( 167 )
-master-bin.000001 21568 Query 1 21659 use `test`; insert into t1 values( 166 )
-master-bin.000001 21659 Query 1 21750 use `test`; insert into t1 values( 165 )
-master-bin.000001 21750 Query 1 21841 use `test`; insert into t1 values( 164 )
-master-bin.000001 21841 Query 1 21932 use `test`; insert into t1 values( 163 )
-master-bin.000001 21932 Query 1 22023 use `test`; insert into t1 values( 162 )
-master-bin.000001 22023 Query 1 22114 use `test`; insert into t1 values( 161 )
-master-bin.000001 22114 Query 1 22205 use `test`; insert into t1 values( 160 )
-master-bin.000001 22205 Query 1 22296 use `test`; insert into t1 values( 159 )
-master-bin.000001 22296 Query 1 22387 use `test`; insert into t1 values( 158 )
-master-bin.000001 22387 Query 1 22478 use `test`; insert into t1 values( 157 )
-master-bin.000001 22478 Query 1 22569 use `test`; insert into t1 values( 156 )
-master-bin.000001 22569 Query 1 22660 use `test`; insert into t1 values( 155 )
-master-bin.000001 22660 Query 1 22751 use `test`; insert into t1 values( 154 )
-master-bin.000001 22751 Query 1 22842 use `test`; insert into t1 values( 153 )
-master-bin.000001 22842 Query 1 22933 use `test`; insert into t1 values( 152 )
-master-bin.000001 22933 Query 1 23024 use `test`; insert into t1 values( 151 )
-master-bin.000001 23024 Query 1 23115 use `test`; insert into t1 values( 150 )
-master-bin.000001 23115 Query 1 23206 use `test`; insert into t1 values( 149 )
-master-bin.000001 23206 Query 1 23297 use `test`; insert into t1 values( 148 )
-master-bin.000001 23297 Query 1 23388 use `test`; insert into t1 values( 147 )
-master-bin.000001 23388 Query 1 23479 use `test`; insert into t1 values( 146 )
-master-bin.000001 23479 Query 1 23570 use `test`; insert into t1 values( 145 )
-master-bin.000001 23570 Query 1 23661 use `test`; insert into t1 values( 144 )
-master-bin.000001 23661 Query 1 23752 use `test`; insert into t1 values( 143 )
-master-bin.000001 23752 Query 1 23843 use `test`; insert into t1 values( 142 )
-master-bin.000001 23843 Query 1 23934 use `test`; insert into t1 values( 141 )
-master-bin.000001 23934 Query 1 24025 use `test`; insert into t1 values( 140 )
-master-bin.000001 24025 Query 1 24116 use `test`; insert into t1 values( 139 )
-master-bin.000001 24116 Query 1 24207 use `test`; insert into t1 values( 138 )
-master-bin.000001 24207 Query 1 24298 use `test`; insert into t1 values( 137 )
-master-bin.000001 24298 Query 1 24389 use `test`; insert into t1 values( 136 )
-master-bin.000001 24389 Query 1 24480 use `test`; insert into t1 values( 135 )
-master-bin.000001 24480 Query 1 24571 use `test`; insert into t1 values( 134 )
-master-bin.000001 24571 Query 1 24662 use `test`; insert into t1 values( 133 )
-master-bin.000001 24662 Query 1 24753 use `test`; insert into t1 values( 132 )
-master-bin.000001 24753 Query 1 24844 use `test`; insert into t1 values( 131 )
-master-bin.000001 24844 Query 1 24935 use `test`; insert into t1 values( 130 )
-master-bin.000001 24935 Query 1 25026 use `test`; insert into t1 values( 129 )
-master-bin.000001 25026 Query 1 25117 use `test`; insert into t1 values( 128 )
-master-bin.000001 25117 Query 1 25208 use `test`; insert into t1 values( 127 )
-master-bin.000001 25208 Query 1 25299 use `test`; insert into t1 values( 126 )
-master-bin.000001 25299 Query 1 25390 use `test`; insert into t1 values( 125 )
-master-bin.000001 25390 Query 1 25481 use `test`; insert into t1 values( 124 )
-master-bin.000001 25481 Query 1 25572 use `test`; insert into t1 values( 123 )
-master-bin.000001 25572 Query 1 25663 use `test`; insert into t1 values( 122 )
-master-bin.000001 25663 Query 1 25754 use `test`; insert into t1 values( 121 )
-master-bin.000001 25754 Query 1 25845 use `test`; insert into t1 values( 120 )
-master-bin.000001 25845 Query 1 25936 use `test`; insert into t1 values( 119 )
-master-bin.000001 25936 Query 1 26027 use `test`; insert into t1 values( 118 )
-master-bin.000001 26027 Query 1 26118 use `test`; insert into t1 values( 117 )
-master-bin.000001 26118 Query 1 26209 use `test`; insert into t1 values( 116 )
-master-bin.000001 26209 Query 1 26300 use `test`; insert into t1 values( 115 )
-master-bin.000001 26300 Query 1 26391 use `test`; insert into t1 values( 114 )
-master-bin.000001 26391 Query 1 26482 use `test`; insert into t1 values( 113 )
-master-bin.000001 26482 Query 1 26573 use `test`; insert into t1 values( 112 )
-master-bin.000001 26573 Query 1 26664 use `test`; insert into t1 values( 111 )
-master-bin.000001 26664 Query 1 26755 use `test`; insert into t1 values( 110 )
-master-bin.000001 26755 Query 1 26846 use `test`; insert into t1 values( 109 )
-master-bin.000001 26846 Query 1 26937 use `test`; insert into t1 values( 108 )
-master-bin.000001 26937 Query 1 27028 use `test`; insert into t1 values( 107 )
-master-bin.000001 27028 Query 1 27119 use `test`; insert into t1 values( 106 )
-master-bin.000001 27119 Query 1 27210 use `test`; insert into t1 values( 105 )
-master-bin.000001 27210 Query 1 27301 use `test`; insert into t1 values( 104 )
-master-bin.000001 27301 Query 1 27392 use `test`; insert into t1 values( 103 )
-master-bin.000001 27392 Query 1 27483 use `test`; insert into t1 values( 102 )
-master-bin.000001 27483 Query 1 27574 use `test`; insert into t1 values( 101 )
-master-bin.000001 27574 Query 1 27665 use `test`; insert into t1 values( 100 )
-master-bin.000001 27665 Query 1 27755 use `test`; insert into t1 values( 99 )
-master-bin.000001 27755 Query 1 27845 use `test`; insert into t1 values( 98 )
-master-bin.000001 27845 Query 1 27935 use `test`; insert into t1 values( 97 )
-master-bin.000001 27935 Query 1 28025 use `test`; insert into t1 values( 96 )
-master-bin.000001 28025 Query 1 28115 use `test`; insert into t1 values( 95 )
-master-bin.000001 28115 Query 1 28205 use `test`; insert into t1 values( 94 )
-master-bin.000001 28205 Query 1 28295 use `test`; insert into t1 values( 93 )
-master-bin.000001 28295 Query 1 28385 use `test`; insert into t1 values( 92 )
-master-bin.000001 28385 Query 1 28475 use `test`; insert into t1 values( 91 )
-master-bin.000001 28475 Query 1 28565 use `test`; insert into t1 values( 90 )
-master-bin.000001 28565 Query 1 28655 use `test`; insert into t1 values( 89 )
-master-bin.000001 28655 Query 1 28745 use `test`; insert into t1 values( 88 )
-master-bin.000001 28745 Query 1 28835 use `test`; insert into t1 values( 87 )
-master-bin.000001 28835 Query 1 28925 use `test`; insert into t1 values( 86 )
-master-bin.000001 28925 Query 1 29015 use `test`; insert into t1 values( 85 )
-master-bin.000001 29015 Query 1 29105 use `test`; insert into t1 values( 84 )
-master-bin.000001 29105 Query 1 29195 use `test`; insert into t1 values( 83 )
-master-bin.000001 29195 Query 1 29285 use `test`; insert into t1 values( 82 )
-master-bin.000001 29285 Query 1 29375 use `test`; insert into t1 values( 81 )
-master-bin.000001 29375 Query 1 29465 use `test`; insert into t1 values( 80 )
-master-bin.000001 29465 Query 1 29555 use `test`; insert into t1 values( 79 )
-master-bin.000001 29555 Query 1 29645 use `test`; insert into t1 values( 78 )
-master-bin.000001 29645 Query 1 29735 use `test`; insert into t1 values( 77 )
-master-bin.000001 29735 Query 1 29825 use `test`; insert into t1 values( 76 )
-master-bin.000001 29825 Query 1 29915 use `test`; insert into t1 values( 75 )
-master-bin.000001 29915 Query 1 30005 use `test`; insert into t1 values( 74 )
-master-bin.000001 30005 Query 1 30095 use `test`; insert into t1 values( 73 )
-master-bin.000001 30095 Query 1 30185 use `test`; insert into t1 values( 72 )
-master-bin.000001 30185 Query 1 30275 use `test`; insert into t1 values( 71 )
-master-bin.000001 30275 Query 1 30365 use `test`; insert into t1 values( 70 )
-master-bin.000001 30365 Query 1 30455 use `test`; insert into t1 values( 69 )
-master-bin.000001 30455 Query 1 30545 use `test`; insert into t1 values( 68 )
-master-bin.000001 30545 Query 1 30635 use `test`; insert into t1 values( 67 )
-master-bin.000001 30635 Query 1 30725 use `test`; insert into t1 values( 66 )
-master-bin.000001 30725 Query 1 30815 use `test`; insert into t1 values( 65 )
-master-bin.000001 30815 Query 1 30905 use `test`; insert into t1 values( 64 )
-master-bin.000001 30905 Query 1 30995 use `test`; insert into t1 values( 63 )
-master-bin.000001 30995 Query 1 31085 use `test`; insert into t1 values( 62 )
-master-bin.000001 31085 Query 1 31175 use `test`; insert into t1 values( 61 )
-master-bin.000001 31175 Query 1 31265 use `test`; insert into t1 values( 60 )
-master-bin.000001 31265 Query 1 31355 use `test`; insert into t1 values( 59 )
-master-bin.000001 31355 Query 1 31445 use `test`; insert into t1 values( 58 )
-master-bin.000001 31445 Query 1 31535 use `test`; insert into t1 values( 57 )
-master-bin.000001 31535 Query 1 31625 use `test`; insert into t1 values( 56 )
-master-bin.000001 31625 Query 1 31715 use `test`; insert into t1 values( 55 )
-master-bin.000001 31715 Query 1 31805 use `test`; insert into t1 values( 54 )
-master-bin.000001 31805 Query 1 31895 use `test`; insert into t1 values( 53 )
-master-bin.000001 31895 Query 1 31985 use `test`; insert into t1 values( 52 )
-master-bin.000001 31985 Query 1 32075 use `test`; insert into t1 values( 51 )
-master-bin.000001 32075 Query 1 32165 use `test`; insert into t1 values( 50 )
-master-bin.000001 32165 Query 1 32255 use `test`; insert into t1 values( 49 )
-master-bin.000001 32255 Query 1 32345 use `test`; insert into t1 values( 48 )
-master-bin.000001 32345 Query 1 32435 use `test`; insert into t1 values( 47 )
-master-bin.000001 32435 Query 1 32525 use `test`; insert into t1 values( 46 )
-master-bin.000001 32525 Query 1 32615 use `test`; insert into t1 values( 45 )
-master-bin.000001 32615 Query 1 32705 use `test`; insert into t1 values( 44 )
-master-bin.000001 32705 Query 1 32795 use `test`; insert into t1 values( 43 )
-master-bin.000001 32795 Query 1 32885 use `test`; insert into t1 values( 42 )
-master-bin.000001 32885 Query 1 32975 use `test`; insert into t1 values( 41 )
-master-bin.000001 32975 Query 1 33065 use `test`; insert into t1 values( 40 )
-master-bin.000001 33065 Query 1 33155 use `test`; insert into t1 values( 39 )
-master-bin.000001 33155 Query 1 33245 use `test`; insert into t1 values( 38 )
-master-bin.000001 33245 Query 1 33335 use `test`; insert into t1 values( 37 )
-master-bin.000001 33335 Query 1 33425 use `test`; insert into t1 values( 36 )
-master-bin.000001 33425 Query 1 33515 use `test`; insert into t1 values( 35 )
-master-bin.000001 33515 Query 1 33605 use `test`; insert into t1 values( 34 )
-master-bin.000001 33605 Query 1 33695 use `test`; insert into t1 values( 33 )
-master-bin.000001 33695 Query 1 33785 use `test`; insert into t1 values( 32 )
-master-bin.000001 33785 Query 1 33875 use `test`; insert into t1 values( 31 )
-master-bin.000001 33875 Query 1 33965 use `test`; insert into t1 values( 30 )
-master-bin.000001 33965 Query 1 34055 use `test`; insert into t1 values( 29 )
-master-bin.000001 34055 Query 1 34145 use `test`; insert into t1 values( 28 )
-master-bin.000001 34145 Query 1 34235 use `test`; insert into t1 values( 27 )
-master-bin.000001 34235 Query 1 34325 use `test`; insert into t1 values( 26 )
-master-bin.000001 34325 Query 1 34415 use `test`; insert into t1 values( 25 )
-master-bin.000001 34415 Query 1 34505 use `test`; insert into t1 values( 24 )
-master-bin.000001 34505 Query 1 34595 use `test`; insert into t1 values( 23 )
-master-bin.000001 34595 Query 1 34685 use `test`; insert into t1 values( 22 )
-master-bin.000001 34685 Query 1 34775 use `test`; insert into t1 values( 21 )
-master-bin.000001 34775 Query 1 34865 use `test`; insert into t1 values( 20 )
-master-bin.000001 34865 Query 1 34955 use `test`; insert into t1 values( 19 )
-master-bin.000001 34955 Query 1 35045 use `test`; insert into t1 values( 18 )
-master-bin.000001 35045 Query 1 35135 use `test`; insert into t1 values( 17 )
-master-bin.000001 35135 Query 1 35225 use `test`; insert into t1 values( 16 )
-master-bin.000001 35225 Query 1 35315 use `test`; insert into t1 values( 15 )
-master-bin.000001 35315 Query 1 35405 use `test`; insert into t1 values( 14 )
-master-bin.000001 35405 Query 1 35495 use `test`; insert into t1 values( 13 )
-master-bin.000001 35495 Query 1 35585 use `test`; insert into t1 values( 12 )
-master-bin.000001 35585 Query 1 35675 use `test`; insert into t1 values( 11 )
-master-bin.000001 35675 Query 1 35765 use `test`; insert into t1 values( 10 )
-master-bin.000001 35765 Query 1 35854 use `test`; insert into t1 values( 9 )
-master-bin.000001 35854 Query 1 35943 use `test`; insert into t1 values( 8 )
-master-bin.000001 35943 Query 1 36032 use `test`; insert into t1 values( 7 )
-master-bin.000001 36032 Query 1 36121 use `test`; insert into t1 values( 6 )
-master-bin.000001 36121 Query 1 36210 use `test`; insert into t1 values( 5 )
-master-bin.000001 36210 Query 1 36299 use `test`; insert into t1 values( 4 )
-master-bin.000001 36299 Query 1 36388 use `test`; insert into t1 values( 3 )
-master-bin.000001 36388 Query 1 36477 use `test`; insert into t1 values( 2 )
-master-bin.000001 36477 Query 1 36566 use `test`; insert into t1 values( 1 )
-master-bin.000001 36566 Xid 1 36593 COMMIT /* XID */
-master-bin.000001 36593 Rotate 1 36637 master-bin.000002;pos=4
+master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; insert into t1 values( 400 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 399 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 398 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 397 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 396 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 395 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 394 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 393 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 392 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 391 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 390 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 389 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 388 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 387 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 386 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 385 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 384 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 383 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 382 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 381 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 380 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 379 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 378 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 377 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 376 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 375 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 374 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 373 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 372 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 371 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 370 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 369 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 368 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 367 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 366 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 365 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 364 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 363 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 362 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 361 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 360 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 359 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 358 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 357 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 356 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 355 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 354 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 353 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 352 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 351 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 350 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 349 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 348 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 347 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 346 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 345 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 344 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 343 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 342 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 341 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 340 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 339 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 338 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 337 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 336 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 335 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 334 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 333 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 332 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 331 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 330 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 329 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 328 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 327 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 326 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 325 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 324 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 323 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 322 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 321 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 320 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 319 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 318 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 317 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 316 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 315 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 314 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 313 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 312 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 311 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 310 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 309 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 308 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 307 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 306 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 305 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 304 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 303 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 302 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 301 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 300 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 299 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 298 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 297 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 296 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 295 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 294 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 293 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 292 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 291 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 290 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 289 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 288 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 287 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 286 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 285 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 284 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 283 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 282 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 281 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 280 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 279 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 278 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 277 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 276 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 275 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 274 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 273 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 272 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 271 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 270 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 269 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 268 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 267 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 266 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 265 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 264 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 263 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 262 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 261 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 260 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 259 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 258 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 257 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 256 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 255 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 254 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 253 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 252 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 251 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 250 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 249 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 248 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 247 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 246 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 245 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 244 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 243 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 242 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 241 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 240 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 239 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 238 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 237 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 236 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 235 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 234 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 233 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 232 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 231 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 230 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 229 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 228 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 227 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 226 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 225 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 224 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 223 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 222 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 221 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 220 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 219 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 218 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 217 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 216 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 215 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 214 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 213 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 212 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 211 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 210 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 209 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 208 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 207 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 206 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 205 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 204 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 203 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 202 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 201 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 200 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 199 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 198 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 197 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 196 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 195 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 194 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 193 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 192 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 191 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 190 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 189 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 188 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 187 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 186 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 185 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 184 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 183 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 182 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 181 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 180 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 179 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 178 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 177 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 176 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 175 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 174 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 173 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 172 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 171 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 170 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 169 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 168 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 167 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 166 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 165 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 164 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 163 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 162 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 161 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 160 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 159 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 158 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 157 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 156 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 155 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 154 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 153 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 152 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 151 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 150 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 149 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 148 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 147 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 146 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 145 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 144 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 143 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 142 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 141 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 140 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 139 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 138 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 137 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 136 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 135 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 134 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 133 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 132 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 131 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 130 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 129 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 128 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 127 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 126 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 125 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 124 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 123 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 122 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 121 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 120 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 119 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 118 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 117 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 116 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 115 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 114 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 113 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 112 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 111 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 110 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 109 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 108 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 107 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( <binlog_start> )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 105 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 104 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 103 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 102 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 101 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 100 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 99 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 98 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 97 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 96 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 95 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 94 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 93 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 92 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 91 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 90 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 89 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 88 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 87 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 86 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 85 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 84 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 83 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 82 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 81 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 80 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 79 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 78 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 77 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 76 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 75 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 74 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 73 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 72 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 71 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 70 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 69 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 68 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 67 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 66 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 65 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 64 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 63 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 62 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 61 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 60 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 59 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 58 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 57 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 56 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 55 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 54 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 53 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 52 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 51 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 50 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 49 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 48 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 47 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 46 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 45 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 44 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 43 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 42 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 41 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 40 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 39 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 38 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 37 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 36 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 35 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 34 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 33 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 32 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 31 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 30 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 29 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 28 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 27 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 26 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 25 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 24 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 23 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 22 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 21 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 20 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 19 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 18 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 17 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 16 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 15 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 14 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 13 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 12 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 11 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 10 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 9 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 8 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 7 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 6 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 5 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 4 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 3 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 2 )
+master-bin.000001 # Query # # use `test`; insert into t1 values( 1 )
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Rotate # # master-bin.000002;pos=4
drop table t1;
set global binlog_cache_size=@bcs;
set session autocommit = @ac;
@@ -590,12 +587,11 @@ set @b= 14632475938453979136;
execute stmt using @a, @b;
deallocate prepare stmt;
drop table t1;
-show binlog events from 0;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server version, Binlog ver: 4
-master-bin.000001 106 Query 1 227 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
-master-bin.000001 227 Query 1 351 use `test`; insert into t1 values (9999999999999999,14632475938453979136)
-master-bin.000001 351 Query 1 427 use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
+master-bin.000001 # Query # # use `test`; insert into t1 values (9999999999999999,14632475938453979136)
+master-bin.000001 # Query # # use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
@@ -766,14 +762,14 @@ drop table if exists t3;
create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 346
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
-show master status /* must show new binlog index after rotating */;
+show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000002 106
+master-bin.000002 # <Binlog_Do_DB> <Binlog_Ignore_DB>
drop table t3;
#
# Bug #45998: database crashes when running "create as select"
diff --git a/mysql-test/suite/binlog/r/binlog_stm_blackhole.result b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result
index b2e6ac854cf..a47ab2ce932 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_blackhole.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_blackhole.result
@@ -104,9 +104,8 @@ select * from t2;
a
select * from t3;
a
-show binlog events;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc # # Server ver: VERSION, Binlog ver: 4
master-bin.000001 # Query # # use `test`; drop table t1,t2
master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=blackhole
master-bin.000001 # Query # # BEGIN
@@ -126,7 +125,7 @@ master-bin.000001 # Query # # use `test`; replace into t1 values(100)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t2 (a varchar(200)) engine=blackhole
master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=581
+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t2` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`) ;file_id=#
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; alter table t1 add b int
@@ -163,13 +162,6 @@ start transaction;
insert into t1 values(2);
rollback;
set autocommit=1;
-show binlog events;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc # # Server ver: VERSION, Binlog ver: 4
-master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=blackhole
-master-bin.000001 # Query # # BEGIN
-master-bin.000001 # Query # # use `test`; insert into t1 values(1)
-master-bin.000001 # Query # # COMMIT
drop table if exists t1;
reset master;
create table t1 (a int auto_increment, primary key (a)) engine=blackhole;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
index 75094ca3b4c..a26fcc1dc1a 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
@@ -364,6 +364,9 @@ master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (10,10)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 values (100,100)
master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 values (101,101)
+master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # use `test`; DROP TABLE t1,t2
reset master;
create table t1 (a int) engine=innodb;
@@ -802,7 +805,7 @@ delete from t4;
insert into t3 values (1,1),(2,2);
insert into t4 values (1,1),(2,2);
reset master;
-UPDATE t3,t4 SET t3.a=t4.a + bug27417(1);
+UPDATE t3,t4 SET t3.a = t4.a + bug27417(1) where t3.a = 1;
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
select count(*) from t1 /* must be 1 */;
count(*)
diff --git a/mysql-test/suite/binlog/t/binlog_base64_flag.test b/mysql-test/suite/binlog/t/binlog_base64_flag.test
index e6271ec6ccc..2964b493c5d 100644
--- a/mysql-test/suite/binlog/t/binlog_base64_flag.test
+++ b/mysql-test/suite/binlog/t/binlog_base64_flag.test
@@ -7,6 +7,7 @@
# BINLOG statement does not work in embedded mode.
+source include/have_log_bin.inc;
source include/not_embedded.inc;
disable_warnings;
@@ -150,3 +151,16 @@ iONkSBcBAAAAKwAAAMQBAAAQABAAAAAAAAEAA//4AQAAAAMAMTIzAQAAAA==
';
drop table t1, char63_utf8, char128_utf8;
+
+
+--echo #
+--echo # Bug #54393: crash and/or valgrind errors in
+--echo # mysql_client_binlog_statement
+--echo #
+--error ER_SYNTAX_ERROR
+BINLOG '';
+BINLOG '123';
+--error ER_SYNTAX_ERROR
+BINLOG '-2079193929';
+--error ER_SYNTAX_ERROR
+BINLOG 'xç↓%~∙D╒ƒ╡';
diff --git a/mysql-test/suite/binlog/t/binlog_innodb.test b/mysql-test/suite/binlog/t/binlog_innodb.test
index f84fd65226a..2914cd1dcc5 100644
--- a/mysql-test/suite/binlog/t/binlog_innodb.test
+++ b/mysql-test/suite/binlog/t/binlog_innodb.test
@@ -155,7 +155,8 @@ reset master;
UPDATE t2,t1 SET t2.a=t1.a+2;
# check
select * from t2 /* must be (3,1), (4,4) */;
-show master status /* there must no UPDATE in binlog */;
+--echo # There must no UPDATE in binlog;
+source include/show_binlog_events.inc;
# B. testing multi_update::send_error() execution branch
delete from t1;
@@ -165,7 +166,8 @@ insert into t2 values (1,2),(3,4),(4,4);
reset master;
--error ER_DUP_ENTRY
UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
-show master status /* there must be no UPDATE query event */;
+--echo # There must be no UPDATE query event;
+source include/show_binlog_events.inc;
# cleanup bug#27716
drop table t1, t2;
diff --git a/mysql-test/suite/binlog/t/binlog_old_versions.test b/mysql-test/suite/binlog/t/binlog_old_versions.test
index 0ccea406a82..32c27fe8f89 100644
--- a/mysql-test/suite/binlog/t/binlog_old_versions.test
+++ b/mysql-test/suite/binlog/t/binlog_old_versions.test
@@ -22,6 +22,7 @@
# Related bugs: BUG#27779, BUG#31581, BUG#31582, BUG#31583, BUG#32407
+source include/have_log_bin.inc;
source include/not_embedded.inc;
--disable_warnings
diff --git a/mysql-test/suite/binlog/t/binlog_row_binlog.test b/mysql-test/suite/binlog/t/binlog_row_binlog.test
index 8adc8eee5c1..2bf4f93f332 100644
--- a/mysql-test/suite/binlog/t/binlog_row_binlog.test
+++ b/mysql-test/suite/binlog/t/binlog_row_binlog.test
@@ -2,4 +2,6 @@
# For both statement and row based bin logs 9/19/2005 [jbm]
-- source include/have_binlog_format_row.inc
--- source extra/binlog_tests/binlog.test
+let collation=utf8_unicode_ci;
+--source include/have_collation.inc
+--source extra/binlog_tests/binlog.test
diff --git a/mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt b/mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt
+++ b/mysql-test/suite/binlog/t/binlog_row_mix_innodb_myisam-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/binlog/t/binlog_stm_binlog.test b/mysql-test/suite/binlog/t/binlog_stm_binlog.test
index a8afe4d3b8c..682b0a3bfa7 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_binlog.test
+++ b/mysql-test/suite/binlog/t/binlog_stm_binlog.test
@@ -1,5 +1,7 @@
-- source include/not_embedded.inc
-- source include/have_binlog_format_mixed.inc
+let collation=utf8_unicode_ci;
+--source include/have_collation.inc
--disable_warnings
drop table if exists t1;
@@ -12,8 +14,7 @@ create table t1 (a int, b int) engine=innodb;
begin;
insert into t1 values (1,2);
commit;
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/
-show binlog events;
+source include/show_binlog_events.inc;
drop table t1;
# This is a wrapper for binlog.test so that the same test case can be used
diff --git a/mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt b/mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt
+++ b/mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/bugs/r/rpl_bug12691.result b/mysql-test/suite/bugs/r/rpl_bug12691.result
index 69d5e8009b0..8feeb0effc3 100644
--- a/mysql-test/suite/bugs/r/rpl_bug12691.result
+++ b/mysql-test/suite/bugs/r/rpl_bug12691.result
@@ -16,12 +16,11 @@ LOAD DATA INFILE FILENAME
SELECT COUNT(*) FROM t1;
COUNT(*)
3
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: #
-master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (b CHAR(10))
-master-bin.000001 # Begin_load_query 1 # ;file_id=#;block_len=#
-master-bin.000001 # Execute_load_query 1 # use `test`; LOAD DATA INFILE FILENAME ;file_id=#
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (b CHAR(10))
+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/rpl_bug12691.dat' INTO TABLE `t1` FIELDS TERMINATED BY '|' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`b`) ;file_id=#
**** On Slave ****
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
diff --git a/mysql-test/suite/bugs/r/rpl_bug36391.result b/mysql-test/suite/bugs/r/rpl_bug36391.result
index 2d62837a87a..33175d89d30 100644
--- a/mysql-test/suite/bugs/r/rpl_bug36391.result
+++ b/mysql-test/suite/bugs/r/rpl_bug36391.result
@@ -13,5 +13,6 @@ Tables_in_test
t1
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 278
+master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
flush logs;
+drop table t1;
diff --git a/mysql-test/suite/bugs/t/rpl_bug12691.test b/mysql-test/suite/bugs/t/rpl_bug12691.test
index b29c85584a5..28d7f16935e 100644
--- a/mysql-test/suite/bugs/t/rpl_bug12691.test
+++ b/mysql-test/suite/bugs/t/rpl_bug12691.test
@@ -28,9 +28,7 @@ STOP SLAVE;
SELECT COUNT(*) FROM t1;
---replace_column 2 # 5 #
---replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/ /COMMIT.+xid=[0-9]+.+/#/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /'.+'/FILENAME/
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
--save_master_pos
diff --git a/mysql-test/suite/bugs/t/rpl_bug36391.test b/mysql-test/suite/bugs/t/rpl_bug36391.test
index 9f384304837..8bca9a46c5a 100644
--- a/mysql-test/suite/bugs/t/rpl_bug36391.test
+++ b/mysql-test/suite/bugs/t/rpl_bug36391.test
@@ -21,8 +21,10 @@ create table t1(id int);
show tables;
-show master status;
+--source include/show_master_status.inc
flush logs;
--exec $MYSQL_BINLOG $MYSQL_TEST_DIR/var/log/master-bin.000001 | $MYSQL test
+
+drop table t1;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_000015.result b/mysql-test/suite/engines/funcs/r/rpl_000015.result
index eee3b505ad6..8cd48141127 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_000015.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_000015.result
@@ -10,166 +10,25 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 106
stop slave;
reset slave;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry #
Master_Log_File
Read_Master_Log_Pos 4
-Relay_Log_File #
-Relay_Log_Pos #
Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
Exec_Master_Log_Pos 0
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
change master to master_host='127.0.0.1';
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry #
Master_Log_File
Read_Master_Log_Pos 4
-Relay_Log_File #
-Relay_Log_Pos #
Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
Exec_Master_Log_Pos 0
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=MASTER_PORT;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry #
Master_Log_File
Read_Master_Log_Pos 4
-Relay_Log_File #
-Relay_Log_Pos #
Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
Exec_Master_Log_Pos 0
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
start slave;
-show slave status;
-Slave_IO_State Waiting for master to send event
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
Master_Log_File master-bin.000001
-Read_Master_Log_Pos 106
-Relay_Log_File slave-relay-bin.000002
-Relay_Log_Pos 252
Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 106
-Relay_Log_Space 407
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
drop table if exists t1;
create table t1 (n int, PRIMARY KEY(n));
insert into t1 values (10),(45),(90);
diff --git a/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result b/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result
index 7a901b65810..b6cb2c0e7de 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_REDIRECT.result
@@ -4,8 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
+SHOW SLAVE STATUS;;
SHOW SLAVE HOSTS;
Server_id Host Port Rpl_recovery_rank Master_id
2 127.0.0.1 SLAVE_PORT 0 1
diff --git a/mysql-test/suite/engines/funcs/r/rpl_change_master.result b/mysql-test/suite/engines/funcs/r/rpl_change_master.result
index 62c5ffdd4f8..2258a35a869 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_change_master.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_change_master.result
@@ -11,13 +11,7 @@ stop slave sql_thread;
insert into t1 values(1);
insert into t1 values(2);
stop slave;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 # # # master-bin.000001 No No 0 0 191 # None 0 No # No 0 0
change master to master_user='root';
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 # # # master-bin.000001 No No 0 0 191 # None 0 No # No 0 0
start slave;
select * from t1;
n
diff --git a/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result b/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result
index b5e14d3adac..f71411c68dd 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_empty_master_crash.result
@@ -4,8 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
load table t1 from master;
ERROR 08S01: Error connecting to master: Master is not configured
load table t1 from master;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result b/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result
index c894ad0135b..ef4d7797dbf 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result
@@ -17,43 +17,6 @@ let $result_pattern= '%127.0.0.1%root%slave-bin.000001%slave-bin.000001%Yes%Yes%
--source include/wait_slave_status.inc
flush logs;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port SLAVE_PORT
-Connect_Retry 60
-Master_Log_File slave-bin.000001
-Read_Master_Log_Pos 106
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File slave-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 106
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
+Relay_Log_File mysqld-relay-bin.000003
+Checking that both slave threads are running.
STOP SLAVE;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result b/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result
index d858ced1352..779a3af9631 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_loaddata_s.result
@@ -10,6 +10,6 @@ load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
select count(*) from test.t1;
count(*)
2
-show binlog events from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
drop table test.t1;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_log_pos.result b/mysql-test/suite/engines/funcs/r/rpl_log_pos.result
index f26f4350cf1..1b2ded26f66 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_log_pos.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_log_pos.result
@@ -4,39 +4,23 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106 <Binlog_Ignore_DB>
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 106 # # master-bin.000001 Yes Yes 0 0 106 # None 0 No # No 0 0
stop slave;
-change master to master_log_pos=106;
+change master to master_log_pos=MASTER_LOG_POS;
start slave;
stop slave;
-change master to master_log_pos=106;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 106 # # master-bin.000001 No No 0 0 106 # None 0 No # No 0 0
+change master to master_log_pos=MASTER_LOG_POS;
start slave;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 106 # # master-bin.000001 Yes Yes 0 0 106 # None 0 No # No 0 0
stop slave;
-change master to master_log_pos=177;
+# impossible position leads to an error
+change master to master_log_pos=MASTER_LOG_POS;
start slave;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 177 # # master-bin.000001 No Yes 0 0 177 # None 0 No # No 1236 Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position' 0
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 106 <Binlog_Ignore_DB>
+Last_IO_Error = Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position'
create table if not exists t1 (n int);
drop table if exists t1;
create table t1 (n int);
insert into t1 values (1),(2),(3);
stop slave;
-change master to master_log_pos=206;
+change master to master_log_pos=MASTER_LOG_POS;
start slave;
select * from t1 ORDER BY n;
n
diff --git a/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result b/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result
index b4b04d35208..ced1693bdc8 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_rbr_to_sbr.result
@@ -14,47 +14,16 @@ MIXED MIXED
CREATE TABLE t1 (a INT, b LONG);
INSERT INTO t1 VALUES (1,1), (2,2);
INSERT INTO t1 VALUES (3,UUID()), (4,UUID());
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
**** On Slave ****
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query # # COMMIT
+show binlog events from <binlog_start>;
DROP TABLE IF EXISTS t1;
SET GLOBAL BINLOG_FORMAT=@saved_binlog_format;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_drop.result b/mysql-test/suite/engines/funcs/r/rpl_row_drop.result
index 89654ebf165..048e07271b3 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_drop.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_drop.result
@@ -41,12 +41,11 @@ t1
t2
**** On Master ****
DROP TABLE t1,t2;
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 192 use `test`; CREATE TABLE t1 (a int)
-master-bin.000001 192 Query 1 278 use `test`; CREATE TABLE t2 (a int)
-master-bin.000001 278 Query 1 382 use `test`; DROP TABLE `t1` /* generated by server */
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a int)
+master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int)
+master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
SHOW TABLES;
Tables_in_test
t2
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result b/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result
index ad192b530a7..cd7528280d0 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_inexist_tbl.result
@@ -17,43 +17,5 @@ a
0
drop table t1;
insert into t1 values (1);
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table test.t2
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1146
-Last_Error Error 'Table 'test.t1' doesn't exist' on opening tables
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 1146
-Last_SQL_Error Error 'Table 'test.t1' doesn't exist' on opening tables
+Last_SQL_Error = Error 'Table 'test.t1' doesn't exist' on opening tables
drop table t1, t2;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result b/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result
index 6ef88c23726..c0f7ddabec7 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_max_relay_size.result
@@ -24,45 +24,7 @@ select @@global.max_relay_log_size;
@@global.max_relay_log_size
4096
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 2
#
@@ -72,45 +34,7 @@ set global max_relay_log_size=(5*4096);
select @@global.max_relay_log_size;
@@global.max_relay_log_size 20480
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 3: max_relay_log_size = 0
#
@@ -120,90 +44,13 @@ set global max_relay_log_size=0;
select @@global.max_relay_log_size;
@@global.max_relay_log_size 0
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
#
stop slave;
reset slave;
flush logs;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
#
# Test 5
#
@@ -211,89 +58,13 @@ reset slave;
start slave;
flush logs;
create table t1 (a int);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
#
flush logs;
drop table t1;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result b/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result
index fa40d8760a8..7bf09df31ca 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result
@@ -4,196 +4,37 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
-change master to master_user='test';
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/stop_slave.inc
+change master to master_user='test';
Master_User test
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-reset slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+reset slave;
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/start_slave.inc
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
+Master_Host 127.0.0.1
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
create temporary table t1 (a int);
-stop slave;
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
Slave_open_temp_tables 0
-stop slave;
+include/stop_slave.inc
reset slave;
-*** errno must be zero: 0 ***
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
change master to master_user='root';
include/start_slave.inc
-*** last errno must be zero: 0 ***
-*** last error must be blank: ***
include/stop_slave.inc
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
reset slave;
-*** io last errno must be zero: 0 ***
-*** io last error must be blank: ***
-*** sql last errno must be zero: 0 ***
-*** sql last error must be blank: ***
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_until.result b/mysql-test/suite/engines/funcs/r/rpl_row_until.result
index 5091a9f6468..72dd1a6a7c3 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_until.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_until.result
@@ -12,193 +12,39 @@ create table t2(n int not null auto_increment primary key);
insert into t2 values (1),(2);
insert into t2 values (3),(4);
drop table t2;
-start slave until master_log_file='master-bin.000001', master_log_pos=311;
+start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS;
select * from t1;
n
1
2
3
4
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File slave-relay-bin.000004
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running #
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos 311
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
+start slave until master_log_file='master-no-such-bin.000001', master_log_pos=MASTER_LOG_POS;
select * from t1;
-n 1
-n 2
-n 3
-n 4
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File slave-relay-bin.000004
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running #
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-no-such-bin.000001
-Until_Log_Pos 291
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=728;
+n
+1
+2
+3
+4
+start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=RELAY_LOG_POS;
select * from t2;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File slave-relay-bin.000004
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running #
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Relay
-Until_Log_File slave-relay-bin.000004
-Until_Log_Pos 728
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
+n
+1
+2
start slave;
stop slave;
-start slave until master_log_file='master-bin.000001', master_log_pos=740;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File slave-relay-bin.000004
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos 740
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave until master_log_file='master-bin', master_log_pos=561;
+start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS;
+start slave until master_log_file='master-bin', master_log_pos=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
-start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
+start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS, relay_log_pos=RELAY_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until master_log_file='master-bin.000001';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until relay_log_file='slave-relay-bin.000002';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
-start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
+start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave sql_thread;
-start slave until master_log_file='master-bin.000001', master_log_pos=740;
+start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS;
Warnings:
-Level Note
-Code 1254
-Message Slave is already running
+Note 1254 Slave is already running
diff --git a/mysql-test/suite/engines/funcs/r/rpl_server_id1.result b/mysql-test/suite/engines/funcs/r/rpl_server_id1.result
index 47c2a522094..1e7108d7961 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_server_id1.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_server_id1.result
@@ -8,10 +8,8 @@ create table t1 (n int);
reset master;
stop slave;
change master to master_port=SLAVE_PORT;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
- 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # # 0 0 0 106 None 0 No NULL No 0 0
start slave;
+Last_IO_Error = Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
insert into t1 values (1);
show status like "slave_running";
Variable_name Value
diff --git a/mysql-test/suite/engines/funcs/r/rpl_server_id2.result b/mysql-test/suite/engines/funcs/r/rpl_server_id2.result
index d50814022d8..066b563c4e8 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_server_id2.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_server_id2.result
@@ -8,9 +8,6 @@ create table t1 (n int);
reset master;
stop slave;
change master to master_port=SLAVE_PORT;
-show slave status;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
- 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # 0 0 0 106 None 0 No NULL No 0 0
start slave;
insert into t1 values (1);
select * from t1;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_slave_status.result b/mysql-test/suite/engines/funcs/r/rpl_slave_status.result
index dfc82f61e68..c4dc7686045 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_slave_status.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_slave_status.result
@@ -18,44 +18,5 @@ drop user rpl@127.0.0.1;
flush privileges;
stop slave;
start slave;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User rpl
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master NULL
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
drop table t1;
drop table t1;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result b/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result
index 2215b34814e..db06cb6d3de 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_stm_max_relay_size.result
@@ -21,45 +21,7 @@ select @@global.max_relay_log_size;
@@global.max_relay_log_size
4096
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 2
#
@@ -69,45 +31,7 @@ set global max_relay_log_size=(5*4096);
select @@global.max_relay_log_size;
@@global.max_relay_log_size 20480
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 3: max_relay_log_size = 0
#
@@ -117,90 +41,13 @@ set global max_relay_log_size=0;
select @@global.max_relay_log_size;
@@global.max_relay_log_size 0
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
#
stop slave;
reset slave;
flush logs;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
#
# Test 5
#
@@ -208,89 +55,13 @@ reset slave;
start slave;
flush logs;
create table t1 (a int);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
#
flush logs;
drop table t1;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
diff --git a/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result b/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result
index 78d9d7c41eb..1fc189975ef 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result
@@ -4,196 +4,37 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
-change master to master_user='test';
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/stop_slave.inc
+change master to master_user='test';
Master_User test
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-reset slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+reset slave;
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/start_slave.inc
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
+Master_Host 127.0.0.1
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
create temporary table t1 (a int);
-stop slave;
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
Slave_open_temp_tables 1
-stop slave;
+include/stop_slave.inc
reset slave;
-*** errno must be zero: 0 ***
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
change master to master_user='root';
include/start_slave.inc
-*** last errno must be zero: 0 ***
-*** last error must be blank: ***
include/stop_slave.inc
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
reset slave;
-*** io last errno must be zero: 0 ***
-*** io last error must be blank: ***
-*** sql last errno must be zero: 0 ***
-*** sql last error must be blank: ***
diff --git a/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result b/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result
index 466302000af..61d77c0dc2a 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_switch_stm_row_mixed.result
@@ -376,7 +376,7 @@ CREATE TABLE t12 (data LONG);
LOCK TABLES t12 WRITE;
INSERT INTO t12 VALUES(UUID());
UNLOCK TABLES;
-show binlog events;
-show binlog events;
+show binlog events from <binlog_start>;
+show binlog events from <binlog_start>;
drop database mysqltest1;
set global binlog_format= @saved_binlog_format;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_000015.test b/mysql-test/suite/engines/funcs/t/rpl_000015.test
index 817ed6f407c..6c18e66a3a6 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_000015.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_000015.test
@@ -11,31 +11,25 @@ save_master_pos;
connection slave;
stop slave;
reset slave;
---vertical_results
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 5 # 8 # 9 # 23 # 33 #
-show slave status;
+let $status_items= Master_Log_File, Read_Master_Log_Pos, Relay_Master_Log_File, Exec_Master_Log_Pos;
+source include/show_slave_status.inc;
change master to master_host='127.0.0.1';
# The following needs to be cleaned up when change master is fixed
---vertical_results
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 5 # 8 # 9 # 23 # 33 #
-show slave status;
+source include/show_slave_status.inc;
+
--replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=$MASTER_MYPORT;
---vertical_results
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 5 # 8 # 9 # 23 # 33 #
-show slave status;
+source include/show_slave_status.inc;
+
start slave;
sync_with_master;
+let $status_items= Master_Log_File, Relay_Master_Log_File;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
+
--vertical_results
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 5 # 8 # 9 # 23 # 33 #
---replace_column 33 #
-show slave status;
connection master;
--disable_warnings
drop table if exists t1;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test b/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test
index 078d1048794..7644b18ee7e 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_REDIRECT.test
@@ -7,15 +7,11 @@ source include/master-slave.inc;
--disable_ps_protocol
#first, make sure the slave has had enough time to register
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
#discover slaves
connection master;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 16 # 23 # 33 #
-SHOW SLAVE STATUS;
+--query_vertical SHOW SLAVE STATUS;
--replace_result $SLAVE_MYPORT SLAVE_PORT
SHOW SLAVE HOSTS;
rpl_probe;
@@ -25,9 +21,7 @@ enable_rpl_parse;
create table t1 ( n int);
insert into t1 values (1),(2),(3),(4);
disable_rpl_parse;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
insert into t1 values(5);
connection master;
enable_rpl_parse;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_change_master.test b/mysql-test/suite/engines/funcs/t/rpl_change_master.test
index c031464c95e..ce8c921c2ad 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_change_master.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_change_master.test
@@ -18,13 +18,26 @@ save_master_pos;
connection slave;
--real_sleep 3 # wait for I/O thread to have read updates
stop slave;
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 23 # 33 #
-show slave status;
+source include/wait_for_slave_to_stop.inc;
+
+let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1);
+if (`SELECT $read_pos = $exec_pos`)
+{
+ source include/show_rpl_debug_info.inc;
+ echo 'Read_Master_Log_Pos: $read_pos' == 'Exec_Master_Log_Pos: $exec_pos';
+ die Failed because Read_Master_Log_Pos is equal to Exec_Master_Log_Pos;
+}
change master to master_user='root';
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 23 # 33 #
-show slave status;
+let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1);
+if (`SELECT $read_pos <> $exec_pos`)
+{
+ source include/show_rpl_debug_info.inc;
+ echo 'Read_Master_Log_Pos: $read_pos' <> 'Exec_Master_Log_Pos: $exec_pos';
+ die Failed because Read_Master_Log_Pos is not equal to Exec_Master_Log_Pos;
+}
+
start slave;
sync_with_master;
select * from t1;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test b/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test
index 707d1eca8c2..863b450a6d9 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_empty_master_crash.test
@@ -1,8 +1,5 @@
source include/master-slave.inc;
---replace_column 1 # 8 # 9 # 16 # 23 # 33 #
-show slave status;
-
#
# Load table should not succeed on the master as this is not a slave
#
diff --git a/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test b/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test
index 2e481f5e5e7..0b71817226a 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test
@@ -41,8 +41,7 @@ sleep 5;
#
# Show status of slave
#
---replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 1 # 8 # 9 # 16 # 23 # 33 #
---vertical_results
-SHOW SLAVE STATUS;
+--let status_items= Relay_Log_File
+--source include/show_slave_status.inc
+--source include/check_slave_is_running.inc
STOP SLAVE;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test b/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test
index 791fe84420f..2dd2218eb5c 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_loaddata_s.test
@@ -20,9 +20,7 @@ save_master_pos;
connection slave;
sync_with_master;
select count(*) from test.t1; # check that LOAD was replicated
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-show binlog events from 106; # should be nothing
+source include/show_binlog_events.inc;
# Cleanup
connection master;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_log_pos.test b/mysql-test/suite/engines/funcs/t/rpl_log_pos.test
index 13083e47bcf..e07f0d5f2a7 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_log_pos.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_log_pos.test
@@ -11,36 +11,41 @@
# Passes with rbr no problem, removed statement include [jbm]
source include/master-slave.inc;
---replace_column 3 <Binlog_Ignore_DB>
-show master status;
+let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
sync_slave_with_master;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 #
-show slave status;
stop slave;
-change master to master_log_pos=106;
+
+--replace_result $master_log_pos MASTER_LOG_POS
+eval change master to master_log_pos=$master_log_pos;
start slave;
sleep 5;
stop slave;
-change master to master_log_pos=106;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 #
-show slave status;
+
+--replace_result $master_log_pos MASTER_LOG_POS
+eval change master to master_log_pos=$master_log_pos;
+--let $slave_param= Read_Master_Log_Pos
+--let $slave_param_value= $master_log_pos
+--source include/wait_for_slave_param.inc
+
start slave;
sleep 5;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 #
-show slave status;
+--let $slave_param= Read_Master_Log_Pos
+--let $slave_param_value= $master_log_pos
+--source include/wait_for_slave_param.inc
+--source include/check_slave_no_error.inc
+
stop slave;
+--echo # impossible position leads to an error
+--replace_result 177 MASTER_LOG_POS
change master to master_log_pos=177;
start slave;
sleep 2;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 #
-show slave status;
+let $slave_io_errno= 1236;
+let $show_slave_io_error= 1;
+source include/wait_for_slave_io_error.inc;
connection master;
---replace_column 3 <Binlog_Ignore_DB>
-show master status;
+
+let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
create table if not exists t1 (n int);
drop table if exists t1;
create table t1 (n int);
@@ -48,7 +53,9 @@ insert into t1 values (1),(2),(3);
save_master_pos;
connection slave;
stop slave;
-change master to master_log_pos=206;
+
+--replace_result $master_log_pos MASTER_LOG_POS
+eval change master to master_log_pos=$master_log_pos;
start slave;
sync_with_master;
select * from t1 ORDER BY n;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test b/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test
index d466382dc92..c9d27d1ea6a 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_rbr_to_sbr.test
@@ -15,25 +15,17 @@ SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT;
CREATE TABLE t1 (a INT, b LONG);
INSERT INTO t1 VALUES (1,1), (2,2);
INSERT INTO t1 VALUES (3,UUID()), (4,UUID());
-let $VERSION=`select version()`;
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
# Different number of binlog events are generated by different engines
--disable_result_log
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
--enable_result_log
sync_slave_with_master;
--echo **** On Slave ****
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 #
---query_vertical SHOW SLAVE STATUS
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
+source include/show_binlog_events.inc;
+
# Different number of binlog events are generated by different engines
--disable_result_log
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
--enable_result_log
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql
diff --git a/mysql-test/suite/engines/funcs/t/rpl_row_drop.test b/mysql-test/suite/engines/funcs/t/rpl_row_drop.test
index 20c217a7c3a..d18ebc2846b 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_row_drop.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_row_drop.test
@@ -30,10 +30,7 @@ connection master;
--echo **** On Master ****
# Should drop the non-temporary table t1 and the temporary table t2
DROP TABLE t1,t2;
-let $VERSION=`select version()`;
---replace_result $VERSION VERSION
---replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
SHOW TABLES;
sync_slave_with_master;
--echo **** On Slave ****
diff --git a/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test b/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test
index 736071a8ece..dca2894c9da 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_row_inexist_tbl.test
@@ -22,13 +22,11 @@ connection master;
insert into t1 values (1);
connection slave;
-# slave should have stopped because can't find table t1
-wait_for_slave_to_stop;
+# slave should have stopped because can't find table t1
# see if we have a good error message:
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 #
---vertical_results
-show slave status;
+--let $slave_sql_errno= 1146
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
# cleanup
connection master;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_row_until.test b/mysql-test/suite/engines/funcs/t/rpl_row_until.test
index ccd9ce11637..b60734317c6 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_row_until.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_row_until.test
@@ -18,44 +18,50 @@ connection master;
# create some events on master
create table t1(n int not null auto_increment primary key);
insert into t1 values (1),(2),(3),(4);
+let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1);
drop table t1;
+
create table t2(n int not null auto_increment primary key);
insert into t2 values (1),(2);
+let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1);
insert into t2 values (3),(4);
drop table t2;
# try to replicate all queries until drop of t1
connection slave;
-start slave until master_log_file='master-bin.000001', master_log_pos=311;
+--replace_result $master_log_pos_1 MASTER_LOG_POS
+eval start slave until master_log_file='master-bin.000001', master_log_pos=$master_log_pos_1;
sleep 2;
wait_for_slave_to_stop;
# here table should be still not deleted
select * from t1;
---vertical_results
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 9 # 11 # 22 # 23 # 33 #
-show slave status;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_log_pos_1
+--source include/check_slave_param.inc
# this should fail right after start
+--replace_result 291 MASTER_LOG_POS
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
# again this table should be still not deleted
select * from t1;
sleep 2;
wait_for_slave_to_stop;
---vertical_results
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 9 # 11 # 22 # 23 # 33 #
-show slave status;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_log_pos_1
+--source include/check_slave_param.inc
# try replicate all up to and not including the second insert to t2;
-start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=728;
+let $master_log_pos= $master_log_pos_2;
+let $relay_log_file= slave-relay-bin.000004;
+--source include/get_relay_log_pos.inc
+--replace_result $relay_log_pos RELAY_LOG_POS
+eval start slave until relay_log_file='$relay_log_file', relay_log_pos=$relay_log_pos;
sleep 2;
wait_for_slave_to_stop;
select * from t2;
---vertical_results
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 9 # 11 # 22 # 23 # 33 #
-show slave status;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_log_pos
+--source include/check_slave_param.inc
# clean up
start slave;
@@ -65,27 +71,32 @@ connection slave;
sync_with_master;
stop slave;
+--let $exec_log_pos_1= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1)
# this should stop immediately as we are already there
-start slave until master_log_file='master-bin.000001', master_log_pos=740;
+--replace_result $master_log_pos_2 MASTER_LOG_POS
+eval start slave until master_log_file='master-bin.000001', master_log_pos=$master_log_pos_2;
sleep 2;
wait_for_slave_to_stop;
# here the sql slave thread should be stopped
---vertical_results
---replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
---replace_column 1 # 7 # 9 # 22 # 23 # 33 #
-show slave status;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $exec_log_pos_1
+--source include/check_slave_param.inc
#testing various error conditions
+--replace_result 561 MASTER_LOG_POS
--error 1277
start slave until master_log_file='master-bin', master_log_pos=561;
+--replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS
--error 1277
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
--error 1277
start slave until master_log_file='master-bin.000001';
--error 1277
start slave until relay_log_file='slave-relay-bin.000002';
+--replace_result 561 MASTER_LOG_POS
--error 1277
start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
# Warning should be given for second command
start slave sql_thread;
+--replace_result 740 MASTER_LOG_POS
start slave until master_log_file='master-bin.000001', master_log_pos=740;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_server_id1.test b/mysql-test/suite/engines/funcs/t/rpl_server_id1.test
index 71310750b60..014f38d3544 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_server_id1.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_server_id1.test
@@ -12,10 +12,13 @@ reset master;
stop slave;
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_port=$SLAVE_MYPORT;
---replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 16 # 18 #
-show slave status;
+source include/check_slave_no_error.inc;
+
start slave;
+let $slave_io_errno= 1593;
+let $show_slave_io_error= 1;
+source include/wait_for_slave_io_error.inc;
+
insert into t1 values (1);
# can't MASTER_POS_WAIT(), it does not work in this weird setup
# (when slave is its own master without --replicate-same-server-id)
diff --git a/mysql-test/suite/engines/funcs/t/rpl_server_id2.test b/mysql-test/suite/engines/funcs/t/rpl_server_id2.test
index 0f2eb560d18..5b8683ecfb1 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_server_id2.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_server_id2.test
@@ -9,9 +9,6 @@ reset master;
stop slave;
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_port=$SLAVE_MYPORT;
---replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 18 #
-show slave status;
start slave;
insert into t1 values (1);
save_master_pos;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_slave_status.test b/mysql-test/suite/engines/funcs/t/rpl_slave_status.test
index b3d6e49e215..cc3fbf6abee 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_slave_status.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_slave_status.test
@@ -22,9 +22,7 @@ drop table if exists t1;
--enable_warnings
create table t1 (n int);
insert into t1 values (1);
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
select * from t1;
# 3. Delete new replication user
@@ -40,12 +38,8 @@ stop slave;
start slave;
# 5. Make sure Slave_IO_Running = No
---replace_result $MASTER_MYPORT MASTER_MYPORT
-# Column 1 is replaced, since the output can be either
-# "Connecting to master" or "Waiting for master update"
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 35 # 36 #
---vertical_results
-show slave status;
+let $slave_io_errno= 1045;
+source include/wait_for_slave_io_error.inc;
# Cleanup (Note that slave IO thread is not running)
connection slave;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test b/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test
index d89765fb28d..eb2e2a828f3 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_switch_stm_row_mixed.test
@@ -501,9 +501,7 @@ INSERT INTO t12 VALUES(UUID());
UNLOCK TABLES;
--disable_result_log
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-show binlog events;
+source include/show_binlog_events.inc;
--enable_result_log
sync_slave_with_master;
@@ -520,9 +518,7 @@ diff_files $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql $MYSQLTEST_
connection master;
--disable_result_log
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-show binlog events;
+source include/show_binlog_events.inc;
--enable_result_log
# Now test that mysqlbinlog works fine on a binlog generated by the
diff --git a/mysql-test/suite/federated/federated_bug_32426.result b/mysql-test/suite/federated/federated_bug_32426.result
new file mode 100644
index 00000000000..fbfa6dc3d52
--- /dev/null
+++ b/mysql-test/suite/federated/federated_bug_32426.result
@@ -0,0 +1,30 @@
+CREATE DATABASE federated;
+CREATE DATABASE federated;
+#
+# Bug #32426: FEDERATED query returns corrupt results for ORDER BY
+# on a TEXT column
+#
+CREATE TABLE federated.t1(a TEXT);
+INSERT INTO federated.t1 VALUES('abc'), ('gh'), ('f'), ('ijk'), ('de');
+CREATE TABLE federated.t1(a TEXT) ENGINE=FEDERATED
+CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
+SELECT * FROM federated.t1 ORDER BY A;
+a
+abc
+de
+f
+gh
+ijk
+SELECT * FROM federated.t1 ORDER BY A DESC;
+a
+ijk
+gh
+f
+de
+abc
+DROP TABLE federated.t1;
+DROP TABLE federated.t1;
+DROP TABLE IF EXISTS federated.t1;
+DROP DATABASE IF EXISTS federated;
+DROP TABLE IF EXISTS federated.t1;
+DROP DATABASE IF EXISTS federated;
diff --git a/mysql-test/suite/federated/federated_bug_32426.test b/mysql-test/suite/federated/federated_bug_32426.test
new file mode 100644
index 00000000000..254dfaa610a
--- /dev/null
+++ b/mysql-test/suite/federated/federated_bug_32426.test
@@ -0,0 +1,24 @@
+source federated.inc;
+
+--echo #
+--echo # Bug #32426: FEDERATED query returns corrupt results for ORDER BY
+--echo # on a TEXT column
+--echo #
+connection slave;
+CREATE TABLE federated.t1(a TEXT);
+INSERT INTO federated.t1 VALUES('abc'), ('gh'), ('f'), ('ijk'), ('de');
+
+connection master;
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+eval CREATE TABLE federated.t1(a TEXT) ENGINE=FEDERATED
+ CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1';
+SELECT * FROM federated.t1 ORDER BY A;
+SELECT * FROM federated.t1 ORDER BY A DESC;
+DROP TABLE federated.t1;
+
+connection slave;
+DROP TABLE federated.t1;
+
+connection default;
+
+source federated_cleanup.inc;
diff --git a/mysql-test/suite/federated/federated_innodb-slave.opt b/mysql-test/suite/federated/federated_innodb-slave.opt
deleted file mode 100644
index 627becdbfb5..00000000000
--- a/mysql-test/suite/federated/federated_innodb-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb
diff --git a/mysql-test/suite/federated/federated_server.result b/mysql-test/suite/federated/federated_server.result
index 9c6a062f530..05782c6ef81 100644
--- a/mysql-test/suite/federated/federated_server.result
+++ b/mysql-test/suite/federated/federated_server.result
@@ -213,7 +213,7 @@ id name
alter server s1 options (database 'db_bogus');
flush tables;
select * from federated.t1;
-ERROR HY000: There was a problem processing the query on the foreign data source. Data source error: : 1044 : Access denied for user 'test_fed'@'localhost' to databa
+ERROR 42000: Received error: 1044 : Access denied for user 'test_fed'@'localhost' to database 'db_bogus'
drop server if exists 's1';
ERROR 42000: Access denied; you need the SUPER privilege for this operation
create server 's1' foreign data wrapper 'mysql' options
diff --git a/mysql-test/suite/federated/federated_server.test b/mysql-test/suite/federated/federated_server.test
index 65674abff63..d03c2d26014 100644
--- a/mysql-test/suite/federated/federated_server.test
+++ b/mysql-test/suite/federated/federated_server.test
@@ -239,7 +239,7 @@ alter server s1 options (database 'db_bogus');
connection master;
flush tables;
---error ER_QUERY_ON_FOREIGN_DATA_SOURCE
+--error ER_DBACCESS_DENIED_ERROR
select * from federated.t1;
connection conn_select;
diff --git a/mysql-test/suite/federated/federated_transactions-slave.opt b/mysql-test/suite/federated/federated_transactions-slave.opt
deleted file mode 100644
index 48457b17309..00000000000
--- a/mysql-test/suite/federated/federated_transactions-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb
diff --git a/mysql-test/suite/federated/my.cnf b/mysql-test/suite/federated/my.cnf
index 82600949712..3962c2aca77 100644
--- a/mysql-test/suite/federated/my.cnf
+++ b/mysql-test/suite/federated/my.cnf
@@ -6,7 +6,6 @@ log-bin= master-bin
[mysqld.2]
-
[ENV]
MASTER_MYPORT= @mysqld.1.port
MASTER_MYSOCK= @mysqld.1.socket
diff --git a/mysql-test/suite/federated/suite.opt b/mysql-test/suite/federated/suite.opt
new file mode 100644
index 00000000000..2cce1887441
--- /dev/null
+++ b/mysql-test/suite/federated/suite.opt
@@ -0,0 +1,2 @@
+--federated
+--plugin-load=$HA_FEDERATEDX_SO
diff --git a/mysql-test/suite/funcs_1/datadict/is_routines.inc b/mysql-test/suite/funcs_1/datadict/is_routines.inc
index e6405c8d455..cc0cbdf62fe 100644
--- a/mysql-test/suite/funcs_1/datadict/is_routines.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_routines.inc
@@ -75,7 +75,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table';
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval DESCRIBE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval SHOW COLUMNS FROM information_schema.$is_table;
diff --git a/mysql-test/suite/funcs_1/datadict/is_triggers.inc b/mysql-test/suite/funcs_1/datadict/is_triggers.inc
index df3e6e7d2b6..5597bc816fc 100644
--- a/mysql-test/suite/funcs_1/datadict/is_triggers.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_triggers.inc
@@ -70,7 +70,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table';
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval DESCRIBE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval SHOW COLUMNS FROM information_schema.$is_table;
diff --git a/mysql-test/suite/funcs_1/datadict/is_views.inc b/mysql-test/suite/funcs_1/datadict/is_views.inc
index b04904c2eba..0ba1aaff3f2 100644
--- a/mysql-test/suite/funcs_1/datadict/is_views.inc
+++ b/mysql-test/suite/funcs_1/datadict/is_views.inc
@@ -57,7 +57,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table';
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval DESCRIBE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval SHOW COLUMNS FROM information_schema.$is_table;
diff --git a/mysql-test/suite/funcs_1/datadict/processlist_priv.inc b/mysql-test/suite/funcs_1/datadict/processlist_priv.inc
index 1fffdf014e6..544560ec526 100644
--- a/mysql-test/suite/funcs_1/datadict/processlist_priv.inc
+++ b/mysql-test/suite/funcs_1/datadict/processlist_priv.inc
@@ -155,7 +155,7 @@ let $wait_condition=
SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE DB = 'information_schema' AND COMMAND = 'Sleep' AND USER = 'ddicttestuser1';
--source include/wait_condition.inc
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE $table;
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SHOW $table;
@@ -175,7 +175,7 @@ connection con100;
# No need for poll routine here.
# The current state of the default session might depend on load of testing box
# but "ddicttestuser1" must not see anything of the root session.
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE $table;
--replace_column 1 ID 3 HOST_NAME 6 TIME 9 TIME_MS
eval SHOW $table;
diff --git a/mysql-test/suite/funcs_1/datadict/processlist_val.inc b/mysql-test/suite/funcs_1/datadict/processlist_val.inc
index a2ab02c963f..b1c1130cbdf 100644
--- a/mysql-test/suite/funcs_1/datadict/processlist_val.inc
+++ b/mysql-test/suite/funcs_1/datadict/processlist_val.inc
@@ -72,7 +72,7 @@ echo
# Show the definition of the PROCESSLIST table
#--------------------------------------------------------------------------
;
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
SHOW CREATE TABLE INFORMATION_SCHEMA.PROCESSLIST;
echo
diff --git a/mysql-test/suite/funcs_1/datadict/tables2.inc b/mysql-test/suite/funcs_1/datadict/tables2.inc
index f9bb296eeaa..0d110dd22d9 100644
--- a/mysql-test/suite/funcs_1/datadict/tables2.inc
+++ b/mysql-test/suite/funcs_1/datadict/tables2.inc
@@ -31,7 +31,7 @@ let $ndb_pattern = 'number_of_replicas';
--vertical_results
# We do not unify the engine name here, because the rowformat is
# specific to the engine.
---replace_result Dynamic DYNAMIC_OR_PAGE Page DYNAMIC_OR_PAGE MyISAM MYISAM_OR_MARIA MARIA MYISAM_OR_MARIA
+--replace_result Dynamic DYNAMIC_OR_PAGE Page DYNAMIC_OR_PAGE MyISAM MYISAM_OR_MARIA Aria MYISAM_OR_MARIA
--replace_column 8 "#TBLR#" 9 "#ARL#" 10 "#DL#" 11 "#MDL#" 12 "#IL#" 13 "#DF#" 15 "#CRT#" 16 "#UT#" 17 "#CT#" 20 "#CO#" 21 "#TC#"
eval
SELECT *,
diff --git a/mysql-test/suite/funcs_1/r/is_basics_mixed.result b/mysql-test/suite/funcs_1/r/is_basics_mixed.result
index 2ae4f96c400..d20e5750403 100644
--- a/mysql-test/suite/funcs_1/r/is_basics_mixed.result
+++ b/mysql-test/suite/funcs_1/r/is_basics_mixed.result
@@ -328,7 +328,7 @@ ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_
SELECT table_schema,table_name FROM information_schema.tables
WHERE table_schema = 'information_schema' AND table_name = 'tables';
table_schema table_name
-information_schema tables
+information_schema TABLES
SELECT * FROM information_schema.table_privileges
WHERE table_schema = 'information_schema';
GRANTEE TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE IS_GRANTABLE
diff --git a/mysql-test/suite/funcs_1/r/is_columns_innodb.result b/mysql-test/suite/funcs_1/r/is_columns_innodb.result
index 73a74e4d7a2..61079b06666 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result
@@ -450,9 +450,9 @@ NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zero
NULL test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
NULL test tb1 f3 3 NULL YES char 0 0 NULL NULL latin1 latin1_swedish_ci char(0) select,insert,update,references
-NULL test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
-NULL test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb1 f30 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL test tb1 f31 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb1 f32 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
NULL test tb1 f33 33 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb1 f34 34 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
NULL test tb1 f35 35 NULL YES decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
@@ -565,9 +565,9 @@ NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned s
NULL test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
-NULL test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
-NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb3 f147 30 999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
NULL test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
NULL test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result
index 7d2f88bf4d0..0fd3c0a2810 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is.result
@@ -7,29 +7,29 @@ NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NU
NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60) select
NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
-NULL information_schema CLIENT_STATISTICS ACCESS_DENIED 22 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema CLIENT_STATISTICS ACCESS_DENIED 22 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema CLIENT_STATISTICS BUSY_TIME 5 0 NO double NULL NULL 21 NULL NULL NULL double select
-NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED 7 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS BYTES_SENT 8 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS BYTES_SENT 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema CLIENT_STATISTICS CLIENT 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS 18 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS CONNECTED_TIME 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS CONNECTED_TIME 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema CLIENT_STATISTICS CPU_TIME 6 0 NO double NULL NULL 21 NULL NULL NULL double select
-NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS 20 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES 23 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS 21 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS 17 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS ROWS_DELETED 12 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS ROWS_INSERTED 13 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS ROWS_READ 10 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS ROWS_SENT 11 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS ROWS_UPDATED 14 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS 20 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES 23 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS ROWS_DELETED 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS ROWS_INSERTED 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS ROWS_READ 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS ROWS_SENT 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS ROWS_UPDATED 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11) select
@@ -38,8 +38,8 @@ NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 u
NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
@@ -50,9 +50,9 @@ NULL information_schema COLUMNS COLUMN_TYPE 15 NULL NO longtext 4294967295 42949
NULL information_schema COLUMNS DATA_TYPE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema COLUMNS EXTRA 17 NO varchar 27 81 NULL NULL utf8 utf8_general_ci varchar(27) select
NULL information_schema COLUMNS IS_NULLABLE 7 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
-NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema COLUMNS NUMERIC_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema COLUMNS NUMERIC_SCALE 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema COLUMNS ORDINAL_POSITION 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema COLUMNS PRIVILEGES 18 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
NULL information_schema COLUMNS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema COLUMNS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
@@ -64,7 +64,7 @@ NULL information_schema COLUMN_PRIVILEGES PRIVILEGE_TYPE 6 NO varchar 64 192 NU
NULL information_schema COLUMN_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
+NULL information_schema ENGINES COMMENT 3 NO varchar 160 480 NULL NULL utf8 utf8_general_ci varchar(160) select
NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
@@ -94,14 +94,14 @@ NULL information_schema EVENTS SQL_MODE 12 NO varchar 8192 24576 NULL NULL utf8
NULL information_schema EVENTS STARTS 13 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema EVENTS STATUS 15 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
NULL information_schema EVENTS TIME_ZONE 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES AUTOEXTEND_SIZE 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES AVG_ROW_LENGTH 28 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES CHECKSUM 36 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema FILES CHECK_TIME 35 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema FILES CREATE_TIME 33 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema FILES CREATION_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES DATA_FREE 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES DATA_LENGTH 29 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema FILES DELETED_ROWS 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
NULL information_schema FILES ENGINE 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema FILES EXTENT_SIZE 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select
@@ -111,64 +111,62 @@ NULL information_schema FILES FILE_NAME 2 NULL YES varchar 64 192 NULL NULL utf8
NULL information_schema FILES FILE_TYPE 3 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
NULL information_schema FILES FREE_EXTENTS 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
NULL information_schema FILES FULLTEXT_KEYS 11 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES INDEX_LENGTH 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES INITIAL_SIZE 17 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema FILES LAST_ACCESS_TIME 22 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema FILES LAST_UPDATE_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema FILES LOGFILE_GROUP_NAME 8 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema FILES LOGFILE_GROUP_NUMBER 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
-NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES MAXIMUM_SIZE 18 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES MAX_DATA_LENGTH 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema FILES RECOVER_TIME 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
NULL information_schema FILES ROW_FORMAT 26 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
NULL information_schema FILES STATUS 37 NO varchar 20 60 NULL NULL utf8 utf8_general_ci varchar(20) select
NULL information_schema FILES TABLESPACE_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema FILES TABLE_CATALOG 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema FILES TABLE_NAME 7 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES TABLE_ROWS 27 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema FILES TABLE_SCHEMA 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema FILES TOTAL_EXTENTS 15 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
NULL information_schema FILES TRANSACTION_COUNTER 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
NULL information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(4) select
NULL information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
NULL information_schema INDEX_STATISTICS INDEX_NAME 3 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema INDEX_STATISTICS ROWS_READ 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema INDEX_STATISTICS ROWS_READ 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema INDEX_STATISTICS TABLE_NAME 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
NULL information_schema INDEX_STATISTICS TABLE_SCHEMA 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema INNODB_BUFFER_POOL_PAGES fix_count 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES flush_type 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES lru_position 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES page_no 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES fix_count 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES flush_type 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES lru_position 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES page_no 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_BUFFER_POOL_PAGES page_type 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema INNODB_BUFFER_POOL_PAGES space_id 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB compressed 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB fix_count 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB flush_type 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB lru_position 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB next_page_no 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB page_no 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB part_len 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB space_id 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX access_time 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX data_size 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX dirty 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX fix_count 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX flush_type 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX hashed 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX index_name 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX lru_position 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX modified 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX n_recs 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX old 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX page_no 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX schema_name 1 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX space_id 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX table_name 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
+NULL information_schema INNODB_BUFFER_POOL_PAGES space_id 2 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB compressed 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB fix_count 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB flush_type 8 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB lru_position 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB next_page_no 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB page_no 2 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB part_len 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB space_id 1 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX access_time 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX data_size 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX dirty 9 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX fix_count 12 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX flush_type 13 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX hashed 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX index_id 1 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX lru_position 11 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX modified 8 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX n_recs 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX old 10 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX page_no 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX space_id 2 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_CMP compress_ops 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select
NULL information_schema INNODB_CMP compress_ops_ok 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select
NULL information_schema INNODB_CMP compress_time 4 0 NO int NULL NULL 10 0 NULL NULL int(11) select
@@ -191,10 +189,10 @@ NULL information_schema INNODB_CMP_RESET compress_time 4 0 NO int NULL NULL 10 0
NULL information_schema INNODB_CMP_RESET page_size 1 0 NO int NULL NULL 10 0 NULL NULL int(5) select
NULL information_schema INNODB_CMP_RESET uncompress_ops 5 0 NO int NULL NULL 10 0 NULL NULL int(11) select
NULL information_schema INNODB_CMP_RESET uncompress_time 6 0 NO int NULL NULL 10 0 NULL NULL int(11) select
-NULL information_schema INNODB_INDEX_STATS fields 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_INDEX_STATS fields 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_INDEX_STATS index_name 3 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema INNODB_INDEX_STATS index_size 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_INDEX_STATS leaf_pages 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_INDEX_STATS index_size 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_INDEX_STATS leaf_pages 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_INDEX_STATS row_per_keys 5 NO varchar 256 768 NULL NULL utf8 utf8_general_ci varchar(256) select
NULL information_schema INNODB_INDEX_STATS table_name 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
NULL information_schema INNODB_INDEX_STATS table_schema 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
@@ -202,9 +200,9 @@ NULL information_schema INNODB_LOCKS lock_data 10 NULL YES varchar 8192 24576 NU
NULL information_schema INNODB_LOCKS lock_id 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
NULL information_schema INNODB_LOCKS lock_index 6 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
NULL information_schema INNODB_LOCKS lock_mode 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
-NULL information_schema INNODB_LOCKS lock_page 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_LOCKS lock_rec 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_LOCKS lock_space 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_LOCKS lock_page 8 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_LOCKS lock_rec 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_LOCKS lock_space 7 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_LOCKS lock_table 5 NO varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
NULL information_schema INNODB_LOCKS lock_trx_id 2 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
NULL information_schema INNODB_LOCKS lock_type 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
@@ -212,53 +210,57 @@ NULL information_schema INNODB_LOCK_WAITS blocking_lock_id 4 NO varchar 81 243
NULL information_schema INNODB_LOCK_WAITS blocking_trx_id 3 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
NULL information_schema INNODB_LOCK_WAITS requested_lock_id 2 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
NULL information_schema INNODB_LOCK_WAITS requesting_trx_id 1 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
-NULL information_schema INNODB_RSEG curr_size 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_RSEG max_size 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_RSEG page_no 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_RSEG rseg_id 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_RSEG space_id 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_RSEG zip_size 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_INDEXES ID 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG curr_size 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG max_size 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG page_no 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG rseg_id 1 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG space_id 2 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_RSEG zip_size 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_INDEXES ID 2 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_SYS_INDEXES NAME 3 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema INNODB_SYS_INDEXES N_FIELDS 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_INDEXES PAGE_NO 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_INDEXES SPACE 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_INDEXES TABLE_ID 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_INDEXES TYPE 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_TABLES CLUSTER_NAME 7 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema INNODB_SYS_TABLES ID 2 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_TABLES MIX_ID 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_TABLES MIX_LEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_TABLES NAME 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema INNODB_SYS_TABLES N_COLS 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_TABLES SPACE 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_SYS_TABLES TYPE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_TABLE_STATS clust_size 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_TABLE_STATS modified 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_TABLE_STATS other_size 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema INNODB_TABLE_STATS rows 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_INDEXES N_FIELDS 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_INDEXES PAGE_NO 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_INDEXES SPACE 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_INDEXES TABLE_ID 1 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_INDEXES TYPE 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_STATS DIFF_VALS 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_STATS INDEX_ID 1 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_STATS KEY_COLS 2 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_TABLES CLUSTER_NAME 8 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
+NULL information_schema INNODB_SYS_TABLES ID 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_TABLES MIX_ID 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_TABLES MIX_LEN 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_TABLES NAME 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
+NULL information_schema INNODB_SYS_TABLES N_COLS 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_TABLES SCHEMA 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
+NULL information_schema INNODB_SYS_TABLES SPACE 9 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_SYS_TABLES TYPE 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS clust_size 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS modified 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS other_size 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TABLE_STATS rows 3 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_TABLE_STATS table_name 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
NULL information_schema INNODB_TABLE_STATS table_schema 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
NULL information_schema INNODB_TRX trx_id 1 NO varchar 18 54 NULL NULL utf8 utf8_general_ci varchar(18) select
-NULL information_schema INNODB_TRX trx_mysql_thread_id 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TRX trx_mysql_thread_id 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema INNODB_TRX trx_query 8 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
NULL information_schema INNODB_TRX trx_requested_lock_id 4 NULL YES varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
NULL information_schema INNODB_TRX trx_started 3 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema INNODB_TRX trx_state 2 NO varchar 13 39 NULL NULL utf8 utf8_general_ci varchar(13) select
NULL information_schema INNODB_TRX trx_wait_started 5 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema INNODB_TRX trx_weight 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES BLOCK_SIZE 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES DIRTY_BLOCKS 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES FULL_SIZE 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema INNODB_TRX trx_weight 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES BLOCK_SIZE 5 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES DIRTY_BLOCKS 8 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES FULL_SIZE 4 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema KEY_CACHES KEY_CACHE_NAME 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
-NULL information_schema KEY_CACHES READS 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES READ_REQUESTS 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES READS 10 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES READ_REQUESTS 9 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema KEY_CACHES SEGMENTS 2 NULL YES int NULL NULL 10 0 NULL NULL int(3) unsigned select
NULL information_schema KEY_CACHES SEGMENT_NUMBER 3 NULL YES int NULL NULL 10 0 NULL NULL int(3) unsigned select
-NULL information_schema KEY_CACHES UNUSED_BLOCKS 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES USED_BLOCKS 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES WRITES 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema KEY_CACHES WRITE_REQUESTS 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES UNUSED_BLOCKS 7 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES USED_BLOCKS 6 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES WRITES 12 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema KEY_CACHES WRITE_REQUESTS 11 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
@@ -271,29 +273,29 @@ NULL information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES var
NULL information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS AVG_ROW_LENGTH 14 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS CHECKSUM 22 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema PARTITIONS CHECK_TIME 21 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema PARTITIONS CREATE_TIME 19 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS DATA_FREE 18 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS DATA_LENGTH 15 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS INDEX_LENGTH 17 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS MAX_DATA_LENGTH 16 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema PARTITIONS NODEGROUP 24 NO varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
NULL information_schema PARTITIONS PARTITION_COMMENT 23 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
NULL information_schema PARTITIONS PARTITION_DESCRIPTION 12 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
NULL information_schema PARTITIONS PARTITION_EXPRESSION 10 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
NULL information_schema PARTITIONS PARTITION_METHOD 8 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
NULL information_schema PARTITIONS PARTITION_NAME 4 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS PARTITION_ORDINAL_POSITION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema PARTITIONS SUBPARTITION_EXPRESSION 11 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
NULL information_schema PARTITIONS SUBPARTITION_METHOD 9 NULL YES varchar 12 36 NULL NULL utf8 utf8_general_ci varchar(12) select
NULL information_schema PARTITIONS SUBPARTITION_NAME 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS SUBPARTITION_ORDINAL_POSITION 7 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema PARTITIONS TABLESPACE_NAME 25 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema PARTITIONS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema PARTITIONS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema PARTITIONS TABLE_ROWS 13 0 NO bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema PARTITIONS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema PARTITIONS UPDATE_TIME 20 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema PBXT_STATISTICS ID 1 0 NO int NULL NULL 10 0 NULL NULL int(4) select
@@ -383,27 +385,27 @@ NULL information_schema STATISTICS SUB_PART 11 NULL YES bigint NULL NULL 19 0 NU
NULL information_schema STATISTICS TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema STATISTICS TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema STATISTICS TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES AUTO_INCREMENT 14 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES AVG_ROW_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES CHECKSUM 19 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema TABLES CHECK_TIME 17 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
NULL information_schema TABLES CREATE_OPTIONS 20 NULL YES varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
NULL information_schema TABLES CREATE_TIME 15 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES DATA_FREE 13 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES DATA_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema TABLES ENGINE 5 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
-NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema TABLES TABLE_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema TABLES TABLE_TYPE 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema TABLES UPDATE_TIME 16 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
-NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
+NULL information_schema TABLES VERSION 6 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(21) unsigned select
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema TABLE_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
@@ -416,9 +418,9 @@ NULL information_schema TABLE_PRIVILEGES PRIVILEGE_TYPE 5 NO varchar 64 192 NUL
NULL information_schema TABLE_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
NULL information_schema TABLE_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema TABLE_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
-NULL information_schema TABLE_STATISTICS ROWS_CHANGED 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES 5 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema TABLE_STATISTICS ROWS_READ 3 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema TABLE_STATISTICS ROWS_CHANGED 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES 5 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema TABLE_STATISTICS ROWS_READ 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema TABLE_STATISTICS TABLE_NAME 2 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
NULL information_schema TABLE_STATISTICS TABLE_SCHEMA 1 NO varchar 192 576 NULL NULL utf8 utf8_general_ci varchar(192) select
NULL information_schema TRIGGERS ACTION_CONDITION 9 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
@@ -447,28 +449,28 @@ NULL information_schema USER_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL u
NULL information_schema USER_PRIVILEGES IS_GRANTABLE 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
NULL information_schema USER_PRIVILEGES PRIVILEGE_TYPE 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
NULL information_schema USER_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
-NULL information_schema USER_STATISTICS ACCESS_DENIED 22 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema USER_STATISTICS ACCESS_DENIED 22 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN 9 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema USER_STATISTICS BUSY_TIME 5 0 NO double NULL NULL 21 NULL NULL NULL double select
-NULL information_schema USER_STATISTICS BYTES_RECEIVED 7 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS BYTES_SENT 8 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS 18 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS CONNECTED_TIME 4 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema USER_STATISTICS BYTES_RECEIVED 7 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS BYTES_SENT 8 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS 18 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS 3 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema USER_STATISTICS CONNECTED_TIME 4 0 NO int NULL NULL 10 0 NULL NULL int(11) select
NULL information_schema USER_STATISTICS CPU_TIME 6 0 NO double NULL NULL 21 NULL NULL NULL double select
-NULL information_schema USER_STATISTICS DENIED_CONNECTIONS 20 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS EMPTY_QUERIES 23 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS LOST_CONNECTIONS 21 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS OTHER_COMMANDS 17 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS ROWS_DELETED 12 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS ROWS_INSERTED 13 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS ROWS_READ 10 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS ROWS_SENT 11 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS ROWS_UPDATED 14 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS SELECT_COMMANDS 15 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS 2 0 NO int NULL NULL 10 0 NULL NULL int(21) select
-NULL information_schema USER_STATISTICS UPDATE_COMMANDS 16 0 NO int NULL NULL 10 0 NULL NULL int(21) select
+NULL information_schema USER_STATISTICS DENIED_CONNECTIONS 20 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS EMPTY_QUERIES 23 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS LOST_CONNECTIONS 21 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS OTHER_COMMANDS 17 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS 19 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS ROWS_DELETED 12 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS ROWS_INSERTED 13 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS ROWS_READ 10 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS ROWS_SENT 11 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS ROWS_UPDATED 14 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS SELECT_COMMANDS 15 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
+NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS 2 0 NO int NULL NULL 10 0 NULL NULL int(11) select
+NULL information_schema USER_STATISTICS UPDATE_COMMANDS 16 0 NO bigint NULL NULL 19 0 NULL NULL bigint(21) select
NULL information_schema USER_STATISTICS USER 1 NO varchar 48 144 NULL NULL utf8 utf8_general_ci varchar(48) select
NULL information_schema VIEWS CHARACTER_SET_CLIENT 9 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
NULL information_schema VIEWS CHECK_OPTION 5 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
@@ -550,28 +552,28 @@ COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH C
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8 utf8_general_ci varchar(64)
-NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(21)
+NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS CONNECTED_TIME bigint NULL NULL NULL NULL bigint(21)
NULL information_schema CLIENT_STATISTICS BUSY_TIME double NULL NULL NULL NULL double
NULL information_schema CLIENT_STATISTICS CPU_TIME double NULL NULL NULL NULL double
-NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS BYTES_SENT int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ROWS_SENT int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ROWS_DELETED int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ROWS_INSERTED int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ROWS_UPDATED int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS ACCESS_DENIED int NULL NULL NULL NULL int(21)
-NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES int NULL NULL NULL NULL int(21)
+NULL information_schema CLIENT_STATISTICS BYTES_RECEIVED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS BYTES_SENT bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS BINLOG_BYTES_WRITTEN bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ROWS_SENT bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ROWS_DELETED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ROWS_INSERTED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ROWS_UPDATED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS SELECT_COMMANDS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS UPDATE_COMMANDS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS OTHER_COMMANDS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS COMMIT_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ROLLBACK_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS DENIED_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS LOST_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21)
3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
@@ -608,7 +610,7 @@ NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(
3.0000 information_schema COLUMN_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema ENGINES ENGINE varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema ENGINES SUPPORT varchar 8 24 utf8 utf8_general_ci varchar(8)
-3.0000 information_schema ENGINES COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
+3.0000 information_schema ENGINES COMMENT varchar 160 480 utf8 utf8_general_ci varchar(160)
3.0000 information_schema ENGINES TRANSACTIONS varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema ENGINES XA varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema ENGINES SAVEPOINTS varchar 3 9 utf8 utf8_general_ci varchar(3)
@@ -681,7 +683,7 @@ NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) uns
3.0000 information_schema INDEX_STATISTICS TABLE_SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192)
3.0000 information_schema INDEX_STATISTICS TABLE_NAME varchar 192 576 utf8 utf8_general_ci varchar(192)
3.0000 information_schema INDEX_STATISTICS INDEX_NAME varchar 192 576 utf8 utf8_general_ci varchar(192)
-NULL information_schema INDEX_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21)
+NULL information_schema INDEX_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21)
3.0000 information_schema INNODB_BUFFER_POOL_PAGES page_type varchar 64 192 utf8 utf8_general_ci varchar(64)
NULL information_schema INNODB_BUFFER_POOL_PAGES space_id bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_BUFFER_POOL_PAGES page_no bigint NULL NULL NULL NULL bigint(21) unsigned
@@ -696,9 +698,7 @@ NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB next_page_no bigint NULL N
NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB lru_position bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB fix_count bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_BUFFER_POOL_PAGES_BLOB flush_type bigint NULL NULL NULL NULL bigint(21) unsigned
-3.0000 information_schema INNODB_BUFFER_POOL_PAGES_INDEX schema_name varchar 64 192 utf8 utf8_general_ci varchar(64)
-3.0000 information_schema INNODB_BUFFER_POOL_PAGES_INDEX table_name varchar 64 192 utf8 utf8_general_ci varchar(64)
-3.0000 information_schema INNODB_BUFFER_POOL_PAGES_INDEX index_name varchar 64 192 utf8 utf8_general_ci varchar(64)
+NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX index_id bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX space_id bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX page_no bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_BUFFER_POOL_PAGES_INDEX n_recs bigint NULL NULL NULL NULL bigint(21) unsigned
@@ -767,6 +767,10 @@ NULL information_schema INNODB_SYS_INDEXES N_FIELDS bigint NULL NULL NULL NULL b
NULL information_schema INNODB_SYS_INDEXES TYPE bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_SYS_INDEXES SPACE bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_SYS_INDEXES PAGE_NO bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_SYS_STATS INDEX_ID bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_SYS_STATS KEY_COLS bigint NULL NULL NULL NULL bigint(21) unsigned
+NULL information_schema INNODB_SYS_STATS DIFF_VALS bigint NULL NULL NULL NULL bigint(21) unsigned
+3.0000 information_schema INNODB_SYS_TABLES SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192)
3.0000 information_schema INNODB_SYS_TABLES NAME varchar 192 576 utf8 utf8_general_ci varchar(192)
NULL information_schema INNODB_SYS_TABLES ID bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema INNODB_SYS_TABLES N_COLS bigint NULL NULL NULL NULL bigint(21) unsigned
@@ -960,9 +964,9 @@ NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) un
3.0000 information_schema TABLE_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema TABLE_STATISTICS TABLE_SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192)
3.0000 information_schema TABLE_STATISTICS TABLE_NAME varchar 192 576 utf8 utf8_general_ci varchar(192)
-NULL information_schema TABLE_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21)
-NULL information_schema TABLE_STATISTICS ROWS_CHANGED int NULL NULL NULL NULL int(21)
-NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES int NULL NULL NULL NULL int(21)
+NULL information_schema TABLE_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLE_STATISTICS ROWS_CHANGED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema TABLE_STATISTICS ROWS_CHANGED_X_INDEXES bigint NULL NULL NULL NULL bigint(21)
3.0000 information_schema TRIGGERS TRIGGER_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema TRIGGERS TRIGGER_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema TRIGGERS TRIGGER_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
@@ -990,28 +994,28 @@ NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime
3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema USER_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema USER_STATISTICS USER varchar 48 144 utf8 utf8_general_ci varchar(48)
-NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(21)
+NULL information_schema USER_STATISTICS TOTAL_CONNECTIONS int NULL NULL NULL NULL int(11)
+NULL information_schema USER_STATISTICS CONCURRENT_CONNECTIONS int NULL NULL NULL NULL int(11)
+NULL information_schema USER_STATISTICS CONNECTED_TIME int NULL NULL NULL NULL int(11)
NULL information_schema USER_STATISTICS BUSY_TIME double NULL NULL NULL NULL double
NULL information_schema USER_STATISTICS CPU_TIME double NULL NULL NULL NULL double
-NULL information_schema USER_STATISTICS BYTES_RECEIVED int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS BYTES_SENT int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ROWS_READ int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ROWS_SENT int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ROWS_DELETED int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ROWS_INSERTED int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ROWS_UPDATED int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS SELECT_COMMANDS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS UPDATE_COMMANDS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS OTHER_COMMANDS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS DENIED_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS LOST_CONNECTIONS int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS ACCESS_DENIED int NULL NULL NULL NULL int(21)
-NULL information_schema USER_STATISTICS EMPTY_QUERIES int NULL NULL NULL NULL int(21)
+NULL information_schema USER_STATISTICS BYTES_RECEIVED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS BYTES_SENT bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS BINLOG_BYTES_WRITTEN bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ROWS_READ bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ROWS_SENT bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ROWS_DELETED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ROWS_INSERTED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ROWS_UPDATED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS SELECT_COMMANDS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS UPDATE_COMMANDS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS OTHER_COMMANDS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS COMMIT_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ROLLBACK_TRANSACTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS DENIED_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS LOST_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NULL bigint(21)
+NULL information_schema USER_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21)
3.0000 information_schema VIEWS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema VIEWS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema VIEWS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_memory.result b/mysql-test/suite/funcs_1/r/is_columns_memory.result
index 513d7bdfac6..60dea25e0e3 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_memory.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result
@@ -437,9 +437,9 @@ NULL test tb1 f27 19 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zero
NULL test tb1 f28 20 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb1 f29 21 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
NULL test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb1 f30 22 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL test tb1 f31 23 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
-NULL test tb1 f32 24 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb1 f30 22 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL test tb1 f31 23 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb1 f32 24 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
NULL test tb1 f33 25 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb1 f34 26 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
NULL test tb1 f35 27 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
@@ -540,9 +540,9 @@ NULL test tb3 f143 20 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned s
NULL test tb3 f144 21 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb3 f145 22 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb3 f146 23 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
-NULL test tb3 f147 24 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL test tb3 f148 25 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
-NULL test tb3 f149 26 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb3 f147 24 999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL test tb3 f148 25 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb3 f149 26 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
NULL test tb3 f150 27 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb3 f151 28 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
NULL test tb3 f152 29 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam.result b/mysql-test/suite/funcs_1/r/is_columns_myisam.result
index a95ca4f0ebf..6d0a44d2223 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result
@@ -479,9 +479,9 @@ NULL test tb1 f27 27 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zero
NULL test tb1 f28 28 NULL YES int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb1 f29 29 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
NULL test tb1 f3 3 NULL YES char 1 1 NULL NULL latin1 latin1_swedish_ci char(1) select,insert,update,references
-NULL test tb1 f30 30 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL test tb1 f31 31 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
-NULL test tb1 f32 32 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb1 f30 30 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL test tb1 f31 31 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb1 f32 32 NULL YES bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
NULL test tb1 f33 33 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb1 f34 34 10 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
NULL test tb1 f35 35 0000000010 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
@@ -602,9 +602,9 @@ NULL test tb3 f143 26 99999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned s
NULL test tb3 f144 27 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb3 f145 28 0000099999 NO int NULL NULL 10 0 NULL NULL int(10) unsigned zerofill select,insert,update,references
NULL test tb3 f146 29 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) select,insert,update,references
-NULL test tb3 f147 30 999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
-NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb3 f147 30 999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL test tb3 f148 31 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
+NULL test tb3 f149 32 00000000000000999999 NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned zerofill select,insert,update,references
NULL test tb3 f150 33 1000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) select,insert,update,references
NULL test tb3 f151 34 999 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned select,insert,update,references
NULL test tb3 f152 35 0000001000 NO decimal NULL NULL 10 0 NULL NULL decimal(10,0) unsigned zerofill select,insert,update,references
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql.result b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
index 630baeee74f..30a3d047bde 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
@@ -97,13 +97,13 @@ NULL mysql host Select_priv 3 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum(
NULL mysql host Show_view_priv 16 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
NULL mysql host Trigger_priv 20 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
NULL mysql host Update_priv 5 N NO enum 1 3 NULL NULL utf8 utf8_general_ci enum('N','Y') select,insert,update,references
-NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned PRI select,insert,update,references
+NULL mysql ndb_binlog_index deletes 6 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL mysql ndb_binlog_index epoch 3 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned PRI select,insert,update,references
NULL mysql ndb_binlog_index File 2 NULL NO varchar 255 255 NULL NULL latin1 latin1_swedish_ci varchar(255) select,insert,update,references
-NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
-NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 19 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL mysql ndb_binlog_index inserts 4 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL mysql ndb_binlog_index Position 1 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL mysql ndb_binlog_index schemaops 7 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
+NULL mysql ndb_binlog_index updates 5 NULL NO bigint NULL NULL 20 0 NULL NULL bigint(20) unsigned select,insert,update,references
NULL mysql plugin dl 2 NO char 128 384 NULL NULL utf8 utf8_bin char(128) select,insert,update,references
NULL mysql plugin name 1 NO char 64 192 NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
NULL mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL longblob select,insert,update,references
diff --git a/mysql-test/suite/funcs_1/r/is_engines.result b/mysql-test/suite/funcs_1/r/is_engines.result
index 9965fc5ad73..e76cbe7bdee 100644
--- a/mysql-test/suite/funcs_1/r/is_engines.result
+++ b/mysql-test/suite/funcs_1/r/is_engines.result
@@ -30,7 +30,7 @@ DESCRIBE information_schema.ENGINES;
Field Type Null Key Default Extra
ENGINE varchar(64) NO
SUPPORT varchar(8) NO
-COMMENT varchar(80) NO
+COMMENT varchar(160) NO
TRANSACTIONS varchar(3) YES NULL
XA varchar(3) YES NULL
SAVEPOINTS varchar(3) YES NULL
@@ -39,7 +39,7 @@ Table Create Table
ENGINES CREATE TEMPORARY TABLE `ENGINES` (
`ENGINE` varchar(64) NOT NULL DEFAULT '',
`SUPPORT` varchar(8) NOT NULL DEFAULT '',
- `COMMENT` varchar(80) NOT NULL DEFAULT '',
+ `COMMENT` varchar(160) NOT NULL DEFAULT '',
`TRANSACTIONS` varchar(3) DEFAULT NULL,
`XA` varchar(3) DEFAULT NULL,
`SAVEPOINTS` varchar(3) DEFAULT NULL
@@ -48,7 +48,7 @@ SHOW COLUMNS FROM information_schema.ENGINES;
Field Type Null Key Default Extra
ENGINE varchar(64) NO
SUPPORT varchar(8) NO
-COMMENT varchar(80) NO
+COMMENT varchar(160) NO
TRANSACTIONS varchar(3) YES NULL
XA varchar(3) YES NULL
SAVEPOINTS varchar(3) YES NULL
diff --git a/mysql-test/suite/funcs_1/r/is_tables_is.result b/mysql-test/suite/funcs_1/r/is_tables_is.result
index 8419bfb7ebb..f4fe0a880e7 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_is.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_is.result
@@ -567,6 +567,29 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_SYS_STATS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
TABLE_NAME INNODB_SYS_TABLES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
@@ -1734,6 +1757,29 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
+TABLE_NAME INNODB_SYS_STATS
+TABLE_TYPE SYSTEM VIEW
+ENGINE MEMORY
+VERSION 10
+ROW_FORMAT Fixed
+TABLE_ROWS #TBLR#
+AVG_ROW_LENGTH #ARL#
+DATA_LENGTH #DL#
+MAX_DATA_LENGTH #MDL#
+INDEX_LENGTH #IL#
+DATA_FREE #DF#
+AUTO_INCREMENT NULL
+CREATE_TIME #CRT#
+UPDATE_TIME #UT#
+CHECK_TIME #CT#
+TABLE_COLLATION utf8_general_ci
+CHECKSUM NULL
+CREATE_OPTIONS #CO#
+TABLE_COMMENT #TC#
+user_comment
+Separator -----------------------------------------------------
+TABLE_CATALOG NULL
+TABLE_SCHEMA information_schema
TABLE_NAME INNODB_SYS_TABLES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
diff --git a/mysql-test/suite/funcs_1/t/is_columns.test b/mysql-test/suite/funcs_1/t/is_columns.test
index 5e754c56532..fca21034e37 100644
--- a/mysql-test/suite/funcs_1/t/is_columns.test
+++ b/mysql-test/suite/funcs_1/t/is_columns.test
@@ -78,7 +78,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table';
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval DESCRIBE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE information_schema.$is_table;
--source suite/funcs_1/datadict/datadict_bug_12777.inc
eval SHOW COLUMNS FROM information_schema.$is_table;
diff --git a/mysql-test/suite/funcs_1/t/is_columns_is.test b/mysql-test/suite/funcs_1/t/is_columns_is.test
index eb5c119baf4..7e40eac0923 100644
--- a/mysql-test/suite/funcs_1/t/is_columns_is.test
+++ b/mysql-test/suite/funcs_1/t/is_columns_is.test
@@ -18,6 +18,8 @@
--source include/not_embedded.inc
# This test depends on having the PBXT information_schema stuff.
--source include/have_pbxt.inc
+--source include/have_innodb.inc
+--source include/have_xtradb.inc
let $my_where = WHERE table_schema = 'information_schema'
AND table_name <> 'profiling';
diff --git a/mysql-test/suite/funcs_1/t/is_engines_innodb.test b/mysql-test/suite/funcs_1/t/is_engines_innodb.test
index 6c20b9697f0..44c7d7652d7 100644
--- a/mysql-test/suite/funcs_1/t/is_engines_innodb.test
+++ b/mysql-test/suite/funcs_1/t/is_engines_innodb.test
@@ -11,5 +11,6 @@
let $engine_type= InnoDB;
--source include/have_innodb.inc
--vertical_results
+--replace_regex /XtraDB engine based on InnoDB plugin. //
eval SELECT * FROM information_schema.engines
WHERE ENGINE = '$engine_type';
diff --git a/mysql-test/suite/funcs_1/t/is_events.test b/mysql-test/suite/funcs_1/t/is_events.test
index 22565840728..400094966b1 100644
--- a/mysql-test/suite/funcs_1/t/is_events.test
+++ b/mysql-test/suite/funcs_1/t/is_events.test
@@ -89,7 +89,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table';
# is associated.
#
eval DESCRIBE information_schema.$is_table;
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
eval SHOW CREATE TABLE information_schema.$is_table;
eval SHOW COLUMNS FROM information_schema.$is_table;
diff --git a/mysql-test/suite/funcs_1/t/is_tables_is.test b/mysql-test/suite/funcs_1/t/is_tables_is.test
index 20ed93ddd07..6401f2d451a 100644
--- a/mysql-test/suite/funcs_1/t/is_tables_is.test
+++ b/mysql-test/suite/funcs_1/t/is_tables_is.test
@@ -13,6 +13,7 @@
#
--source include/not_embedded.inc
+--source include/have_innodb.inc
let $my_where = WHERE table_schema = 'information_schema'
AND table_name <> 'profiling';
--source suite/funcs_1/datadict/tables1.inc
diff --git a/mysql-test/suite/innodb/r/innodb-autoinc-44030.result b/mysql-test/suite/innodb/r/innodb-autoinc-44030.result
index c0695bf0be0..54e972843f5 100644
--- a/mysql-test/suite/innodb/r/innodb-autoinc-44030.result
+++ b/mysql-test/suite/innodb/r/innodb-autoinc-44030.result
@@ -13,18 +13,18 @@ d1
1
2
INSERT INTO t1 VALUES(null);
-Got one of the listed errors
ALTER TABLE t1 AUTO_INCREMENT = 3;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`d1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`d1`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES(null);
SELECT * FROM t1;
d1
1
2
3
+4
DROP TABLE t1;
diff --git a/mysql-test/r/innodb-autoinc-optimize.result b/mysql-test/suite/innodb/r/innodb-autoinc-optimize.result
index c6da43555b2..c6da43555b2 100644
--- a/mysql-test/r/innodb-autoinc-optimize.result
+++ b/mysql-test/suite/innodb/r/innodb-autoinc-optimize.result
diff --git a/mysql-test/r/innodb-ucs2.result b/mysql-test/suite/innodb/r/innodb-ucs2.result
index b6bff7d5f42..b6bff7d5f42 100644
--- a/mysql-test/r/innodb-ucs2.result
+++ b/mysql-test/suite/innodb/r/innodb-ucs2.result
diff --git a/mysql-test/suite/innodb/r/innodb.result b/mysql-test/suite/innodb/r/innodb.result
new file mode 100644
index 00000000000..345da7a0163
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb.result
@@ -0,0 +1,2359 @@
+drop table if exists t1,t2,t3,t4;
+drop database if exists mysqltest;
+create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
+insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
+select id, code, name from t1 order by id;
+id code name
+1 1 Tim
+2 1 Monty
+3 2 David
+4 2 Erik
+5 3 Sasha
+6 3 Jeremy
+7 4 Matt
+update ignore t1 set id = 8, name = 'Sinisa' where id < 3;
+select id, code, name from t1 order by id;
+id code name
+2 1 Monty
+3 2 David
+4 2 Erik
+5 3 Sasha
+6 3 Jeremy
+7 4 Matt
+8 1 Sinisa
+update ignore t1 set id = id + 10, name = 'Ralph' where id < 4;
+select id, code, name from t1 order by id;
+id code name
+3 2 David
+4 2 Erik
+5 3 Sasha
+6 3 Jeremy
+7 4 Matt
+8 1 Sinisa
+12 1 Ralph
+drop table t1;
+CREATE TABLE t1 (
+id int(11) NOT NULL auto_increment,
+parent_id int(11) DEFAULT '0' NOT NULL,
+level tinyint(4) DEFAULT '0' NOT NULL,
+PRIMARY KEY (id),
+KEY parent_id (parent_id),
+KEY level (level)
+) engine=innodb;
+INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2);
+update t1 set parent_id=parent_id+100;
+select * from t1 where parent_id=102;
+id parent_id level
+8 102 2
+9 102 2
+15 102 2
+update t1 set id=id+1000;
+update t1 set id=1024 where id=1009;
+Got one of the listed errors
+select * from t1;
+id parent_id level
+1001 100 0
+1002 101 1
+1003 101 1
+1004 101 1
+1005 101 1
+1006 101 1
+1007 101 1
+1008 102 2
+1009 102 2
+1015 102 2
+1016 103 2
+1017 103 2
+1018 103 2
+1019 103 2
+1020 103 2
+1021 104 2
+1022 104 2
+1024 104 2
+1025 105 2
+1026 105 2
+1027 105 2
+1028 105 2
+1029 105 2
+1030 105 2
+1031 106 2
+1032 106 2
+1033 106 2
+1034 106 2
+1035 106 2
+1036 107 2
+1037 107 2
+1038 107 2
+1040 107 2
+1157 100 0
+1179 105 2
+1183 104 2
+1193 105 2
+1202 107 2
+1203 107 2
+update ignore t1 set id=id+1;
+select * from t1;
+id parent_id level
+1001 100 0
+1002 101 1
+1003 101 1
+1004 101 1
+1005 101 1
+1006 101 1
+1007 101 1
+1008 102 2
+1010 102 2
+1015 102 2
+1016 103 2
+1017 103 2
+1018 103 2
+1019 103 2
+1020 103 2
+1021 104 2
+1023 104 2
+1024 104 2
+1025 105 2
+1026 105 2
+1027 105 2
+1028 105 2
+1029 105 2
+1030 105 2
+1031 106 2
+1032 106 2
+1033 106 2
+1034 106 2
+1035 106 2
+1036 107 2
+1037 107 2
+1039 107 2
+1041 107 2
+1158 100 0
+1180 105 2
+1184 104 2
+1194 105 2
+1202 107 2
+1204 107 2
+update ignore t1 set id=1023 where id=1010;
+select * from t1 where parent_id=102;
+id parent_id level
+1008 102 2
+1010 102 2
+1015 102 2
+explain select level from t1 where level=1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref level level 1 const # Using index
+explain select level,id from t1 where level=1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref level level 1 const # Using index
+explain select level,id,parent_id from t1 where level=1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref level level 1 const #
+select level,id from t1 where level=1;
+level id
+1 1002
+1 1003
+1 1004
+1 1005
+1 1006
+1 1007
+select level,id,parent_id from t1 where level=1;
+level id parent_id
+1 1002 101
+1 1003 101
+1 1004 101
+1 1005 101
+1 1006 101
+1 1007 101
+optimize table t1;
+Table Op Msg_type Msg_text
+test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
+test.t1 optimize status OK
+show keys from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
+t1 0 PRIMARY 1 id A # NULL NULL BTREE
+t1 1 parent_id 1 parent_id A # NULL NULL BTREE
+t1 1 level 1 level A # NULL NULL BTREE
+drop table t1;
+CREATE TABLE t1 (
+gesuchnr int(11) DEFAULT '0' NOT NULL,
+benutzer_id int(11) DEFAULT '0' NOT NULL,
+PRIMARY KEY (gesuchnr,benutzer_id)
+) engine=innodb;
+replace into t1 (gesuchnr,benutzer_id) values (2,1);
+replace into t1 (gesuchnr,benutzer_id) values (1,1);
+replace into t1 (gesuchnr,benutzer_id) values (1,1);
+select * from t1;
+gesuchnr benutzer_id
+1 1
+2 1
+drop table t1;
+create table t1 (a int) engine=innodb;
+insert into t1 values (1), (2);
+optimize table t1;
+Table Op Msg_type Msg_text
+test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
+test.t1 optimize status OK
+delete from t1 where a = 1;
+select * from t1;
+a
+2
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+drop table t1;
+create table t1 (a int,b varchar(20)) engine=innodb;
+insert into t1 values (1,""), (2,"testing");
+delete from t1 where a = 1;
+select * from t1;
+a b
+2 testing
+create index skr on t1 (a);
+insert into t1 values (3,""), (4,"testing");
+analyze table t1;
+Table Op Msg_type Msg_text
+test.t1 analyze status OK
+show keys from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
+t1 1 skr 1 a A # NULL NULL YES BTREE
+drop table t1;
+create table t1 (a int,b varchar(20),key(a)) engine=innodb;
+insert into t1 values (1,""), (2,"testing");
+select * from t1 where a = 1;
+a b
+1
+drop table t1;
+create table t1 (n int not null primary key) engine=innodb;
+set autocommit=0;
+insert into t1 values (4);
+rollback;
+select n, "after rollback" from t1;
+n after rollback
+insert into t1 values (4);
+commit;
+select n, "after commit" from t1;
+n after commit
+4 after commit
+commit;
+insert into t1 values (5);
+insert into t1 values (4);
+ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
+commit;
+select n, "after commit" from t1;
+n after commit
+4 after commit
+5 after commit
+set autocommit=1;
+insert into t1 values (6);
+insert into t1 values (4);
+ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
+select n from t1;
+n
+4
+5
+6
+set autocommit=0;
+begin;
+savepoint `my_savepoint`;
+insert into t1 values (7);
+savepoint `savept2`;
+insert into t1 values (3);
+select n from t1;
+n
+3
+4
+5
+6
+7
+savepoint savept3;
+rollback to savepoint savept2;
+rollback to savepoint savept3;
+ERROR 42000: SAVEPOINT savept3 does not exist
+rollback to savepoint savept2;
+release savepoint `my_savepoint`;
+select n from t1;
+n
+4
+5
+6
+7
+rollback to savepoint `my_savepoint`;
+ERROR 42000: SAVEPOINT my_savepoint does not exist
+rollback to savepoint savept2;
+ERROR 42000: SAVEPOINT savept2 does not exist
+insert into t1 values (8);
+savepoint sv;
+commit;
+savepoint sv;
+set autocommit=1;
+rollback;
+drop table t1;
+create table t1 (n int not null primary key) engine=innodb;
+start transaction;
+insert into t1 values (4);
+flush tables with read lock;
+commit;
+unlock tables;
+commit;
+select * from t1;
+n
+4
+drop table t1;
+create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) engine=innodb;
+begin;
+insert into t1 values(1,'hamdouni');
+select id as afterbegin_id,nom as afterbegin_nom from t1;
+afterbegin_id afterbegin_nom
+1 hamdouni
+rollback;
+select id as afterrollback_id,nom as afterrollback_nom from t1;
+afterrollback_id afterrollback_nom
+set autocommit=0;
+insert into t1 values(2,'mysql');
+select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;
+afterautocommit0_id afterautocommit0_nom
+2 mysql
+rollback;
+select id as afterrollback_id,nom as afterrollback_nom from t1;
+afterrollback_id afterrollback_nom
+set autocommit=1;
+drop table t1;
+CREATE TABLE t1 (id char(8) not null primary key, val int not null) engine=innodb;
+insert into t1 values ('pippo', 12);
+insert into t1 values ('pippo', 12);
+ERROR 23000: Duplicate entry 'pippo' for key 'PRIMARY'
+delete from t1;
+delete from t1 where id = 'pippo';
+select * from t1;
+id val
+insert into t1 values ('pippo', 12);
+set autocommit=0;
+delete from t1;
+rollback;
+select * from t1;
+id val
+pippo 12
+delete from t1;
+commit;
+select * from t1;
+id val
+drop table t1;
+create table t1 (a integer) engine=innodb;
+start transaction;
+rename table t1 to t2;
+create table t1 (b integer) engine=innodb;
+insert into t1 values (1);
+rollback;
+drop table t1;
+rename table t2 to t1;
+drop table t1;
+set autocommit=1;
+CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) ENGINE=innodb;
+INSERT INTO t1 VALUES (1, 'Jochen');
+select * from t1;
+ID NAME
+1 Jochen
+drop table t1;
+CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) ENGINE=innodb;
+set autocommit=0;
+INSERT INTO t1 SET _userid='marc@anyware.co.uk';
+COMMIT;
+SELECT * FROM t1;
+_userid
+marc@anyware.co.uk
+SELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';
+_userid
+marc@anyware.co.uk
+drop table t1;
+set autocommit=1;
+CREATE TABLE t1 (
+user_id int(10) DEFAULT '0' NOT NULL,
+name varchar(100),
+phone varchar(100),
+ref_email varchar(100) DEFAULT '' NOT NULL,
+detail varchar(200),
+PRIMARY KEY (user_id,ref_email)
+)engine=innodb;
+INSERT INTO t1 VALUES (10292,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10292,'shirish','2333604','shirish@yahoo.com','ddsds'),(10292,'sonali','323232','sonali@bolly.com','filmstar');
+select * from t1 where user_id=10292;
+user_id name phone ref_email detail
+10292 sanjeev 29153373 sansh777@hotmail.com xxx
+10292 shirish 2333604 shirish@yahoo.com ddsds
+10292 sonali 323232 sonali@bolly.com filmstar
+INSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');
+select * from t1 where user_id=10292;
+user_id name phone ref_email detail
+10292 sanjeev 29153373 sansh777@hotmail.com xxx
+10292 shirish 2333604 shirish@yahoo.com ddsds
+10292 sonali 323232 sonali@bolly.com filmstar
+select * from t1 where user_id>=10292;
+user_id name phone ref_email detail
+10292 sanjeev 29153373 sansh777@hotmail.com xxx
+10292 shirish 2333604 shirish@yahoo.com ddsds
+10292 sonali 323232 sonali@bolly.com filmstar
+10293 shirish 2333604 shirish@yahoo.com ddsds
+select * from t1 where user_id>10292;
+user_id name phone ref_email detail
+10293 shirish 2333604 shirish@yahoo.com ddsds
+select * from t1 where user_id<10292;
+user_id name phone ref_email detail
+10291 sanjeev 29153373 sansh777@hotmail.com xxx
+drop table t1;
+CREATE TABLE t1 (a int not null, b int not null,c int not null,
+key(a),primary key(a,b), unique(c),key(a),unique(b));
+show index from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
+t1 0 PRIMARY 1 a A # NULL NULL BTREE
+t1 0 PRIMARY 2 b A # NULL NULL BTREE
+t1 0 c 1 c A # NULL NULL BTREE
+t1 0 b 1 b A # NULL NULL BTREE
+t1 1 a 1 a A # NULL NULL BTREE
+t1 1 a_2 1 a A # NULL NULL BTREE
+drop table t1;
+create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));
+alter table t1 engine=innodb;
+insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
+select * from t1;
+col1 col2
+1 1
+2 3
+3 4
+4 4
+5 2
+update t1 set col2='7' where col1='4';
+select * from t1;
+col1 col2
+1 1
+2 3
+3 4
+4 7
+5 2
+alter table t1 add co3 int not null;
+select * from t1;
+col1 col2 co3
+1 1 0
+2 3 0
+3 4 0
+4 7 0
+5 2 0
+update t1 set col2='9' where col1='2';
+select * from t1;
+col1 col2 co3
+1 1 0
+2 9 0
+3 4 0
+4 7 0
+5 2 0
+drop table t1;
+create table t1 (a int not null , b int, primary key (a)) engine = innodb;
+create table t2 (a int not null , b int, primary key (a)) engine = myisam;
+insert into t1 VALUES (1,3) , (2,3), (3,3);
+select * from t1;
+a b
+1 3
+2 3
+3 3
+insert into t2 select * from t1;
+select * from t2;
+a b
+1 3
+2 3
+3 3
+delete from t1 where b = 3;
+select * from t1;
+a b
+insert into t1 select * from t2;
+select * from t1;
+a b
+1 3
+2 3
+3 3
+select * from t2;
+a b
+1 3
+2 3
+3 3
+drop table t1,t2;
+CREATE TABLE t1 (
+user_name varchar(12),
+password text,
+subscribed char(1),
+user_id int(11) DEFAULT '0' NOT NULL,
+quota bigint(20),
+weight double,
+access_date date,
+access_time time,
+approved datetime,
+dummy_primary_key int(11) NOT NULL auto_increment,
+PRIMARY KEY (dummy_primary_key)
+) ENGINE=innodb;
+INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);
+INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);
+INSERT INTO t1 VALUES ('user_2','somepassword','N',2,2,1.4142135623731,'2000-09-07','23:06:59','2000-09-07 23:06:59',3);
+INSERT INTO t1 VALUES ('user_3','somepassword','Y',3,3,1.7320508075689,'2000-09-07','23:06:59','2000-09-07 23:06:59',4);
+INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);
+select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;
+user_name password subscribed user_id quota weight access_date access_time approved dummy_primary_key
+user_0 somepassword N 0 0 0 2000-09-07 23:06:59 2000-09-07 23:06:59 1
+user_1 somepassword Y 1 1 1 2000-09-07 23:06:59 2000-09-07 23:06:59 2
+user_2 somepassword N 2 2 1.4142135623731 2000-09-07 23:06:59 2000-09-07 23:06:59 3
+user_3 somepassword Y 3 3 1.7320508075689 2000-09-07 23:06:59 2000-09-07 23:06:59 4
+user_4 somepassword N 4 4 2 2000-09-07 23:06:59 2000-09-07 23:06:59 5
+drop table t1;
+CREATE TABLE t1 (
+id int(11) NOT NULL auto_increment,
+parent_id int(11) DEFAULT '0' NOT NULL,
+level tinyint(4) DEFAULT '0' NOT NULL,
+KEY (id),
+KEY parent_id (parent_id),
+KEY level (level)
+) engine=innodb;
+INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1);
+INSERT INTO t1 values (179,5,2);
+update t1 set parent_id=parent_id+100;
+select * from t1 where parent_id=102;
+id parent_id level
+8 102 2
+9 102 2
+15 102 2
+update t1 set id=id+1000;
+update t1 set id=1024 where id=1009;
+select * from t1;
+id parent_id level
+1001 100 0
+1003 101 1
+1004 101 1
+1008 102 2
+1024 102 2
+1017 103 2
+1022 104 2
+1024 104 2
+1028 105 2
+1029 105 2
+1030 105 2
+1031 106 2
+1032 106 2
+1033 106 2
+1203 107 2
+1202 107 2
+1020 103 2
+1157 100 0
+1193 105 2
+1040 107 2
+1002 101 1
+1015 102 2
+1006 101 1
+1034 106 2
+1035 106 2
+1016 103 2
+1007 101 1
+1036 107 2
+1018 103 2
+1026 105 2
+1027 105 2
+1183 104 2
+1038 107 2
+1025 105 2
+1037 107 2
+1021 104 2
+1019 103 2
+1005 101 1
+1179 105 2
+update ignore t1 set id=id+1;
+select * from t1;
+id parent_id level
+1002 100 0
+1004 101 1
+1005 101 1
+1009 102 2
+1025 102 2
+1018 103 2
+1023 104 2
+1025 104 2
+1029 105 2
+1030 105 2
+1031 105 2
+1032 106 2
+1033 106 2
+1034 106 2
+1204 107 2
+1203 107 2
+1021 103 2
+1158 100 0
+1194 105 2
+1041 107 2
+1003 101 1
+1016 102 2
+1007 101 1
+1035 106 2
+1036 106 2
+1017 103 2
+1008 101 1
+1037 107 2
+1019 103 2
+1027 105 2
+1028 105 2
+1184 104 2
+1039 107 2
+1026 105 2
+1038 107 2
+1022 104 2
+1020 103 2
+1006 101 1
+1180 105 2
+update ignore t1 set id=1023 where id=1010;
+select * from t1 where parent_id=102;
+id parent_id level
+1009 102 2
+1025 102 2
+1016 102 2
+explain select level from t1 where level=1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref level level 1 const # Using index
+select level,id from t1 where level=1;
+level id
+1 1004
+1 1005
+1 1003
+1 1007
+1 1008
+1 1006
+select level,id,parent_id from t1 where level=1;
+level id parent_id
+1 1004 101
+1 1005 101
+1 1003 101
+1 1007 101
+1 1008 101
+1 1006 101
+select level,id from t1 where level=1 order by id;
+level id
+1 1003
+1 1004
+1 1005
+1 1006
+1 1007
+1 1008
+delete from t1 where level=1;
+select * from t1;
+id parent_id level
+1002 100 0
+1009 102 2
+1025 102 2
+1018 103 2
+1023 104 2
+1025 104 2
+1029 105 2
+1030 105 2
+1031 105 2
+1032 106 2
+1033 106 2
+1034 106 2
+1204 107 2
+1203 107 2
+1021 103 2
+1158 100 0
+1194 105 2
+1041 107 2
+1016 102 2
+1035 106 2
+1036 106 2
+1017 103 2
+1037 107 2
+1019 103 2
+1027 105 2
+1028 105 2
+1184 104 2
+1039 107 2
+1026 105 2
+1038 107 2
+1022 104 2
+1020 103 2
+1180 105 2
+drop table t1;
+CREATE TABLE t1 (
+sca_code char(6) NOT NULL,
+cat_code char(6) NOT NULL,
+sca_desc varchar(50),
+lan_code char(2) NOT NULL,
+sca_pic varchar(100),
+sca_sdesc varchar(50),
+sca_sch_desc varchar(16),
+PRIMARY KEY (sca_code, cat_code, lan_code),
+INDEX sca_pic (sca_pic)
+) engine = innodb ;
+INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING');
+select count(*) from t1 where sca_code = 'PD';
+count(*)
+1
+select count(*) from t1 where sca_code <= 'PD';
+count(*)
+1
+select count(*) from t1 where sca_pic is null;
+count(*)
+2
+alter table t1 drop index sca_pic;
+alter table t1 add index sca_pic (cat_code, sca_pic);
+select count(*) from t1 where sca_code='PD' and sca_pic is null;
+count(*)
+1
+select count(*) from t1 where cat_code='E';
+count(*)
+0
+alter table t1 drop index sca_pic;
+alter table t1 add index (sca_pic, cat_code);
+select count(*) from t1 where sca_code='PD' and sca_pic is null;
+count(*)
+1
+select count(*) from t1 where sca_pic >= 'n';
+count(*)
+1
+select sca_pic from t1 where sca_pic is null;
+sca_pic
+NULL
+NULL
+update t1 set sca_pic="test" where sca_pic is null;
+delete from t1 where sca_code='pd';
+drop table t1;
+set @a:=now();
+CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb;
+insert into t1 (a) values(1),(2),(3);
+select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
+a
+1
+2
+3
+select a from t1 natural join t1 as t2 where b >= @a order by a;
+a
+1
+2
+3
+update t1 set a=5 where a=1;
+select a from t1;
+a
+2
+3
+5
+drop table t1;
+create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=innodb;
+insert into t1 values("hello",1),("world",2);
+select * from t1 order by b desc;
+a b
+world 2
+hello 1
+optimize table t1;
+Table Op Msg_type Msg_text
+test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
+test.t1 optimize status OK
+show keys from t1;
+Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
+t1 0 PRIMARY 1 a A # NULL NULL BTREE
+drop table t1;
+create table t1 (i int, j int ) ENGINE=innodb;
+insert into t1 values (1,2);
+select * from t1 where i=1 and j=2;
+i j
+1 2
+create index ax1 on t1 (i,j);
+select * from t1 where i=1 and j=2;
+i j
+1 2
+drop table t1;
+CREATE TABLE t1 (
+a int3 unsigned NOT NULL,
+b int1 unsigned NOT NULL,
+UNIQUE (a, b)
+) ENGINE = innodb;
+INSERT INTO t1 VALUES (1, 1);
+SELECT MIN(B),MAX(b) FROM t1 WHERE t1.a = 1;
+MIN(B) MAX(b)
+1 1
+drop table t1;
+CREATE TABLE t1 (a int unsigned NOT NULL) engine=innodb;
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1;
+a
+1
+DROP TABLE t1;
+create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h int, i int, j int, k int, l int, m int, n int, o int, p int, q int, r int, s int, t int, u int, v int, w int, x int, y int, z int, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int) engine = innodb;
+insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+explain select * from t1 where a > 0 and a < 50;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using where
+drop table t1;
+create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
+insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
+LOCK TABLES t1 WRITE;
+insert into t1 values (99,1,2,'D'),(1,1,2,'D');
+ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
+select id from t1;
+id
+0
+1
+2
+select id from t1;
+id
+0
+1
+2
+UNLOCK TABLES;
+DROP TABLE t1;
+create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
+insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
+LOCK TABLES t1 WRITE;
+begin;
+insert into t1 values (99,1,2,'D'),(1,1,2,'D');
+ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
+select id from t1;
+id
+0
+1
+2
+insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
+commit;
+select id,id3 from t1;
+id id3
+0 0
+1 1
+2 2
+100 2
+UNLOCK TABLES;
+DROP TABLE t1;
+create table t1 (a char(20), unique (a(5))) engine=innodb;
+drop table t1;
+create table t1 (a char(20), index (a(5))) engine=innodb;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(20) DEFAULT NULL,
+ KEY `a` (`a`(5))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t1;
+create temporary table t1 (a int not null auto_increment, primary key(a)) engine=innodb;
+insert into t1 values (NULL),(NULL),(NULL);
+delete from t1 where a=3;
+insert into t1 values (NULL);
+select * from t1;
+a
+1
+2
+4
+alter table t1 add b int;
+select * from t1;
+a b
+1 NULL
+2 NULL
+4 NULL
+drop table t1;
+create table t1
+(
+id int auto_increment primary key,
+name varchar(32) not null,
+value text not null,
+uid int not null,
+unique key(name,uid)
+) engine=innodb;
+insert into t1 values (1,'one','one value',101),
+(2,'two','two value',102),(3,'three','three value',103);
+set insert_id=5;
+replace into t1 (value,name,uid) values ('other value','two',102);
+delete from t1 where uid=102;
+set insert_id=5;
+replace into t1 (value,name,uid) values ('other value','two',102);
+set insert_id=6;
+replace into t1 (value,name,uid) values ('other value','two',102);
+select * from t1;
+id name value uid
+1 one one value 101
+3 three three value 103
+6 two other value 102
+drop table t1;
+create database mysqltest;
+create table mysqltest.t1 (a int not null) engine= innodb;
+insert into mysqltest.t1 values(1);
+create table mysqltest.t2 (a int not null) engine= myisam;
+insert into mysqltest.t2 values(1);
+create table mysqltest.t3 (a int not null) engine= heap;
+insert into mysqltest.t3 values(1);
+commit;
+drop database mysqltest;
+show tables from mysqltest;
+ERROR 42000: Unknown database 'mysqltest'
+set autocommit=0;
+create table t1 (a int not null) engine= innodb;
+insert into t1 values(1),(2);
+truncate table t1;
+commit;
+truncate table t1;
+truncate table t1;
+select * from t1;
+a
+insert into t1 values(1),(2);
+delete from t1;
+select * from t1;
+a
+commit;
+drop table t1;
+set autocommit=1;
+create table t1 (a int not null) engine= innodb;
+insert into t1 values(1),(2);
+truncate table t1;
+insert into t1 values(1),(2);
+select * from t1;
+a
+1
+2
+truncate table t1;
+insert into t1 values(1),(2);
+delete from t1;
+select * from t1;
+a
+drop table t1;
+create table t1 (a int not null, b int not null, c int not null, primary key (a),key(b)) engine=innodb;
+insert into t1 values (3,3,3),(1,1,1),(2,2,2),(4,4,4);
+explain select * from t1 order by a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL PRIMARY 4 NULL #
+explain select * from t1 order by b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
+explain select * from t1 order by c;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL # Using filesort
+explain select a from t1 order by a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL PRIMARY 4 NULL # Using index
+explain select b from t1 order by b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL b 4 NULL # Using index
+explain select a,b from t1 order by b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL b 4 NULL # Using index
+explain select a,b from t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL b 4 NULL # Using index
+explain select a,b,c from t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL #
+drop table t1;
+create table t1 (t int not null default 1, key (t)) engine=innodb;
+desc t1;
+Field Type Null Key Default Extra
+t int(11) NO MUL 1
+drop table t1;
+CREATE TABLE t1 (
+number bigint(20) NOT NULL default '0',
+cname char(15) NOT NULL default '',
+carrier_id smallint(6) NOT NULL default '0',
+privacy tinyint(4) NOT NULL default '0',
+last_mod_date timestamp NOT NULL,
+last_mod_id smallint(6) NOT NULL default '0',
+last_app_date timestamp NOT NULL,
+last_app_id smallint(6) default '-1',
+version smallint(6) NOT NULL default '0',
+assigned_scps int(11) default '0',
+status tinyint(4) default '0'
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,00000000000000,-1,2,3,1);
+INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);
+INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,00000000000000,-1,1,24,1);
+INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);
+INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);
+INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);
+CREATE TABLE t2 (
+number bigint(20) NOT NULL default '0',
+cname char(15) NOT NULL default '',
+carrier_id smallint(6) NOT NULL default '0',
+privacy tinyint(4) NOT NULL default '0',
+last_mod_date timestamp NOT NULL,
+last_mod_id smallint(6) NOT NULL default '0',
+last_app_date timestamp NOT NULL,
+last_app_id smallint(6) default '-1',
+version smallint(6) NOT NULL default '0',
+assigned_scps int(11) default '0',
+status tinyint(4) default '0'
+) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,00000000000000,-1,2,3,1);
+INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);
+INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,00000000000000,-1,1,24,1);
+INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);
+select * from t1;
+number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
+4077711111 SeanWheeler 90 2 2002-01-11 11:28:46 500 0000-00-00 00:00:00 -1 2 3 1
+9197722223 berry 90 3 2002-01-11 11:28:09 500 2002-01-02 11:45:32 501 4 10 0
+650 San Francisco 0 0 2001-12-27 11:13:36 342 0000-00-00 00:00:00 -1 1 24 1
+302467 Sue's Subshop 90 3 2002-01-09 11:32:41 500 2002-01-02 11:51:11 501 7 24 0
+6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0
+333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0
+select * from t2;
+number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
+4077711111 SeanWheeler 0 2 2002-01-11 11:28:53 500 0000-00-00 00:00:00 -1 2 3 1
+9197722223 berry 90 3 2002-01-11 11:28:18 500 2002-01-02 11:45:32 501 4 10 0
+650 San Francisco 90 0 2002-01-09 11:31:58 342 0000-00-00 00:00:00 -1 1 24 1
+333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
+delete t1, t2 from t1 left join t2 on t1.number=t2.number where (t1.carrier_id=90 and t1.number=t2.number) or (t2.carrier_id=90 and t1.number=t2.number) or (t1.carrier_id=90 and t2.number is null);
+select * from t1;
+number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
+6014911113 SudzCarwash 520 1 2002-01-02 11:52:34 500 2002-01-02 11:52:59 501 33 32768 0
+333 tubs 99 2 2002-01-09 11:34:40 501 2002-01-09 11:34:40 500 3 10 0
+select * from t2;
+number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
+333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
+select * from t2;
+number cname carrier_id privacy last_mod_date last_mod_id last_app_date last_app_id version assigned_scps status
+333 tubs 99 2 2002-01-09 11:34:53 501 2002-01-09 11:34:53 500 3 10 0
+drop table t1,t2;
+create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
+BEGIN;
+SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SELECT @@tx_isolation,@@global.tx_isolation;
+@@tx_isolation @@global.tx_isolation
+SERIALIZABLE REPEATABLE-READ
+insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David');
+select id, code, name from t1 order by id;
+id code name
+1 1 Tim
+2 1 Monty
+3 2 David
+COMMIT;
+BEGIN;
+SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
+insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha');
+select id, code, name from t1 order by id;
+id code name
+1 1 Tim
+2 1 Monty
+3 2 David
+4 2 Erik
+5 3 Sasha
+COMMIT;
+SET binlog_format='MIXED';
+BEGIN;
+SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');
+select id, code, name from t1 order by id;
+id code name
+1 1 Tim
+2 1 Monty
+3 2 David
+4 2 Erik
+5 3 Sasha
+6 3 Jeremy
+7 4 Matt
+COMMIT;
+DROP TABLE t1;
+create table t1 (n int(10), d int(10)) engine=innodb;
+create table t2 (n int(10), d int(10)) engine=innodb;
+insert into t1 values(1,1),(1,2);
+insert into t2 values(1,10),(2,20);
+UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
+select * from t1;
+n d
+1 10
+1 10
+select * from t2;
+n d
+1 30
+2 20
+drop table t1,t2;
+drop table if exists t1, t2;
+CREATE TABLE t1 (a int, PRIMARY KEY (a));
+CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
+create trigger trg_del_t2 after delete on t2 for each row
+insert into t1 values (1);
+insert into t1 values (1);
+insert into t2 values (1),(2);
+delete t2 from t2;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
+count(*)
+2
+drop table t1, t2;
+drop table if exists t1, t2;
+CREATE TABLE t1 (a int, PRIMARY KEY (a));
+CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
+create trigger trg_del_t2 after delete on t2 for each row
+insert into t1 values (1);
+insert into t1 values (1);
+insert into t2 values (1),(2);
+delete t2 from t2;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
+count(*)
+2
+drop table t1, t2;
+create table t1 (a int, b int) engine=innodb;
+insert into t1 values(20,null);
+select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
+t2.b=t3.a;
+b ifnull(t2.b,"this is null")
+NULL this is null
+select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
+t2.b=t3.a order by 1;
+b ifnull(t2.b,"this is null")
+NULL this is null
+insert into t1 values(10,null);
+select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
+t2.b=t3.a order by 1;
+b ifnull(t2.b,"this is null")
+NULL this is null
+NULL this is null
+drop table t1;
+create table t1 (a varchar(10) not null) engine=myisam;
+create table t2 (b varchar(10) not null unique) engine=innodb;
+select t1.a from t1,t2 where t1.a=t2.b;
+a
+drop table t1,t2;
+create table t1 (a int not null, b int, primary key (a)) engine = innodb;
+create table t2 (a int not null, b int, primary key (a)) engine = innodb;
+insert into t1 values (10, 20);
+insert into t2 values (10, 20);
+update t1, t2 set t1.b = 150, t2.b = t1.b where t2.a = t1.a and t1.a = 10;
+drop table t1,t2;
+CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE ) ENGINE=INNODB;
+insert into t1 set id=1;
+insert into t2 set id=1, t1_id=1;
+delete t1,t2 from t1,t2 where t1.id=t2.t1_id;
+select * from t1;
+id
+select * from t2;
+id t1_id
+drop table t2,t1;
+CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
+CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=INNODB;
+INSERT INTO t1 VALUES(1);
+INSERT INTO t2 VALUES(1, 1);
+SELECT * from t1;
+id
+1
+UPDATE t1,t2 SET t1.id=t1.id+1, t2.t1_id=t1.id+1;
+SELECT * from t1;
+id
+2
+UPDATE t1,t2 SET t1.id=t1.id+1 where t1.id!=t2.id;
+SELECT * from t1;
+id
+3
+DROP TABLE t1,t2;
+set autocommit=0;
+CREATE TABLE t1 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
+CREATE TABLE t2 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
+CREATE TABLE t3 (id1 CHAR(15) NOT NULL, id2 CHAR(15) NOT NULL, PRIMARY KEY(id1, id2)) ENGINE=InnoDB;
+INSERT INTO t3 VALUES("my-test-1", "my-test-2");
+COMMIT;
+INSERT INTO t1 VALUES("this-key", "will disappear");
+INSERT INTO t2 VALUES("this-key", "will also disappear");
+DELETE FROM t3 WHERE id1="my-test-1";
+SELECT * FROM t1;
+id value
+this-key will disappear
+SELECT * FROM t2;
+id value
+this-key will also disappear
+SELECT * FROM t3;
+id1 id2
+ROLLBACK;
+SELECT * FROM t1;
+id value
+SELECT * FROM t2;
+id value
+SELECT * FROM t3;
+id1 id2
+my-test-1 my-test-2
+SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;
+id1 id2
+my-test-1 my-test-2
+COMMIT;
+set autocommit=1;
+DROP TABLE t1,t2,t3;
+CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) engine=innodb;
+INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
+UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
+SELECT * from t1;
+a b
+1 1
+102 2
+103 3
+4 4
+5 5
+6 6
+7 7
+8 8
+9 9
+drop table t1;
+CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
+CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
+SET AUTOCOMMIT=0;
+INSERT INTO t1 ( B_ID ) VALUES ( 1 );
+INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+SELECT * FROM t1;
+B_ID
+drop table t1,t2;
+create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = innodb;
+insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);
+select distinct parent,child from t1 order by parent;
+parent child
+0 4
+1 2
+1 3
+2 1
+drop table t1;
+create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=innodb;
+create table t2 (a int not null auto_increment primary key, b int);
+insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);
+insert into t2 (a) select b from t1;
+insert into t1 (b) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+select count(*) from t1;
+count(*)
+623
+explain select * from t1 where c between 1 and 2500;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range c c 5 NULL # Using where
+update t1 set c=a;
+explain select * from t1 where c between 1 and 2500;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL c NULL NULL NULL # Using where
+drop table t1,t2;
+create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=innodb;
+insert into t1 (id) values (null),(null),(null),(null),(null);
+update t1 set fk=69 where fk is null order by id limit 1;
+SELECT * from t1;
+id fk
+2 NULL
+3 NULL
+4 NULL
+5 NULL
+1 69
+drop table t1;
+create table t1 (a int not null, b int not null, key (a));
+insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
+SET @tmp=0;
+update t1 set b=(@tmp:=@tmp+1) order by a;
+update t1 set b=99 where a=1 order by b asc limit 1;
+update t1 set b=100 where a=1 order by b desc limit 2;
+update t1 set a=a+10+b where a=1 order by b;
+select * from t1 order by a,b;
+a b
+2 4
+2 5
+2 6
+3 7
+3 8
+3 9
+3 10
+3 11
+3 12
+13 2
+111 100
+111 100
+drop table t1;
+create table t1 ( c char(8) not null ) engine=innodb;
+insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
+insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
+alter table t1 add b char(8) not null;
+alter table t1 add a char(8) not null;
+alter table t1 add primary key (a,b,c);
+update t1 set a=c, b=c;
+create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=innodb;
+insert into t2 select * from t1;
+delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
+drop table t1,t2;
+SET AUTOCOMMIT=1;
+create table t1 (a integer auto_increment primary key) engine=innodb;
+insert into t1 (a) values (NULL),(NULL);
+truncate table t1;
+insert into t1 (a) values (NULL),(NULL);
+SELECT * from t1;
+a
+1
+2
+drop table t1;
+CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;
+drop table t2,t1;
+create table `t1` (`id` int( 11 ) not null ,primary key ( `id` )) engine = innodb;
+insert into `t1`values ( 1 ) ;
+create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = innodb;
+insert into `t2`values ( 1 ) ;
+create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb;
+insert into `t3`values ( 1 ) ;
+delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
+update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`))
+update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
+ERROR 42S22: Unknown column 't1.id' in 'where clause'
+drop table t3,t2,t1;
+create table t1(
+id int primary key,
+pid int,
+index(pid),
+foreign key(pid) references t1(id) on delete cascade) engine=innodb;
+insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6),
+(8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14);
+delete from t1 where id=0;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `t1` (`id`) ON DELETE CASCADE)
+delete from t1 where id=15;
+delete from t1 where id=0;
+drop table t1;
+CREATE TABLE t1 (col1 int(1))ENGINE=InnoDB;
+CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
+(stamp))ENGINE=InnoDB;
+insert into t1 values (1),(2),(3);
+insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);
+Warnings:
+Warning 1265 Data truncated for column 'stamp' at row 3
+SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <
+'20020204120000' GROUP BY col1;
+col1
+1
+2
+3
+4
+drop table t1,t2;
+CREATE TABLE t1 (
+`id` int(10) unsigned NOT NULL auto_increment,
+`id_object` int(10) unsigned default '0',
+`id_version` int(10) unsigned NOT NULL default '1',
+`label` varchar(100) NOT NULL default '',
+`description` text,
+PRIMARY KEY (`id`),
+KEY `id_object` (`id_object`),
+KEY `id_version` (`id_version`)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES("6", "3382", "9", "Test", NULL), ("7", "102", "5", "Le Pekin (Test)", NULL),("584", "1794", "4", "Test de resto", NULL),("837", "1822", "6", "Test 3", NULL),("1119", "3524", "1", "Societe Test", NULL),("1122", "3525", "1", "Fournisseur Test", NULL);
+CREATE TABLE t2 (
+`id` int(10) unsigned NOT NULL auto_increment,
+`id_version` int(10) unsigned NOT NULL default '1',
+PRIMARY KEY (`id`),
+KEY `id_version` (`id_version`)
+) ENGINE=InnoDB;
+INSERT INTO t2 VALUES("3524", "1"),("3525", "1"),("1794", "4"),("102", "5"),("1822", "6"),("3382", "9");
+SELECT t2.id, t1.`label` FROM t2 INNER JOIN
+(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl
+ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
+id label
+3382 Test
+102 Le Pekin (Test)
+1794 Test de resto
+1822 Test 3
+3524 Societe Test
+3525 Fournisseur Test
+drop table t1,t2;
+create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=myisam;
+create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=innodb;
+create table t3 (a int, b varchar(200), c text not null) checksum=1 engine=innodb;
+insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");
+insert t2 select * from t1;
+insert t3 select * from t1;
+checksum table t1, t2, t3, t4 quick;
+Table Checksum
+test.t1 3442722830
+test.t2 NULL
+test.t3 NULL
+test.t4 NULL
+Warnings:
+Error 1146 Table 'test.t4' doesn't exist
+checksum table t1, t2, t3, t4;
+Table Checksum
+test.t1 3442722830
+test.t2 3442722830
+test.t3 3442722830
+test.t4 NULL
+Warnings:
+Error 1146 Table 'test.t4' doesn't exist
+checksum table t1, t2, t3, t4 extended;
+Table Checksum
+test.t1 3442722830
+test.t2 3442722830
+test.t3 3442722830
+test.t4 NULL
+Warnings:
+Error 1146 Table 'test.t4' doesn't exist
+drop table t1,t2,t3;
+create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
+insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
+select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
+trim(name2)
+fff
+sss
+ttt
+first
+second
+third
+1
+2
+3
+drop table t1;
+create table t1 (a int) engine=innodb;
+create table t2 like t1;
+drop table t1,t2;
+create table t1 (id int(11) not null, id2 int(11) not null, unique (id,id2)) engine=innodb;
+create table t2 (id int(11) not null, constraint t1_id_fk foreign key ( id ) references t1 (id)) engine = innodb;
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `id` int(11) NOT NULL,
+ `id2` int(11) NOT NULL,
+ UNIQUE KEY `id` (`id`,`id2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ KEY `t1_id_fk` (`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+create index id on t2 (id);
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ KEY `id` (`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+create index id2 on t2 (id);
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ KEY `id` (`id`),
+ KEY `id2` (`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop index id2 on t2;
+drop index id on t2;
+ERROR HY000: Cannot drop index 'id': needed in a foreign key constraint
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ KEY `id` (`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `id2` int(11) NOT NULL,
+ KEY `t1_id_fk` (`id`,`id2`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+create unique index id on t2 (id,id2);
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `id2` int(11) NOT NULL,
+ UNIQUE KEY `id` (`id`,`id2`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`, `id2`) REFERENCES `t1` (`id`, `id2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `id2` int(11) NOT NULL,
+ UNIQUE KEY `id` (`id`,`id2`),
+ KEY `t1_id_fk` (`id2`,`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `id2` int(11) NOT NULL,
+ UNIQUE KEY `id` (`id`,`id2`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `id2` int(11) NOT NULL,
+ UNIQUE KEY `id` (`id`,`id2`),
+ KEY `t1_id_fk` (`id2`,`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id2`, `id`) REFERENCES `t1` (`id`, `id2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `id2` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `id` (`id`,`id2`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `id2` int(11) NOT NULL,
+ KEY `t1_id_fk` (`id`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+alter table t2 add index id_test (id), add index id_test2 (id,id2);
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `id2` int(11) NOT NULL,
+ KEY `id_test` (`id`),
+ KEY `id_test2` (`id`,`id2`),
+ CONSTRAINT `t1_id_fk` FOREIGN KEY (`id`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
+ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't match
+create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) NOT NULL AUTO_INCREMENT,
+ `b` int(11) DEFAULT NULL,
+ PRIMARY KEY (`a`),
+ UNIQUE KEY `b_2` (`b`),
+ KEY `b` (`b`),
+ CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2;
+create table t2 (a int auto_increment primary key, b int, foreign key (b) references t1(id), foreign key (b) references t1(id), unique(b)) engine=innodb;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `a` int(11) NOT NULL AUTO_INCREMENT,
+ `b` int(11) DEFAULT NULL,
+ PRIMARY KEY (`a`),
+ UNIQUE KEY `b` (`b`),
+ CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`b`) REFERENCES `t1` (`id`),
+ CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`b`) REFERENCES `t1` (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t2, t1;
+create table t1 (c char(10), index (c,c)) engine=innodb;
+ERROR 42S21: Duplicate column name 'c'
+create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;
+ERROR 42S21: Duplicate column name 'c1'
+create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;
+ERROR 42S21: Duplicate column name 'c1'
+create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;
+ERROR 42S21: Duplicate column name 'c1'
+create table t1 (c1 char(10), c2 char(10)) engine=innodb;
+alter table t1 add key (c1,c1);
+ERROR 42S21: Duplicate column name 'c1'
+alter table t1 add key (c2,c1,c1);
+ERROR 42S21: Duplicate column name 'c1'
+alter table t1 add key (c1,c2,c1);
+ERROR 42S21: Duplicate column name 'c1'
+alter table t1 add key (c1,c1,c2);
+ERROR 42S21: Duplicate column name 'c1'
+drop table t1;
+create table t1(a int(1) , b int(1)) engine=innodb;
+insert into t1 values ('1111', '3333');
+select distinct concat(a, b) from t1;
+concat(a, b)
+11113333
+drop table t1;
+CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB;
+SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE);
+ERROR HY000: The used table type doesn't support FULLTEXT indexes
+DROP TABLE t1;
+CREATE TABLE t1 (a_id tinyint(4) NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+INSERT INTO t1 VALUES (1),(2),(3);
+CREATE TABLE t2 (b_id tinyint(4) NOT NULL default '0',b_a tinyint(4) NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
+CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);
+SELECT * FROM (SELECT t1.*,GROUP_CONCAT(t2.b_id SEPARATOR ',') as b_list FROM (t1 LEFT JOIN (t2) on t1.a_id = t2.b_a) GROUP BY t1.a_id ) AS xyz;
+a_id b_list
+1 1,2,3
+2 4,5
+3 NULL
+DROP TABLE t2;
+DROP TABLE t1;
+create temporary table t1 (a int) engine=innodb;
+insert into t1 values (4711);
+truncate t1;
+insert into t1 values (42);
+select * from t1;
+a
+42
+drop table t1;
+create table t1 (a int) engine=innodb;
+insert into t1 values (4711);
+truncate t1;
+insert into t1 values (42);
+select * from t1;
+a
+42
+drop table t1;
+create table t1 (a int not null, b int not null, c blob not null, d int not null, e int, primary key (a,b,c(255),d)) engine=innodb;
+insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);
+select * from t1 order by a,b,c,d;
+a b c d e
+1 1 a 1 1
+2 2 b 2 2
+3 3 ab 3 3
+explain select * from t1 order by a,b,c,d;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
+drop table t1;
+create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
+insert into t1 values ('8', '6'), ('4', '7');
+select min(a) from t1;
+min(a)
+4
+select min(b) from t1 where a='8';
+min(b)
+6
+drop table t1;
+create table t1 (x bigint unsigned not null primary key) engine=innodb;
+insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1);
+select * from t1;
+x
+18446744073709551600
+18446744073709551601
+select count(*) from t1 where x>0;
+count(*)
+2
+select count(*) from t1 where x=0;
+count(*)
+0
+select count(*) from t1 where x<0;
+count(*)
+0
+select count(*) from t1 where x < -16;
+count(*)
+0
+select count(*) from t1 where x = -16;
+count(*)
+0
+explain select count(*) from t1 where x > -16;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index PRIMARY PRIMARY 8 NULL 2 Using where; Using index
+select count(*) from t1 where x > -16;
+count(*)
+2
+select * from t1 where x > -16;
+x
+18446744073709551600
+18446744073709551601
+select count(*) from t1 where x = 18446744073709551601;
+count(*)
+1
+drop table t1;
+SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
+variable_value
+8191
+SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
+variable_value
+16384
+SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
+variable_value - @innodb_rows_deleted_orig
+71
+SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
+variable_value - @innodb_rows_inserted_orig
+1063
+SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
+variable_value - @innodb_rows_updated_orig
+865
+SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
+variable_value - @innodb_row_lock_waits_orig
+0
+SELECT variable_value - @innodb_row_lock_current_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits';
+variable_value - @innodb_row_lock_current_waits_orig
+0
+SELECT variable_value - @innodb_row_lock_time_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time';
+variable_value - @innodb_row_lock_time_orig
+0
+SELECT variable_value - @innodb_row_lock_time_max_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_max';
+variable_value - @innodb_row_lock_time_max_orig
+0
+SELECT variable_value - @innodb_row_lock_time_avg_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_avg';
+variable_value - @innodb_row_lock_time_avg_orig
+0
+SET @innodb_sync_spin_loops_orig = @@innodb_sync_spin_loops;
+show variables like "innodb_sync_spin_loops";
+Variable_name Value
+innodb_sync_spin_loops 30
+set global innodb_sync_spin_loops=1000;
+show variables like "innodb_sync_spin_loops";
+Variable_name Value
+innodb_sync_spin_loops 1000
+set global innodb_sync_spin_loops=0;
+show variables like "innodb_sync_spin_loops";
+Variable_name Value
+innodb_sync_spin_loops 0
+set global innodb_sync_spin_loops=20;
+show variables like "innodb_sync_spin_loops";
+Variable_name Value
+innodb_sync_spin_loops 20
+set global innodb_sync_spin_loops=@innodb_sync_spin_loops_orig;
+SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
+show variables like "innodb_thread_concurrency";
+Variable_name Value
+innodb_thread_concurrency 0
+set global innodb_thread_concurrency=1001;
+Warnings:
+Warning 1292 Truncated incorrect thread_concurrency value: '1001'
+show variables like "innodb_thread_concurrency";
+Variable_name Value
+innodb_thread_concurrency 1000
+set global innodb_thread_concurrency=0;
+show variables like "innodb_thread_concurrency";
+Variable_name Value
+innodb_thread_concurrency 0
+set global innodb_thread_concurrency=16;
+show variables like "innodb_thread_concurrency";
+Variable_name Value
+innodb_thread_concurrency 16
+SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
+show variables like "innodb_concurrency_tickets";
+Variable_name Value
+innodb_concurrency_tickets 500
+set global innodb_concurrency_tickets=1000;
+show variables like "innodb_concurrency_tickets";
+Variable_name Value
+innodb_concurrency_tickets 1000
+set global innodb_concurrency_tickets=0;
+Warnings:
+Warning 1292 Truncated incorrect concurrency_tickets value: '0'
+show variables like "innodb_concurrency_tickets";
+Variable_name Value
+innodb_concurrency_tickets 1
+set global innodb_concurrency_tickets=500;
+show variables like "innodb_concurrency_tickets";
+Variable_name Value
+innodb_concurrency_tickets 500
+show variables like "innodb_thread_sleep_delay";
+Variable_name Value
+innodb_thread_sleep_delay 10000
+set global innodb_thread_sleep_delay=100000;
+show variables like "innodb_thread_sleep_delay";
+Variable_name Value
+innodb_thread_sleep_delay 100000
+set global innodb_thread_sleep_delay=0;
+show variables like "innodb_thread_sleep_delay";
+Variable_name Value
+innodb_thread_sleep_delay 0
+set global innodb_thread_sleep_delay=10000;
+show variables like "innodb_thread_sleep_delay";
+Variable_name Value
+innodb_thread_sleep_delay 10000
+set storage_engine=INNODB;
+drop table if exists t1,t2,t3;
+--- Testing varchar ---
+--- Testing varchar ---
+create table t1 (v varchar(10), c char(10), t text);
+insert into t1 values('+ ', '+ ', '+ ');
+set @a=repeat(' ',20);
+insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
+Warnings:
+Note 1265 Data truncated for column 'v' at row 1
+select concat('*',v,'*',c,'*',t,'*') from t1;
+concat('*',v,'*',c,'*',t,'*')
+*+ *+*+ *
+*+ *+*+ *
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+create table t2 like t1;
+show create table t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+create table t3 select * from t1;
+show create table t3;
+Table Create Table
+t3 CREATE TABLE `t3` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+alter table t1 modify c varchar(10);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` varchar(10) DEFAULT NULL,
+ `t` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+alter table t1 modify v char(10);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` char(10) DEFAULT NULL,
+ `c` varchar(10) DEFAULT NULL,
+ `t` text
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+alter table t1 modify t varchar(10);
+Warnings:
+Note 1265 Data truncated for column 't' at row 2
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` char(10) DEFAULT NULL,
+ `c` varchar(10) DEFAULT NULL,
+ `t` varchar(10) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+select concat('*',v,'*',c,'*',t,'*') from t1;
+concat('*',v,'*',c,'*',t,'*')
+*+*+*+ *
+*+*+*+ *
+drop table t1,t2,t3;
+create table t1 (v varchar(10), c char(10), t text, key(v), key(c), key(t(10)));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text,
+ KEY `v` (`v`),
+ KEY `c` (`c`),
+ KEY `t` (`t`(10))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+select count(*) from t1;
+count(*)
+270
+insert into t1 values(concat('a',char(1)),concat('a',char(1)),concat('a',char(1)));
+select count(*) from t1 where v='a';
+count(*)
+10
+select count(*) from t1 where c='a';
+count(*)
+10
+select count(*) from t1 where t='a';
+count(*)
+10
+select count(*) from t1 where v='a ';
+count(*)
+10
+select count(*) from t1 where c='a ';
+count(*)
+10
+select count(*) from t1 where t='a ';
+count(*)
+10
+select count(*) from t1 where v between 'a' and 'a ';
+count(*)
+10
+select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
+count(*)
+10
+select count(*) from t1 where v like 'a%';
+count(*)
+11
+select count(*) from t1 where c like 'a%';
+count(*)
+11
+select count(*) from t1 where t like 'a%';
+count(*)
+11
+select count(*) from t1 where v like 'a %';
+count(*)
+9
+explain select count(*) from t1 where v='a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 13 const # Using where; Using index
+explain select count(*) from t1 where c='a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref c c 11 const # Using where; Using index
+explain select count(*) from t1 where t='a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref t t 13 const # Using where
+explain select count(*) from t1 where v like 'a%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range v v 13 NULL # Using where; Using index
+explain select count(*) from t1 where v between 'a' and 'a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 13 const # Using where; Using index
+explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 13 const # Using where; Using index
+alter table t1 add unique(v);
+ERROR 23000: Duplicate entry '{ ' for key 'v_2'
+alter table t1 add key(v);
+select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';
+qq
+*a*a*a*
+*a *a*a *
+*a *a*a *
+*a *a*a *
+*a *a*a *
+*a *a*a *
+*a *a*a *
+*a *a*a *
+*a *a*a *
+*a *a*a *
+explain select * from t1 where v='a';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v,v_2 # 13 const # Using where
+select v,count(*) from t1 group by v limit 10;
+v count(*)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select v,count(c) from t1 group by v limit 10;
+v count(c)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result v,count(c) from t1 group by v limit 10;
+v count(c)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select c,count(*) from t1 group by c limit 10;
+c count(*)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select c,count(t) from t1 group by c limit 10;
+c count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result c,count(t) from t1 group by c limit 10;
+c count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select t,count(*) from t1 group by t limit 10;
+t count(*)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select t,count(t) from t1 group by t limit 10;
+t count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result t,count(t) from t1 group by t limit 10;
+t count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(300) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text,
+ KEY `c` (`c`),
+ KEY `t` (`t`(10)),
+ KEY `v` (`v`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+select count(*) from t1 where v='a';
+count(*)
+10
+select count(*) from t1 where v='a ';
+count(*)
+10
+select count(*) from t1 where v between 'a' and 'a ';
+count(*)
+10
+select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
+count(*)
+10
+select count(*) from t1 where v like 'a%';
+count(*)
+11
+select count(*) from t1 where v like 'a %';
+count(*)
+9
+explain select count(*) from t1 where v='a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 303 const # Using where; Using index
+explain select count(*) from t1 where v like 'a%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range v v 303 NULL # Using where; Using index
+explain select count(*) from t1 where v between 'a' and 'a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 303 const # Using where; Using index
+explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 303 const # Using where; Using index
+explain select * from t1 where v='a';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 303 const # Using where
+select v,count(*) from t1 group by v limit 10;
+v count(*)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+alter table t1 drop key v, add key v (v(30));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(300) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text,
+ KEY `c` (`c`),
+ KEY `t` (`t`(10)),
+ KEY `v` (`v`(30))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+select count(*) from t1 where v='a';
+count(*)
+10
+select count(*) from t1 where v='a ';
+count(*)
+10
+select count(*) from t1 where v between 'a' and 'a ';
+count(*)
+10
+select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
+count(*)
+10
+select count(*) from t1 where v like 'a%';
+count(*)
+11
+select count(*) from t1 where v like 'a %';
+count(*)
+9
+explain select count(*) from t1 where v='a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 33 const # Using where
+explain select count(*) from t1 where v like 'a%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range v v 33 NULL # Using where
+explain select count(*) from t1 where v between 'a' and 'a ';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 33 const # Using where
+explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 33 const # Using where
+explain select * from t1 where v='a';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref v v 33 const # Using where
+select v,count(*) from t1 group by v limit 10;
+v count(*)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+alter table t1 modify v varchar(600), drop key v, add key v (v);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(600) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text,
+ KEY `c` (`c`),
+ KEY `t` (`t`(10)),
+ KEY `v` (`v`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+select v,count(*) from t1 group by v limit 10;
+v count(*)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+select sql_big_result v,count(t) from t1 group by v limit 10;
+v count(t)
+a 1
+a 10
+b 10
+c 10
+d 10
+e 10
+f 10
+g 10
+h 10
+i 10
+drop table t1;
+create table t1 (a char(10), unique (a));
+insert into t1 values ('a ');
+insert into t1 values ('a ');
+ERROR 23000: Duplicate entry 'a' for key 'a'
+alter table t1 modify a varchar(10);
+insert into t1 values ('a '),('a '),('a '),('a ');
+ERROR 23000: Duplicate entry 'a ' for key 'a'
+insert into t1 values ('a ');
+ERROR 23000: Duplicate entry 'a ' for key 'a'
+insert into t1 values ('a ');
+ERROR 23000: Duplicate entry 'a ' for key 'a'
+insert into t1 values ('a ');
+ERROR 23000: Duplicate entry 'a ' for key 'a'
+update t1 set a='a ' where a like 'a%';
+select concat(a,'.') from t1;
+concat(a,'.')
+a .
+update t1 set a='abc ' where a like 'a ';
+select concat(a,'.') from t1;
+concat(a,'.')
+a .
+update t1 set a='a ' where a like 'a %';
+select concat(a,'.') from t1;
+concat(a,'.')
+a .
+update t1 set a='a ' where a like 'a ';
+select concat(a,'.') from t1;
+concat(a,'.')
+a .
+drop table t1;
+create table t1 (v varchar(10), c char(10), t text, key(v(5)), key(c(5)), key(t(5)));
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL,
+ `t` text,
+ KEY `v` (`v`(5)),
+ KEY `c` (`c`(5)),
+ KEY `t` (`t`(5))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t1;
+create table t1 (v char(10) character set utf8);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` char(10) CHARACTER SET utf8 DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t1;
+create table t1 (v varchar(10), c char(10)) row_format=fixed;
+Warnings:
+Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` varchar(10) DEFAULT NULL,
+ `c` char(10) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED
+insert into t1 values('a','a'),('a ','a ');
+select concat('*',v,'*',c,'*') from t1;
+concat('*',v,'*',c,'*')
+*a*a*
+*a *a*
+drop table t1;
+create table t1 (v varchar(65530), key(v(10)));
+insert into t1 values(repeat('a',65530));
+select length(v) from t1 where v=repeat('a',65530);
+length(v)
+65530
+drop table t1;
+create table t1(a int, b varchar(12), key ba(b, a));
+insert into t1 values (1, 'A'), (20, NULL);
+explain select * from t1 where a=20 and b is null;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref ba ba 20 const,const 1 Using where; Using index
+select * from t1 where a=20 and b is null;
+a b
+20 NULL
+drop table t1;
+create table t1 (v varchar(65530), key(v));
+Warnings:
+Warning 1071 Specified key was too long; max key length is 767 bytes
+drop table t1;
+create table t1 (v varchar(65536));
+Warnings:
+Note 1246 Converting column 'v' from VARCHAR to TEXT
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` mediumtext
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t1;
+create table t1 (v varchar(65530) character set utf8);
+Warnings:
+Note 1246 Converting column 'v' from VARCHAR to TEXT
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `v` mediumtext CHARACTER SET utf8
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t1;
+set storage_engine=MyISAM;
diff --git a/mysql-test/r/innodb_autoinc_lock_mode_zero.result b/mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result
index 3d016684338..3d016684338 100644
--- a/mysql-test/r/innodb_autoinc_lock_mode_zero.result
+++ b/mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result
diff --git a/mysql-test/suite/innodb/r/innodb_bug21704.result b/mysql-test/suite/innodb/r/innodb_bug21704.result
index b8e0b15d50d..ffbfa8a337e 100644
--- a/mysql-test/suite/innodb/r/innodb_bug21704.result
+++ b/mysql-test/suite/innodb/r/innodb_bug21704.result
@@ -25,8 +25,8 @@ ALTER TABLE t1 CHANGE a c INT;
ERROR HY000: Error on rename of '#sql-temporary' to './test/t1' (errno: 150)
# Ensure that online column rename works.
ALTER TABLE t1 CHANGE b c INT;
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
+affected rows: 3
+info: Records: 3 Duplicates: 0 Warnings: 0
# Test renaming the column in the referencing table
@@ -34,8 +34,8 @@ ALTER TABLE t2 CHANGE a c INT;
ERROR HY000: Error on rename of '#sql-temporary' to './test/t2' (errno: 150)
# Ensure that online column rename works.
ALTER TABLE t2 CHANGE b c INT;
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
+affected rows: 3
+info: Records: 3 Duplicates: 0 Warnings: 0
# Test with self-referential constraints
@@ -45,8 +45,8 @@ ALTER TABLE t3 CHANGE b d INT;
ERROR HY000: Error on rename of '#sql-temporary' to './test/t3' (errno: 150)
# Ensure that online column rename works.
ALTER TABLE t3 CHANGE c d INT;
-affected rows: 0
-info: Records: 0 Duplicates: 0 Warnings: 0
+affected rows: 3
+info: Records: 3 Duplicates: 0 Warnings: 0
# Cleanup.
diff --git a/mysql-test/r/innodb_bug30919.result b/mysql-test/suite/innodb/r/innodb_bug30919.result
index 42aa4ff302b..42aa4ff302b 100644
--- a/mysql-test/r/innodb_bug30919.result
+++ b/mysql-test/suite/innodb/r/innodb_bug30919.result
diff --git a/mysql-test/r/innodb_bug42419.result b/mysql-test/suite/innodb/r/innodb_bug42419.result
index f304bb634cb..f304bb634cb 100644
--- a/mysql-test/r/innodb_bug42419.result
+++ b/mysql-test/suite/innodb/r/innodb_bug42419.result
diff --git a/mysql-test/suite/innodb/r/innodb_bug48024.result b/mysql-test/suite/innodb/r/innodb_bug48024.result
new file mode 100644
index 00000000000..611923d2796
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_bug48024.result
@@ -0,0 +1,10 @@
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b);
+DROP TABLE bug48024,bug48024_b;
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)|
+DROP TABLE bug48024,bug48024_b;
diff --git a/mysql-test/suite/innodb/r/innodb_bug49164.result b/mysql-test/suite/innodb/r/innodb_bug49164.result
new file mode 100644
index 00000000000..9456702e1d0
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_bug49164.result
@@ -0,0 +1,42 @@
+SET tx_isolation = 'READ-COMMITTED';
+CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b))
+ENGINE=InnoDB;
+insert into bug49164 values (1,1,1), (2,2,2), (3,3,3);
+begin;
+update bug49164 set c=7;
+select * from bug49164;
+a b c
+1 1 7
+2 2 7
+3 3 7
+rollback;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+begin;
+update bug49164 set c=7;
+SET tx_isolation = 'READ-COMMITTED';
+begin;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+commit;
+begin;
+update bug49164 set c=6 where a=1 and b=1;
+rollback;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+commit;
+select * from bug49164;
+a b c
+1 1 6
+2 2 2
+3 3 3
+drop table bug49164;
diff --git a/mysql-test/suite/innodb/r/innodb_bug53674.result b/mysql-test/suite/innodb/r/innodb_bug53674.result
new file mode 100644
index 00000000000..c4021c2e7cd
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_bug53674.result
@@ -0,0 +1,11 @@
+create table bug53674(a int)engine=innodb;
+insert into bug53674 values (1),(2);
+start transaction;
+select * from bug53674 for update;
+a
+1
+2
+select * from bug53674 where a=(select a from bug53674 where a > 1);
+a
+2
+drop table bug53674;
diff --git a/mysql-test/suite/innodb/r/innodb_bug53756.result b/mysql-test/suite/innodb/r/innodb_bug53756.result
new file mode 100644
index 00000000000..37453be8201
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_bug53756.result
@@ -0,0 +1,118 @@
+DROP TABLE IF EXISTS bug_53756 ;
+CREATE TABLE bug_53756 (pk INT, c1 INT) ENGINE=InnoDB;
+ALTER TABLE bug_53756 ADD PRIMARY KEY (pk);
+INSERT INTO bug_53756 VALUES(1, 11), (2, 22), (3, 33), (4, 44);
+
+# Select a less restrictive isolation level.
+SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+COMMIT;
+
+# Start a transaction in the default connection for isolation.
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+SELECT * FROM bug_53756;
+pk c1
+1 11
+2 22
+3 33
+4 44
+
+# connection con1 deletes row 1
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+DELETE FROM bug_53756 WHERE pk=1;
+
+# connection con2 deletes row 2
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+DELETE FROM bug_53756 WHERE pk=2;
+
+# connection con3 updates row 3
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+UPDATE bug_53756 SET c1=77 WHERE pk=3;
+
+# connection con4 updates row 4
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+UPDATE bug_53756 SET c1=88 WHERE pk=4;
+
+# connection con5 inserts row 5
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+INSERT INTO bug_53756 VALUES(5, 55);
+
+# connection con6 inserts row 6
+START TRANSACTION;
+SELECT @@tx_isolation;
+@@tx_isolation
+READ-COMMITTED
+INSERT INTO bug_53756 VALUES(6, 66);
+
+# connection con1 commits.
+COMMIT;
+
+# connection con3 commits.
+COMMIT;
+
+# connection con4 rolls back.
+ROLLBACK;
+
+# connection con6 rolls back.
+ROLLBACK;
+
+# The connections 2 and 5 stay open.
+
+# connection default selects resulting data.
+# Delete of row 1 was committed.
+# Update of row 3 was committed.
+# Due to isolation level read committed, these should be included.
+# All other changes should not be included.
+SELECT * FROM bug_53756;
+pk c1
+2 22
+3 77
+4 44
+
+# connection default
+#
+# Crash server.
+START TRANSACTION;
+INSERT INTO bug_53756 VALUES (666,666);
+SET SESSION debug="+d,crash_commit_before";
+COMMIT;
+ERROR HY000: Lost connection to MySQL server during query
+
+#
+# disconnect con1, con2, con3, con4, con5, con6.
+#
+# Restart server.
+
+#
+# Select recovered data.
+# Delete of row 1 was committed.
+# Update of row 3 was committed.
+# These should be included.
+# All other changes should not be included.
+# Delete of row 2 and insert of row 5 should be rolled back
+SELECT * FROM bug_53756;
+pk c1
+2 22
+3 77
+4 44
+
+# Clean up.
+DROP TABLE bug_53756;
diff --git a/mysql-test/suite/innodb/r/innodb_bug54044.result b/mysql-test/suite/innodb/r/innodb_bug54044.result
new file mode 100644
index 00000000000..90ab812f2ae
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_bug54044.result
@@ -0,0 +1,3 @@
+CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB
+AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
+ERROR HY000: Can't create table 'test.table_54044' (errno: -1)
diff --git a/mysql-test/r/innodb_gis.result b/mysql-test/suite/innodb/r/innodb_gis.result
index c6c775afc9f..c6c775afc9f 100644
--- a/mysql-test/r/innodb_gis.result
+++ b/mysql-test/suite/innodb/r/innodb_gis.result
diff --git a/mysql-test/r/innodb_lock_wait_timeout_1.result b/mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result
index bd8760b8f79..bd8760b8f79 100644
--- a/mysql-test/r/innodb_lock_wait_timeout_1.result
+++ b/mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result
diff --git a/mysql-test/suite/innodb/r/innodb_misc1.result b/mysql-test/suite/innodb/r/innodb_misc1.result
index 40d13c9726a..214e79de985 100644
--- a/mysql-test/suite/innodb/r/innodb_misc1.result
+++ b/mysql-test/suite/innodb/r/innodb_misc1.result
@@ -763,6 +763,7 @@ t1 CREATE TABLE `t1` (
CONSTRAINT `t1_t2` FOREIGN KEY (`id`) REFERENCES `t2` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=349 DEFAULT CHARSET=latin1
DROP TABLE t1,t2;
+SET SESSION innodb_strict_mode = on;
CREATE TABLE t1 (
c01 CHAR(255), c02 CHAR(255), c03 CHAR(255), c04 CHAR(255),
c05 CHAR(255), c06 CHAR(255), c07 CHAR(255), c08 CHAR(255),
diff --git a/mysql-test/suite/innodb/r/innodb_multi_update.result b/mysql-test/suite/innodb/r/innodb_multi_update.result
new file mode 100644
index 00000000000..7af9b030d1f
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_multi_update.result
@@ -0,0 +1,76 @@
+CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb;
+CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb;
+INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
+INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100;
+select * from bug38999_1;
+a b
+101 1
+102 2
+103 3
+104 4
+105 5
+106 6
+107 7
+108 8
+109 9
+110 10
+111 11
+112 12
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101;
+select * from bug38999_1;
+a b
+201 1
+102 2
+103 3
+104 4
+105 5
+106 6
+107 7
+108 8
+109 9
+110 10
+111 11
+112 12
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2;
+select * from bug38999_1;
+a b
+201 1
+103 3
+104 4
+105 5
+106 6
+107 7
+108 8
+109 9
+110 10
+111 11
+102 12
+112 12
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100;
+select * from bug38999_1;
+a b
+201 1
+103 5
+104 6
+106 6
+105 7
+107 7
+108 8
+109 9
+110 10
+111 11
+102 12
+112 12
+select * from bug38999_2;
+a b
+1 1
+2 2
+6 6
+7 7
+8 8
+9 9
+3 13
+4 14
+5 15
+drop table bug38999_1,bug38999_2;
diff --git a/mysql-test/suite/innodb/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result
new file mode 100644
index 00000000000..1e8bc42ecbf
--- /dev/null
+++ b/mysql-test/suite/innodb/r/innodb_mysql.result
@@ -0,0 +1,2521 @@
+set global innodb_support_xa=default;
+set session innodb_support_xa=default;
+SET SESSION STORAGE_ENGINE = InnoDB;
+drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4;
+drop procedure if exists p1;
+create table t1 (
+c_id int(11) not null default '0',
+org_id int(11) default null,
+unique key contacts$c_id (c_id),
+key contacts$org_id (org_id)
+);
+insert into t1 values
+(2,null),(120,null),(141,null),(218,7), (128,1),
+(151,2),(234,2),(236,2),(243,2),(255,2),(259,2),(232,3),(235,3),(238,3),
+(246,3),(253,3),(269,3),(285,3),(291,3),(293,3),(131,4),(230,4),(231,4);
+create table t2 (
+slai_id int(11) not null default '0',
+owner_tbl int(11) default null,
+owner_id int(11) default null,
+sla_id int(11) default null,
+inc_web int(11) default null,
+inc_email int(11) default null,
+inc_chat int(11) default null,
+inc_csr int(11) default null,
+inc_total int(11) default null,
+time_billed int(11) default null,
+activedate timestamp null default null,
+expiredate timestamp null default null,
+state int(11) default null,
+sla_set int(11) default null,
+unique key t2$slai_id (slai_id),
+key t2$owner_id (owner_id),
+key t2$sla_id (sla_id)
+);
+insert into t2(slai_id, owner_tbl, owner_id, sla_id) values
+(1,3,1,1), (3,3,10,2), (4,3,3,6), (5,3,2,5), (6,3,8,3), (7,3,9,7),
+(8,3,6,8), (9,3,4,9), (10,3,5,10), (11,3,11,11), (12,3,7,12);
+flush tables;
+select si.slai_id
+from t1 c join t2 si on
+((si.owner_tbl = 3 and si.owner_id = c.org_id) or
+( si.owner_tbl = 2 and si.owner_id = c.c_id))
+where
+c.c_id = 218 and expiredate is null;
+slai_id
+12
+select * from t1 where org_id is null;
+c_id org_id
+2 NULL
+120 NULL
+141 NULL
+select si.slai_id
+from t1 c join t2 si on
+((si.owner_tbl = 3 and si.owner_id = c.org_id) or
+( si.owner_tbl = 2 and si.owner_id = c.c_id))
+where
+c.c_id = 218 and expiredate is null;
+slai_id
+12
+drop table t1, t2;
+CREATE TABLE t1 (a int, b int, KEY b (b));
+CREATE TABLE t2 (a int, b int, PRIMARY KEY (a,b));
+CREATE TABLE t3 (a int, b int, c int, PRIMARY KEY (a),
+UNIQUE KEY b (b,c), KEY a (a,b,c));
+INSERT INTO t1 VALUES (1, 1);
+INSERT INTO t1 SELECT a + 1, b + 1 FROM t1;
+INSERT INTO t1 SELECT a + 2, b + 2 FROM t1;
+INSERT INTO t2 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8);
+INSERT INTO t2 SELECT a + 1, b FROM t2;
+DELETE FROM t2 WHERE a = 1 AND b < 2;
+INSERT INTO t3 VALUES (1,1,1),(2,1,2);
+INSERT INTO t3 SELECT a + 2, a + 2, 3 FROM t3;
+INSERT INTO t3 SELECT a + 4, a + 4, 3 FROM t3;
+SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
+t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
+ORDER BY t1.b LIMIT 2;
+b a
+1 1
+2 2
+SELECT STRAIGHT_JOIN SQL_NO_CACHE t1.b, t1.a FROM t1, t3, t2 WHERE
+t3.a = t2.a AND t2.b = t1.a AND t3.b = 1 AND t3.c IN (1, 2)
+ORDER BY t1.b LIMIT 5;
+b a
+1 1
+2 2
+2 2
+3 3
+3 3
+DROP TABLE t1, t2, t3;
+CREATE TABLE `t1` (`id1` INT) ;
+INSERT INTO `t1` (`id1`) VALUES (1),(5),(2);
+CREATE TABLE `t2` (
+`id1` INT,
+`id2` INT NOT NULL,
+`id3` INT,
+`id4` INT NOT NULL,
+UNIQUE (`id2`,`id4`),
+KEY (`id1`)
+);
+INSERT INTO `t2`(`id1`,`id2`,`id3`,`id4`) VALUES
+(1,1,1,0),
+(1,1,2,1),
+(5,1,2,2),
+(6,1,2,3),
+(1,2,2,2),
+(1,2,1,1);
+SELECT `id1` FROM `t1` WHERE `id1` NOT IN (SELECT `id1` FROM `t2` WHERE `id2` = 1 AND `id3` = 2);
+id1
+2
+DROP TABLE t1, t2;
+create table t1 (c1 int) engine=innodb;
+handler t1 open;
+handler t1 read first;
+c1
+Before and after comparison
+0
+drop table t1;
+CREATE TABLE t1(c1 TEXT, UNIQUE (c1(1)), cnt INT DEFAULT 1)
+ENGINE=INNODB CHARACTER SET UTF8;
+INSERT INTO t1 (c1) VALUES ('1a');
+SELECT * FROM t1;
+c1 cnt
+1a 1
+INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1;
+SELECT * FROM t1;
+c1 cnt
+1a 2
+DROP TABLE t1;
+CREATE TABLE t1(c1 VARCHAR(2), UNIQUE (c1(1)), cnt INT DEFAULT 1)
+ENGINE=INNODB CHARACTER SET UTF8;
+INSERT INTO t1 (c1) VALUES ('1a');
+SELECT * FROM t1;
+c1 cnt
+1a 1
+INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1;
+SELECT * FROM t1;
+c1 cnt
+1a 2
+DROP TABLE t1;
+CREATE TABLE t1(c1 CHAR(2), UNIQUE (c1(1)), cnt INT DEFAULT 1)
+ENGINE=INNODB CHARACTER SET UTF8;
+INSERT INTO t1 (c1) VALUES ('1a');
+SELECT * FROM t1;
+c1 cnt
+1a 1
+INSERT INTO t1 (c1) VALUES ('1b') ON DUPLICATE KEY UPDATE cnt=cnt+1;
+SELECT * FROM t1;
+c1 cnt
+1a 2
+DROP TABLE t1;
+CREATE TABLE t1 (
+a1 decimal(10,0) DEFAULT NULL,
+a2 blob,
+a3 time DEFAULT NULL,
+a4 blob,
+a5 char(175) DEFAULT NULL,
+a6 timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+a7 tinyblob,
+INDEX idx (a6,a7(239),a5)
+) ENGINE=InnoDB;
+EXPLAIN SELECT a4 FROM t1 WHERE
+a6=NULL AND
+a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+EXPLAIN SELECT t1.a4 FROM t1, t1 t WHERE
+t.a6=t.a6 AND t1.a6=NULL AND
+t1.a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+DROP TABLE t1;
+create table t1m (a int) engine = MEMORY;
+create table t1i (a int);
+create table t2m (a int) engine = MEMORY;
+create table t2i (a int);
+insert into t2m values (5);
+insert into t2i values (5);
+select min(a) from t1i;
+min(a)
+NULL
+select min(7) from t1i;
+min(7)
+NULL
+select min(7) from DUAL;
+min(7)
+7
+explain select min(7) from t2i join t1i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2i ALL NULL NULL NULL NULL 1
+1 SIMPLE t1i ALL NULL NULL NULL NULL 1 Using join buffer
+select min(7) from t2i join t1i;
+min(7)
+NULL
+select max(a) from t1i;
+max(a)
+NULL
+select max(7) from t1i;
+max(7)
+NULL
+select max(7) from DUAL;
+max(7)
+7
+explain select max(7) from t2i join t1i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2i ALL NULL NULL NULL NULL 1
+1 SIMPLE t1i ALL NULL NULL NULL NULL 1 Using join buffer
+select max(7) from t2i join t1i;
+max(7)
+NULL
+select 1, min(a) from t1i where a=99;
+1 min(a)
+1 NULL
+select 1, min(a) from t1i where 1=99;
+1 min(a)
+1 NULL
+select 1, min(1) from t1i where a=99;
+1 min(1)
+1 NULL
+select 1, min(1) from t1i where 1=99;
+1 min(1)
+1 NULL
+select 1, max(a) from t1i where a=99;
+1 max(a)
+1 NULL
+select 1, max(a) from t1i where 1=99;
+1 max(a)
+1 NULL
+select 1, max(1) from t1i where a=99;
+1 max(1)
+1 NULL
+select 1, max(1) from t1i where 1=99;
+1 max(1)
+1 NULL
+explain select count(*), min(7), max(7) from t1m, t1i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t1i ALL NULL NULL NULL NULL 1
+select count(*), min(7), max(7) from t1m, t1i;
+count(*) min(7) max(7)
+0 NULL NULL
+explain select count(*), min(7), max(7) from t1m, t2i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1m system NULL NULL NULL NULL 0 const row not found
+1 SIMPLE t2i ALL NULL NULL NULL NULL 1
+select count(*), min(7), max(7) from t1m, t2i;
+count(*) min(7) max(7)
+0 NULL NULL
+explain select count(*), min(7), max(7) from t2m, t1i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2m system NULL NULL NULL NULL 1
+1 SIMPLE t1i ALL NULL NULL NULL NULL 1
+select count(*), min(7), max(7) from t2m, t1i;
+count(*) min(7) max(7)
+0 NULL NULL
+drop table t1m, t1i, t2m, t2i;
+create table t1 (
+a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
+) ENGINE = MEMORY;
+insert into t1 (a1, a2, b, c, d) values
+('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
+('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
+('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
+('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
+('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
+('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
+('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
+('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
+('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
+('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
+('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
+('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
+('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
+('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
+('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
+('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4'),
+('a','a','a','a111','xy1'),('a','a','a','b111','xy2'),('a','a','a','c111','xy3'),('a','a','a','d111','xy4'),
+('a','a','b','e112','xy1'),('a','a','b','f112','xy2'),('a','a','b','g112','xy3'),('a','a','b','h112','xy4'),
+('a','b','a','i121','xy1'),('a','b','a','j121','xy2'),('a','b','a','k121','xy3'),('a','b','a','l121','xy4'),
+('a','b','b','m122','xy1'),('a','b','b','n122','xy2'),('a','b','b','o122','xy3'),('a','b','b','p122','xy4'),
+('b','a','a','a211','xy1'),('b','a','a','b211','xy2'),('b','a','a','c211','xy3'),('b','a','a','d211','xy4'),
+('b','a','b','e212','xy1'),('b','a','b','f212','xy2'),('b','a','b','g212','xy3'),('b','a','b','h212','xy4'),
+('b','b','a','i221','xy1'),('b','b','a','j221','xy2'),('b','b','a','k221','xy3'),('b','b','a','l221','xy4'),
+('b','b','b','m222','xy1'),('b','b','b','n222','xy2'),('b','b','b','o222','xy3'),('b','b','b','p222','xy4'),
+('c','a','a','a311','xy1'),('c','a','a','b311','xy2'),('c','a','a','c311','xy3'),('c','a','a','d311','xy4'),
+('c','a','b','e312','xy1'),('c','a','b','f312','xy2'),('c','a','b','g312','xy3'),('c','a','b','h312','xy4'),
+('c','b','a','i321','xy1'),('c','b','a','j321','xy2'),('c','b','a','k321','xy3'),('c','b','a','l321','xy4'),
+('c','b','b','m322','xy1'),('c','b','b','n322','xy2'),('c','b','b','o322','xy3'),('c','b','b','p322','xy4'),
+('d','a','a','a411','xy1'),('d','a','a','b411','xy2'),('d','a','a','c411','xy3'),('d','a','a','d411','xy4'),
+('d','a','b','e412','xy1'),('d','a','b','f412','xy2'),('d','a','b','g412','xy3'),('d','a','b','h412','xy4'),
+('d','b','a','i421','xy1'),('d','b','a','j421','xy2'),('d','b','a','k421','xy3'),('d','b','a','l421','xy4'),
+('d','b','b','m422','xy1'),('d','b','b','n422','xy2'),('d','b','b','o422','xy3'),('d','b','b','p422','xy4');
+create table t4 (
+pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
+);
+insert into t4 (a1, a2, b, c, d, dummy) select * from t1;
+create index idx12672_0 on t4 (a1);
+create index idx12672_1 on t4 (a1,a2,b,c);
+create index idx12672_2 on t4 (a1,a2,b);
+analyze table t4;
+Table Op Msg_type Msg_text
+test.t4 analyze status OK
+select distinct a1 from t4 where pk_col not in (1,2,3,4);
+a1
+a
+b
+c
+d
+drop table t1,t4;
+DROP TABLE IF EXISTS t2, t1;
+CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE= InnoDB;
+CREATE TABLE t2 (
+i INT NOT NULL,
+FOREIGN KEY (i) REFERENCES t1 (i) ON DELETE NO ACTION
+) ENGINE= InnoDB;
+INSERT INTO t1 VALUES (1);
+INSERT INTO t2 VALUES (1);
+DELETE IGNORE FROM t1 WHERE i = 1;
+Warnings:
+Error 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`i`) REFERENCES `t1` (`i`) ON DELETE NO ACTION)
+SELECT * FROM t1, t2;
+i i
+1 1
+DROP TABLE t2, t1;
+End of 4.1 tests.
+create table t1 (
+a varchar(30), b varchar(30), primary key(a), key(b)
+);
+select distinct a from t1;
+a
+drop table t1;
+create table t1(a int, key(a));
+insert into t1 values(1);
+select a, count(a) from t1 group by a with rollup;
+a count(a)
+1 1
+NULL 1
+drop table t1;
+create table t1 (f1 int, f2 char(1), primary key(f1,f2));
+insert into t1 values ( 1,"e"),(2,"a"),( 3,"c"),(4,"d");
+alter table t1 drop primary key, add primary key (f2, f1);
+explain select distinct f1 a, f1 b from t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL PRIMARY 5 NULL 4 Using index; Using temporary
+explain select distinct f1, f2 from t1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range NULL PRIMARY 5 NULL 3 Using index for group-by; Using temporary
+drop table t1;
+CREATE TABLE t1 (id int(11) NOT NULL PRIMARY KEY, name varchar(20),
+INDEX (name));
+CREATE TABLE t2 (id int(11) NOT NULL PRIMARY KEY, fkey int(11));
+ALTER TABLE t2 ADD FOREIGN KEY (fkey) REFERENCES t2(id);
+INSERT INTO t1 VALUES (1,'A1'),(2,'A2'),(3,'B');
+INSERT INTO t2 VALUES (1,1),(2,2),(3,2),(4,3),(5,3);
+EXPLAIN
+SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
+WHERE t1.name LIKE 'A%';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index PRIMARY,name name 23 NULL 3 Using where; Using index
+1 SIMPLE t2 ref fkey fkey 5 test.t1.id 1 Using index
+EXPLAIN
+SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
+WHERE t1.name LIKE 'A%' OR FALSE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 index NULL fkey 5 NULL 5 Using index
+1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where
+DROP TABLE t1,t2;
+CREATE TABLE t1 (
+id int NOT NULL,
+name varchar(20) NOT NULL,
+dept varchar(20) NOT NULL,
+age tinyint(3) unsigned NOT NULL,
+PRIMARY KEY (id),
+INDEX (name,dept)
+) ENGINE=InnoDB;
+INSERT INTO t1(id, dept, age, name) VALUES
+(3987, 'cs1', 10, 'rs1'), (3988, 'cs2', 20, 'rs1'), (3995, 'cs3', 10, 'rs2'),
+(3996, 'cs4', 20, 'rs2'), (4003, 'cs5', 10, 'rs3'), (4004, 'cs6', 20, 'rs3'),
+(4011, 'cs7', 10, 'rs4'), (4012, 'cs8', 20, 'rs4'), (4019, 'cs9', 10, 'rs5'),
+(4020, 'cs10', 20, 'rs5'),(4027, 'cs11', 10, 'rs6'),(4028, 'cs12', 20, 'rs6');
+EXPLAIN SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range name name 44 NULL 2 Using where; Using index for group-by
+SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
+name dept
+rs5 cs10
+rs5 cs9
+DELETE FROM t1;
+# Masking (#) number in "rows" column of the following EXPLAIN output, as it may vary (bug#47746).
+EXPLAIN SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range name name 44 NULL # Using where; Using index for group-by
+SELECT DISTINCT t1.name, t1.dept FROM t1 WHERE t1.name='rs5';
+name dept
+DROP TABLE t1;
+drop table if exists t1;
+show variables like 'innodb_rollback_on_timeout';
+Variable_name Value
+innodb_rollback_on_timeout OFF
+create table t1 (a int unsigned not null primary key) engine = innodb;
+insert into t1 values (1);
+commit;
+begin work;
+insert into t1 values (2);
+select * from t1;
+a
+1
+2
+begin work;
+insert into t1 values (5);
+select * from t1;
+a
+1
+5
+insert into t1 values (2);
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+select * from t1;
+a
+1
+5
+commit;
+select * from t1;
+a
+1
+2
+commit;
+select * from t1;
+a
+1
+2
+5
+drop table t1;
+set @save_qcache_size=@@global.query_cache_size;
+set @save_qcache_type=@@global.query_cache_type;
+set global query_cache_size=10*1024*1024;
+set global query_cache_type=1;
+drop table if exists `test`;
+Warnings:
+Note 1051 Unknown table 'test'
+CREATE TABLE `test` (`test1` varchar(3) NOT NULL,
+`test2` varchar(4) NOT NULL,PRIMARY KEY (`test1`))
+ENGINE=InnoDB DEFAULT CHARSET=latin1;
+INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '5678');
+select * from test;
+test1 test2
+tes 5678
+INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '1234')
+ON DUPLICATE KEY UPDATE `test2` = '1234';
+select * from test;
+test1 test2
+tes 1234
+flush tables;
+select * from test;
+test1 test2
+tes 1234
+drop table test;
+set global query_cache_type=@save_qcache_type;
+set global query_cache_size=@save_qcache_size;
+drop table if exists t1;
+show variables like 'innodb_rollback_on_timeout';
+Variable_name Value
+innodb_rollback_on_timeout OFF
+create table t1 (a int unsigned not null primary key) engine = innodb;
+insert into t1 values (1);
+commit;
+begin work;
+insert into t1 values (2);
+select * from t1;
+a
+1
+2
+begin work;
+insert into t1 values (5);
+select * from t1;
+a
+1
+5
+insert into t1 values (2);
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+select * from t1;
+a
+1
+5
+commit;
+select * from t1;
+a
+1
+2
+commit;
+select * from t1;
+a
+1
+2
+5
+drop table t1;
+create table t1(
+id int auto_increment,
+c char(1) not null,
+counter int not null default 1,
+primary key (id),
+unique key (c)
+) engine=innodb;
+insert into t1 (id, c) values
+(NULL, 'a'),
+(NULL, 'a')
+on duplicate key update id = values(id), counter = counter + 1;
+select * from t1;
+id c counter
+2 a 2
+insert into t1 (id, c) values
+(NULL, 'b')
+on duplicate key update id = values(id), counter = counter + 1;
+select * from t1;
+id c counter
+2 a 2
+3 b 1
+truncate table t1;
+insert into t1 (id, c) values (NULL, 'a');
+select * from t1;
+id c counter
+1 a 1
+insert into t1 (id, c) values (NULL, 'b'), (NULL, 'b')
+on duplicate key update id = values(id), c = values(c), counter = counter + 1;
+select * from t1;
+id c counter
+1 a 1
+3 b 2
+insert into t1 (id, c) values (NULL, 'a')
+on duplicate key update id = values(id), c = values(c), counter = counter + 1;
+select * from t1;
+id c counter
+3 b 2
+4 a 2
+drop table t1;
+CREATE TABLE t1(
+id int AUTO_INCREMENT PRIMARY KEY,
+stat_id int NOT NULL,
+acct_id int DEFAULT NULL,
+INDEX idx1 (stat_id, acct_id),
+INDEX idx2 (acct_id)
+) ENGINE=MyISAM;
+CREATE TABLE t2(
+id int AUTO_INCREMENT PRIMARY KEY,
+stat_id int NOT NULL,
+acct_id int DEFAULT NULL,
+INDEX idx1 (stat_id, acct_id),
+INDEX idx2 (acct_id)
+) ENGINE=InnoDB;
+INSERT INTO t1(stat_id,acct_id) VALUES
+(1,759), (2,831), (3,785), (4,854), (1,921),
+(1,553), (2,589), (3,743), (2,827), (2,545),
+(4,779), (4,783), (1,597), (1,785), (4,832),
+(1,741), (1,833), (3,788), (2,973), (1,907);
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+INSERT INTO t1(stat_id,acct_id) SELECT stat_id, mod(id+100000, acct_id) FROM t1;
+UPDATE t1 SET acct_id=785
+WHERE MOD(stat_id,2)=0 AND MOD(id,stat_id)=MOD(acct_id,stat_id);
+OPTIMIZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 optimize status OK
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+40960
+SELECT COUNT(*) FROM t1 WHERE acct_id=785;
+COUNT(*)
+8702
+EXPLAIN SELECT COUNT(*) FROM t1 WHERE stat_id IN (1,3) AND acct_id=785;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range idx1,idx2 idx1 9 NULL 2 Using where; Using index
+INSERT INTO t2 SELECT * FROM t1;
+OPTIMIZE TABLE t2;
+Table Op Msg_type Msg_text
+test.t2 optimize note Table does not support optimize, doing recreate + analyze instead
+test.t2 optimize status OK
+EXPLAIN SELECT COUNT(*) FROM t2 WHERE stat_id IN (1,3) AND acct_id=785;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range idx1,idx2 idx1 9 NULL 2 Using where; Using index
+DROP TABLE t1,t2;
+create table t1(a int) engine=innodb;
+alter table t1 comment '123';
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='123'
+drop table t1;
+CREATE TABLE t1 (a CHAR(2), KEY (a)) ENGINE = InnoDB DEFAULT CHARSET=UTF8;
+INSERT INTO t1 VALUES ('uk'),('bg');
+SELECT * FROM t1 WHERE a = 'uk';
+a
+uk
+DELETE FROM t1 WHERE a = 'uk';
+SELECT * FROM t1 WHERE a = 'uk';
+a
+UPDATE t1 SET a = 'us' WHERE a = 'uk';
+SELECT * FROM t1 WHERE a = 'uk';
+a
+CREATE TABLE t2 (a CHAR(2), KEY (a)) ENGINE = InnoDB;
+INSERT INTO t2 VALUES ('uk'),('bg');
+SELECT * FROM t2 WHERE a = 'uk';
+a
+uk
+DELETE FROM t2 WHERE a = 'uk';
+SELECT * FROM t2 WHERE a = 'uk';
+a
+INSERT INTO t2 VALUES ('uk');
+UPDATE t2 SET a = 'us' WHERE a = 'uk';
+SELECT * FROM t2 WHERE a = 'uk';
+a
+CREATE TABLE t3 (a CHAR(2), KEY (a)) ENGINE = MyISAM;
+INSERT INTO t3 VALUES ('uk'),('bg');
+SELECT * FROM t3 WHERE a = 'uk';
+a
+uk
+DELETE FROM t3 WHERE a = 'uk';
+SELECT * FROM t3 WHERE a = 'uk';
+a
+INSERT INTO t3 VALUES ('uk');
+UPDATE t3 SET a = 'us' WHERE a = 'uk';
+SELECT * FROM t3 WHERE a = 'uk';
+a
+DROP TABLE t1,t2,t3;
+create table t1 (a int) engine=innodb;
+select * from bug29807;
+ERROR 42S02: Table 'test.bug29807' doesn't exist
+drop table t1;
+drop table bug29807;
+ERROR 42S02: Unknown table 'bug29807'
+create table bug29807 (a int);
+drop table bug29807;
+CREATE TABLE t1 (a INT) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT) ENGINE=InnoDB;
+switch to connection c1
+SET AUTOCOMMIT=0;
+INSERT INTO t2 VALUES (1);
+switch to connection c2
+SET AUTOCOMMIT=0;
+LOCK TABLES t1 READ, t2 READ;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+switch to connection c1
+COMMIT;
+INSERT INTO t1 VALUES (1);
+switch to connection default
+SET AUTOCOMMIT=default;
+DROP TABLE t1,t2;
+CREATE TABLE t1 (
+id int NOT NULL auto_increment PRIMARY KEY,
+b int NOT NULL,
+c datetime NOT NULL,
+INDEX idx_b(b),
+INDEX idx_c(c)
+) ENGINE=InnoDB;
+CREATE TABLE t2 (
+b int NOT NULL auto_increment PRIMARY KEY,
+c datetime NOT NULL
+) ENGINE= MyISAM;
+INSERT INTO t2(c) VALUES ('2007-01-01');
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t2(c) SELECT c FROM t2;
+INSERT INTO t1(b,c) SELECT b,c FROM t2;
+UPDATE t2 SET c='2007-01-02';
+INSERT INTO t1(b,c) SELECT b,c FROM t2;
+UPDATE t2 SET c='2007-01-03';
+INSERT INTO t1(b,c) SELECT b,c FROM t2;
+set @@sort_buffer_size=8192;
+Warnings:
+Warning 1292 Truncated incorrect sort_buffer_size value: '8192'
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+3072
+EXPLAIN
+SELECT COUNT(*) FROM t1
+WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL # Using where
+SELECT COUNT(*) FROM t1
+WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
+COUNT(*)
+3072
+EXPLAIN
+SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
+WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL # Using sort_union(idx_c,idx_b); Using where
+SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
+WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
+COUNT(*)
+3072
+set @@sort_buffer_size=default;
+DROP TABLE t1,t2;
+CREATE TABLE t1 (a int, b int);
+insert into t1 values (1,1),(1,2);
+CREATE TABLE t2 (primary key (a)) select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+drop table if exists t2;
+Warnings:
+Note 1051 Unknown table 't2'
+CREATE TEMPORARY TABLE t2 (primary key (a)) select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+drop table if exists t2;
+Warnings:
+Note 1051 Unknown table 't2'
+CREATE TABLE t2 (a int, b int, primary key (a));
+BEGIN;
+INSERT INTO t2 values(100,100);
+CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t2;
+a b
+100 100
+ROLLBACK;
+SELECT * from t2;
+a b
+100 100
+TRUNCATE table t2;
+INSERT INTO t2 select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t2;
+a b
+drop table t2;
+CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
+BEGIN;
+INSERT INTO t2 values(100,100);
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t2;
+a b
+100 100
+COMMIT;
+BEGIN;
+INSERT INTO t2 values(101,101);
+CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t2;
+a b
+100 100
+101 101
+ROLLBACK;
+SELECT * from t2;
+a b
+100 100
+TRUNCATE table t2;
+INSERT INTO t2 select * from t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+SELECT * from t2;
+a b
+drop table t1,t2;
+create table t1(f1 varchar(800) binary not null, key(f1))
+character set utf8 collate utf8_general_ci;
+Warnings:
+Warning 1071 Specified key was too long; max key length is 767 bytes
+insert into t1 values('aaa');
+drop table t1;
+CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
+INSERT INTO t1 VALUES ( 1 , 1 , 1);
+INSERT INTO t1 SELECT a + 1 , MOD(a + 1 , 20), 1 FROM t1;
+INSERT INTO t1 SELECT a + 2 , MOD(a + 2 , 20), 1 FROM t1;
+INSERT INTO t1 SELECT a + 4 , MOD(a + 4 , 20), 1 FROM t1;
+INSERT INTO t1 SELECT a + 8 , MOD(a + 8 , 20), 1 FROM t1;
+INSERT INTO t1 SELECT a + 16, MOD(a + 16, 20), 1 FROM t1;
+INSERT INTO t1 SELECT a + 32, MOD(a + 32, 20), 1 FROM t1;
+INSERT INTO t1 SELECT a + 64, MOD(a + 64, 20), 1 FROM t1;
+EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL b 5 NULL 128
+EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using filesort
+DROP TABLE t1;
+drop table if exists t1;
+show variables like 'innodb_rollback_on_timeout';
+Variable_name Value
+innodb_rollback_on_timeout OFF
+create table t1 (a int unsigned not null primary key) engine = innodb;
+insert into t1 values (1);
+commit;
+begin work;
+insert into t1 values (2);
+select * from t1;
+a
+1
+2
+begin work;
+insert into t1 values (5);
+select * from t1;
+a
+1
+5
+insert into t1 values (2);
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+select * from t1;
+a
+1
+5
+commit;
+select * from t1;
+a
+1
+2
+commit;
+select * from t1;
+a
+1
+2
+5
+drop table t1;
+drop table if exists t1;
+create table t1 (a int) engine=innodb;
+alter table t1 alter a set default 1;
+drop table t1;
+
+Bug#24918 drop table and lock / inconsistent between
+perm and temp tables
+
+Check transactional tables under LOCK TABLES
+
+drop table if exists t24918, t24918_tmp, t24918_trans, t24918_trans_tmp,
+t24918_access;
+create table t24918_access (id int);
+create table t24918 (id int) engine=myisam;
+create temporary table t24918_tmp (id int) engine=myisam;
+create table t24918_trans (id int) engine=innodb;
+create temporary table t24918_trans_tmp (id int) engine=innodb;
+lock table t24918 write, t24918_tmp write, t24918_trans write, t24918_trans_tmp write;
+drop table t24918;
+select * from t24918_access;
+ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
+drop table t24918_trans;
+select * from t24918_access;
+ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
+drop table t24918_trans_tmp;
+select * from t24918_access;
+ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
+drop table t24918_tmp;
+select * from t24918_access;
+ERROR HY000: Table 't24918_access' was not locked with LOCK TABLES
+unlock tables;
+drop table t24918_access;
+CREATE TABLE t1 (a int, b int, PRIMARY KEY (a), KEY bkey (b)) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,2),(3,2),(2,2),(4,2),(5,2),(6,2),(7,2),(8,2);
+INSERT INTO t1 SELECT a + 8, 2 FROM t1;
+INSERT INTO t1 SELECT a + 16, 1 FROM t1;
+EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a;
+id 1
+select_type SIMPLE
+table t1
+type ref
+possible_keys bkey
+key bkey
+key_len 5
+ref const
+rows 16
+Extra Using where; Using index
+SELECT * FROM t1 WHERE b=2 ORDER BY a;
+a b
+1 2
+2 2
+3 2
+4 2
+5 2
+6 2
+7 2
+8 2
+9 2
+10 2
+11 2
+12 2
+13 2
+14 2
+15 2
+16 2
+EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
+id 1
+select_type SIMPLE
+table t1
+type range
+possible_keys bkey
+key bkey
+key_len 5
+ref NULL
+rows 16
+Extra Using where; Using index; Using filesort
+SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY a;
+a b
+1 2
+2 2
+3 2
+4 2
+5 2
+6 2
+7 2
+8 2
+9 2
+10 2
+11 2
+12 2
+13 2
+14 2
+15 2
+16 2
+17 1
+18 1
+19 1
+20 1
+21 1
+22 1
+23 1
+24 1
+25 1
+26 1
+27 1
+28 1
+29 1
+30 1
+31 1
+32 1
+EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a;
+id 1
+select_type SIMPLE
+table t1
+type range
+possible_keys bkey
+key bkey
+key_len 5
+ref NULL
+rows 16
+Extra Using where; Using index
+SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a;
+a b
+17 1
+18 1
+19 1
+20 1
+21 1
+22 1
+23 1
+24 1
+25 1
+26 1
+27 1
+28 1
+29 1
+30 1
+31 1
+32 1
+1 2
+2 2
+3 2
+4 2
+5 2
+6 2
+7 2
+8 2
+9 2
+10 2
+11 2
+12 2
+13 2
+14 2
+15 2
+16 2
+CREATE TABLE t2 (a int, b int, c int, PRIMARY KEY (a), KEY bkey (b,c))
+ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,1,1),(3,1,1),(2,1,1),(4,1,1);
+INSERT INTO t2 SELECT a + 4, 1, 1 FROM t2;
+INSERT INTO t2 SELECT a + 8, 1, 1 FROM t2;
+EXPLAIN SELECT * FROM t2 WHERE b=1 ORDER BY a;
+id 1
+select_type SIMPLE
+table t2
+type ref
+possible_keys bkey
+key bkey
+key_len 5
+ref const
+rows 8
+Extra Using where; Using index; Using filesort
+SELECT * FROM t2 WHERE b=1 ORDER BY a;
+a b c
+1 1 1
+2 1 1
+3 1 1
+4 1 1
+5 1 1
+6 1 1
+7 1 1
+8 1 1
+9 1 1
+10 1 1
+11 1 1
+12 1 1
+13 1 1
+14 1 1
+15 1 1
+16 1 1
+EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY a;
+id 1
+select_type SIMPLE
+table t2
+type ref
+possible_keys bkey
+key bkey
+key_len 10
+ref const,const
+rows 8
+Extra Using where; Using index
+SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY a;
+a b c
+1 1 1
+2 1 1
+3 1 1
+4 1 1
+5 1 1
+6 1 1
+7 1 1
+8 1 1
+9 1 1
+10 1 1
+11 1 1
+12 1 1
+13 1 1
+14 1 1
+15 1 1
+16 1 1
+EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY b,c,a;
+id 1
+select_type SIMPLE
+table t2
+type ref
+possible_keys bkey
+key bkey
+key_len 10
+ref const,const
+rows 8
+Extra Using where; Using index
+SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY b,c,a;
+a b c
+1 1 1
+2 1 1
+3 1 1
+4 1 1
+5 1 1
+6 1 1
+7 1 1
+8 1 1
+9 1 1
+10 1 1
+11 1 1
+12 1 1
+13 1 1
+14 1 1
+15 1 1
+16 1 1
+EXPLAIN SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a;
+id 1
+select_type SIMPLE
+table t2
+type ref
+possible_keys bkey
+key bkey
+key_len 10
+ref const,const
+rows 8
+Extra Using where; Using index
+SELECT * FROM t2 WHERE b=1 AND c=1 ORDER BY c,a;
+a b c
+1 1 1
+2 1 1
+3 1 1
+4 1 1
+5 1 1
+6 1 1
+7 1 1
+8 1 1
+9 1 1
+10 1 1
+11 1 1
+12 1 1
+13 1 1
+14 1 1
+15 1 1
+16 1 1
+DROP TABLE t1,t2;
+CREATE TABLE t1 (a INT, PRIMARY KEY (a)) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8);
+INSERT INTO t1 SELECT a + 8 FROM t1;
+INSERT INTO t1 SELECT a + 16 FROM t1;
+CREATE PROCEDURE p1 ()
+BEGIN
+DECLARE i INT DEFAULT 50;
+DECLARE cnt INT;
+START TRANSACTION;
+ALTER TABLE t1 ENGINE=InnoDB;
+COMMIT;
+START TRANSACTION;
+WHILE (i > 0) DO
+SET i = i - 1;
+SELECT COUNT(*) INTO cnt FROM t1 LOCK IN SHARE MODE;
+END WHILE;
+COMMIT;
+END;|
+CALL p1();
+CALL p1();
+CALL p1();
+DROP PROCEDURE p1;
+DROP TABLE t1;
+create table t1(a text) engine=innodb default charset=utf8;
+insert into t1 values('aaa');
+alter table t1 add index(a(1024));
+Warnings:
+Warning 1071 Specified key was too long; max key length is 767 bytes
+Warning 1071 Specified key was too long; max key length is 767 bytes
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` text,
+ KEY `a` (`a`(255))
+) ENGINE=InnoDB DEFAULT CHARSET=utf8
+drop table t1;
+CREATE TABLE t1 (
+a INT,
+b INT,
+KEY (b)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,10), (2,10), (2,20), (3,30);
+START TRANSACTION;
+SELECT * FROM t1 WHERE b=20 FOR UPDATE;
+a b
+2 20
+START TRANSACTION;
+SELECT * FROM t1 WHERE b=10 ORDER BY A FOR UPDATE;
+a b
+1 10
+2 10
+ROLLBACK;
+ROLLBACK;
+DROP TABLE t1;
+CREATE TABLE t1(
+a INT,
+b INT NOT NULL,
+c INT NOT NULL,
+d INT,
+UNIQUE KEY (c,b)
+) engine=innodb;
+INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
+EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
+SELECT c,b,d FROM t1 GROUP BY c,b,d;
+c b d
+1 1 50
+3 1 4
+3 2 40
+EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3
+SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
+c b d
+1 1 50
+3 1 4
+3 2 40
+EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
+SELECT c,b,d FROM t1 ORDER BY c,b,d;
+c b d
+1 1 50
+3 1 4
+3 2 40
+EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL c 8 NULL 3
+SELECT c,b,d FROM t1 GROUP BY c,b;
+c b d
+1 1 50
+3 1 4
+3 2 40
+EXPLAIN SELECT c,b FROM t1 GROUP BY c,b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL c 8 NULL 3 Using index
+SELECT c,b FROM t1 GROUP BY c,b;
+c b
+1 1
+3 1
+3 2
+DROP TABLE t1;
+CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), INDEX b (b)) ENGINE=InnoDB;
+INSERT INTO t1(a,b) VALUES (1,1), (2,2), (3,2);
+EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
+id 1
+select_type SIMPLE
+table t1
+type ref
+possible_keys b
+key b
+key_len 5
+ref const
+rows 1
+Extra Using where; Using index
+SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
+a b
+2 2
+3 2
+EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
+id 1
+select_type SIMPLE
+table t1
+type ref
+possible_keys b
+key b
+key_len 5
+ref const
+rows 1
+Extra Using where; Using index
+SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
+a b
+3 2
+2 2
+EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a ASC;
+id 1
+select_type SIMPLE
+table t1
+type index
+possible_keys NULL
+key b
+key_len 5
+ref NULL
+rows 3
+Extra Using index
+SELECT * FROM t1 ORDER BY b ASC, a ASC;
+a b
+1 1
+2 2
+3 2
+EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a DESC;
+id 1
+select_type SIMPLE
+table t1
+type index
+possible_keys NULL
+key b
+key_len 5
+ref NULL
+rows 3
+Extra Using index
+SELECT * FROM t1 ORDER BY b DESC, a DESC;
+a b
+3 2
+2 2
+1 1
+EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a DESC;
+id 1
+select_type SIMPLE
+table t1
+type index
+possible_keys NULL
+key b
+key_len 5
+ref NULL
+rows 3
+Extra Using index; Using filesort
+SELECT * FROM t1 ORDER BY b ASC, a DESC;
+a b
+1 1
+3 2
+2 2
+EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a ASC;
+id 1
+select_type SIMPLE
+table t1
+type index
+possible_keys NULL
+key b
+key_len 5
+ref NULL
+rows 3
+Extra Using index; Using filesort
+SELECT * FROM t1 ORDER BY b DESC, a ASC;
+a b
+2 2
+3 2
+1 1
+DROP TABLE t1;
+
+#
+# Bug#27610: ALTER TABLE ROW_FORMAT=... does not rebuild the table.
+#
+
+# - prepare;
+
+DROP TABLE IF EXISTS t1;
+
+CREATE TABLE t1(c INT)
+ENGINE = InnoDB
+ROW_FORMAT = COMPACT;
+
+# - initial check;
+
+SELECT table_schema, table_name, row_format
+FROM INFORMATION_SCHEMA.TABLES
+WHERE table_schema = DATABASE() AND table_name = 't1';
+table_schema table_name row_format
+test t1 Compact
+
+# - change ROW_FORMAT and check;
+
+ALTER TABLE t1 ROW_FORMAT = REDUNDANT;
+
+SELECT table_schema, table_name, row_format
+FROM INFORMATION_SCHEMA.TABLES
+WHERE table_schema = DATABASE() AND table_name = 't1';
+table_schema table_name row_format
+test t1 Redundant
+
+# - that's it, cleanup.
+
+DROP TABLE t1;
+create table t1(a char(10) not null, unique key aa(a(1)),
+b char(4) not null, unique key bb(b(4))) engine=innodb;
+desc t1;
+Field Type Null Key Default Extra
+a char(10) NO UNI NULL
+b char(4) NO PRI NULL
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(10) NOT NULL,
+ `b` char(4) NOT NULL,
+ UNIQUE KEY `bb` (`b`),
+ UNIQUE KEY `aa` (`a`(1))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+drop table t1;
+CREATE TABLE t1 (id int, type char(6), d int, INDEX idx(id,d)) ENGINE=InnoDB;
+INSERT INTO t1 VALUES
+(191, 'member', 1), (NULL, 'member', 3), (NULL, 'member', 4), (201, 'member', 2);
+EXPLAIN SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL idx NULL NULL NULL 4 Using where; Using filesort
+SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
+id type d
+191 member 1
+NULL member 3
+NULL member 4
+DROP TABLE t1;
+set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
+set global innodb_autoextend_increment=8;
+set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
+set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
+set global innodb_commit_concurrency=0;
+set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
+CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b))
+ENGINE=InnoDB;
+INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1);
+INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1;
+EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index t1_b PRIMARY 4 NULL 8 Using where
+SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5;
+a b c
+8 1 1
+7 1 1
+6 1 1
+5 1 1
+4 1 1
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
+CREATE INDEX i1 on t1 (a(3));
+SELECT * FROM t1 WHERE a = 'abcde';
+a
+DROP TABLE t1;
+#
+# BUG #26288: savepoint are not deleted on comit, if the transaction
+# was otherwise empty
+#
+BEGIN;
+SAVEPOINT s1;
+COMMIT;
+RELEASE SAVEPOINT s1;
+ERROR 42000: SAVEPOINT s1 does not exist
+BEGIN;
+SAVEPOINT s2;
+COMMIT;
+ROLLBACK TO SAVEPOINT s2;
+ERROR 42000: SAVEPOINT s2 does not exist
+BEGIN;
+SAVEPOINT s3;
+ROLLBACK;
+RELEASE SAVEPOINT s3;
+ERROR 42000: SAVEPOINT s3 does not exist
+BEGIN;
+SAVEPOINT s4;
+ROLLBACK;
+ROLLBACK TO SAVEPOINT s4;
+ERROR 42000: SAVEPOINT s4 does not exist
+CREATE TABLE t1 (f1 INTEGER PRIMARY KEY COMMENT 'My ID#', f2 INTEGER DEFAULT NULL, f3 CHAR(10) DEFAULT 'My ID#', CONSTRAINT f2_ref FOREIGN KEY (f2) REFERENCES t1 (f1)) ENGINE=INNODB;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `f1` int(11) NOT NULL COMMENT 'My ID#',
+ `f2` int(11) DEFAULT NULL,
+ `f3` char(10) DEFAULT 'My ID#',
+ PRIMARY KEY (`f1`),
+ KEY `f2_ref` (`f2`),
+ CONSTRAINT `f2_ref` FOREIGN KEY (`f2`) REFERENCES `t1` (`f1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+DROP TABLE t1;
+#
+# Bug #36995: valgrind error in remove_const during subquery executions
+#
+create table t1 (a bit(1) not null,b int) engine=myisam;
+create table t2 (c int) engine=innodb;
+set @save_optimizer_switch=@@optimizer_switch;
+set @@optimizer_switch='partial_match_rowid_merge=off,partial_match_table_scan=off';
+explain
+select b from t1 where a not in (select b from t1,t2 group by a) group by a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
+2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1
+set optimizer_switch=@save_optimizer_switch;
+DROP TABLE t1,t2;
+End of 5.0 tests
+CREATE TABLE `t2` (
+`k` int(11) NOT NULL auto_increment,
+`a` int(11) default NULL,
+`c` int(11) default NULL,
+PRIMARY KEY (`k`),
+UNIQUE KEY `idx_1` (`a`)
+);
+insert into t2 ( a ) values ( 6 ) on duplicate key update c =
+ifnull( c,
+0 ) + 1;
+insert into t2 ( a ) values ( 7 ) on duplicate key update c =
+ifnull( c,
+0 ) + 1;
+select last_insert_id();
+last_insert_id()
+2
+select * from t2;
+k a c
+1 6 NULL
+2 7 NULL
+insert into t2 ( a ) values ( 6 ) on duplicate key update c =
+ifnull( c,
+0 ) + 1;
+select last_insert_id();
+last_insert_id()
+2
+select last_insert_id(0);
+last_insert_id(0)
+0
+insert into t2 ( a ) values ( 6 ) on duplicate key update c =
+ifnull( c,
+0 ) + 1;
+select last_insert_id();
+last_insert_id()
+0
+select * from t2;
+k a c
+1 6 2
+2 7 NULL
+insert ignore into t2 values (null,6,1),(10,8,1);
+select last_insert_id();
+last_insert_id()
+0
+insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1);
+select last_insert_id();
+last_insert_id()
+11
+select * from t2;
+k a c
+1 6 2
+2 7 NULL
+10 8 1
+11 15 1
+12 20 1
+insert into t2 ( a ) values ( 6 ) on duplicate key update c =
+ifnull( c,
+0 ) + 1, k=last_insert_id(k);
+select last_insert_id();
+last_insert_id()
+1
+select * from t2;
+k a c
+1 6 3
+2 7 NULL
+10 8 1
+11 15 1
+12 20 1
+drop table t2;
+drop table if exists t1, t2;
+create table t1 (i int);
+alter table t1 modify i int default 1;
+alter table t1 modify i int default 2, rename t2;
+lock table t2 write;
+alter table t2 modify i int default 3;
+unlock tables;
+lock table t2 write;
+alter table t2 modify i int default 4, rename t1;
+unlock tables;
+drop table t1;
+drop table if exists t1;
+create table t1 (i int);
+insert into t1 values ();
+lock table t1 write;
+alter table t1 modify i int default 1;
+insert into t1 values ();
+select * from t1;
+i
+NULL
+1
+alter table t1 change i c char(10) default "Two";
+insert into t1 values ();
+select * from t1;
+c
+NULL
+1
+Two
+unlock tables;
+select * from t1;
+c
+NULL
+1
+Two
+drop tables t1;
+create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT
+CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
+insert into t1(f1) values(1);
+select @a:=f2 from t1;
+@a:=f2
+#
+update t1 set f1=1;
+select @b:=f2 from t1;
+@b:=f2
+#
+select if(@a=@b,"ok","wrong");
+if(@a=@b,"ok","wrong")
+ok
+insert into t1(f1) values (1) on duplicate key update f1="1";
+select @b:=f2 from t1;
+@b:=f2
+#
+select if(@a=@b,"ok","wrong");
+if(@a=@b,"ok","wrong")
+ok
+insert into t1(f1) select f1 from t1 on duplicate key update f1="1";
+select @b:=f2 from t1;
+@b:=f2
+#
+select if(@a=@b,"ok","wrong");
+if(@a=@b,"ok","wrong")
+ok
+drop table t1;
+SET SESSION AUTOCOMMIT = 0;
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+set binlog_format=mixed;
+# Switch to connection con1
+CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(256))
+ENGINE = InnoDB;
+INSERT INTO t1 VALUES (1,2);
+# 1. test for locking:
+BEGIN;
+UPDATE t1 SET b = 12 WHERE a = 1;
+affected rows: 1
+info: Rows matched: 1 Changed: 1 Warnings: 0
+SELECT * FROM t1;
+a b
+1 12
+# Switch to connection con2
+UPDATE t1 SET b = 21 WHERE a = 1;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+# Switch to connection con1
+SELECT * FROM t1;
+a b
+1 12
+ROLLBACK;
+# 2. test for serialized update:
+CREATE TABLE t2 (a INT);
+TRUNCATE t1;
+INSERT INTO t1 VALUES (1,'init');
+CREATE PROCEDURE p1()
+BEGIN
+UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
+INSERT INTO t2 VALUES ();
+END|
+BEGIN;
+UPDATE t1 SET b = CONCAT(b, '+con1') WHERE a = 1;
+affected rows: 1
+info: Rows matched: 1 Changed: 1 Warnings: 0
+SELECT * FROM t1;
+a b
+1 init+con1
+# Switch to connection con2
+CALL p1;;
+# Switch to connection con1
+SELECT * FROM t1;
+a b
+1 init+con1
+COMMIT;
+SELECT * FROM t1;
+a b
+1 init+con1
+# Switch to connection con2
+SELECT * FROM t1;
+a b
+1 init+con1+con2
+# Switch to connection con1
+# 3. test for updated key column:
+TRUNCATE t1;
+TRUNCATE t2;
+INSERT INTO t1 VALUES (1,'init');
+BEGIN;
+UPDATE t1 SET a = 2, b = CONCAT(b, '+con1') WHERE a = 1;
+affected rows: 1
+info: Rows matched: 1 Changed: 1 Warnings: 0
+SELECT * FROM t1;
+a b
+2 init+con1
+# Switch to connection con2
+CALL p1;;
+# Switch to connection con1
+SELECT * FROM t1;
+a b
+2 init+con1
+COMMIT;
+SELECT * FROM t1;
+a b
+2 init+con1
+# Switch to connection con2
+SELECT * FROM t1;
+a b
+2 init+con1
+DROP PROCEDURE p1;
+DROP TABLE t1, t2;
+CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, PRIMARY KEY (a,b)) engine=innodb;
+CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
+CONSTRAINT c2 FOREIGN KEY f2 (c) REFERENCES t1 (a,b) ON UPDATE NO ACTION) engine=innodb;
+ERROR 42000: Incorrect foreign key definition for 'f2': Key reference and table reference don't match
+CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
+CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a,b) ON UPDATE NO ACTION) engine=innodb;
+ERROR 42000: Incorrect foreign key definition for 'c2': Key reference and table reference don't match
+CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
+CONSTRAINT c1 FOREIGN KEY c2 (c) REFERENCES t1 (a) ON DELETE NO ACTION,
+CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION) engine=innodb;
+ALTER TABLE t2 DROP FOREIGN KEY c2;
+DROP TABLE t2;
+CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
+FOREIGN KEY (c) REFERENCES t1 (a,k) ON UPDATE NO ACTION) engine=innodb;
+ERROR 42000: Incorrect foreign key definition for 'foreign key without name': Key reference and table reference don't match
+CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
+FOREIGN KEY f1 (c) REFERENCES t1 (a,k) ON UPDATE NO ACTION) engine=innodb;
+ERROR 42000: Incorrect foreign key definition for 'f1': Key reference and table reference don't match
+CREATE TABLE t2 (c INT NOT NULL, d INT NOT NULL, PRIMARY KEY (c,d),
+CONSTRAINT c1 FOREIGN KEY f1 (c) REFERENCES t1 (a) ON DELETE NO ACTION,
+CONSTRAINT c2 FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION,
+FOREIGN KEY f3 (c) REFERENCES t1 (a) ON UPDATE NO ACTION,
+FOREIGN KEY (c) REFERENCES t1 (a) ON UPDATE NO ACTION) engine=innodb;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `c` int(11) NOT NULL,
+ `d` int(11) NOT NULL,
+ PRIMARY KEY (`c`,`d`),
+ CONSTRAINT `c1` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON DELETE NO ACTION,
+ CONSTRAINT `c2` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION,
+ CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION,
+ CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`c`) REFERENCES `t1` (`a`) ON UPDATE NO ACTION
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+DROP TABLE t2;
+DROP TABLE t1;
+create table t1 (a int auto_increment primary key) engine=innodb;
+alter table t1 order by a;
+Warnings:
+Warning 1105 ORDER BY ignored as there is a user-defined clustered index in the table 't1'
+drop table t1;
+CREATE TABLE t1
+(vid integer NOT NULL,
+tid integer NOT NULL,
+idx integer NOT NULL,
+name varchar(128) NOT NULL,
+type varchar(128) NULL,
+PRIMARY KEY(idx, vid, tid),
+UNIQUE(vid, tid, name)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES
+(1,1,1,'pk',NULL),(2,1,1,'pk',NULL),(3,1,1,'pk',NULL),(4,1,1,'c1',NULL),
+(5,1,1,'pk',NULL),(1,1,2,'c1',NULL),(2,1,2,'c1',NULL),(3,1,2,'c1',NULL),
+(4,1,2,'c2',NULL),(5,1,2,'c1',NULL),(2,1,3,'c2',NULL),(3,1,3,'c2',NULL),
+(4,1,3,'pk',NULL),(5,1,3,'c2',NULL),
+(2,1,4,'c_extra',NULL),(3,1,4,'c_extra',NULL);
+EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE tid = 1 AND vid = 3 ORDER BY idx DESC;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL PRIMARY 12 NULL 16 Using where
+SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE tid = 1 AND vid = 3 ORDER BY idx DESC;
+vid tid idx name type
+3 1 4 c_extra NULL
+3 1 3 c2 NULL
+3 1 2 c1 NULL
+3 1 1 pk NULL
+DROP TABLE t1;
+#
+# Bug #44290: explain crashes for subquery with distinct in
+# SQL_SELECT::test_quick_select
+# (reproduced only with InnoDB tables)
+#
+CREATE TABLE t1 (c1 INT, c2 INT, c3 INT, KEY (c3), KEY (c2, c3))
+ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
+SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
+FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
+1
+1
+EXPLAIN
+SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
+FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <derived2> system NULL NULL NULL NULL 1
+2 DERIVED t1 index c3,c2 c2 10 NULL 5
+DROP TABLE t1;
+CREATE TABLE t1 (c1 REAL, c2 REAL, c3 REAL, KEY (c3), KEY (c2, c3))
+ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
+SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
+FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
+1
+1
+EXPLAIN
+SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
+FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <derived2> system NULL NULL NULL NULL 1
+2 DERIVED t1 index c3,c2 c2 18 NULL 5
+DROP TABLE t1;
+CREATE TABLE t1 (c1 DECIMAL(12,2), c2 DECIMAL(12,2), c3 DECIMAL(12,2),
+KEY (c3), KEY (c2, c3))
+ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,1,1), (1,1,1), (1,1,2), (1,1,1), (1,1,2);
+SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
+FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
+1
+1
+EXPLAIN
+SELECT 1 FROM (SELECT COUNT(DISTINCT c1)
+FROM t1 WHERE c2 IN (1, 1) AND c3 = 2 GROUP BY c2) x;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <derived2> system NULL NULL NULL NULL 1
+2 DERIVED t1 index c3,c2 c2 14 NULL 5
+DROP TABLE t1;
+End of 5.1 tests
+drop table if exists t1, t2, t3;
+create table t1(a int);
+insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t2 (a int, b int, pk int, key(a,b), primary key(pk)) engine=innodb;
+insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C;
+this must use key 'a', not PRIMARY:
+explain select a from t2 where a=b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 index NULL a 10 NULL # Using where; Using index
+drop table t1, t2;
+SET SESSION BINLOG_FORMAT=STATEMENT;
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+select @@session.sql_log_bin, @@session.binlog_format, @@session.tx_isolation;
+@@session.sql_log_bin 1
+@@session.binlog_format STATEMENT
+@@session.tx_isolation READ-COMMITTED
+CREATE TABLE t1 ( a INT ) ENGINE=InnoDB;
+INSERT INTO t1 VALUES(1);
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
+CREATE INDEX i1 on t1 (a(3));
+SELECT * FROM t1 WHERE a = 'abcde';
+a
+DROP TABLE t1;
+CREATE TABLE foo (a int, b int, c char(10),
+PRIMARY KEY (c(3)),
+KEY b (b)
+) engine=innodb;
+CREATE TABLE foo2 (a int, b int, c char(10),
+PRIMARY KEY (c),
+KEY b (b)
+) engine=innodb;
+CREATE TABLE bar (a int, b int, c char(10),
+PRIMARY KEY (c(3)),
+KEY b (b)
+) engine=myisam;
+INSERT INTO foo VALUES
+(1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
+(4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
+INSERT INTO bar SELECT * FROM foo;
+INSERT INTO foo2 SELECT * FROM foo;
+EXPLAIN SELECT c FROM bar WHERE b>2;;
+id 1
+select_type SIMPLE
+table bar
+type ALL
+possible_keys b
+key NULL
+key_len NULL
+ref NULL
+rows 6
+Extra Using where
+EXPLAIN SELECT c FROM foo WHERE b>2;;
+id 1
+select_type SIMPLE
+table foo
+type ALL
+possible_keys b
+key NULL
+key_len NULL
+ref NULL
+rows 6
+Extra Using where
+EXPLAIN SELECT c FROM foo2 WHERE b>2;;
+id 1
+select_type SIMPLE
+table foo2
+type range
+possible_keys b
+key b
+key_len 5
+ref NULL
+rows 3
+Extra Using where; Using index
+EXPLAIN SELECT c FROM bar WHERE c>2;;
+id 1
+select_type SIMPLE
+table bar
+type ALL
+possible_keys PRIMARY
+key NULL
+key_len NULL
+ref NULL
+rows 6
+Extra Using where
+EXPLAIN SELECT c FROM foo WHERE c>2;;
+id 1
+select_type SIMPLE
+table foo
+type ALL
+possible_keys PRIMARY
+key NULL
+key_len NULL
+ref NULL
+rows 6
+Extra Using where
+EXPLAIN SELECT c FROM foo2 WHERE c>2;;
+id 1
+select_type SIMPLE
+table foo2
+type index
+possible_keys PRIMARY
+key b
+key_len 5
+ref NULL
+rows 6
+Extra Using where; Using index
+DROP TABLE foo, bar, foo2;
+DROP TABLE IF EXISTS t1,t3,t2;
+DROP FUNCTION IF EXISTS f1;
+CREATE FUNCTION f1() RETURNS VARCHAR(250)
+BEGIN
+return 'hhhhhhh' ;
+END|
+CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB;
+BEGIN WORK;
+CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB;
+CREATE TEMPORARY TABLE t3 LIKE t2;
+INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL);
+SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl');
+PREPARE stmt1 FROM @stmt;
+SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2');
+PREPARE stmt3 FROM @stmt;
+EXECUTE stmt1;
+COMMIT;
+DEALLOCATE PREPARE stmt1;
+DEALLOCATE PREPARE stmt3;
+DROP TABLE t1,t3,t2;
+DROP FUNCTION f1;
+DROP TABLE IF EXISTS t1,t2;
+CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY,
+t1_id INT, INDEX par_ind (t1_id),
+FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB;
+INSERT INTO t1 VALUES (1),(2);
+INSERT INTO t2 VALUES (3,2);
+SET AUTOCOMMIT = 0;
+START TRANSACTION;
+TRUNCATE TABLE t1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
+SELECT * FROM t1;
+id
+1
+2
+COMMIT;
+SELECT * FROM t1;
+id
+1
+2
+START TRANSACTION;
+TRUNCATE TABLE t1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
+SELECT * FROM t1;
+id
+1
+2
+ROLLBACK;
+SELECT * FROM t1;
+id
+1
+2
+SET AUTOCOMMIT = 1;
+START TRANSACTION;
+SELECT * FROM t1;
+id
+1
+2
+COMMIT;
+TRUNCATE TABLE t1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
+SELECT * FROM t1;
+id
+1
+2
+DELETE FROM t2 WHERE id = 3;
+START TRANSACTION;
+SELECT * FROM t1;
+id
+1
+2
+TRUNCATE TABLE t1;
+ROLLBACK;
+SELECT * FROM t1;
+id
+TRUNCATE TABLE t2;
+DROP TABLE t2;
+DROP TABLE t1;
+#
+# Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0
+#
+CREATE TABLE t1 (
+id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+PRIMARY KEY (id)
+) ENGINE=InnoDB;
+CREATE TABLE t2 (
+id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+aid INT UNSIGNED NOT NULL,
+PRIMARY KEY (id),
+FOREIGN KEY (aid) REFERENCES t1 (id)
+) ENGINE=InnoDB;
+CREATE TABLE t3 (
+bid INT UNSIGNED NOT NULL,
+FOREIGN KEY (bid) REFERENCES t2 (id)
+) ENGINE=InnoDB;
+CREATE TABLE t4 (
+a INT
+) ENGINE=InnoDB;
+CREATE TABLE t5 (
+a INT
+) ENGINE=InnoDB;
+INSERT INTO t1 (id) VALUES (1);
+INSERT INTO t2 (id, aid) VALUES (1, 1),(2,1),(3,1),(4,1);
+INSERT INTO t3 (bid) VALUES (1);
+INSERT INTO t4 VALUES (1),(2),(3),(4),(5);
+INSERT INTO t5 VALUES (1);
+DELETE t5 FROM t4 LEFT JOIN t5 ON t4.a= t5.a;
+DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t3`, CONSTRAINT `t3_ibfk_1` FOREIGN KEY (`bid`) REFERENCES `t2` (`id`))
+DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
+ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t3`, CONSTRAINT `t3_ibfk_1` FOREIGN KEY (`bid`) REFERENCES `t2` (`id`))
+DELETE IGNORE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
+DROP TABLE t3;
+DROP TABLE t2;
+DROP TABLE t1;
+DROP TABLES t4,t5;
+# Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0
+# Testing for any side effects of IGNORE on AFTER DELETE triggers used with
+# transactional tables.
+#
+CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a VARCHAR(100)) ENGINE=InnoDB;
+CREATE TABLE t3 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t4 (i INT NOT NULL PRIMARY KEY, t1i INT,
+FOREIGN KEY (t1i) REFERENCES t1(i))
+ENGINE=InnoDB;
+CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
+BEGIN
+SET @b:='EXECUTED TRIGGER';
+INSERT INTO t2 VALUES (@b);
+SET @a:= error_happens_here;
+END||
+SET @b:="";
+SET @a:="";
+INSERT INTO t1 VALUES (1),(2),(3),(4);
+INSERT INTO t3 SELECT * FROM t1;
+** An error in a trigger causes rollback of the statement.
+DELETE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+ERROR 42S22: Unknown column 'error_happens_here' in 'field list'
+SELECT @a,@b;
+@a @b
+ EXECUTED TRIGGER
+SELECT * FROM t2;
+a
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+i i
+1 1
+2 2
+3 3
+4 4
+** Same happens with the IGNORE option
+DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+ERROR 42S22: Unknown column 'error_happens_here' in 'field list'
+SELECT * FROM t2;
+a
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+i i
+1 1
+2 2
+3 3
+4 4
+**
+** The following is an attempt to demonstrate
+** error handling inside a row iteration.
+**
+DROP TRIGGER trg;
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+INSERT INTO t1 VALUES (1),(2),(3),(4);
+INSERT INTO t3 VALUES (1),(2),(3),(4);
+INSERT INTO t4 VALUES (3,3),(4,4);
+CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
+BEGIN
+SET @b:= CONCAT('EXECUTED TRIGGER FOR ROW ',CAST(OLD.i AS CHAR));
+INSERT INTO t2 VALUES (@b);
+END||
+** DELETE is prevented by foreign key constrains but errors are silenced.
+** The AFTER trigger isn't fired.
+DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+** Tables are modified by best effort:
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+i i
+3 3
+4 4
+** The AFTER trigger was only executed on successful rows:
+SELECT * FROM t2;
+a
+EXECUTED TRIGGER FOR ROW 1
+EXECUTED TRIGGER FOR ROW 2
+DROP TRIGGER trg;
+**
+** Induce an error midway through an AFTER-trigger
+**
+TRUNCATE TABLE t4;
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t3;
+INSERT INTO t1 VALUES (1),(2),(3),(4);
+INSERT INTO t3 VALUES (1),(2),(3),(4);
+CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
+BEGIN
+SET @a:= @a+1;
+IF @a > 2 THEN
+INSERT INTO t4 VALUES (5,5);
+END IF;
+END||
+SET @a:=0;
+** Errors in the trigger causes the statement to abort.
+DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t4`, CONSTRAINT `t4_ibfk_1` FOREIGN KEY (`t1i`) REFERENCES `t1` (`i`))
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+i i
+1 1
+2 2
+3 3
+4 4
+SELECT * FROM t4;
+i t1i
+DROP TRIGGER trg;
+DROP TABLE t4;
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+CREATE TABLE t1 (a INT, b INT, KEY (a)) ENGINE = INNODB;
+CREATE TABLE t2 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB;
+CREATE TABLE t3 (a INT, b INT KEY, KEY (a)) ENGINE = INNODB;
+CREATE TABLE t4 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB;
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6);
+INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
+INSERT INTO t3 VALUES (1, 101), (2, 102), (3, 103), (4, 104), (5, 105), (6, 106);
+INSERT INTO t4 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
+UPDATE t1, t2 SET t1.a = t1.a + 100, t2.b = t1.a + 10
+WHERE t1.a BETWEEN 2 AND 4 AND t2.a = t1.b;
+SELECT * FROM t2;
+a b
+1 1
+2 12
+3 13
+4 14
+5 5
+UPDATE t3, t4 SET t3.a = t3.a + 100, t4.b = t3.a + 10
+WHERE t3.a BETWEEN 2 AND 4 AND t4.a = t3.b - 100;
+SELECT * FROM t4;
+a b
+1 1
+2 12
+3 13
+4 14
+5 5
+DROP TABLE t1, t2, t3, t4;
+#
+# Bug#44886: SIGSEGV in test_if_skip_sort_order() -
+# uninitialized variable used as subscript
+#
+CREATE TABLE t1 (a INT, b INT, c INT, d INT, PRIMARY KEY (b), KEY (a,c))
+ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,1,1,0);
+CREATE TABLE t2 (a INT, b INT, e INT, KEY (e)) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,1,2);
+CREATE TABLE t3 (a INT, b INT) ENGINE=MyISAM;
+INSERT INTO t3 VALUES (1, 1);
+SELECT * FROM t1, t2, t3
+WHERE t1.a = t3.a AND (t1.b = t3.b OR t1.d) AND t2.b = t1.b AND t2.e = 2
+GROUP BY t1.b;
+a b c d a b e a b
+1 1 1 0 1 1 2 1 1
+DROP TABLE t1, t2, t3;
+#
+# Bug #45828: Optimizer won't use partial primary key if another
+# index can prevent filesort
+#
+CREATE TABLE `t1` (
+c1 int NOT NULL,
+c2 int NOT NULL,
+c3 int NOT NULL,
+PRIMARY KEY (c1,c2),
+KEY (c3)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (5,2,1246276747);
+INSERT INTO t1 VALUES (2,1,1246281721);
+INSERT INTO t1 VALUES (7,3,1246281756);
+INSERT INTO t1 VALUES (4,2,1246282139);
+INSERT INTO t1 VALUES (3,1,1246282230);
+INSERT INTO t1 VALUES (1,0,1246282712);
+INSERT INTO t1 VALUES (8,3,1246282765);
+INSERT INTO t1 SELECT c1+10,c2+10,c3+10 FROM t1;
+INSERT INTO t1 SELECT c1+100,c2+100,c3+100 from t1;
+INSERT INTO t1 SELECT c1+1000,c2+1000,c3+1000 from t1;
+INSERT INTO t1 SELECT c1+10000,c2+10000,c3+10000 from t1;
+INSERT INTO t1 SELECT c1+100000,c2+100000,c3+100000 from t1;
+INSERT INTO t1 SELECT c1+1000000,c2+1000000,c3+1000000 from t1;
+SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+c1 c2 c3
+EXPLAIN SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref PRIMARY,c3 PRIMARY 4 const 1 Using where; Using filesort
+EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref PRIMARY PRIMARY 4 const 1 Using where; Using filesort
+CREATE TABLE t2 (
+c1 int NOT NULL,
+c2 int NOT NULL,
+c3 int NOT NULL,
+KEY (c1,c2),
+KEY (c3)
+) ENGINE=InnoDB;
+explain SELECT * FROM t2 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ref c1,c3 c1 4 const 1 Using where; Using filesort
+DROP TABLE t1,t2;
+#
+# 36259: Optimizing with ORDER BY
+#
+CREATE TABLE t1 (
+a INT NOT NULL AUTO_INCREMENT,
+b INT NOT NULL,
+c INT NOT NULL,
+d VARCHAR(5),
+e INT NOT NULL,
+PRIMARY KEY (a), KEY i2 (b,c,d)
+) ENGINE=InnoDB;
+INSERT INTO t1 (b,c,d,e) VALUES (1,1,'a',1), (2,2,'b',2);
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+EXPLAIN SELECT * FROM t1 WHERE b=1 AND c=1 ORDER BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref i2 i2 8 const,const 1 Using where; Using filesort
+EXPLAIN SELECT * FROM t1 FORCE INDEX(i2) WHERE b=1 and c=1 ORDER BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref i2 i2 8 const,const 1 Using where; Using filesort
+EXPLAIN SELECT * FROM t1 FORCE INDEX(PRIMARY) WHERE b=1 AND c=1 ORDER BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL PRIMARY 4 NULL 128 Using where
+DROP TABLE t1;
+#
+# Bug #47963: Wrong results when index is used
+#
+CREATE TABLE t1(
+a VARCHAR(5) NOT NULL,
+b VARCHAR(5) NOT NULL,
+c DATETIME NOT NULL,
+KEY (c)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES('TEST', 'TEST', '2009-10-09 00:00:00');
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00';
+a b c
+TEST TEST 2009-10-09 00:00:00
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00.0';
+a b c
+TEST TEST 2009-10-09 00:00:00
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00';
+a b c
+TEST TEST 2009-10-09 00:00:00
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00.0';
+a b c
+TEST TEST 2009-10-09 00:00:00
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00.000' AND c <= '2009-10-09 00:00:00.000';
+a b c
+TEST TEST 2009-10-09 00:00:00
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00.00' AND c <= '2009-10-09 00:00:00.001';
+a b c
+TEST TEST 2009-10-09 00:00:00
+SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
+a b c
+EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND
+c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+DROP TABLE t1;
+#
+# Bug #46175: NULL read_view and consistent read assertion
+#
+CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb;
+CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb;
+INSERT INTO t1 VALUES (),();
+INSERT INTO t2 VALUES (),();
+CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2
+WHERE b =(SELECT a FROM t1 LIMIT 1);
+CREATE PROCEDURE p1(num INT)
+BEGIN
+DECLARE i INT DEFAULT 0;
+REPEAT
+SHOW CREATE VIEW v1;
+SET i:=i+1;
+UNTIL i>num END REPEAT;
+END|
+# Should not crash
+# Should not crash
+DROP PROCEDURE p1;
+DROP VIEW v1;
+DROP TABLE t1,t2;
+#
+# Bug #49324: more valgrind errors in test_if_skip_sort_order
+#
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ;
+#should not cause valgrind warnings
+SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a;
+1
+DROP TABLE t1;
+#
+# Bug#50843: Filesort used instead of clustered index led to
+# performance degradation.
+#
+create table t1(f1 int not null primary key, f2 int) engine=innodb;
+create table t2(f1 int not null, key (f1)) engine=innodb;
+insert into t1 values (1,1),(2,2),(3,3);
+insert into t2 values (1),(2),(3);
+explain select t1.* from t1 left join t2 using(f1) group by t1.f1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index NULL PRIMARY 4 NULL 3
+1 SIMPLE t2 ref f1 f1 4 test.t1.f1 1 Using index
+drop table t1,t2;
+#
+#
+# Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may
+# corrupt definition at engine
+#
+CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, KEY k (a,b))
+ENGINE=InnoDB;
+ALTER TABLE t1 DROP INDEX k, ADD UNIQUE INDEX k (a,b);
+SHOW INDEXES FROM t1;;
+Table t1
+Non_unique 0
+Key_name k
+Seq_in_index 1
+Column_name a
+Collation A
+Cardinality 0
+Sub_part NULL
+Packed NULL
+Null
+Index_type BTREE
+Comment
+Table t1
+Non_unique 0
+Key_name k
+Seq_in_index 2
+Column_name b
+Collation A
+Cardinality 0
+Sub_part NULL
+Packed NULL
+Null
+Index_type BTREE
+Comment
+DROP TABLE t1;
+#
+# Bug #53334: wrong result for outer join with impossible ON condition
+# (see the same test case for MyISAM in join.test)
+#
+create table t1 (id int primary key);
+create table t2 (id int);
+insert into t1 values (75);
+insert into t1 values (79);
+insert into t1 values (78);
+insert into t1 values (77);
+replace into t1 values (76);
+replace into t1 values (76);
+insert into t1 values (104);
+insert into t1 values (103);
+insert into t1 values (102);
+insert into t1 values (101);
+insert into t1 values (105);
+insert into t1 values (106);
+insert into t1 values (107);
+insert into t2 values (107),(75),(1000);
+select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
+where t2.id=75 and t1.id is null;
+id id
+NULL 75
+explain select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
+where t2.id=75 and t1.id is null;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
+drop table t1,t2;
+#
+# Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when
+# JOINed during an UPDATE
+#
+CREATE TABLE t1 (d INT) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT, b INT,
+c TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB;
+set up our data elements
+INSERT INTO t1 (d) VALUES (1);
+INSERT INTO t2 (a,b) VALUES (1,1);
+SELECT SECOND(c) INTO @bug47453 FROM t2;
+SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
+SECOND(c)-@bug47453
+0
+UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1;
+SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
+SECOND(c)-@bug47453
+0
+SELECT SLEEP(1);
+SLEEP(1)
+0
+UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1;
+#should be 0
+SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
+SECOND(c)-@bug47453
+0
+DROP TABLE t1, t2;
+#
+# Bug#38999 valgrind warnings for update statement in function compare_record()
+#
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 values (1),(2),(3),(4),(5);
+INSERT INTO t2 values (1);
+SELECT * FROM t1 WHERE a = 2;
+a
+2
+UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
+DROP TABLE t1,t2;
+#
+# Bug #53334: wrong result for outer join with impossible ON condition
+# (see the same test case for MyISAM in join.test)
+#
+CREATE TABLE t1 (id INT PRIMARY KEY);
+CREATE TABLE t2 (id INT);
+INSERT INTO t1 VALUES (75);
+INSERT INTO t1 VALUES (79);
+INSERT INTO t1 VALUES (78);
+INSERT INTO t1 VALUES (77);
+REPLACE INTO t1 VALUES (76);
+REPLACE INTO t1 VALUES (76);
+INSERT INTO t1 VALUES (104);
+INSERT INTO t1 VALUES (103);
+INSERT INTO t1 VALUES (102);
+INSERT INTO t1 VALUES (101);
+INSERT INTO t1 VALUES (105);
+INSERT INTO t1 VALUES (106);
+INSERT INTO t1 VALUES (107);
+INSERT INTO t2 VALUES (107),(75),(1000);
+SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
+WHERE t2.id=75 AND t1.id IS NULL;
+id id
+NULL 75
+EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
+WHERE t2.id=75 AND t1.id IS NULL;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition
+1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
+DROP TABLE t1,t2;
+#
+# Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
+#
+CREATE TABLE t1 (a INT, b INT, c INT, d INT,
+PRIMARY KEY(a,b,c), KEY(b,d))
+ENGINE=InnoDB;
+INSERT INTO t1 VALUES (0, 77, 1, 3);
+UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25;
+DROP TABLE t1;
+#
+# Bug#50389 Using intersect does not return all rows
+#
+CREATE TABLE t1 (
+f1 INT(10) NOT NULL,
+f2 INT(10),
+f3 INT(10),
+f4 TINYINT(4),
+f5 VARCHAR(50),
+PRIMARY KEY (f1),
+KEY idx1 (f2,f5,f4),
+KEY idx2 (f2,f4)
+) ENGINE=InnoDB;
+LOAD DATA INFILE '../../std_data/intersect-bug50389.tsv' INTO TABLE t1;
+SELECT * FROM t1 WHERE f1 IN
+(3305028,3353871,3772880,3346860,4228206,3336022,
+3470988,3305175,3329875,3817277,3856380,3796193,
+3784744,4180925,4559596,3963734,3856391,4494153)
+AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ;
+f1 f2 f3 f4 f5
+3305175 1221457 0 0 abcdefghijklmnopwrst
+3329875 1221457 1382427 0 abcdefghijklmnopwrst
+3336022 1221457 0 0 abcdefghijklmnopwrst
+3346860 1221457 0 0 abcdefghijklmnopwrst
+3772880 1221457 0 0 abcdefghijklmnopwrst
+3784744 1221457 1382427 0 abcdefghijklmnopwrst
+3796193 1221457 0 0 abcdefghijklmnopwrst
+4228206 1221457 0 0 abcdefghijklmnopwrst
+4494153 1221457 0 0 abcdefghijklmnopwrst
+4559596 1221457 0 0 abcdefghijklmnopwrst
+EXPLAIN SELECT * FROM t1 WHERE f1 IN
+(3305028,3353871,3772880,3346860,4228206,3336022,
+3470988,3305175,3329875,3817277,3856380,3796193,
+3784744,4180925,4559596,3963734,3856391,4494153)
+AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index_merge PRIMARY,idx1,idx2 idx2,idx1,PRIMARY 7,60,4 NULL 1 Using intersect(idx2,idx1,PRIMARY); Using where
+DROP TABLE t1;
+#
+# Bug#51431 Wrong sort order after import of dump file
+#
+CREATE TABLE t1 (
+f1 INT(11) NOT NULL,
+f2 int(11) NOT NULL,
+f3 int(11) NOT NULL,
+f4 tinyint(1) NOT NULL,
+PRIMARY KEY (f1),
+UNIQUE KEY (f2, f3),
+KEY (f4)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES
+(1,1,991,1), (2,1,992,1), (3,1,993,1), (4,1,994,1), (5,1,995,1),
+(6,1,996,1), (7,1,997,1), (8,1,998,1), (10,1,999,1), (11,1,9910,1),
+(16,1,9911,1), (17,1,9912,1), (18,1,9913,1), (19,1,9914,1), (20,1,9915,1),
+(21,1,9916,1), (22,1,9917,1), (23,1,9918,1), (24,1,9919,1), (25,1,9920,1),
+(26,1,9921,1), (27,1,9922,1);
+FLUSH TABLES;
+SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE
+ORDER BY f1 DESC LIMIT 5;
+f1 f2 f3 f4
+27 1 9922 1
+26 1 9921 1
+25 1 9920 1
+24 1 9919 1
+23 1 9918 1
+EXPLAIN SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE
+ORDER BY f1 DESC LIMIT 5;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range f2,f4 f4 1 NULL 11 Using where
+DROP TABLE t1;
+#
+# Bug#54117 crash in thr_multi_unlock, temporary table
+#
+CREATE TEMPORARY TABLE t1(a INT) ENGINE = InnoDB;
+LOCK TABLES t1 READ;
+ALTER TABLE t1 COMMENT 'test';
+UNLOCK TABLES;
+DROP TABLE t1;
+End of 5.1 tests
diff --git a/mysql-test/r/innodb_mysql_rbk.result b/mysql-test/suite/innodb/r/innodb_mysql_rbk.result
index 21ac4295325..21ac4295325 100644
--- a/mysql-test/r/innodb_mysql_rbk.result
+++ b/mysql-test/suite/innodb/r/innodb_mysql_rbk.result
diff --git a/mysql-test/r/innodb_notembedded.result b/mysql-test/suite/innodb/r/innodb_notembedded.result
index af332aba38a..af332aba38a 100644
--- a/mysql-test/r/innodb_notembedded.result
+++ b/mysql-test/suite/innodb/r/innodb_notembedded.result
diff --git a/mysql-test/r/innodb_timeout_rollback.result b/mysql-test/suite/innodb/r/innodb_timeout_rollback.result
index e2da6ba8af7..e2da6ba8af7 100644
--- a/mysql-test/r/innodb_timeout_rollback.result
+++ b/mysql-test/suite/innodb/r/innodb_timeout_rollback.result
diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def
index 7ab00a90758..15f02571509 100644
--- a/mysql-test/suite/innodb/t/disabled.def
+++ b/mysql-test/suite/innodb/t/disabled.def
@@ -9,6 +9,6 @@
# Do not use any TAB characters for whitespace.
#
##############################################################################
-innodb : Bug#53306 2010-04-30 VasilDimov valgrind warnings
-innodb_bug52663 : Waiting for merge with XtraDB
-innodb_bug51920 : Waiting for merge with XtraDB
+
+#innodb : Bug#53306 2010-04-30 VasilDimov valgrind warnings
+innodb_bug53756 : Waiting for merge with Percona Server; bug fixed in innodb_plugin in MySQL 5.1.50
diff --git a/mysql-test/suite/innodb/t/innodb-autoinc-44030.test b/mysql-test/suite/innodb/t/innodb-autoinc-44030.test
index 2524ceb4009..bfde243c495 100644
--- a/mysql-test/suite/innodb/t/innodb-autoinc-44030.test
+++ b/mysql-test/suite/innodb/t/innodb-autoinc-44030.test
@@ -27,7 +27,7 @@ SELECT * FROM t1;
# longer results in the two data dictionaries being out of sync. If they
# revert their changes then this check for ER_AUTOINC_READ_FAILED will need
# to be enabled. Also, see http://bugs.mysql.com/bug.php?id=47621.
--- error ER_AUTOINC_READ_FAILED,1467
+# -- error ER_AUTOINC_READ_FAILED,1467
INSERT INTO t1 VALUES(null);
ALTER TABLE t1 AUTO_INCREMENT = 3;
SHOW CREATE TABLE t1;
diff --git a/mysql-test/t/innodb-autoinc-optimize.test b/mysql-test/suite/innodb/t/innodb-autoinc-optimize.test
index 0f0cb57f92f..0f0cb57f92f 100644
--- a/mysql-test/t/innodb-autoinc-optimize.test
+++ b/mysql-test/suite/innodb/t/innodb-autoinc-optimize.test
diff --git a/mysql-test/suite/innodb/t/innodb-master.opt b/mysql-test/suite/innodb/t/innodb-master.opt
index 4901efb416c..08a79432e47 100644
--- a/mysql-test/suite/innodb/t/innodb-master.opt
+++ b/mysql-test/suite/innodb/t/innodb-master.opt
@@ -1 +1 @@
---binlog_cache_size=32768 --innodb_lock_wait_timeout=1
+--binlog_cache_size=32768 --loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/suite/innodb/t/innodb-semi-consistent-master.opt b/mysql-test/suite/innodb/t/innodb-semi-consistent-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/suite/innodb/t/innodb-semi-consistent-master.opt
+++ b/mysql-test/suite/innodb/t/innodb-semi-consistent-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/t/innodb-ucs2.test b/mysql-test/suite/innodb/t/innodb-ucs2.test
index 7b91ef37d3f..7b91ef37d3f 100644
--- a/mysql-test/t/innodb-ucs2.test
+++ b/mysql-test/suite/innodb/t/innodb-ucs2.test
diff --git a/mysql-test/suite/innodb/t/innodb.test b/mysql-test/suite/innodb/t/innodb.test
new file mode 100644
index 00000000000..743f47e1ccc
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb.test
@@ -0,0 +1,1392 @@
+#######################################################################
+# #
+# Please, DO NOT TOUCH this file as well as the innodb.result file. #
+# These files are to be modified ONLY BY INNOBASE guys. #
+# #
+# Use innodb_mysql.[test|result] files instead. #
+# #
+# If nevertheless you need to make some changes here, please, forward #
+# your commit message #
+# To: innodb_dev_ww@oracle.com #
+# Cc: dev-innodb@mysql.com #
+# (otherwise your changes may be erased). #
+# #
+#######################################################################
+
+-- source include/have_innodb.inc
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+# Save the original values of some variables in order to be able to
+# estimate how much they have changed during the tests. Previously this
+# test assumed that e.g. rows_deleted is 0 here and after deleting 23
+# rows it expected that rows_deleted will be 23. Now we do not make
+# assumptions about the values of the variables at the beginning, e.g.
+# rows_deleted should be 23 + "rows_deleted before the test". This allows
+# the test to be run multiple times without restarting the mysqld server.
+# See Bug#43309 Test main.innodb can't be run twice
+-- disable_query_log
+SET @innodb_thread_concurrency_orig = @@innodb_thread_concurrency;
+
+SET @innodb_rows_deleted_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted');
+SET @innodb_rows_inserted_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted');
+SET @innodb_rows_updated_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated');
+SET @innodb_row_lock_waits_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits');
+SET @innodb_row_lock_current_waits_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits');
+SET @innodb_row_lock_time_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time');
+SET @innodb_row_lock_time_max_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_max');
+SET @innodb_row_lock_time_avg_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_avg');
+-- enable_query_log
+
+--disable_warnings
+drop table if exists t1,t2,t3,t4;
+drop database if exists mysqltest;
+--enable_warnings
+
+#
+# Small basic test with ignore
+#
+
+create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
+
+insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David'), (2, 'Erik'), (3, 'Sasha'), (3, 'Jeremy'), (4, 'Matt');
+select id, code, name from t1 order by id;
+
+update ignore t1 set id = 8, name = 'Sinisa' where id < 3;
+select id, code, name from t1 order by id;
+update ignore t1 set id = id + 10, name = 'Ralph' where id < 4;
+select id, code, name from t1 order by id;
+
+drop table t1;
+
+#
+# A bit bigger test
+# The 'replace_column' statements are needed because the cardinality calculated
+# by innodb is not always the same between runs
+#
+
+CREATE TABLE t1 (
+ id int(11) NOT NULL auto_increment,
+ parent_id int(11) DEFAULT '0' NOT NULL,
+ level tinyint(4) DEFAULT '0' NOT NULL,
+ PRIMARY KEY (id),
+ KEY parent_id (parent_id),
+ KEY level (level)
+) engine=innodb;
+INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2);
+update t1 set parent_id=parent_id+100;
+select * from t1 where parent_id=102;
+update t1 set id=id+1000;
+-- error ER_DUP_ENTRY,1022
+update t1 set id=1024 where id=1009;
+select * from t1;
+update ignore t1 set id=id+1; # This will change all rows
+select * from t1;
+update ignore t1 set id=1023 where id=1010;
+select * from t1 where parent_id=102;
+--replace_column 9 #
+explain select level from t1 where level=1;
+--replace_column 9 #
+explain select level,id from t1 where level=1;
+--replace_column 9 #
+explain select level,id,parent_id from t1 where level=1;
+select level,id from t1 where level=1;
+select level,id,parent_id from t1 where level=1;
+optimize table t1;
+--replace_column 7 #
+show keys from t1;
+drop table t1;
+
+#
+# Test replace
+#
+
+CREATE TABLE t1 (
+ gesuchnr int(11) DEFAULT '0' NOT NULL,
+ benutzer_id int(11) DEFAULT '0' NOT NULL,
+ PRIMARY KEY (gesuchnr,benutzer_id)
+) engine=innodb;
+
+replace into t1 (gesuchnr,benutzer_id) values (2,1);
+replace into t1 (gesuchnr,benutzer_id) values (1,1);
+replace into t1 (gesuchnr,benutzer_id) values (1,1);
+select * from t1;
+drop table t1;
+
+#
+# test delete using hidden_primary_key
+#
+
+create table t1 (a int) engine=innodb;
+insert into t1 values (1), (2);
+optimize table t1;
+delete from t1 where a = 1;
+select * from t1;
+check table t1;
+drop table t1;
+
+create table t1 (a int,b varchar(20)) engine=innodb;
+insert into t1 values (1,""), (2,"testing");
+delete from t1 where a = 1;
+select * from t1;
+create index skr on t1 (a);
+insert into t1 values (3,""), (4,"testing");
+analyze table t1;
+--replace_column 7 #
+show keys from t1;
+drop table t1;
+
+
+# Test of reading on secondary key with may be null
+
+create table t1 (a int,b varchar(20),key(a)) engine=innodb;
+insert into t1 values (1,""), (2,"testing");
+select * from t1 where a = 1;
+drop table t1;
+
+#
+# Test rollback
+#
+
+create table t1 (n int not null primary key) engine=innodb;
+set autocommit=0;
+insert into t1 values (4);
+rollback;
+select n, "after rollback" from t1;
+insert into t1 values (4);
+commit;
+select n, "after commit" from t1;
+commit;
+insert into t1 values (5);
+-- error ER_DUP_ENTRY
+insert into t1 values (4);
+commit;
+select n, "after commit" from t1;
+set autocommit=1;
+insert into t1 values (6);
+-- error ER_DUP_ENTRY
+insert into t1 values (4);
+select n from t1;
+set autocommit=0;
+#
+# savepoints
+#
+begin;
+savepoint `my_savepoint`;
+insert into t1 values (7);
+savepoint `savept2`;
+insert into t1 values (3);
+select n from t1;
+savepoint savept3;
+rollback to savepoint savept2;
+--error 1305
+rollback to savepoint savept3;
+rollback to savepoint savept2;
+release savepoint `my_savepoint`;
+select n from t1;
+-- error 1305
+rollback to savepoint `my_savepoint`;
+--error 1305
+rollback to savepoint savept2;
+insert into t1 values (8);
+savepoint sv;
+commit;
+savepoint sv;
+set autocommit=1;
+# nop
+rollback;
+drop table t1;
+
+#
+# Test for commit and FLUSH TABLES WITH READ LOCK
+#
+
+create table t1 (n int not null primary key) engine=innodb;
+start transaction;
+insert into t1 values (4);
+flush tables with read lock;
+#
+# Current code can't handle a read lock in middle of transaction
+#--error 1223;
+commit;
+unlock tables;
+commit;
+select * from t1;
+drop table t1;
+
+#
+# Testing transactions
+#
+
+create table t1 ( id int NOT NULL PRIMARY KEY, nom varchar(64)) engine=innodb;
+begin;
+insert into t1 values(1,'hamdouni');
+select id as afterbegin_id,nom as afterbegin_nom from t1;
+rollback;
+select id as afterrollback_id,nom as afterrollback_nom from t1;
+set autocommit=0;
+insert into t1 values(2,'mysql');
+select id as afterautocommit0_id,nom as afterautocommit0_nom from t1;
+rollback;
+select id as afterrollback_id,nom as afterrollback_nom from t1;
+set autocommit=1;
+drop table t1;
+
+#
+# Simple not autocommit test
+#
+
+CREATE TABLE t1 (id char(8) not null primary key, val int not null) engine=innodb;
+insert into t1 values ('pippo', 12);
+-- error ER_DUP_ENTRY
+insert into t1 values ('pippo', 12); # Gives error
+delete from t1;
+delete from t1 where id = 'pippo';
+select * from t1;
+
+insert into t1 values ('pippo', 12);
+set autocommit=0;
+delete from t1;
+rollback;
+select * from t1;
+delete from t1;
+commit;
+select * from t1;
+drop table t1;
+
+#
+# Test of active transactions
+#
+
+create table t1 (a integer) engine=innodb;
+start transaction;
+rename table t1 to t2;
+create table t1 (b integer) engine=innodb;
+insert into t1 values (1);
+rollback;
+drop table t1;
+rename table t2 to t1;
+drop table t1;
+set autocommit=1;
+
+#
+# The following simple tests failed at some point
+#
+
+CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, NAME VARCHAR(64)) ENGINE=innodb;
+INSERT INTO t1 VALUES (1, 'Jochen');
+select * from t1;
+drop table t1;
+
+CREATE TABLE t1 ( _userid VARCHAR(60) NOT NULL PRIMARY KEY) ENGINE=innodb;
+set autocommit=0;
+INSERT INTO t1 SET _userid='marc@anyware.co.uk';
+COMMIT;
+SELECT * FROM t1;
+SELECT _userid FROM t1 WHERE _userid='marc@anyware.co.uk';
+drop table t1;
+set autocommit=1;
+
+#
+# Test when reading on part of unique key
+#
+CREATE TABLE t1 (
+ user_id int(10) DEFAULT '0' NOT NULL,
+ name varchar(100),
+ phone varchar(100),
+ ref_email varchar(100) DEFAULT '' NOT NULL,
+ detail varchar(200),
+ PRIMARY KEY (user_id,ref_email)
+)engine=innodb;
+
+INSERT INTO t1 VALUES (10292,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10292,'shirish','2333604','shirish@yahoo.com','ddsds'),(10292,'sonali','323232','sonali@bolly.com','filmstar');
+select * from t1 where user_id=10292;
+INSERT INTO t1 VALUES (10291,'sanjeev','29153373','sansh777@hotmail.com','xxx'),(10293,'shirish','2333604','shirish@yahoo.com','ddsds');
+select * from t1 where user_id=10292;
+select * from t1 where user_id>=10292;
+select * from t1 where user_id>10292;
+select * from t1 where user_id<10292;
+drop table t1;
+
+#
+# Test that keys are created in right order
+#
+
+CREATE TABLE t1 (a int not null, b int not null,c int not null,
+key(a),primary key(a,b), unique(c),key(a),unique(b));
+--replace_column 7 #
+show index from t1;
+drop table t1;
+
+#
+# Test of ALTER TABLE and innodb tables
+#
+
+create table t1 (col1 int not null, col2 char(4) not null, primary key(col1));
+alter table t1 engine=innodb;
+insert into t1 values ('1','1'),('5','2'),('2','3'),('3','4'),('4','4');
+select * from t1;
+update t1 set col2='7' where col1='4';
+select * from t1;
+alter table t1 add co3 int not null;
+select * from t1;
+update t1 set col2='9' where col1='2';
+select * from t1;
+drop table t1;
+
+#
+# INSERT INTO innodb tables
+#
+
+create table t1 (a int not null , b int, primary key (a)) engine = innodb;
+create table t2 (a int not null , b int, primary key (a)) engine = myisam;
+insert into t1 VALUES (1,3) , (2,3), (3,3);
+select * from t1;
+insert into t2 select * from t1;
+select * from t2;
+delete from t1 where b = 3;
+select * from t1;
+insert into t1 select * from t2;
+select * from t1;
+select * from t2;
+drop table t1,t2;
+
+#
+# ORDER BY on not primary key
+#
+
+CREATE TABLE t1 (
+ user_name varchar(12),
+ password text,
+ subscribed char(1),
+ user_id int(11) DEFAULT '0' NOT NULL,
+ quota bigint(20),
+ weight double,
+ access_date date,
+ access_time time,
+ approved datetime,
+ dummy_primary_key int(11) NOT NULL auto_increment,
+ PRIMARY KEY (dummy_primary_key)
+) ENGINE=innodb;
+INSERT INTO t1 VALUES ('user_0','somepassword','N',0,0,0,'2000-09-07','23:06:59','2000-09-07 23:06:59',1);
+INSERT INTO t1 VALUES ('user_1','somepassword','Y',1,1,1,'2000-09-07','23:06:59','2000-09-07 23:06:59',2);
+INSERT INTO t1 VALUES ('user_2','somepassword','N',2,2,1.4142135623731,'2000-09-07','23:06:59','2000-09-07 23:06:59',3);
+INSERT INTO t1 VALUES ('user_3','somepassword','Y',3,3,1.7320508075689,'2000-09-07','23:06:59','2000-09-07 23:06:59',4);
+INSERT INTO t1 VALUES ('user_4','somepassword','N',4,4,2,'2000-09-07','23:06:59','2000-09-07 23:06:59',5);
+select user_name, password , subscribed, user_id, quota, weight, access_date, access_time, approved, dummy_primary_key from t1 order by user_name;
+drop table t1;
+
+#
+# Testing of tables without primary keys
+#
+
+CREATE TABLE t1 (
+ id int(11) NOT NULL auto_increment,
+ parent_id int(11) DEFAULT '0' NOT NULL,
+ level tinyint(4) DEFAULT '0' NOT NULL,
+ KEY (id),
+ KEY parent_id (parent_id),
+ KEY level (level)
+) engine=innodb;
+INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1);
+INSERT INTO t1 values (179,5,2);
+update t1 set parent_id=parent_id+100;
+select * from t1 where parent_id=102;
+update t1 set id=id+1000;
+update t1 set id=1024 where id=1009;
+select * from t1;
+update ignore t1 set id=id+1; # This will change all rows
+select * from t1;
+update ignore t1 set id=1023 where id=1010;
+select * from t1 where parent_id=102;
+--replace_column 9 #
+explain select level from t1 where level=1;
+select level,id from t1 where level=1;
+select level,id,parent_id from t1 where level=1;
+select level,id from t1 where level=1 order by id;
+delete from t1 where level=1;
+select * from t1;
+drop table t1;
+
+#
+# Test of index only reads
+#
+CREATE TABLE t1 (
+ sca_code char(6) NOT NULL,
+ cat_code char(6) NOT NULL,
+ sca_desc varchar(50),
+ lan_code char(2) NOT NULL,
+ sca_pic varchar(100),
+ sca_sdesc varchar(50),
+ sca_sch_desc varchar(16),
+ PRIMARY KEY (sca_code, cat_code, lan_code),
+ INDEX sca_pic (sca_pic)
+) engine = innodb ;
+
+INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca_sch_desc) VALUES ( 'PD', 'J', 'PENDANT', 'EN', NULL, NULL, 'PENDANT'),( 'RI', 'J', 'RING', 'EN', NULL, NULL, 'RING'),( 'QQ', 'N', 'RING', 'EN', 'not null', NULL, 'RING');
+select count(*) from t1 where sca_code = 'PD';
+select count(*) from t1 where sca_code <= 'PD';
+select count(*) from t1 where sca_pic is null;
+alter table t1 drop index sca_pic;
+alter table t1 add index sca_pic (cat_code, sca_pic);
+select count(*) from t1 where sca_code='PD' and sca_pic is null;
+select count(*) from t1 where cat_code='E';
+
+alter table t1 drop index sca_pic;
+alter table t1 add index (sca_pic, cat_code);
+select count(*) from t1 where sca_code='PD' and sca_pic is null;
+select count(*) from t1 where sca_pic >= 'n';
+select sca_pic from t1 where sca_pic is null;
+update t1 set sca_pic="test" where sca_pic is null;
+delete from t1 where sca_code='pd';
+drop table t1;
+
+#
+# Test of opening table twice and timestamps
+#
+set @a:=now();
+CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=innodb;
+insert into t1 (a) values(1),(2),(3);
+select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
+select a from t1 natural join t1 as t2 where b >= @a order by a;
+update t1 set a=5 where a=1;
+select a from t1;
+drop table t1;
+
+#
+# Test with variable length primary key
+#
+create table t1 (a varchar(100) not null, primary key(a), b int not null) engine=innodb;
+insert into t1 values("hello",1),("world",2);
+select * from t1 order by b desc;
+optimize table t1;
+--replace_column 7 #
+show keys from t1;
+drop table t1;
+
+#
+# Test of create index with NULL columns
+#
+create table t1 (i int, j int ) ENGINE=innodb;
+insert into t1 values (1,2);
+select * from t1 where i=1 and j=2;
+create index ax1 on t1 (i,j);
+select * from t1 where i=1 and j=2;
+drop table t1;
+
+#
+# Test min-max optimization
+#
+
+CREATE TABLE t1 (
+ a int3 unsigned NOT NULL,
+ b int1 unsigned NOT NULL,
+ UNIQUE (a, b)
+) ENGINE = innodb;
+
+INSERT INTO t1 VALUES (1, 1);
+SELECT MIN(B),MAX(b) FROM t1 WHERE t1.a = 1;
+drop table t1;
+
+#
+# Test INSERT DELAYED
+#
+
+CREATE TABLE t1 (a int unsigned NOT NULL) engine=innodb;
+# Can't test this in 3.23
+# INSERT DELAYED INTO t1 VALUES (1);
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+
+#
+# Crash when using many tables (Test case by Jeremy D Zawodny)
+#
+
+create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h int, i int, j int, k int, l int, m int, n int, o int, p int, q int, r int, s int, t int, u int, v int, w int, x int, y int, z int, a1 int, a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int, b1 int, b2 int, b3 int, b4 int, b5 int, b6 int) engine = innodb;
+insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
+--replace_column 9 #
+explain select * from t1 where a > 0 and a < 50;
+drop table t1;
+
+#
+# Test lock tables
+#
+
+create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
+insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
+LOCK TABLES t1 WRITE;
+--error ER_DUP_ENTRY
+insert into t1 values (99,1,2,'D'),(1,1,2,'D');
+select id from t1;
+select id from t1;
+UNLOCK TABLES;
+DROP TABLE t1;
+
+create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
+insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
+LOCK TABLES t1 WRITE;
+begin;
+--error ER_DUP_ENTRY
+insert into t1 values (99,1,2,'D'),(1,1,2,'D');
+select id from t1;
+insert ignore into t1 values (100,1,2,'D'),(1,1,99,'D');
+commit;
+select id,id3 from t1;
+UNLOCK TABLES;
+DROP TABLE t1;
+
+#
+# Test prefix key
+#
+create table t1 (a char(20), unique (a(5))) engine=innodb;
+drop table t1;
+create table t1 (a char(20), index (a(5))) engine=innodb;
+show create table t1;
+drop table t1;
+
+#
+# Test using temporary table and auto_increment
+#
+
+create temporary table t1 (a int not null auto_increment, primary key(a)) engine=innodb;
+insert into t1 values (NULL),(NULL),(NULL);
+delete from t1 where a=3;
+insert into t1 values (NULL);
+select * from t1;
+alter table t1 add b int;
+select * from t1;
+drop table t1;
+
+#Slashdot bug
+create table t1
+ (
+ id int auto_increment primary key,
+ name varchar(32) not null,
+ value text not null,
+ uid int not null,
+ unique key(name,uid)
+ ) engine=innodb;
+insert into t1 values (1,'one','one value',101),
+ (2,'two','two value',102),(3,'three','three value',103);
+set insert_id=5;
+replace into t1 (value,name,uid) values ('other value','two',102);
+delete from t1 where uid=102;
+set insert_id=5;
+replace into t1 (value,name,uid) values ('other value','two',102);
+set insert_id=6;
+replace into t1 (value,name,uid) values ('other value','two',102);
+select * from t1;
+drop table t1;
+
+#
+# Test DROP DATABASE
+#
+
+create database mysqltest;
+create table mysqltest.t1 (a int not null) engine= innodb;
+insert into mysqltest.t1 values(1);
+create table mysqltest.t2 (a int not null) engine= myisam;
+insert into mysqltest.t2 values(1);
+create table mysqltest.t3 (a int not null) engine= heap;
+insert into mysqltest.t3 values(1);
+commit;
+drop database mysqltest;
+# Don't check error message
+--error 1049
+show tables from mysqltest;
+
+#
+# Test truncate table with and without auto_commit
+#
+
+set autocommit=0;
+create table t1 (a int not null) engine= innodb;
+insert into t1 values(1),(2);
+truncate table t1;
+commit;
+truncate table t1;
+truncate table t1;
+select * from t1;
+insert into t1 values(1),(2);
+delete from t1;
+select * from t1;
+commit;
+drop table t1;
+set autocommit=1;
+
+create table t1 (a int not null) engine= innodb;
+insert into t1 values(1),(2);
+truncate table t1;
+insert into t1 values(1),(2);
+select * from t1;
+truncate table t1;
+insert into t1 values(1),(2);
+delete from t1;
+select * from t1;
+drop table t1;
+
+#
+# Test of how ORDER BY works when doing it on the whole table
+#
+
+create table t1 (a int not null, b int not null, c int not null, primary key (a),key(b)) engine=innodb;
+insert into t1 values (3,3,3),(1,1,1),(2,2,2),(4,4,4);
+--replace_column 9 #
+explain select * from t1 order by a;
+--replace_column 9 #
+explain select * from t1 order by b;
+--replace_column 9 #
+explain select * from t1 order by c;
+--replace_column 9 #
+explain select a from t1 order by a;
+--replace_column 9 #
+explain select b from t1 order by b;
+--replace_column 9 #
+explain select a,b from t1 order by b;
+--replace_column 9 #
+explain select a,b from t1;
+--replace_column 9 #
+explain select a,b,c from t1;
+drop table t1;
+
+#
+# Check describe
+#
+
+create table t1 (t int not null default 1, key (t)) engine=innodb;
+desc t1;
+drop table t1;
+
+#
+# Test of multi-table-delete
+#
+
+CREATE TABLE t1 (
+ number bigint(20) NOT NULL default '0',
+ cname char(15) NOT NULL default '',
+ carrier_id smallint(6) NOT NULL default '0',
+ privacy tinyint(4) NOT NULL default '0',
+ last_mod_date timestamp NOT NULL,
+ last_mod_id smallint(6) NOT NULL default '0',
+ last_app_date timestamp NOT NULL,
+ last_app_id smallint(6) default '-1',
+ version smallint(6) NOT NULL default '0',
+ assigned_scps int(11) default '0',
+ status tinyint(4) default '0'
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (4077711111,'SeanWheeler',90,2,20020111112846,500,00000000000000,-1,2,3,1);
+INSERT INTO t1 VALUES (9197722223,'berry',90,3,20020111112809,500,20020102114532,501,4,10,0);
+INSERT INTO t1 VALUES (650,'San Francisco',0,0,20011227111336,342,00000000000000,-1,1,24,1);
+INSERT INTO t1 VALUES (302467,'Sue\'s Subshop',90,3,20020109113241,500,20020102115111,501,7,24,0);
+INSERT INTO t1 VALUES (6014911113,'SudzCarwash',520,1,20020102115234,500,20020102115259,501,33,32768,0);
+INSERT INTO t1 VALUES (333,'tubs',99,2,20020109113440,501,20020109113440,500,3,10,0);
+CREATE TABLE t2 (
+ number bigint(20) NOT NULL default '0',
+ cname char(15) NOT NULL default '',
+ carrier_id smallint(6) NOT NULL default '0',
+ privacy tinyint(4) NOT NULL default '0',
+ last_mod_date timestamp NOT NULL,
+ last_mod_id smallint(6) NOT NULL default '0',
+ last_app_date timestamp NOT NULL,
+ last_app_id smallint(6) default '-1',
+ version smallint(6) NOT NULL default '0',
+ assigned_scps int(11) default '0',
+ status tinyint(4) default '0'
+) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (4077711111,'SeanWheeler',0,2,20020111112853,500,00000000000000,-1,2,3,1);
+INSERT INTO t2 VALUES (9197722223,'berry',90,3,20020111112818,500,20020102114532,501,4,10,0);
+INSERT INTO t2 VALUES (650,'San Francisco',90,0,20020109113158,342,00000000000000,-1,1,24,1);
+INSERT INTO t2 VALUES (333,'tubs',99,2,20020109113453,501,20020109113453,500,3,10,0);
+select * from t1;
+select * from t2;
+delete t1, t2 from t1 left join t2 on t1.number=t2.number where (t1.carrier_id=90 and t1.number=t2.number) or (t2.carrier_id=90 and t1.number=t2.number) or (t1.carrier_id=90 and t2.number is null);
+select * from t1;
+select * from t2;
+select * from t2;
+drop table t1,t2;
+
+#
+# A simple test with some isolation levels
+# TODO: Make this into a test using replication to really test how
+# this works.
+#
+
+create table t1 (id int unsigned not null auto_increment, code tinyint unsigned not null, name char(20) not null, primary key (id), key (code), unique (name)) engine=innodb;
+
+BEGIN;
+SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
+SELECT @@tx_isolation,@@global.tx_isolation;
+insert into t1 (code, name) values (1, 'Tim'), (1, 'Monty'), (2, 'David');
+select id, code, name from t1 order by id;
+COMMIT;
+
+BEGIN;
+SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
+insert into t1 (code, name) values (2, 'Erik'), (3, 'Sasha');
+select id, code, name from t1 order by id;
+COMMIT;
+
+SET binlog_format='MIXED';
+BEGIN;
+SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
+insert into t1 (code, name) values (3, 'Jeremy'), (4, 'Matt');
+select id, code, name from t1 order by id;
+COMMIT;
+DROP TABLE t1;
+
+#
+# Test of multi-table-update
+#
+create table t1 (n int(10), d int(10)) engine=innodb;
+create table t2 (n int(10), d int(10)) engine=innodb;
+insert into t1 values(1,1),(1,2);
+insert into t2 values(1,10),(2,20);
+UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n;
+select * from t1;
+select * from t2;
+drop table t1,t2;
+
+#
+# Bug #29136 erred multi-delete on trans table does not rollback
+#
+
+# prepare
+--disable_warnings
+drop table if exists t1, t2;
+--enable_warnings
+CREATE TABLE t1 (a int, PRIMARY KEY (a));
+CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
+create trigger trg_del_t2 after delete on t2 for each row
+ insert into t1 values (1);
+insert into t1 values (1);
+insert into t2 values (1),(2);
+
+
+# exec cases A, B - see multi_update.test
+
+# A. send_error() w/o send_eof() branch
+
+--error ER_DUP_ENTRY
+delete t2 from t2;
+
+# check
+
+select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
+
+# cleanup bug#29136
+
+drop table t1, t2;
+
+
+#
+# Bug #29136 erred multi-delete on trans table does not rollback
+#
+
+# prepare
+--disable_warnings
+drop table if exists t1, t2;
+--enable_warnings
+CREATE TABLE t1 (a int, PRIMARY KEY (a));
+CREATE TABLE t2 (a int, PRIMARY KEY (a)) ENGINE=InnoDB;
+create trigger trg_del_t2 after delete on t2 for each row
+ insert into t1 values (1);
+insert into t1 values (1);
+insert into t2 values (1),(2);
+
+
+# exec cases A, B - see multi_update.test
+
+# A. send_error() w/o send_eof() branch
+
+--error ER_DUP_ENTRY
+delete t2 from t2;
+
+# check
+
+select count(*) from t2 /* must be 2 as restored after rollback caused by the error */;
+
+# cleanup bug#29136
+
+drop table t1, t2;
+
+
+#
+# Testing of IFNULL
+#
+create table t1 (a int, b int) engine=innodb;
+insert into t1 values(20,null);
+select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
+t2.b=t3.a;
+select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
+t2.b=t3.a order by 1;
+insert into t1 values(10,null);
+select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
+t2.b=t3.a order by 1;
+drop table t1;
+
+#
+# Test of read_through not existing const_table
+#
+
+create table t1 (a varchar(10) not null) engine=myisam;
+create table t2 (b varchar(10) not null unique) engine=innodb;
+select t1.a from t1,t2 where t1.a=t2.b;
+drop table t1,t2;
+create table t1 (a int not null, b int, primary key (a)) engine = innodb;
+create table t2 (a int not null, b int, primary key (a)) engine = innodb;
+insert into t1 values (10, 20);
+insert into t2 values (10, 20);
+update t1, t2 set t1.b = 150, t2.b = t1.b where t2.a = t1.a and t1.a = 10;
+drop table t1,t2;
+
+#
+# Test of multi-table-delete with foreign key constraints
+#
+
+CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (t1_id) REFERENCES t1(id) ON DELETE CASCADE ) ENGINE=INNODB;
+insert into t1 set id=1;
+insert into t2 set id=1, t1_id=1;
+delete t1,t2 from t1,t2 where t1.id=t2.t1_id;
+select * from t1;
+select * from t2;
+drop table t2,t1;
+CREATE TABLE t1(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
+CREATE TABLE t2(id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id) ) ENGINE=INNODB;
+INSERT INTO t1 VALUES(1);
+INSERT INTO t2 VALUES(1, 1);
+SELECT * from t1;
+UPDATE t1,t2 SET t1.id=t1.id+1, t2.t1_id=t1.id+1;
+SELECT * from t1;
+UPDATE t1,t2 SET t1.id=t1.id+1 where t1.id!=t2.id;
+SELECT * from t1;
+DROP TABLE t1,t2;
+
+#
+# Test of range_optimizer
+#
+
+set autocommit=0;
+
+CREATE TABLE t1 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
+
+CREATE TABLE t2 (id CHAR(15) NOT NULL, value CHAR(40) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
+
+CREATE TABLE t3 (id1 CHAR(15) NOT NULL, id2 CHAR(15) NOT NULL, PRIMARY KEY(id1, id2)) ENGINE=InnoDB;
+
+INSERT INTO t3 VALUES("my-test-1", "my-test-2");
+COMMIT;
+
+INSERT INTO t1 VALUES("this-key", "will disappear");
+INSERT INTO t2 VALUES("this-key", "will also disappear");
+DELETE FROM t3 WHERE id1="my-test-1";
+
+SELECT * FROM t1;
+SELECT * FROM t2;
+SELECT * FROM t3;
+ROLLBACK;
+
+SELECT * FROM t1;
+SELECT * FROM t2;
+SELECT * FROM t3;
+SELECT * FROM t3 WHERE id1="my-test-1" LOCK IN SHARE MODE;
+COMMIT;
+set autocommit=1;
+DROP TABLE t1,t2,t3;
+
+#
+# Check update with conflicting key
+#
+
+CREATE TABLE t1 (a int not null primary key, b int not null, unique (b)) engine=innodb;
+INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
+# We need the a < 1000 test here to quard against the halloween problems
+UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
+SELECT * from t1;
+drop table t1;
+
+CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
+CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
+SET AUTOCOMMIT=0;
+INSERT INTO t1 ( B_ID ) VALUES ( 1 );
+INSERT INTO t2 ( NEXT_T ) VALUES ( 1 );
+ROLLBACK;
+SELECT * FROM t1;
+drop table t1,t2;
+create table t1 ( pk int primary key, parent int not null, child int not null, index (parent) ) engine = innodb;
+insert into t1 values (1,0,4), (2,1,3), (3,2,1), (4,1,2);
+select distinct parent,child from t1 order by parent;
+drop table t1;
+
+#
+# Test that MySQL priorities clustered indexes
+#
+create table t1 (a int not null auto_increment primary key, b int, c int, key(c)) engine=innodb;
+create table t2 (a int not null auto_increment primary key, b int);
+insert into t1 (b) values (null),(null),(null),(null),(null),(null),(null);
+insert into t2 (a) select b from t1;
+insert into t1 (b) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+insert into t2 (a) select b from t1;
+insert into t1 (a) select b from t2;
+select count(*) from t1;
+--replace_column 9 #
+explain select * from t1 where c between 1 and 2500;
+update t1 set c=a;
+--replace_column 9 #
+explain select * from t1 where c between 1 and 2500;
+drop table t1,t2;
+
+#
+# Test of UPDATE ... ORDER BY
+#
+
+create table t1 (id int primary key auto_increment, fk int, index index_fk (fk)) engine=innodb;
+
+insert into t1 (id) values (null),(null),(null),(null),(null);
+update t1 set fk=69 where fk is null order by id limit 1;
+SELECT * from t1;
+drop table t1;
+
+create table t1 (a int not null, b int not null, key (a));
+insert into t1 values (1,1),(1,2),(1,3),(3,1),(3,2),(3,3),(3,1),(3,2),(3,3),(2,1),(2,2),(2,3);
+SET @tmp=0;
+update t1 set b=(@tmp:=@tmp+1) order by a;
+update t1 set b=99 where a=1 order by b asc limit 1;
+update t1 set b=100 where a=1 order by b desc limit 2;
+update t1 set a=a+10+b where a=1 order by b;
+select * from t1 order by a,b;
+drop table t1;
+
+#
+# Test of multi-table-updates (bug #1980).
+#
+
+create table t1 ( c char(8) not null ) engine=innodb;
+insert into t1 values ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9');
+insert into t1 values ('A'),('B'),('C'),('D'),('E'),('F');
+
+alter table t1 add b char(8) not null;
+alter table t1 add a char(8) not null;
+alter table t1 add primary key (a,b,c);
+update t1 set a=c, b=c;
+
+create table t2 (c char(8) not null, b char(8) not null, a char(8) not null, primary key(a,b,c)) engine=innodb;
+insert into t2 select * from t1;
+
+delete t1,t2 from t2,t1 where t1.a<'B' and t2.b=t1.b;
+drop table t1,t2;
+
+#
+# test autoincrement with TRUNCATE
+#
+
+SET AUTOCOMMIT=1;
+create table t1 (a integer auto_increment primary key) engine=innodb;
+insert into t1 (a) values (NULL),(NULL);
+truncate table t1;
+insert into t1 (a) values (NULL),(NULL);
+SELECT * from t1;
+drop table t1;
+
+#
+# Test dictionary handling with spaceand quoting
+#
+
+CREATE TABLE t1 (`id 1` INT NOT NULL, PRIMARY KEY (`id 1`)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id), FOREIGN KEY (`t1_id`) REFERENCES `t1`(`id 1`) ON DELETE CASCADE ) ENGINE=INNODB;
+#show create table t2;
+drop table t2,t1;
+
+#
+# Test of multi updated and foreign keys
+#
+
+create table `t1` (`id` int( 11 ) not null ,primary key ( `id` )) engine = innodb;
+insert into `t1`values ( 1 ) ;
+create table `t2` (`id` int( 11 ) not null default '0',unique key `id` ( `id` ) ,constraint `t1_id_fk` foreign key ( `id` ) references `t1` (`id` )) engine = innodb;
+insert into `t2`values ( 1 ) ;
+create table `t3` (`id` int( 11 ) not null default '0',key `id` ( `id` ) ,constraint `t2_id_fk` foreign key ( `id` ) references `t2` (`id` )) engine = innodb;
+insert into `t3`values ( 1 ) ;
+--error 1451
+delete t3,t2,t1 from t1,t2,t3 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
+--error 1451
+update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
+--error 1054
+update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
+drop table t3,t2,t1;
+
+#
+# test for recursion depth limit
+#
+create table t1(
+ id int primary key,
+ pid int,
+ index(pid),
+ foreign key(pid) references t1(id) on delete cascade) engine=innodb;
+insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6),
+ (8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14);
+-- error 1451
+delete from t1 where id=0;
+delete from t1 where id=15;
+delete from t1 where id=0;
+
+drop table t1;
+
+#
+# Test timestamps
+#
+
+CREATE TABLE t1 (col1 int(1))ENGINE=InnoDB;
+CREATE TABLE t2 (col1 int(1),stamp TIMESTAMP,INDEX stamp_idx
+(stamp))ENGINE=InnoDB;
+insert into t1 values (1),(2),(3);
+# Note that timestamp 3 is wrong
+insert into t2 values (1, 20020204130000),(2, 20020204130000),(4,20020204310000 ),(5,20020204230000);
+SELECT col1 FROM t1 UNION SELECT col1 FROM t2 WHERE stamp <
+'20020204120000' GROUP BY col1;
+drop table t1,t2;
+
+#
+# Test by Francois MASUREL
+#
+
+CREATE TABLE t1 (
+ `id` int(10) unsigned NOT NULL auto_increment,
+ `id_object` int(10) unsigned default '0',
+ `id_version` int(10) unsigned NOT NULL default '1',
+ `label` varchar(100) NOT NULL default '',
+ `description` text,
+ PRIMARY KEY (`id`),
+ KEY `id_object` (`id_object`),
+ KEY `id_version` (`id_version`)
+) ENGINE=InnoDB;
+
+INSERT INTO t1 VALUES("6", "3382", "9", "Test", NULL), ("7", "102", "5", "Le Pekin (Test)", NULL),("584", "1794", "4", "Test de resto", NULL),("837", "1822", "6", "Test 3", NULL),("1119", "3524", "1", "Societe Test", NULL),("1122", "3525", "1", "Fournisseur Test", NULL);
+
+CREATE TABLE t2 (
+ `id` int(10) unsigned NOT NULL auto_increment,
+ `id_version` int(10) unsigned NOT NULL default '1',
+ PRIMARY KEY (`id`),
+ KEY `id_version` (`id_version`)
+) ENGINE=InnoDB;
+
+INSERT INTO t2 VALUES("3524", "1"),("3525", "1"),("1794", "4"),("102", "5"),("1822", "6"),("3382", "9");
+
+SELECT t2.id, t1.`label` FROM t2 INNER JOIN
+(SELECT t1.id_object as id_object FROM t1 WHERE t1.`label` LIKE '%test%') AS lbl
+ON (t2.id = lbl.id_object) INNER JOIN t1 ON (t2.id = t1.id_object);
+drop table t1,t2;
+
+create table t1 (a int, b varchar(200), c text not null) checksum=1 engine=myisam;
+create table t2 (a int, b varchar(200), c text not null) checksum=0 engine=innodb;
+create table t3 (a int, b varchar(200), c text not null) checksum=1 engine=innodb;
+insert t1 values (1, "aaa", "bbb"), (NULL, "", "ccccc"), (0, NULL, "");
+insert t2 select * from t1;
+insert t3 select * from t1;
+checksum table t1, t2, t3, t4 quick;
+checksum table t1, t2, t3, t4;
+checksum table t1, t2, t3, t4 extended;
+#show table status;
+drop table t1,t2,t3;
+
+#
+# Test problem with refering to different fields in same table in UNION
+# (Bug #2552)
+#
+create table t1 (id int, name char(10) not null, name2 char(10) not null) engine=innodb;
+insert into t1 values(1,'first','fff'),(2,'second','sss'),(3,'third','ttt');
+select trim(name2) from t1 union all select trim(name) from t1 union all select trim(id) from t1;
+drop table t1;
+
+#
+# Bug2160
+#
+create table t1 (a int) engine=innodb;
+create table t2 like t1;
+drop table t1,t2;
+
+#
+# Test of automaticly created foreign keys
+#
+
+create table t1 (id int(11) not null, id2 int(11) not null, unique (id,id2)) engine=innodb;
+create table t2 (id int(11) not null, constraint t1_id_fk foreign key ( id ) references t1 (id)) engine = innodb;
+show create table t1;
+show create table t2;
+create index id on t2 (id);
+show create table t2;
+create index id2 on t2 (id);
+show create table t2;
+drop index id2 on t2;
+--error ER_DROP_INDEX_FK
+drop index id on t2;
+show create table t2;
+drop table t2;
+
+create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id,id2) references t1 (id,id2)) engine = innodb;
+show create table t2;
+create unique index id on t2 (id,id2);
+show create table t2;
+drop table t2;
+
+# Check foreign key columns created in different order than key columns
+create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
+show create table t2;
+drop table t2;
+
+create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2), constraint t1_id_fk foreign key (id) references t1 (id)) engine = innodb;
+show create table t2;
+drop table t2;
+
+create table t2 (id int(11) not null, id2 int(11) not null, unique (id,id2),constraint t1_id_fk foreign key (id2,id) references t1 (id,id2)) engine = innodb;
+show create table t2;
+drop table t2;
+
+create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id), primary key (id), index (id,id2)) engine = innodb;
+show create table t2;
+drop table t2;
+
+create table t2 (id int(11) not null auto_increment, id2 int(11) not null, constraint t1_id_fk foreign key (id) references t1 (id)) engine= innodb;
+show create table t2;
+alter table t2 add index id_test (id), add index id_test2 (id,id2);
+show create table t2;
+drop table t2;
+
+# Test error handling
+
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+--error ER_WRONG_FK_DEF
+create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
+
+# bug#3749
+
+create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
+show create table t2;
+drop table t2;
+create table t2 (a int auto_increment primary key, b int, foreign key (b) references t1(id), foreign key (b) references t1(id), unique(b)) engine=innodb;
+show create table t2;
+drop table t2, t1;
+
+
+#
+# Bug #6126: Duplicate columns in keys gives misleading error message
+#
+--error 1060
+create table t1 (c char(10), index (c,c)) engine=innodb;
+--error 1060
+create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;
+--error 1060
+create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;
+--error 1060
+create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;
+create table t1 (c1 char(10), c2 char(10)) engine=innodb;
+--error 1060
+alter table t1 add key (c1,c1);
+--error 1060
+alter table t1 add key (c2,c1,c1);
+--error 1060
+alter table t1 add key (c1,c2,c1);
+--error 1060
+alter table t1 add key (c1,c1,c2);
+drop table t1;
+
+#
+# Bug #4082: integer truncation
+#
+
+create table t1(a int(1) , b int(1)) engine=innodb;
+insert into t1 values ('1111', '3333');
+select distinct concat(a, b) from t1;
+drop table t1;
+
+#
+# BUG#7709 test case - Boolean fulltext query against unsupported
+# engines does not fail
+#
+
+CREATE TABLE t1 ( a char(10) ) ENGINE=InnoDB;
+--error 1214
+SELECT a FROM t1 WHERE MATCH (a) AGAINST ('test' IN BOOLEAN MODE);
+DROP TABLE t1;
+
+#
+# check null values #1
+#
+
+--disable_warnings
+CREATE TABLE t1 (a_id tinyint(4) NOT NULL default '0', PRIMARY KEY (a_id)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+INSERT INTO t1 VALUES (1),(2),(3);
+CREATE TABLE t2 (b_id tinyint(4) NOT NULL default '0',b_a tinyint(4) NOT NULL default '0', PRIMARY KEY (b_id), KEY (b_a),
+ CONSTRAINT fk_b_a FOREIGN KEY (b_a) REFERENCES t1 (a_id) ON DELETE CASCADE ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+--enable_warnings
+INSERT INTO t2 VALUES (1,1),(2,1),(3,1),(4,2),(5,2);
+SELECT * FROM (SELECT t1.*,GROUP_CONCAT(t2.b_id SEPARATOR ',') as b_list FROM (t1 LEFT JOIN (t2) on t1.a_id = t2.b_a) GROUP BY t1.a_id ) AS xyz;
+DROP TABLE t2;
+DROP TABLE t1;
+
+#
+# Bug#11816 - Truncate table doesn't work with temporary innodb tables
+# This is not an innodb bug, but we test it using innodb.
+#
+create temporary table t1 (a int) engine=innodb;
+insert into t1 values (4711);
+truncate t1;
+insert into t1 values (42);
+select * from t1;
+drop table t1;
+# Show that it works with permanent tables too.
+create table t1 (a int) engine=innodb;
+insert into t1 values (4711);
+truncate t1;
+insert into t1 values (42);
+select * from t1;
+drop table t1;
+
+#
+# Bug #13025 Server crash during filesort
+#
+
+create table t1 (a int not null, b int not null, c blob not null, d int not null, e int, primary key (a,b,c(255),d)) engine=innodb;
+insert into t1 values (2,2,"b",2,2),(1,1,"a",1,1),(3,3,"ab",3,3);
+select * from t1 order by a,b,c,d;
+explain select * from t1 order by a,b,c,d;
+drop table t1;
+
+#
+# BUG#11039,#13218 Wrong key length in min()
+#
+
+create table t1 (a char(1), b char(1), key(a, b)) engine=innodb;
+insert into t1 values ('8', '6'), ('4', '7');
+select min(a) from t1;
+select min(b) from t1 where a='8';
+drop table t1;
+
+# End of 4.1 tests
+
+#
+# range optimizer problem
+#
+
+create table t1 (x bigint unsigned not null primary key) engine=innodb;
+insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1);
+select * from t1;
+select count(*) from t1 where x>0;
+select count(*) from t1 where x=0;
+select count(*) from t1 where x<0;
+select count(*) from t1 where x < -16;
+select count(*) from t1 where x = -16;
+explain select count(*) from t1 where x > -16;
+select count(*) from t1 where x > -16;
+select * from t1 where x > -16;
+select count(*) from t1 where x = 18446744073709551601;
+drop table t1;
+
+
+# Test for testable InnoDB status variables. This test
+# uses previous ones(pages_created, rows_deleted, ...).
+--replace_result 8192 8191
+SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
+SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
+SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
+SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
+SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
+
+# Test for row locks InnoDB status variables.
+SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
+SELECT variable_value - @innodb_row_lock_current_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits';
+SELECT variable_value - @innodb_row_lock_time_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time';
+SELECT variable_value - @innodb_row_lock_time_max_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_max';
+SELECT variable_value - @innodb_row_lock_time_avg_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time_avg';
+
+# Test for innodb_sync_spin_loops variable
+SET @innodb_sync_spin_loops_orig = @@innodb_sync_spin_loops;
+show variables like "innodb_sync_spin_loops";
+set global innodb_sync_spin_loops=1000;
+show variables like "innodb_sync_spin_loops";
+set global innodb_sync_spin_loops=0;
+show variables like "innodb_sync_spin_loops";
+set global innodb_sync_spin_loops=20;
+show variables like "innodb_sync_spin_loops";
+set global innodb_sync_spin_loops=@innodb_sync_spin_loops_orig;
+
+# Test for innodb_thread_concurrency variable
+SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
+show variables like "innodb_thread_concurrency";
+set global innodb_thread_concurrency=1001;
+show variables like "innodb_thread_concurrency";
+set global innodb_thread_concurrency=0;
+show variables like "innodb_thread_concurrency";
+set global innodb_thread_concurrency=16;
+show variables like "innodb_thread_concurrency";
+SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
+
+# Test for innodb_concurrency_tickets variable
+show variables like "innodb_concurrency_tickets";
+set global innodb_concurrency_tickets=1000;
+show variables like "innodb_concurrency_tickets";
+set global innodb_concurrency_tickets=0;
+show variables like "innodb_concurrency_tickets";
+set global innodb_concurrency_tickets=500;
+show variables like "innodb_concurrency_tickets";
+
+# Test for innodb_thread_sleep_delay variable
+show variables like "innodb_thread_sleep_delay";
+set global innodb_thread_sleep_delay=100000;
+show variables like "innodb_thread_sleep_delay";
+set global innodb_thread_sleep_delay=0;
+show variables like "innodb_thread_sleep_delay";
+set global innodb_thread_sleep_delay=10000;
+show variables like "innodb_thread_sleep_delay";
+
+#
+# Test varchar
+#
+
+let $default=`select @@storage_engine`;
+set storage_engine=INNODB;
+source include/varchar.inc;
+
+#
+# Some errors/warnings on create
+#
+
+# Embedded server doesn't chdir to data directory
+--replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
+create table t1 (v varchar(65530), key(v));
+drop table t1;
+create table t1 (v varchar(65536));
+show create table t1;
+drop table t1;
+create table t1 (v varchar(65530) character set utf8);
+show create table t1;
+drop table t1;
+
+eval set storage_engine=$default;
+
+-- disable_query_log
+SET GLOBAL innodb_thread_concurrency = @innodb_thread_concurrency_orig;
+
+#######################################################################
+# #
+# Please, DO NOT TOUCH this file as well as the innodb.result file. #
+# These files are to be modified ONLY BY INNOBASE guys. #
+# #
+# Use innodb_mysql.[test|result] files instead. #
+# #
+# If nevertheless you need to make some changes here, please, forward #
+# your commit message #
+# To: innodb_dev_ww@oracle.com #
+# Cc: dev-innodb@mysql.com #
+# (otherwise your changes may be erased). #
+# #
+#######################################################################
diff --git a/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt
new file mode 100644
index 00000000000..e27ee9b2c78
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt
@@ -0,0 +1 @@
+--loose-innodb-autoinc-lock-mode=0
diff --git a/mysql-test/t/innodb_autoinc_lock_mode_zero.test b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test
index 96f748673c0..96f748673c0 100644
--- a/mysql-test/t/innodb_autoinc_lock_mode_zero.test
+++ b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test
diff --git a/mysql-test/suite/innodb/t/innodb_bug30919-master.opt b/mysql-test/suite/innodb/t/innodb_bug30919-master.opt
new file mode 100644
index 00000000000..58b254fe596
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug30919-master.opt
@@ -0,0 +1 @@
+--loose-innodb --loose-innodb_autoinc_lock_mode=0
diff --git a/mysql-test/t/innodb_bug30919.test b/mysql-test/suite/innodb/t/innodb_bug30919.test
index 56b2c7bc03d..56b2c7bc03d 100644
--- a/mysql-test/t/innodb_bug30919.test
+++ b/mysql-test/suite/innodb/t/innodb_bug30919.test
diff --git a/mysql-test/suite/innodb/t/innodb_bug39438-master.opt b/mysql-test/suite/innodb/t/innodb_bug39438-master.opt
index 43fac202fd4..0746d13d1c0 100644
--- a/mysql-test/suite/innodb/t/innodb_bug39438-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_bug39438-master.opt
@@ -1 +1 @@
---innodb-file-per-table=1
+--loose-innodb-file-per-table=1
diff --git a/mysql-test/t/innodb_bug42419.test b/mysql-test/suite/innodb/t/innodb_bug42419.test
index 93c4764252a..93c4764252a 100644
--- a/mysql-test/t/innodb_bug42419.test
+++ b/mysql-test/suite/innodb/t/innodb_bug42419.test
diff --git a/mysql-test/suite/innodb/t/innodb_bug48024.test b/mysql-test/suite/innodb/t/innodb_bug48024.test
new file mode 100644
index 00000000000..db828aa1cda
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug48024.test
@@ -0,0 +1,22 @@
+# Bug #48024 Innodb doesn't work with multi-statements
+
+--source include/have_innodb.inc
+
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+# Bug #53644 InnoDB thinks that /*/ starts and ends a comment
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b);
+
+DROP TABLE bug48024,bug48024_b;
+
+# Work around Bug #53750 (failure in mysql-test-run --ps-protocol)
+-- disable_ps_protocol
+delimiter |;
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)|
+delimiter ;|
+
+DROP TABLE bug48024,bug48024_b;
diff --git a/mysql-test/suite/innodb/t/innodb_bug49164.test b/mysql-test/suite/innodb/t/innodb_bug49164.test
new file mode 100644
index 00000000000..7f1c9f4ca9c
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug49164.test
@@ -0,0 +1,47 @@
+-- source include/have_innodb.inc
+
+# Bug #49164 READ-COMMITTED reports "matched: 0" on compound PK
+# a duplicate of
+# Bug #52663 Lost update incrementing column value under READ COMMITTED
+
+connect (con1,localhost,root,,);
+connect (con2,localhost,root,,);
+
+connection con1;
+SET tx_isolation = 'READ-COMMITTED';
+
+CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b))
+ENGINE=InnoDB;
+
+insert into bug49164 values (1,1,1), (2,2,2), (3,3,3);
+
+begin;
+update bug49164 set c=7;
+select * from bug49164;
+rollback;
+select * from bug49164;
+begin;
+update bug49164 set c=7;
+
+connection con2;
+
+SET tx_isolation = 'READ-COMMITTED';
+begin;
+select * from bug49164;
+commit;
+begin;
+--send
+update bug49164 set c=6 where a=1 and b=1;
+
+connection con1;
+rollback;
+select * from bug49164;
+connection con2;
+reap;
+commit;
+connection con1;
+select * from bug49164;
+connection default;
+disconnect con1;
+disconnect con2;
+drop table bug49164;
diff --git a/mysql-test/suite/innodb/t/innodb_bug52663-master.opt b/mysql-test/suite/innodb/t/innodb_bug52663-master.opt
index 462f8fbe828..82dec8b25fd 100644
--- a/mysql-test/suite/innodb/t/innodb_bug52663-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_bug52663-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=1
+--loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/suite/innodb/t/innodb_bug53674-master.opt b/mysql-test/suite/innodb/t/innodb_bug53674-master.opt
new file mode 100644
index 00000000000..1fe48c3a33a
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug53674-master.opt
@@ -0,0 +1 @@
+--loose-innodb-locks-unsafe-for-binlog --binlog-format=mixed
diff --git a/mysql-test/suite/innodb/t/innodb_bug53674.test b/mysql-test/suite/innodb/t/innodb_bug53674.test
new file mode 100644
index 00000000000..c96c3403b36
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug53674.test
@@ -0,0 +1,9 @@
+-- source include/have_innodb.inc
+-- source include/have_log_bin.inc
+
+create table bug53674(a int)engine=innodb;
+insert into bug53674 values (1),(2);
+start transaction;
+select * from bug53674 for update;
+select * from bug53674 where a=(select a from bug53674 where a > 1);
+drop table bug53674;
diff --git a/mysql-test/suite/innodb/t/innodb_bug53756-master.opt b/mysql-test/suite/innodb/t/innodb_bug53756-master.opt
new file mode 100644
index 00000000000..425fda95086
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug53756-master.opt
@@ -0,0 +1 @@
+--skip-stack-trace --skip-core-file
diff --git a/mysql-test/suite/innodb/t/innodb_bug53756.test b/mysql-test/suite/innodb/t/innodb_bug53756.test
new file mode 100644
index 00000000000..8324f2640a2
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug53756.test
@@ -0,0 +1,184 @@
+# This is the test case for bug #53756. Alter table operation could
+# leave a deleted record for the temp table (later renamed to the altered
+# table) in the SYS_TABLES secondary index, we should ignore this row and
+# find the first non-deleted row for the specified table_id when load table
+# metadata in the function dict_load_table_on_id() during crash recovery.
+
+#
+# innobackup needs to connect to the server. Not supported in embedded.
+--source include/not_embedded.inc
+#
+# This test case needs to crash the server. Needs a debug server.
+--source include/have_debug.inc
+#
+# Don't test this under valgrind, memory leaks will occur.
+--source include/not_valgrind.inc
+#
+# This test case needs InnoDB.
+--source include/have_innodb.inc
+
+#
+# Precautionary clean up.
+#
+--disable_warnings
+DROP TABLE IF EXISTS bug_53756 ;
+--enable_warnings
+
+#
+# Create test data.
+#
+CREATE TABLE bug_53756 (pk INT, c1 INT) ENGINE=InnoDB;
+ALTER TABLE bug_53756 ADD PRIMARY KEY (pk);
+INSERT INTO bug_53756 VALUES(1, 11), (2, 22), (3, 33), (4, 44);
+
+--echo
+--echo # Select a less restrictive isolation level.
+# Don't use user variables. They won't survive server crash.
+--let $global_isolation= `SELECT @@global.tx_isolation`;
+--let $session_isolation= `SELECT @@session.tx_isolation`;
+SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+COMMIT;
+
+--echo
+--echo # Start a transaction in the default connection for isolation.
+START TRANSACTION;
+SELECT @@tx_isolation;
+SELECT * FROM bug_53756;
+
+--echo
+--echo # connection con1 deletes row 1
+--connect (con1,localhost,root,,)
+START TRANSACTION;
+SELECT @@tx_isolation;
+DELETE FROM bug_53756 WHERE pk=1;
+
+--echo
+--echo # connection con2 deletes row 2
+--connect (con2,localhost,root,,)
+START TRANSACTION;
+SELECT @@tx_isolation;
+DELETE FROM bug_53756 WHERE pk=2;
+
+--echo
+--echo # connection con3 updates row 3
+--connect (con3,localhost,root,,)
+START TRANSACTION;
+SELECT @@tx_isolation;
+UPDATE bug_53756 SET c1=77 WHERE pk=3;
+
+--echo
+--echo # connection con4 updates row 4
+--connect (con4,localhost,root,,)
+START TRANSACTION;
+SELECT @@tx_isolation;
+UPDATE bug_53756 SET c1=88 WHERE pk=4;
+
+--echo
+--echo # connection con5 inserts row 5
+--connect (con5,localhost,root,,)
+START TRANSACTION;
+SELECT @@tx_isolation;
+INSERT INTO bug_53756 VALUES(5, 55);
+
+--echo
+--echo # connection con6 inserts row 6
+--connect (con6,localhost,root,,)
+START TRANSACTION;
+SELECT @@tx_isolation;
+INSERT INTO bug_53756 VALUES(6, 66);
+
+--echo
+--echo # connection con1 commits.
+--connection con1
+COMMIT;
+
+--echo
+--echo # connection con3 commits.
+--connection con3
+COMMIT;
+
+--echo
+--echo # connection con4 rolls back.
+--connection con4
+ROLLBACK;
+
+--echo
+--echo # connection con6 rolls back.
+--connection con6
+ROLLBACK;
+
+--echo
+--echo # The connections 2 and 5 stay open.
+
+--echo
+--echo # connection default selects resulting data.
+--echo # Delete of row 1 was committed.
+--echo # Update of row 3 was committed.
+--echo # Due to isolation level read committed, these should be included.
+--echo # All other changes should not be included.
+--connection default
+SELECT * FROM bug_53756;
+
+--echo
+--echo # connection default
+--connection default
+--echo #
+--echo # Crash server.
+#
+# Write file to make mysql-test-run.pl expect the "crash", but don't start
+# it until it's told to
+--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+#
+START TRANSACTION;
+INSERT INTO bug_53756 VALUES (666,666);
+#
+# Request a crash on next execution of commit.
+SET SESSION debug="+d,crash_commit_before";
+#
+# Execute the statement that causes the crash.
+--error 2013
+COMMIT;
+--echo
+--echo #
+--echo # disconnect con1, con2, con3, con4, con5, con6.
+--disconnect con1
+--disconnect con2
+--disconnect con3
+--disconnect con4
+--disconnect con5
+--disconnect con6
+--echo #
+--echo # Restart server.
+#
+# Write file to make mysql-test-run.pl start up the server again
+--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+#
+# Turn on reconnect
+--enable_reconnect
+#
+# Call script that will poll the server waiting for it to be back online again
+--source include/wait_until_connected_again.inc
+#
+# Turn off reconnect again
+--disable_reconnect
+--echo
+
+--echo #
+--echo # Select recovered data.
+--echo # Delete of row 1 was committed.
+--echo # Update of row 3 was committed.
+--echo # These should be included.
+--echo # All other changes should not be included.
+--echo # Delete of row 2 and insert of row 5 should be rolled back
+SELECT * FROM bug_53756;
+
+--echo
+--echo # Clean up.
+DROP TABLE bug_53756;
+
+--disable_query_log
+eval SET GLOBAL tx_isolation= '$global_isolation';
+eval SET SESSION tx_isolation= '$session_isolation';
+--enable_query_log
+
diff --git a/mysql-test/suite/innodb/t/innodb_bug54044.test b/mysql-test/suite/innodb/t/innodb_bug54044.test
new file mode 100644
index 00000000000..a6722ed6399
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug54044.test
@@ -0,0 +1,11 @@
+# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type
+# during create table, so it will not trigger assertion failure.
+
+--source include/have_innodb.inc
+
+# This 'create table' operation should fail because of
+# using NULL datatype
+--error ER_CANT_CREATE_TABLE
+CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB
+ AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
+
diff --git a/mysql-test/t/innodb_gis.test b/mysql-test/suite/innodb/t/innodb_gis.test
index 1adb14ea482..1adb14ea482 100644
--- a/mysql-test/t/innodb_gis.test
+++ b/mysql-test/suite/innodb/t/innodb_gis.test
diff --git a/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt
new file mode 100644
index 00000000000..82dec8b25fd
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt
@@ -0,0 +1 @@
+--loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/t/innodb_lock_wait_timeout_1.test b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test
index fcbf2b1cfc7..fcbf2b1cfc7 100644
--- a/mysql-test/t/innodb_lock_wait_timeout_1.test
+++ b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test
diff --git a/mysql-test/suite/innodb/t/innodb_misc1-master.opt b/mysql-test/suite/innodb/t/innodb_misc1-master.opt
index 4901efb416c..08a79432e47 100644
--- a/mysql-test/suite/innodb/t/innodb_misc1-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_misc1-master.opt
@@ -1 +1 @@
---binlog_cache_size=32768 --innodb_lock_wait_timeout=1
+--binlog_cache_size=32768 --loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/suite/innodb/t/innodb_misc1.test b/mysql-test/suite/innodb/t/innodb_misc1.test
index 30f9c129570..295b9ec464c 100644
--- a/mysql-test/suite/innodb/t/innodb_misc1.test
+++ b/mysql-test/suite/innodb/t/innodb_misc1.test
@@ -14,6 +14,8 @@
#######################################################################
-- source include/have_innodb.inc
+let collation=utf8_unicode_ci;
+--source include/have_collation.inc
let $MYSQLD_DATADIR= `select @@datadir`;
@@ -1021,6 +1023,8 @@ DROP TABLE t1,t2;
#
# Bug #21101 (Prints wrong error message if max row size is too large)
#
+#from innodb-1.0.8, any size is passed without innodb_strict_mode.
+SET SESSION innodb_strict_mode = on;
--error 1118
CREATE TABLE t1 (
c01 CHAR(255), c02 CHAR(255), c03 CHAR(255), c04 CHAR(255),
diff --git a/mysql-test/suite/innodb/t/innodb_multi_update.test b/mysql-test/suite/innodb/t/innodb_multi_update.test
new file mode 100644
index 00000000000..7ab17ccf70a
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_multi_update.test
@@ -0,0 +1,29 @@
+-- source include/have_innodb.inc
+
+#
+# Test multi update with different join methods
+#
+
+CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb;
+CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb;
+INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
+INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
+
+# Full join, without key
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100;
+select * from bug38999_1;
+
+# unique key
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101;
+select * from bug38999_1;
+
+# ref key
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2;
+select * from bug38999_1;
+
+# Range key (in bug38999_1)
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100;
+select * from bug38999_1;
+select * from bug38999_2;
+
+drop table bug38999_1,bug38999_2;
diff --git a/mysql-test/suite/innodb/t/innodb_mysql-master.opt b/mysql-test/suite/innodb/t/innodb_mysql-master.opt
new file mode 100644
index 00000000000..5b4331aa7a6
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_mysql-master.opt
@@ -0,0 +1 @@
+--loose-innodb-lock-wait-timeout=2
diff --git a/mysql-test/suite/innodb/t/innodb_mysql.test b/mysql-test/suite/innodb/t/innodb_mysql.test
new file mode 100644
index 00000000000..1171eaa899c
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_mysql.test
@@ -0,0 +1,771 @@
+# t/innodb_mysql.test
+#
+# Last update:
+# 2006-07-26 ML test refactored (MySQL 5.1)
+# main testing code t/innodb_mysql.test -> include/mix1.inc
+#
+
+# Slow test, don't run during staging part
+-- source include/not_staging.inc
+-- source include/have_innodb.inc
+-- source include/have_query_cache.inc
+
+let $engine_type= InnoDB;
+let $other_engine_type= MEMORY;
+# InnoDB does support FOREIGN KEYFOREIGN KEYs
+let $test_foreign_keys= 1;
+set global innodb_support_xa=default;
+set session innodb_support_xa=default;
+--source include/mix1.inc
+
+--disable_warnings
+drop table if exists t1, t2, t3;
+--enable_warnings
+#
+# BUG#35850: Performance regression in 5.1.23/5.1.24
+#
+create table t1(a int);
+insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
+create table t2 (a int, b int, pk int, key(a,b), primary key(pk)) engine=innodb;
+insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C;
+--echo this must use key 'a', not PRIMARY:
+--replace_column 9 #
+explain select a from t2 where a=b;
+drop table t1, t2;
+
+#
+# Bug #40360: Binlog related errors with binlog off
+#
+# This bug is triggered when the binlog format is STATEMENT and the
+# binary log is turned off. In this case, no error should be shown for
+# the statement since there are no replication issues.
+
+SET SESSION BINLOG_FORMAT=STATEMENT;
+SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
+query_vertical select @@session.sql_log_bin, @@session.binlog_format, @@session.tx_isolation;
+CREATE TABLE t1 ( a INT ) ENGINE=InnoDB;
+INSERT INTO t1 VALUES(1);
+DROP TABLE t1;
+
+#
+# Bug#37284 Crash in Field_string::type()
+#
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
+CREATE INDEX i1 on t1 (a(3));
+SELECT * FROM t1 WHERE a = 'abcde';
+DROP TABLE t1;
+
+#
+# Bug #37742: HA_EXTRA_KEYREAD flag is set when key contains only prefix of
+# requested column
+#
+
+CREATE TABLE foo (a int, b int, c char(10),
+ PRIMARY KEY (c(3)),
+ KEY b (b)
+) engine=innodb;
+
+CREATE TABLE foo2 (a int, b int, c char(10),
+ PRIMARY KEY (c),
+ KEY b (b)
+) engine=innodb;
+
+CREATE TABLE bar (a int, b int, c char(10),
+ PRIMARY KEY (c(3)),
+ KEY b (b)
+) engine=myisam;
+
+INSERT INTO foo VALUES
+ (1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
+ (4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
+
+INSERT INTO bar SELECT * FROM foo;
+INSERT INTO foo2 SELECT * FROM foo;
+
+--query_vertical EXPLAIN SELECT c FROM bar WHERE b>2;
+--query_vertical EXPLAIN SELECT c FROM foo WHERE b>2;
+--query_vertical EXPLAIN SELECT c FROM foo2 WHERE b>2;
+
+--query_vertical EXPLAIN SELECT c FROM bar WHERE c>2;
+--query_vertical EXPLAIN SELECT c FROM foo WHERE c>2;
+--query_vertical EXPLAIN SELECT c FROM foo2 WHERE c>2;
+
+DROP TABLE foo, bar, foo2;
+
+
+#
+# Bug#41348: INSERT INTO tbl SELECT * FROM temp_tbl overwrites locking type of temp table
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1,t3,t2;
+DROP FUNCTION IF EXISTS f1;
+--enable_warnings
+
+DELIMITER |;
+CREATE FUNCTION f1() RETURNS VARCHAR(250)
+ BEGIN
+ return 'hhhhhhh' ;
+ END|
+DELIMITER ;|
+
+CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB;
+
+BEGIN WORK;
+
+CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB;
+CREATE TEMPORARY TABLE t3 LIKE t2;
+
+INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL);
+
+SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl');
+PREPARE stmt1 FROM @stmt;
+
+SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2');
+PREPARE stmt3 FROM @stmt;
+
+EXECUTE stmt1;
+
+COMMIT;
+
+DEALLOCATE PREPARE stmt1;
+DEALLOCATE PREPARE stmt3;
+
+DROP TABLE t1,t3,t2;
+DROP FUNCTION f1;
+
+#
+# Bug#37016: TRUNCATE TABLE removes some rows but not all
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1,t2;
+--enable_warnings
+
+CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
+CREATE TABLE t2 (id INT PRIMARY KEY,
+ t1_id INT, INDEX par_ind (t1_id),
+ FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB;
+INSERT INTO t1 VALUES (1),(2);
+INSERT INTO t2 VALUES (3,2);
+
+SET AUTOCOMMIT = 0;
+
+START TRANSACTION;
+--error ER_ROW_IS_REFERENCED_2
+TRUNCATE TABLE t1;
+SELECT * FROM t1;
+COMMIT;
+SELECT * FROM t1;
+
+START TRANSACTION;
+--error ER_ROW_IS_REFERENCED_2
+TRUNCATE TABLE t1;
+SELECT * FROM t1;
+ROLLBACK;
+SELECT * FROM t1;
+
+SET AUTOCOMMIT = 1;
+
+START TRANSACTION;
+SELECT * FROM t1;
+COMMIT;
+
+--error ER_ROW_IS_REFERENCED_2
+TRUNCATE TABLE t1;
+SELECT * FROM t1;
+DELETE FROM t2 WHERE id = 3;
+
+START TRANSACTION;
+SELECT * FROM t1;
+TRUNCATE TABLE t1;
+ROLLBACK;
+SELECT * FROM t1;
+TRUNCATE TABLE t2;
+
+DROP TABLE t2;
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0
+--echo #
+CREATE TABLE t1 (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (id)
+) ENGINE=InnoDB;
+
+CREATE TABLE t2 (
+ id INT UNSIGNED NOT NULL AUTO_INCREMENT,
+ aid INT UNSIGNED NOT NULL,
+ PRIMARY KEY (id),
+ FOREIGN KEY (aid) REFERENCES t1 (id)
+) ENGINE=InnoDB;
+
+CREATE TABLE t3 (
+ bid INT UNSIGNED NOT NULL,
+ FOREIGN KEY (bid) REFERENCES t2 (id)
+) ENGINE=InnoDB;
+
+CREATE TABLE t4 (
+ a INT
+) ENGINE=InnoDB;
+
+CREATE TABLE t5 (
+ a INT
+) ENGINE=InnoDB;
+
+INSERT INTO t1 (id) VALUES (1);
+INSERT INTO t2 (id, aid) VALUES (1, 1),(2,1),(3,1),(4,1);
+INSERT INTO t3 (bid) VALUES (1);
+
+INSERT INTO t4 VALUES (1),(2),(3),(4),(5);
+INSERT INTO t5 VALUES (1);
+
+DELETE t5 FROM t4 LEFT JOIN t5 ON t4.a= t5.a;
+
+--error ER_ROW_IS_REFERENCED_2
+DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
+--error ER_ROW_IS_REFERENCED_2
+DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
+
+DELETE IGNORE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
+
+DROP TABLE t3;
+DROP TABLE t2;
+DROP TABLE t1;
+DROP TABLES t4,t5;
+
+--echo # Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0
+--echo # Testing for any side effects of IGNORE on AFTER DELETE triggers used with
+--echo # transactional tables.
+--echo #
+CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a VARCHAR(100)) ENGINE=InnoDB;
+CREATE TABLE t3 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t4 (i INT NOT NULL PRIMARY KEY, t1i INT,
+ FOREIGN KEY (t1i) REFERENCES t1(i))
+ ENGINE=InnoDB;
+delimiter ||;
+CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
+BEGIN
+ SET @b:='EXECUTED TRIGGER';
+ INSERT INTO t2 VALUES (@b);
+ SET @a:= error_happens_here;
+END||
+delimiter ;||
+
+SET @b:="";
+SET @a:="";
+INSERT INTO t1 VALUES (1),(2),(3),(4);
+INSERT INTO t3 SELECT * FROM t1;
+--echo ** An error in a trigger causes rollback of the statement.
+--error ER_BAD_FIELD_ERROR
+DELETE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+SELECT @a,@b;
+SELECT * FROM t2;
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+
+--echo ** Same happens with the IGNORE option
+--error ER_BAD_FIELD_ERROR
+DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+SELECT * FROM t2;
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+
+--echo **
+--echo ** The following is an attempt to demonstrate
+--echo ** error handling inside a row iteration.
+--echo **
+DROP TRIGGER trg;
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t2;
+TRUNCATE TABLE t3;
+
+INSERT INTO t1 VALUES (1),(2),(3),(4);
+INSERT INTO t3 VALUES (1),(2),(3),(4);
+INSERT INTO t4 VALUES (3,3),(4,4);
+
+delimiter ||;
+CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
+BEGIN
+ SET @b:= CONCAT('EXECUTED TRIGGER FOR ROW ',CAST(OLD.i AS CHAR));
+ INSERT INTO t2 VALUES (@b);
+END||
+delimiter ;||
+
+--echo ** DELETE is prevented by foreign key constrains but errors are silenced.
+--echo ** The AFTER trigger isn't fired.
+DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+--echo ** Tables are modified by best effort:
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+--echo ** The AFTER trigger was only executed on successful rows:
+SELECT * FROM t2;
+
+DROP TRIGGER trg;
+
+--echo **
+--echo ** Induce an error midway through an AFTER-trigger
+--echo **
+TRUNCATE TABLE t4;
+TRUNCATE TABLE t1;
+TRUNCATE TABLE t3;
+INSERT INTO t1 VALUES (1),(2),(3),(4);
+INSERT INTO t3 VALUES (1),(2),(3),(4);
+delimiter ||;
+CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
+BEGIN
+ SET @a:= @a+1;
+ IF @a > 2 THEN
+ INSERT INTO t4 VALUES (5,5);
+ END IF;
+END||
+delimiter ;||
+
+SET @a:=0;
+--echo ** Errors in the trigger causes the statement to abort.
+--error ER_NO_REFERENCED_ROW_2
+DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
+SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
+SELECT * FROM t4;
+
+DROP TRIGGER trg;
+DROP TABLE t4;
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+
+#
+# Bug#43580: Issue with Innodb on multi-table update
+#
+CREATE TABLE t1 (a INT, b INT, KEY (a)) ENGINE = INNODB;
+CREATE TABLE t2 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB;
+
+CREATE TABLE t3 (a INT, b INT KEY, KEY (a)) ENGINE = INNODB;
+CREATE TABLE t4 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB;
+
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6);
+INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
+
+INSERT INTO t3 VALUES (1, 101), (2, 102), (3, 103), (4, 104), (5, 105), (6, 106);
+INSERT INTO t4 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
+
+UPDATE t1, t2 SET t1.a = t1.a + 100, t2.b = t1.a + 10
+WHERE t1.a BETWEEN 2 AND 4 AND t2.a = t1.b;
+--sorted_result
+SELECT * FROM t2;
+
+UPDATE t3, t4 SET t3.a = t3.a + 100, t4.b = t3.a + 10
+WHERE t3.a BETWEEN 2 AND 4 AND t4.a = t3.b - 100;
+--sorted_result
+SELECT * FROM t4;
+
+DROP TABLE t1, t2, t3, t4;
+
+--echo #
+--echo # Bug#44886: SIGSEGV in test_if_skip_sort_order() -
+--echo # uninitialized variable used as subscript
+--echo #
+
+CREATE TABLE t1 (a INT, b INT, c INT, d INT, PRIMARY KEY (b), KEY (a,c))
+ ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,1,1,0);
+
+CREATE TABLE t2 (a INT, b INT, e INT, KEY (e)) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,1,2);
+
+CREATE TABLE t3 (a INT, b INT) ENGINE=MyISAM;
+INSERT INTO t3 VALUES (1, 1);
+
+SELECT * FROM t1, t2, t3
+ WHERE t1.a = t3.a AND (t1.b = t3.b OR t1.d) AND t2.b = t1.b AND t2.e = 2
+ GROUP BY t1.b;
+
+DROP TABLE t1, t2, t3;
+
+--echo #
+--echo # Bug #45828: Optimizer won't use partial primary key if another
+--echo # index can prevent filesort
+--echo #
+
+# Create the table
+CREATE TABLE `t1` (
+ c1 int NOT NULL,
+ c2 int NOT NULL,
+ c3 int NOT NULL,
+ PRIMARY KEY (c1,c2),
+ KEY (c3)
+) ENGINE=InnoDB;
+
+# populate with data
+INSERT INTO t1 VALUES (5,2,1246276747);
+INSERT INTO t1 VALUES (2,1,1246281721);
+INSERT INTO t1 VALUES (7,3,1246281756);
+INSERT INTO t1 VALUES (4,2,1246282139);
+INSERT INTO t1 VALUES (3,1,1246282230);
+INSERT INTO t1 VALUES (1,0,1246282712);
+INSERT INTO t1 VALUES (8,3,1246282765);
+INSERT INTO t1 SELECT c1+10,c2+10,c3+10 FROM t1;
+INSERT INTO t1 SELECT c1+100,c2+100,c3+100 from t1;
+INSERT INTO t1 SELECT c1+1000,c2+1000,c3+1000 from t1;
+INSERT INTO t1 SELECT c1+10000,c2+10000,c3+10000 from t1;
+INSERT INTO t1 SELECT c1+100000,c2+100000,c3+100000 from t1;
+INSERT INTO t1 SELECT c1+1000000,c2+1000000,c3+1000000 from t1;
+
+# query and no rows will match the c1 condition, whereas all will match c3
+SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+
+# SHOULD use the pk.
+# index on c3 will be used instead of primary key
+EXPLAIN SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+
+# if we force the primary key, we can see the estimate is 1
+EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+
+
+CREATE TABLE t2 (
+ c1 int NOT NULL,
+ c2 int NOT NULL,
+ c3 int NOT NULL,
+ KEY (c1,c2),
+ KEY (c3)
+) ENGINE=InnoDB;
+
+# SHOULD use the pk.
+# if we switch it from a primary key to a regular index, it works correctly as well
+explain SELECT * FROM t2 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
+
+DROP TABLE t1,t2;
+
+
+--echo #
+--echo # 36259: Optimizing with ORDER BY
+--echo #
+
+CREATE TABLE t1 (
+ a INT NOT NULL AUTO_INCREMENT,
+ b INT NOT NULL,
+ c INT NOT NULL,
+ d VARCHAR(5),
+ e INT NOT NULL,
+ PRIMARY KEY (a), KEY i2 (b,c,d)
+) ENGINE=InnoDB;
+
+INSERT INTO t1 (b,c,d,e) VALUES (1,1,'a',1), (2,2,'b',2);
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
+EXPLAIN SELECT * FROM t1 WHERE b=1 AND c=1 ORDER BY a;
+EXPLAIN SELECT * FROM t1 FORCE INDEX(i2) WHERE b=1 and c=1 ORDER BY a;
+EXPLAIN SELECT * FROM t1 FORCE INDEX(PRIMARY) WHERE b=1 AND c=1 ORDER BY a;
+
+DROP TABLE t1;
+
+--echo #
+--echo # Bug #47963: Wrong results when index is used
+--echo #
+CREATE TABLE t1(
+ a VARCHAR(5) NOT NULL,
+ b VARCHAR(5) NOT NULL,
+ c DATETIME NOT NULL,
+ KEY (c)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES('TEST', 'TEST', '2009-10-09 00:00:00');
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00';
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00.0';
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00';
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00.0';
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00.000' AND c <= '2009-10-09 00:00:00.000';
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00.00' AND c <= '2009-10-09 00:00:00.001';
+SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
+EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND
+ c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
+DROP TABLE t1;
+
+--echo #
+--echo # Bug #46175: NULL read_view and consistent read assertion
+--echo #
+
+CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb;
+CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb;
+INSERT INTO t1 VALUES (),();
+INSERT INTO t2 VALUES (),();
+CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2
+ WHERE b =(SELECT a FROM t1 LIMIT 1);
+
+--disable_query_log
+--disable_result_log
+CONNECT (con1, localhost, root,,);
+--enable_query_log
+--enable_result_log
+CONNECTION default;
+
+DELIMITER |;
+CREATE PROCEDURE p1(num INT)
+BEGIN
+ DECLARE i INT DEFAULT 0;
+ REPEAT
+ SHOW CREATE VIEW v1;
+ SET i:=i+1;
+ UNTIL i>num END REPEAT;
+END|
+DELIMITER ;|
+
+--echo # Should not crash
+--disable_query_log
+--disable_result_log
+--send CALL p1(1000)
+CONNECTION con1;
+--echo # Should not crash
+CALL p1(1000);
+
+CONNECTION default;
+--reap
+--enable_query_log
+--enable_result_log
+
+DISCONNECT con1;
+DROP PROCEDURE p1;
+DROP VIEW v1;
+DROP TABLE t1,t2;
+
+
+--echo #
+--echo # Bug #49324: more valgrind errors in test_if_skip_sort_order
+--echo #
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ;
+--echo #should not cause valgrind warnings
+SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a;
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#50843: Filesort used instead of clustered index led to
+--echo # performance degradation.
+--echo #
+create table t1(f1 int not null primary key, f2 int) engine=innodb;
+create table t2(f1 int not null, key (f1)) engine=innodb;
+insert into t1 values (1,1),(2,2),(3,3);
+insert into t2 values (1),(2),(3);
+explain select t1.* from t1 left join t2 using(f1) group by t1.f1;
+drop table t1,t2;
+--echo #
+
+
+--echo #
+--echo # Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may
+--echo # corrupt definition at engine
+--echo #
+
+CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, KEY k (a,b))
+ ENGINE=InnoDB;
+
+ALTER TABLE t1 DROP INDEX k, ADD UNIQUE INDEX k (a,b);
+
+--query_vertical SHOW INDEXES FROM t1;
+
+DROP TABLE t1;
+
+--echo #
+--echo # Bug #53334: wrong result for outer join with impossible ON condition
+--echo # (see the same test case for MyISAM in join.test)
+--echo #
+
+create table t1 (id int primary key);
+create table t2 (id int);
+
+insert into t1 values (75);
+insert into t1 values (79);
+insert into t1 values (78);
+insert into t1 values (77);
+replace into t1 values (76);
+replace into t1 values (76);
+insert into t1 values (104);
+insert into t1 values (103);
+insert into t1 values (102);
+insert into t1 values (101);
+insert into t1 values (105);
+insert into t1 values (106);
+insert into t1 values (107);
+
+insert into t2 values (107),(75),(1000);
+
+select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
+ where t2.id=75 and t1.id is null;
+explain select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
+ where t2.id=75 and t1.id is null;
+
+drop table t1,t2;
+
+--echo #
+--echo # Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when
+--echo # JOINed during an UPDATE
+--echo #
+
+CREATE TABLE t1 (d INT) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT, b INT,
+ c TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
+ ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB;
+
+--echo set up our data elements
+INSERT INTO t1 (d) VALUES (1);
+INSERT INTO t2 (a,b) VALUES (1,1);
+SELECT SECOND(c) INTO @bug47453 FROM t2;
+
+SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
+UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1;
+SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
+
+SELECT SLEEP(1);
+
+UPDATE t1 JOIN t2 ON d=a SET b=1 WHERE a=1;
+
+--echo #should be 0
+SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
+
+DROP TABLE t1, t2;
+
+--echo #
+--echo # Bug#38999 valgrind warnings for update statement in function compare_record()
+--echo #
+
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 values (1),(2),(3),(4),(5);
+INSERT INTO t2 values (1);
+
+SELECT * FROM t1 WHERE a = 2;
+UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
+
+DROP TABLE t1,t2;
+
+--echo #
+--echo # Bug #53334: wrong result for outer join with impossible ON condition
+--echo # (see the same test case for MyISAM in join.test)
+--echo #
+
+CREATE TABLE t1 (id INT PRIMARY KEY);
+CREATE TABLE t2 (id INT);
+
+INSERT INTO t1 VALUES (75);
+INSERT INTO t1 VALUES (79);
+INSERT INTO t1 VALUES (78);
+INSERT INTO t1 VALUES (77);
+REPLACE INTO t1 VALUES (76);
+REPLACE INTO t1 VALUES (76);
+INSERT INTO t1 VALUES (104);
+INSERT INTO t1 VALUES (103);
+INSERT INTO t1 VALUES (102);
+INSERT INTO t1 VALUES (101);
+INSERT INTO t1 VALUES (105);
+INSERT INTO t1 VALUES (106);
+INSERT INTO t1 VALUES (107);
+
+INSERT INTO t2 VALUES (107),(75),(1000);
+
+SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
+ WHERE t2.id=75 AND t1.id IS NULL;
+EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
+ WHERE t2.id=75 AND t1.id IS NULL;
+
+DROP TABLE t1,t2;
+
+--echo #
+--echo # Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
+--echo #
+
+CREATE TABLE t1 (a INT, b INT, c INT, d INT,
+ PRIMARY KEY(a,b,c), KEY(b,d))
+ ENGINE=InnoDB;
+INSERT INTO t1 VALUES (0, 77, 1, 3);
+
+UPDATE t1 SET d = 0 WHERE b = 77 AND c = 25;
+
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#50389 Using intersect does not return all rows
+--echo #
+
+CREATE TABLE t1 (
+ f1 INT(10) NOT NULL,
+ f2 INT(10),
+ f3 INT(10),
+ f4 TINYINT(4),
+ f5 VARCHAR(50),
+ PRIMARY KEY (f1),
+ KEY idx1 (f2,f5,f4),
+ KEY idx2 (f2,f4)
+) ENGINE=InnoDB;
+
+LOAD DATA INFILE '../../std_data/intersect-bug50389.tsv' INTO TABLE t1;
+
+SELECT * FROM t1 WHERE f1 IN
+(3305028,3353871,3772880,3346860,4228206,3336022,
+ 3470988,3305175,3329875,3817277,3856380,3796193,
+ 3784744,4180925,4559596,3963734,3856391,4494153)
+AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ;
+
+EXPLAIN SELECT * FROM t1 WHERE f1 IN
+(3305028,3353871,3772880,3346860,4228206,3336022,
+ 3470988,3305175,3329875,3817277,3856380,3796193,
+ 3784744,4180925,4559596,3963734,3856391,4494153)
+AND f5 = 'abcdefghijklmnopwrst' AND f2 = 1221457 AND f4 = 0 ;
+
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#51431 Wrong sort order after import of dump file
+--echo #
+
+CREATE TABLE t1 (
+ f1 INT(11) NOT NULL,
+ f2 int(11) NOT NULL,
+ f3 int(11) NOT NULL,
+ f4 tinyint(1) NOT NULL,
+ PRIMARY KEY (f1),
+ UNIQUE KEY (f2, f3),
+ KEY (f4)
+) ENGINE=InnoDB;
+
+INSERT INTO t1 VALUES
+(1,1,991,1), (2,1,992,1), (3,1,993,1), (4,1,994,1), (5,1,995,1),
+(6,1,996,1), (7,1,997,1), (8,1,998,1), (10,1,999,1), (11,1,9910,1),
+(16,1,9911,1), (17,1,9912,1), (18,1,9913,1), (19,1,9914,1), (20,1,9915,1),
+(21,1,9916,1), (22,1,9917,1), (23,1,9918,1), (24,1,9919,1), (25,1,9920,1),
+(26,1,9921,1), (27,1,9922,1);
+
+FLUSH TABLES;
+
+SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE
+ORDER BY f1 DESC LIMIT 5;
+EXPLAIN SELECT * FROM t1 WHERE f2 = 1 AND f4 = TRUE
+ORDER BY f1 DESC LIMIT 5;
+
+DROP TABLE t1;
+
+
+--echo #
+--echo # Bug#54117 crash in thr_multi_unlock, temporary table
+--echo #
+
+CREATE TEMPORARY TABLE t1(a INT) ENGINE = InnoDB;
+
+LOCK TABLES t1 READ;
+ALTER TABLE t1 COMMENT 'test';
+UNLOCK TABLES;
+
+DROP TABLE t1;
+
+
+--echo End of 5.1 tests
diff --git a/mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt b/mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt
new file mode 100644
index 00000000000..0de618855c3
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt
@@ -0,0 +1 @@
+--loose-innodb_lock_wait_timeout=1 --loose-innodb_rollback_on_timeout=1
diff --git a/mysql-test/t/innodb_mysql_rbk.test b/mysql-test/suite/innodb/t/innodb_mysql_rbk.test
index d2368c81f95..d2368c81f95 100644
--- a/mysql-test/t/innodb_mysql_rbk.test
+++ b/mysql-test/suite/innodb/t/innodb_mysql_rbk.test
diff --git a/mysql-test/t/innodb_notembedded.test b/mysql-test/suite/innodb/t/innodb_notembedded.test
index c74dc931505..c74dc931505 100644
--- a/mysql-test/t/innodb_notembedded.test
+++ b/mysql-test/suite/innodb/t/innodb_notembedded.test
diff --git a/mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt b/mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt
new file mode 100644
index 00000000000..a451be2eef0
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt
@@ -0,0 +1 @@
+--loose-innodb_lock_wait_timeout=2 --loose-innodb_rollback_on_timeout
diff --git a/mysql-test/t/innodb_timeout_rollback.test b/mysql-test/suite/innodb/t/innodb_timeout_rollback.test
index 99890971064..99890971064 100644
--- a/mysql-test/t/innodb_timeout_rollback.test
+++ b/mysql-test/suite/innodb/t/innodb_timeout_rollback.test
diff --git a/mysql-test/suite/innodb_plugin/combinations b/mysql-test/suite/innodb_plugin/combinations
new file mode 100644
index 00000000000..b18db5f876e
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/combinations
@@ -0,0 +1,12 @@
+[innodb_plugin]
+ignore-builtin-innodb
+plugin-load=$HA_INNODB_PLUGIN_SO
+innodb
+
+[xtradb_plugin]
+ignore-builtin-innodb
+plugin-load=$HA_XTRADB_SO
+innodb
+
+[xtradb]
+innodb
diff --git a/mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result b/mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result
new file mode 100644
index 00000000000..c6da43555b2
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb-autoinc-optimize.result
@@ -0,0 +1,9 @@
+drop table if exists t1;
+create table t1(a int not null auto_increment primary key) engine=innodb;
+insert into t1 set a = -1;
+optimize table t1;
+Table Op Msg_type Msg_text
+test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
+test.t1 optimize status OK
+==== clean up ====
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb-ucs2.result b/mysql-test/suite/innodb_plugin/r/innodb-ucs2.result
new file mode 100644
index 00000000000..b6bff7d5f42
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb-ucs2.result
@@ -0,0 +1,314 @@
+drop table if exists t1, t2;
+create table t1 (
+a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six');
+insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven');
+insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+a hex(b) hex(c) filler
+1 61626364656667 61626364656667 boo
+4 D0B1 D0B1 eight
+4 5B 5B five
+4 E880BD E880BD four
+4 E880BDD0B1E880BD E880BDD0B1E880BD seven
+4 E880BDE880BD E880BDE880BD six
+3 71727374757677 71727374757677 three
+2 696A6B696C6D6E 696A6B696C6D6E two
+select a,hex(b),hex(c),filler from t2 order by filler;
+a hex(b) hex(c) filler
+4 05630563 05630563 email
+4 0563 0563 email
+4 05612020 05612020 email
+4 01FC 01FC email
+4 0120 0120 email
+4 00640065 00640065 email
+4 00E400E50068 00E400E50068 email
+4 0000E400 0000E400 email
+4 0000563001FC0563 0000563001FC0563 email
+1 0061006200630064006500660067 0061006200630064006500660067 one
+3 0071007200730074007500760077 0071007200730074007500760077 three
+2 0069006A006B0069006C006D006E 0069006A006B0069006C006D006E two
+drop table t1;
+drop table t2;
+create table t1 (
+a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six');
+insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven');
+insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+a hex(b) hex(c) filler
+1 61626364656667 61626364656667 boo
+4 D0B1 D0B1 eight
+4 5B 5B five
+4 E880BD E880BD four
+4 E880BDD0B1E880BD E880BDD0B1E880BD seven
+4 E880BDE880BD E880BDE880BD six
+3 71727374757677 71727374757677 three
+2 696A6B696C6D6E 696A6B696C6D6E two
+select a,hex(b),hex(c),filler from t2 order by filler;
+a hex(b) hex(c) filler
+4 05630563 05630563 email
+4 0563 0563 email
+4 05612020 05612020 email
+4 01FC 01FC email
+4 0120 0120 email
+4 00640065 00640065 email
+4 00E400E50068 00E400E50068 email
+4 0000E400 0000E400 email
+4 0000563001FC0563 0000563001FC0563 email
+1 0061006200630064006500660067 0061006200630064006500660067 one
+3 0071007200730074007500760077 0071007200730074007500760077 three
+2 0069006A006B0069006C006D006E 0069006A006B0069006C006D006E two
+drop table t1;
+drop table t2;
+create table t1 (
+a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six');
+insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven');
+insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+a hex(b) hex(c) filler
+1 61626364656667 61626364656667 boo
+4 D0B1 D0B1 eight
+4 5B 5B five
+4 E880BD E880BD four
+4 E880BDD0B1E880BD E880BDD0B1E880BD seven
+4 E880BDE880BD E880BDE880BD six
+3 71727374757677 71727374757677 three
+2 696A6B696C6D6E 696A6B696C6D6E two
+select a,hex(b),hex(c),filler from t2 order by filler;
+a hex(b) hex(c) filler
+4 0120 0120 email
+4 01FC 01FC email
+4 0563 0563 email
+4 0000563001FC0563 0000563001FC0563 email
+4 0000E400 0000E400 email
+4 00640065 00640065 email
+4 00E400E50068 00E400E50068 email
+4 05612020 05612020 email
+4 05630563 05630563 email
+1 0061006200630064006500660067 0061006200630064006500660067 one
+3 0071007200730074007500760077 0071007200730074007500760077 three
+2 0069006A006B0069006C006D006E 0069006A006B0069006C006D006E two
+drop table t1;
+drop table t2;
+create table t1 (
+a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+a hex(b) hex(c) filler
+1 61626364656667 61626364656667 boo
+4 D0B1 D0B1 eight
+4 5B 5B five
+4 E880BD E880BD four
+3 71727374757677 71727374757677 three
+2 696A6B696C6D6E 696A6B696C6D6E two
+select a,hex(b),hex(c),filler from t2 order by filler;
+a hex(b) hex(c) filler
+4 0000E400 0000E400 email
+4 00640065 00640065 email
+4 00E400E50068 00E400E50068 email
+4 0120 0120 email
+4 01FC 01FC email
+4 05612020 05612020 email
+4 0563 0563 email
+1 61626364656667 61626364656667 one
+3 71727374757677 71727374757677 three
+2 696A6B696C6D6E 696A6B696C6D6E two
+drop table t1;
+drop table t2;
+commit;
+CREATE TABLE t1 (
+ind enum('0','1','2') NOT NULL default '0',
+string1 varchar(250) NOT NULL,
+PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+CREATE TABLE t2 (
+ind enum('0','1','2') NOT NULL default '0',
+string1 varchar(250) NOT NULL,
+PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=ucs2;
+INSERT INTO t1 VALUES ('1', ''),('2', '');
+INSERT INTO t2 VALUES ('1', ''),('2', '');
+SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1;
+hex(ind) hex(string1)
+31
+32
+SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1;
+hex(ind) hex(string1)
+0031
+0032
+drop table t1,t2;
+CREATE TABLE t1 (
+ind set('0','1','2') NOT NULL default '0',
+string1 varchar(250) NOT NULL,
+PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+CREATE TABLE t2 (
+ind set('0','1','2') NOT NULL default '0',
+string1 varchar(250) NOT NULL,
+PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=ucs2;
+INSERT INTO t1 VALUES ('1', ''),('2', '');
+INSERT INTO t2 VALUES ('1', ''),('2', '');
+SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1;
+hex(ind) hex(string1)
+31
+32
+SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1;
+hex(ind) hex(string1)
+0031
+0032
+drop table t1,t2;
+CREATE TABLE t1 (
+ind bit not null,
+string1 varchar(250) NOT NULL,
+PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+CREATE TABLE t2 (
+ind bit not null,
+string1 varchar(250) NOT NULL,
+PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=ucs2;
+insert into t1 values(0,''),(1,'');
+insert into t2 values(0,''),(1,'');
+select hex(ind),hex(string1) from t1 order by string1;
+hex(ind) hex(string1)
+0
+1
+select hex(ind),hex(string1) from t2 order by string1;
+hex(ind) hex(string1)
+0
+1
+drop table t1,t2;
+create table t2 (
+a int, b char(10), filler char(10), primary key(a, b(2))
+) character set utf8 engine = innodb;
+insert into t2 values (1,'abcdefg','one');
+insert into t2 values (2,'ijkilmn','two');
+insert into t2 values (3, 'qrstuvw','three');
+update t2 set a=5, filler='booo' where a=1;
+drop table t2;
+create table t2 (
+a int, b char(10), filler char(10), primary key(a, b(2))
+) character set ucs2 engine = innodb;
+insert into t2 values (1,'abcdefg','one');
+insert into t2 values (2,'ijkilmn','two');
+insert into t2 values (3, 'qrstuvw','three');
+update t2 set a=5, filler='booo' where a=1;
+drop table t2;
+create table t1(a int not null, b char(110),primary key(a,b(100))) engine=innodb default charset=utf8;
+insert into t1 values(1,'abcdefg'),(2,'defghijk');
+insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1);
+insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2);
+select a,hex(b) from t1 order by b;
+a hex(b)
+1 61626364656667
+2 6465666768696A6B
+6 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1
+7 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2
+update t1 set b = 'three' where a = 6;
+drop table t1;
+create table t1(a int not null, b text(110),primary key(a,b(100))) engine=innodb default charset=utf8;
+insert into t1 values(1,'abcdefg'),(2,'defghijk');
+insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1);
+insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2);
+select a,hex(b) from t1 order by b;
+a hex(b)
+1 61626364656667
+2 6465666768696A6B
+6 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1
+7 D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2
+update t1 set b = 'three' where a = 6;
+drop table t1;
+End of 5.0 tests
diff --git a/mysql-test/suite/innodb_plugin/r/innodb.result b/mysql-test/suite/innodb_plugin/r/innodb.result
index e435c0f68ca..c4b718bd975 100644
--- a/mysql-test/suite/innodb_plugin/r/innodb.result
+++ b/mysql-test/suite/innodb_plugin/r/innodb.result
@@ -1184,82 +1184,6 @@ a b
8 8
9 9
drop table t1;
-CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb;
-CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb;
-INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
-INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
-update t1,t2 set t1.a=t1.a+100;
-select * from t1;
-a b
-101 1
-102 2
-103 3
-104 4
-105 5
-106 6
-107 7
-108 8
-109 9
-110 10
-111 11
-112 12
-update t1,t2 set t1.a=t1.a+100 where t1.a=101;
-select * from t1;
-a b
-201 1
-102 2
-103 3
-104 4
-105 5
-106 6
-107 7
-108 8
-109 9
-110 10
-111 11
-112 12
-update t1,t2 set t1.b=t1.b+10 where t1.b=2;
-select * from t1;
-a b
-201 1
-103 3
-104 4
-105 5
-106 6
-107 7
-108 8
-109 9
-110 10
-111 11
-102 12
-112 12
-update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100;
-select * from t1;
-a b
-201 1
-103 5
-104 6
-106 6
-105 7
-107 7
-108 8
-109 9
-110 10
-111 11
-102 12
-112 12
-select * from t2;
-a b
-1 1
-2 2
-6 6
-7 7
-8 8
-9 9
-3 13
-4 14
-5 15
-drop table t1,t2;
CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
SET AUTOCOMMIT=0;
@@ -1438,7 +1362,7 @@ insert t2 select * from t1;
insert t3 select * from t1;
checksum table t1, t2, t3, t4 quick;
Table Checksum
-test.t1 2948697075
+test.t1 3442722830
test.t2 NULL
test.t3 NULL
test.t4 NULL
@@ -1446,17 +1370,17 @@ Warnings:
Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4;
Table Checksum
-test.t1 2948697075
-test.t2 2948697075
-test.t3 2948697075
+test.t1 3442722830
+test.t2 3442722830
+test.t3 3442722830
test.t4 NULL
Warnings:
Error 1146 Table 'test.t4' doesn't exist
checksum table t1, t2, t3, t4 extended;
Table Checksum
-test.t1 2948697075
-test.t2 2948697075
-test.t3 2948697075
+test.t1 3442722830
+test.t2 3442722830
+test.t3 3442722830
test.t4 NULL
Warnings:
Error 1146 Table 'test.t4' doesn't exist
@@ -1752,10 +1676,10 @@ variable_value - @innodb_rows_deleted_orig
71
SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
variable_value - @innodb_rows_inserted_orig
-1087
+1066
SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
variable_value - @innodb_rows_updated_orig
-885
+865
SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
variable_value - @innodb_row_lock_waits_orig
0
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result b/mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result
new file mode 100644
index 00000000000..3d016684338
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_autoinc_lock_mode_zero.result
@@ -0,0 +1,39 @@
+drop table if exists t1;
+CREATE TABLE t1 (
+id int(11) NOT NULL auto_increment,
+ggid varchar(32) binary DEFAULT '' NOT NULL,
+email varchar(64) DEFAULT '' NOT NULL,
+passwd varchar(32) binary DEFAULT '' NOT NULL,
+PRIMARY KEY (id),
+UNIQUE ggid (ggid)
+) ENGINE=innodb;
+insert into t1 (ggid,passwd) values ('test1','xxx');
+insert into t1 (ggid,passwd) values ('test2','yyy');
+insert into t1 (ggid,passwd) values ('test2','this will fail');
+ERROR 23000: Duplicate entry 'test2' for key 'ggid'
+insert into t1 (ggid,id) values ('this will fail',1);
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+select * from t1 where ggid='test1';
+id ggid email passwd
+1 test1 xxx
+select * from t1 where passwd='xxx';
+id ggid email passwd
+1 test1 xxx
+select * from t1 where id=2;
+id ggid email passwd
+2 test2 yyy
+replace into t1 (ggid,id) values ('this will work',1);
+replace into t1 (ggid,passwd) values ('test2','this will work');
+update t1 set id=100,ggid='test2' where id=1;
+ERROR 23000: Duplicate entry 'test2' for key 'ggid'
+select * from t1;
+id ggid email passwd
+1 this will work
+3 test2 this will work
+select * from t1 where id=1;
+id ggid email passwd
+1 this will work
+select * from t1 where id=999;
+id ggid email passwd
+drop table t1;
+End of tests
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug30919.result b/mysql-test/suite/innodb_plugin/r/innodb_bug30919.result
new file mode 100644
index 00000000000..42aa4ff302b
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug30919.result
@@ -0,0 +1,1043 @@
+use test;
+CREATE TABLE test.part_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
+dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
+fkid MEDIUMINT, filler VARCHAR(255),
+PRIMARY KEY(id)) ENGINE='innodb'
+PARTITION BY RANGE(id)
+SUBPARTITION BY hash(id) subpartitions 2
+(PARTITION pa3 values less than (42),
+PARTITION pa6 values less than (60),
+PARTITION pa7 values less than (70),
+PARTITION pa8 values less than (80),
+PARTITION pa9 values less than (90),
+PARTITION pa10 values less than (100),
+PARTITION pa11 values less than MAXVALUE);
+CREATE PROCEDURE test.proc_part()
+BEGIN
+DECLARE ins_count INT DEFAULT 1000;
+DECLARE del_count INT;
+DECLARE cur_user VARCHAR(255);
+DECLARE local_uuid VARCHAR(255);
+DECLARE local_time TIMESTAMP;
+SET local_time= NOW();
+SET cur_user= CURRENT_USER();
+SET local_uuid= UUID();
+WHILE ins_count > 0 DO
+INSERT INTO test.part_tbl VALUES (NULL, NOW(), USER() , UUID(),
+ins_count,'Going to test MBR for MySQL');
+SET ins_count = ins_count - 1;
+END WHILE;
+SELECT MAX(id) FROM test.part_tbl INTO del_count;
+WHILE del_count > 0 DO
+DELETE FROM test.part_tbl WHERE id = del_count;
+select count(*) as internal_count, del_count -- these two lines are for
+FROM test.part_tbl; -- debug to show the problem
+SET del_count = del_count - 2;
+END WHILE;
+END|
+CALL test.proc_part();
+internal_count del_count
+999 1000
+internal_count del_count
+998 998
+internal_count del_count
+997 996
+internal_count del_count
+996 994
+internal_count del_count
+995 992
+internal_count del_count
+994 990
+internal_count del_count
+993 988
+internal_count del_count
+992 986
+internal_count del_count
+991 984
+internal_count del_count
+990 982
+internal_count del_count
+989 980
+internal_count del_count
+988 978
+internal_count del_count
+987 976
+internal_count del_count
+986 974
+internal_count del_count
+985 972
+internal_count del_count
+984 970
+internal_count del_count
+983 968
+internal_count del_count
+982 966
+internal_count del_count
+981 964
+internal_count del_count
+980 962
+internal_count del_count
+979 960
+internal_count del_count
+978 958
+internal_count del_count
+977 956
+internal_count del_count
+976 954
+internal_count del_count
+975 952
+internal_count del_count
+974 950
+internal_count del_count
+973 948
+internal_count del_count
+972 946
+internal_count del_count
+971 944
+internal_count del_count
+970 942
+internal_count del_count
+969 940
+internal_count del_count
+968 938
+internal_count del_count
+967 936
+internal_count del_count
+966 934
+internal_count del_count
+965 932
+internal_count del_count
+964 930
+internal_count del_count
+963 928
+internal_count del_count
+962 926
+internal_count del_count
+961 924
+internal_count del_count
+960 922
+internal_count del_count
+959 920
+internal_count del_count
+958 918
+internal_count del_count
+957 916
+internal_count del_count
+956 914
+internal_count del_count
+955 912
+internal_count del_count
+954 910
+internal_count del_count
+953 908
+internal_count del_count
+952 906
+internal_count del_count
+951 904
+internal_count del_count
+950 902
+internal_count del_count
+949 900
+internal_count del_count
+948 898
+internal_count del_count
+947 896
+internal_count del_count
+946 894
+internal_count del_count
+945 892
+internal_count del_count
+944 890
+internal_count del_count
+943 888
+internal_count del_count
+942 886
+internal_count del_count
+941 884
+internal_count del_count
+940 882
+internal_count del_count
+939 880
+internal_count del_count
+938 878
+internal_count del_count
+937 876
+internal_count del_count
+936 874
+internal_count del_count
+935 872
+internal_count del_count
+934 870
+internal_count del_count
+933 868
+internal_count del_count
+932 866
+internal_count del_count
+931 864
+internal_count del_count
+930 862
+internal_count del_count
+929 860
+internal_count del_count
+928 858
+internal_count del_count
+927 856
+internal_count del_count
+926 854
+internal_count del_count
+925 852
+internal_count del_count
+924 850
+internal_count del_count
+923 848
+internal_count del_count
+922 846
+internal_count del_count
+921 844
+internal_count del_count
+920 842
+internal_count del_count
+919 840
+internal_count del_count
+918 838
+internal_count del_count
+917 836
+internal_count del_count
+916 834
+internal_count del_count
+915 832
+internal_count del_count
+914 830
+internal_count del_count
+913 828
+internal_count del_count
+912 826
+internal_count del_count
+911 824
+internal_count del_count
+910 822
+internal_count del_count
+909 820
+internal_count del_count
+908 818
+internal_count del_count
+907 816
+internal_count del_count
+906 814
+internal_count del_count
+905 812
+internal_count del_count
+904 810
+internal_count del_count
+903 808
+internal_count del_count
+902 806
+internal_count del_count
+901 804
+internal_count del_count
+900 802
+internal_count del_count
+899 800
+internal_count del_count
+898 798
+internal_count del_count
+897 796
+internal_count del_count
+896 794
+internal_count del_count
+895 792
+internal_count del_count
+894 790
+internal_count del_count
+893 788
+internal_count del_count
+892 786
+internal_count del_count
+891 784
+internal_count del_count
+890 782
+internal_count del_count
+889 780
+internal_count del_count
+888 778
+internal_count del_count
+887 776
+internal_count del_count
+886 774
+internal_count del_count
+885 772
+internal_count del_count
+884 770
+internal_count del_count
+883 768
+internal_count del_count
+882 766
+internal_count del_count
+881 764
+internal_count del_count
+880 762
+internal_count del_count
+879 760
+internal_count del_count
+878 758
+internal_count del_count
+877 756
+internal_count del_count
+876 754
+internal_count del_count
+875 752
+internal_count del_count
+874 750
+internal_count del_count
+873 748
+internal_count del_count
+872 746
+internal_count del_count
+871 744
+internal_count del_count
+870 742
+internal_count del_count
+869 740
+internal_count del_count
+868 738
+internal_count del_count
+867 736
+internal_count del_count
+866 734
+internal_count del_count
+865 732
+internal_count del_count
+864 730
+internal_count del_count
+863 728
+internal_count del_count
+862 726
+internal_count del_count
+861 724
+internal_count del_count
+860 722
+internal_count del_count
+859 720
+internal_count del_count
+858 718
+internal_count del_count
+857 716
+internal_count del_count
+856 714
+internal_count del_count
+855 712
+internal_count del_count
+854 710
+internal_count del_count
+853 708
+internal_count del_count
+852 706
+internal_count del_count
+851 704
+internal_count del_count
+850 702
+internal_count del_count
+849 700
+internal_count del_count
+848 698
+internal_count del_count
+847 696
+internal_count del_count
+846 694
+internal_count del_count
+845 692
+internal_count del_count
+844 690
+internal_count del_count
+843 688
+internal_count del_count
+842 686
+internal_count del_count
+841 684
+internal_count del_count
+840 682
+internal_count del_count
+839 680
+internal_count del_count
+838 678
+internal_count del_count
+837 676
+internal_count del_count
+836 674
+internal_count del_count
+835 672
+internal_count del_count
+834 670
+internal_count del_count
+833 668
+internal_count del_count
+832 666
+internal_count del_count
+831 664
+internal_count del_count
+830 662
+internal_count del_count
+829 660
+internal_count del_count
+828 658
+internal_count del_count
+827 656
+internal_count del_count
+826 654
+internal_count del_count
+825 652
+internal_count del_count
+824 650
+internal_count del_count
+823 648
+internal_count del_count
+822 646
+internal_count del_count
+821 644
+internal_count del_count
+820 642
+internal_count del_count
+819 640
+internal_count del_count
+818 638
+internal_count del_count
+817 636
+internal_count del_count
+816 634
+internal_count del_count
+815 632
+internal_count del_count
+814 630
+internal_count del_count
+813 628
+internal_count del_count
+812 626
+internal_count del_count
+811 624
+internal_count del_count
+810 622
+internal_count del_count
+809 620
+internal_count del_count
+808 618
+internal_count del_count
+807 616
+internal_count del_count
+806 614
+internal_count del_count
+805 612
+internal_count del_count
+804 610
+internal_count del_count
+803 608
+internal_count del_count
+802 606
+internal_count del_count
+801 604
+internal_count del_count
+800 602
+internal_count del_count
+799 600
+internal_count del_count
+798 598
+internal_count del_count
+797 596
+internal_count del_count
+796 594
+internal_count del_count
+795 592
+internal_count del_count
+794 590
+internal_count del_count
+793 588
+internal_count del_count
+792 586
+internal_count del_count
+791 584
+internal_count del_count
+790 582
+internal_count del_count
+789 580
+internal_count del_count
+788 578
+internal_count del_count
+787 576
+internal_count del_count
+786 574
+internal_count del_count
+785 572
+internal_count del_count
+784 570
+internal_count del_count
+783 568
+internal_count del_count
+782 566
+internal_count del_count
+781 564
+internal_count del_count
+780 562
+internal_count del_count
+779 560
+internal_count del_count
+778 558
+internal_count del_count
+777 556
+internal_count del_count
+776 554
+internal_count del_count
+775 552
+internal_count del_count
+774 550
+internal_count del_count
+773 548
+internal_count del_count
+772 546
+internal_count del_count
+771 544
+internal_count del_count
+770 542
+internal_count del_count
+769 540
+internal_count del_count
+768 538
+internal_count del_count
+767 536
+internal_count del_count
+766 534
+internal_count del_count
+765 532
+internal_count del_count
+764 530
+internal_count del_count
+763 528
+internal_count del_count
+762 526
+internal_count del_count
+761 524
+internal_count del_count
+760 522
+internal_count del_count
+759 520
+internal_count del_count
+758 518
+internal_count del_count
+757 516
+internal_count del_count
+756 514
+internal_count del_count
+755 512
+internal_count del_count
+754 510
+internal_count del_count
+753 508
+internal_count del_count
+752 506
+internal_count del_count
+751 504
+internal_count del_count
+750 502
+internal_count del_count
+749 500
+internal_count del_count
+748 498
+internal_count del_count
+747 496
+internal_count del_count
+746 494
+internal_count del_count
+745 492
+internal_count del_count
+744 490
+internal_count del_count
+743 488
+internal_count del_count
+742 486
+internal_count del_count
+741 484
+internal_count del_count
+740 482
+internal_count del_count
+739 480
+internal_count del_count
+738 478
+internal_count del_count
+737 476
+internal_count del_count
+736 474
+internal_count del_count
+735 472
+internal_count del_count
+734 470
+internal_count del_count
+733 468
+internal_count del_count
+732 466
+internal_count del_count
+731 464
+internal_count del_count
+730 462
+internal_count del_count
+729 460
+internal_count del_count
+728 458
+internal_count del_count
+727 456
+internal_count del_count
+726 454
+internal_count del_count
+725 452
+internal_count del_count
+724 450
+internal_count del_count
+723 448
+internal_count del_count
+722 446
+internal_count del_count
+721 444
+internal_count del_count
+720 442
+internal_count del_count
+719 440
+internal_count del_count
+718 438
+internal_count del_count
+717 436
+internal_count del_count
+716 434
+internal_count del_count
+715 432
+internal_count del_count
+714 430
+internal_count del_count
+713 428
+internal_count del_count
+712 426
+internal_count del_count
+711 424
+internal_count del_count
+710 422
+internal_count del_count
+709 420
+internal_count del_count
+708 418
+internal_count del_count
+707 416
+internal_count del_count
+706 414
+internal_count del_count
+705 412
+internal_count del_count
+704 410
+internal_count del_count
+703 408
+internal_count del_count
+702 406
+internal_count del_count
+701 404
+internal_count del_count
+700 402
+internal_count del_count
+699 400
+internal_count del_count
+698 398
+internal_count del_count
+697 396
+internal_count del_count
+696 394
+internal_count del_count
+695 392
+internal_count del_count
+694 390
+internal_count del_count
+693 388
+internal_count del_count
+692 386
+internal_count del_count
+691 384
+internal_count del_count
+690 382
+internal_count del_count
+689 380
+internal_count del_count
+688 378
+internal_count del_count
+687 376
+internal_count del_count
+686 374
+internal_count del_count
+685 372
+internal_count del_count
+684 370
+internal_count del_count
+683 368
+internal_count del_count
+682 366
+internal_count del_count
+681 364
+internal_count del_count
+680 362
+internal_count del_count
+679 360
+internal_count del_count
+678 358
+internal_count del_count
+677 356
+internal_count del_count
+676 354
+internal_count del_count
+675 352
+internal_count del_count
+674 350
+internal_count del_count
+673 348
+internal_count del_count
+672 346
+internal_count del_count
+671 344
+internal_count del_count
+670 342
+internal_count del_count
+669 340
+internal_count del_count
+668 338
+internal_count del_count
+667 336
+internal_count del_count
+666 334
+internal_count del_count
+665 332
+internal_count del_count
+664 330
+internal_count del_count
+663 328
+internal_count del_count
+662 326
+internal_count del_count
+661 324
+internal_count del_count
+660 322
+internal_count del_count
+659 320
+internal_count del_count
+658 318
+internal_count del_count
+657 316
+internal_count del_count
+656 314
+internal_count del_count
+655 312
+internal_count del_count
+654 310
+internal_count del_count
+653 308
+internal_count del_count
+652 306
+internal_count del_count
+651 304
+internal_count del_count
+650 302
+internal_count del_count
+649 300
+internal_count del_count
+648 298
+internal_count del_count
+647 296
+internal_count del_count
+646 294
+internal_count del_count
+645 292
+internal_count del_count
+644 290
+internal_count del_count
+643 288
+internal_count del_count
+642 286
+internal_count del_count
+641 284
+internal_count del_count
+640 282
+internal_count del_count
+639 280
+internal_count del_count
+638 278
+internal_count del_count
+637 276
+internal_count del_count
+636 274
+internal_count del_count
+635 272
+internal_count del_count
+634 270
+internal_count del_count
+633 268
+internal_count del_count
+632 266
+internal_count del_count
+631 264
+internal_count del_count
+630 262
+internal_count del_count
+629 260
+internal_count del_count
+628 258
+internal_count del_count
+627 256
+internal_count del_count
+626 254
+internal_count del_count
+625 252
+internal_count del_count
+624 250
+internal_count del_count
+623 248
+internal_count del_count
+622 246
+internal_count del_count
+621 244
+internal_count del_count
+620 242
+internal_count del_count
+619 240
+internal_count del_count
+618 238
+internal_count del_count
+617 236
+internal_count del_count
+616 234
+internal_count del_count
+615 232
+internal_count del_count
+614 230
+internal_count del_count
+613 228
+internal_count del_count
+612 226
+internal_count del_count
+611 224
+internal_count del_count
+610 222
+internal_count del_count
+609 220
+internal_count del_count
+608 218
+internal_count del_count
+607 216
+internal_count del_count
+606 214
+internal_count del_count
+605 212
+internal_count del_count
+604 210
+internal_count del_count
+603 208
+internal_count del_count
+602 206
+internal_count del_count
+601 204
+internal_count del_count
+600 202
+internal_count del_count
+599 200
+internal_count del_count
+598 198
+internal_count del_count
+597 196
+internal_count del_count
+596 194
+internal_count del_count
+595 192
+internal_count del_count
+594 190
+internal_count del_count
+593 188
+internal_count del_count
+592 186
+internal_count del_count
+591 184
+internal_count del_count
+590 182
+internal_count del_count
+589 180
+internal_count del_count
+588 178
+internal_count del_count
+587 176
+internal_count del_count
+586 174
+internal_count del_count
+585 172
+internal_count del_count
+584 170
+internal_count del_count
+583 168
+internal_count del_count
+582 166
+internal_count del_count
+581 164
+internal_count del_count
+580 162
+internal_count del_count
+579 160
+internal_count del_count
+578 158
+internal_count del_count
+577 156
+internal_count del_count
+576 154
+internal_count del_count
+575 152
+internal_count del_count
+574 150
+internal_count del_count
+573 148
+internal_count del_count
+572 146
+internal_count del_count
+571 144
+internal_count del_count
+570 142
+internal_count del_count
+569 140
+internal_count del_count
+568 138
+internal_count del_count
+567 136
+internal_count del_count
+566 134
+internal_count del_count
+565 132
+internal_count del_count
+564 130
+internal_count del_count
+563 128
+internal_count del_count
+562 126
+internal_count del_count
+561 124
+internal_count del_count
+560 122
+internal_count del_count
+559 120
+internal_count del_count
+558 118
+internal_count del_count
+557 116
+internal_count del_count
+556 114
+internal_count del_count
+555 112
+internal_count del_count
+554 110
+internal_count del_count
+553 108
+internal_count del_count
+552 106
+internal_count del_count
+551 104
+internal_count del_count
+550 102
+internal_count del_count
+549 100
+internal_count del_count
+548 98
+internal_count del_count
+547 96
+internal_count del_count
+546 94
+internal_count del_count
+545 92
+internal_count del_count
+544 90
+internal_count del_count
+543 88
+internal_count del_count
+542 86
+internal_count del_count
+541 84
+internal_count del_count
+540 82
+internal_count del_count
+539 80
+internal_count del_count
+538 78
+internal_count del_count
+537 76
+internal_count del_count
+536 74
+internal_count del_count
+535 72
+internal_count del_count
+534 70
+internal_count del_count
+533 68
+internal_count del_count
+532 66
+internal_count del_count
+531 64
+internal_count del_count
+530 62
+internal_count del_count
+529 60
+internal_count del_count
+528 58
+internal_count del_count
+527 56
+internal_count del_count
+526 54
+internal_count del_count
+525 52
+internal_count del_count
+524 50
+internal_count del_count
+523 48
+internal_count del_count
+522 46
+internal_count del_count
+521 44
+internal_count del_count
+520 42
+internal_count del_count
+519 40
+internal_count del_count
+518 38
+internal_count del_count
+517 36
+internal_count del_count
+516 34
+internal_count del_count
+515 32
+internal_count del_count
+514 30
+internal_count del_count
+513 28
+internal_count del_count
+512 26
+internal_count del_count
+511 24
+internal_count del_count
+510 22
+internal_count del_count
+509 20
+internal_count del_count
+508 18
+internal_count del_count
+507 16
+internal_count del_count
+506 14
+internal_count del_count
+505 12
+internal_count del_count
+504 10
+internal_count del_count
+503 8
+internal_count del_count
+502 6
+internal_count del_count
+501 4
+internal_count del_count
+500 2
+select count(*) as Part from test.part_tbl;
+Part
+500
+DROP PROCEDURE test.proc_part;
+DROP TABLE test.part_tbl;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug42419.result b/mysql-test/suite/innodb_plugin/r/innodb_bug42419.result
new file mode 100644
index 00000000000..f304bb634cb
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug42419.result
@@ -0,0 +1,17 @@
+CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB;
+INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
+COMMIT;
+SET AUTOCOMMIT = 0;
+CREATE TEMPORARY TABLE t1_tmp ( b INT );
+INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3;
+INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2;
+SET AUTOCOMMIT = 0;
+CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int );
+INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
+INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1;
+ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
+Reap the server message for connection user2 UPDATE t1 ...
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result b/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result
index c8e3db8d641..b27b3d7443b 100644
--- a/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug46000.result
@@ -14,6 +14,5 @@ show warnings;
Level Code Message
Warning 1280 Cannot Create Index with name 'GEN_CLUST_INDEX'. The name is reserved for the system default primary index.
Error 1280 Incorrect index name 'GEN_CLUST_INDEX'
-Error 1030 Got error -1 from storage engine
create index idx on bug46000(id);
drop table bug46000;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug48024.result b/mysql-test/suite/innodb_plugin/r/innodb_bug48024.result
new file mode 100644
index 00000000000..611923d2796
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug48024.result
@@ -0,0 +1,10 @@
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b);
+DROP TABLE bug48024,bug48024_b;
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)|
+DROP TABLE bug48024,bug48024_b;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result b/mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result
new file mode 100644
index 00000000000..9456702e1d0
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug49164-xb.result
@@ -0,0 +1,42 @@
+SET tx_isolation = 'READ-COMMITTED';
+CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b))
+ENGINE=InnoDB;
+insert into bug49164 values (1,1,1), (2,2,2), (3,3,3);
+begin;
+update bug49164 set c=7;
+select * from bug49164;
+a b c
+1 1 7
+2 2 7
+3 3 7
+rollback;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+begin;
+update bug49164 set c=7;
+SET tx_isolation = 'READ-COMMITTED';
+begin;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+commit;
+begin;
+update bug49164 set c=6 where a=1 and b=1;
+rollback;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+commit;
+select * from bug49164;
+a b c
+1 1 6
+2 2 2
+3 3 3
+drop table bug49164;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result b/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result
new file mode 100644
index 00000000000..9456702e1d0
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug49164.result
@@ -0,0 +1,42 @@
+SET tx_isolation = 'READ-COMMITTED';
+CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b))
+ENGINE=InnoDB;
+insert into bug49164 values (1,1,1), (2,2,2), (3,3,3);
+begin;
+update bug49164 set c=7;
+select * from bug49164;
+a b c
+1 1 7
+2 2 7
+3 3 7
+rollback;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+begin;
+update bug49164 set c=7;
+SET tx_isolation = 'READ-COMMITTED';
+begin;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+commit;
+begin;
+update bug49164 set c=6 where a=1 and b=1;
+rollback;
+select * from bug49164;
+a b c
+1 1 1
+2 2 2
+3 3 3
+commit;
+select * from bug49164;
+a b c
+1 1 6
+2 2 2
+3 3 3
+drop table bug49164;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53290.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53290.result
new file mode 100644
index 00000000000..46cd7248c4e
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53290.result
@@ -0,0 +1,17 @@
+create table bug53290 (x bigint) engine=innodb;
+insert into bug53290 () values (),(),(),(),(),(),(),(),(),(),(),();
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+alter table bug53290 add unique index `idx` (x);
+drop table bug53290;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result
new file mode 100644
index 00000000000..99dd0d837ae
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53591.result
@@ -0,0 +1,15 @@
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=on;
+set old_alter_table=0;
+CREATE TABLE bug53591(a text charset utf8 not null)
+ENGINE=InnoDB KEY_BLOCK_SIZE=1;
+ALTER TABLE bug53591 ADD PRIMARY KEY(a(220));
+ERROR HY000: Too big row
+SHOW WARNINGS;
+Level Code Message
+Error 139 Too big row
+Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
+DROP TABLE bug53591;
+SET GLOBAL innodb_file_format=Antelope;
+SET GLOBAL innodb_file_format_check=Antelope;
+SET GLOBAL innodb_file_per_table=0;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53592.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53592.result
new file mode 100644
index 00000000000..18906568613
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53592.result
@@ -0,0 +1,26 @@
+set old_alter_table=0;
+create table bug53592(a int) engine=innodb row_format=compact;
+alter table bug53592 add column b text charset utf8;
+alter table bug53592 add column c blob not null;
+create index bug53592_b on bug53592(b(81));
+create unique index bug53592_c on bug53592(c(1));
+replace into bug53592 values (),();
+Warnings:
+Warning 1364 Field 'c' doesn't have a default value
+check table bug53592;
+Table Op Msg_type Msg_text
+test.bug53592 check status OK
+drop table bug53592;
+set old_alter_table=1;
+create table bug53592(a int) engine=innodb row_format=compact;
+alter table bug53592 add column b text charset utf8;
+alter table bug53592 add column c blob not null;
+create index bug53592_b on bug53592(b(81));
+create unique index bug53592_c on bug53592(c(1));
+replace into bug53592 values (),();
+Warnings:
+Warning 1364 Field 'c' doesn't have a default value
+check table bug53592;
+Table Op Msg_type Msg_text
+test.bug53592 check status OK
+drop table bug53592;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug53674.result b/mysql-test/suite/innodb_plugin/r/innodb_bug53674.result
new file mode 100644
index 00000000000..c4021c2e7cd
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug53674.result
@@ -0,0 +1,11 @@
+create table bug53674(a int)engine=innodb;
+insert into bug53674 values (1),(2);
+start transaction;
+select * from bug53674 for update;
+a
+1
+2
+select * from bug53674 where a=(select a from bug53674 where a > 1);
+a
+2
+drop table bug53674;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result
new file mode 100644
index 00000000000..90ab812f2ae
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54044.result
@@ -0,0 +1,3 @@
+CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB
+AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
+ERROR HY000: Can't create table 'test.table_54044' (errno: -1)
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54453.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54453.result
new file mode 100644
index 00000000000..e623989a9d4
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54453.result
@@ -0,0 +1,9 @@
+#
+# Bug#54453: Failing assertion: trx->active_trans when renaming a table with active trx
+#
+DROP TABLE IF EXISTS bug54453;
+CREATE TABLE bug54453(a INT) ENGINE=InnoDB;
+ALTER TABLE bug54453 RENAME TO bug54453_2;
+SELECT * FROM bug54453_2;
+a
+DROP TABLE bug54453_2;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result b/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result
new file mode 100644
index 00000000000..f98f0474233
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_bug54679.result
@@ -0,0 +1,91 @@
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=ON;
+SET innodb_strict_mode=ON;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed row_format=COMPRESSED
+ALTER TABLE bug54679 ADD COLUMN b INT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed row_format=COMPRESSED
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compact
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed key_block_size=1
+ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Redundant row_format=REDUNDANT
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+TABLE_NAME ROW_FORMAT CREATE_OPTIONS
+bug54679 Compressed row_format=REDUNDANT key_block_size=2
+SET GLOBAL innodb_file_format=Antelope;
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
+Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
+Error 1005 Can't create table 'test.bug54679' (errno: 1478)
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+SET GLOBAL innodb_file_format=Barracuda;
+SET GLOBAL innodb_file_per_table=OFF;
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
+Error 1005 Can't create table '#sql-temporary' (errno: 1478)
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
+SHOW WARNINGS;
+Level Code Message
+Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
+Error 1005 Can't create table 'test.bug54679' (errno: 1478)
+SET GLOBAL innodb_file_per_table=ON;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+DROP TABLE bug54679;
+SET GLOBAL innodb_file_format=Antelope;
+SET GLOBAL innodb_file_format_check=Antelope;
+SET GLOBAL innodb_file_per_table=0;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_gis.result b/mysql-test/suite/innodb_plugin/r/innodb_gis.result
new file mode 100644
index 00000000000..c6c775afc9f
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_gis.result
@@ -0,0 +1,589 @@
+SET storage_engine=innodb;
+DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
+CREATE TABLE gis_point (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT);
+CREATE TABLE gis_line (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g LINESTRING);
+CREATE TABLE gis_polygon (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POLYGON);
+CREATE TABLE gis_multi_point (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTIPOINT);
+CREATE TABLE gis_multi_line (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTILINESTRING);
+CREATE TABLE gis_multi_polygon (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTIPOLYGON);
+CREATE TABLE gis_geometrycollection (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g GEOMETRYCOLLECTION);
+CREATE TABLE gis_geometry (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g GEOMETRY);
+SHOW CREATE TABLE gis_point;
+Table Create Table
+gis_point CREATE TABLE `gis_point` (
+ `fid` int(11) NOT NULL AUTO_INCREMENT,
+ `g` point DEFAULT NULL,
+ PRIMARY KEY (`fid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW FIELDS FROM gis_point;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g point YES NULL
+SHOW FIELDS FROM gis_line;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g linestring YES NULL
+SHOW FIELDS FROM gis_polygon;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g polygon YES NULL
+SHOW FIELDS FROM gis_multi_point;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g multipoint YES NULL
+SHOW FIELDS FROM gis_multi_line;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g multilinestring YES NULL
+SHOW FIELDS FROM gis_multi_polygon;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g multipolygon YES NULL
+SHOW FIELDS FROM gis_geometrycollection;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g geometrycollection YES NULL
+SHOW FIELDS FROM gis_geometry;
+Field Type Null Key Default Extra
+fid int(11) NO PRI NULL auto_increment
+g geometry YES NULL
+INSERT INTO gis_point VALUES
+(101, PointFromText('POINT(10 10)')),
+(102, PointFromText('POINT(20 10)')),
+(103, PointFromText('POINT(20 20)')),
+(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
+INSERT INTO gis_line VALUES
+(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
+(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
+(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
+INSERT INTO gis_polygon VALUES
+(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
+(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
+(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
+INSERT INTO gis_multi_point VALUES
+(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
+(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
+(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
+INSERT INTO gis_multi_line VALUES
+(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
+(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
+(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
+INSERT INTO gis_multi_polygon VALUES
+(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
+(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
+(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
+INSERT INTO gis_geometrycollection VALUES
+(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
+(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
+INSERT into gis_geometry SELECT * FROM gis_point;
+INSERT into gis_geometry SELECT * FROM gis_line;
+INSERT into gis_geometry SELECT * FROM gis_polygon;
+INSERT into gis_geometry SELECT * FROM gis_multi_point;
+INSERT into gis_geometry SELECT * FROM gis_multi_line;
+INSERT into gis_geometry SELECT * FROM gis_multi_polygon;
+INSERT into gis_geometry SELECT * FROM gis_geometrycollection;
+SELECT fid, AsText(g) FROM gis_point ORDER by fid;
+fid AsText(g)
+101 POINT(10 10)
+102 POINT(20 10)
+103 POINT(20 20)
+104 POINT(10 20)
+SELECT fid, AsText(g) FROM gis_line ORDER by fid;
+fid AsText(g)
+105 LINESTRING(0 0,0 10,10 0)
+106 LINESTRING(10 10,20 10,20 20,10 20,10 10)
+107 LINESTRING(10 10,40 10)
+SELECT fid, AsText(g) FROM gis_polygon ORDER by fid;
+fid AsText(g)
+108 POLYGON((10 10,20 10,20 20,10 20,10 10))
+109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
+110 POLYGON((0 0,30 0,30 30,0 0))
+SELECT fid, AsText(g) FROM gis_multi_point ORDER by fid;
+fid AsText(g)
+111 MULTIPOINT(0 0,10 10,10 20,20 20)
+112 MULTIPOINT(1 1,11 11,11 21,21 21)
+113 MULTIPOINT(3 6,4 10)
+SELECT fid, AsText(g) FROM gis_multi_line ORDER by fid;
+fid AsText(g)
+114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
+115 MULTILINESTRING((10 48,10 21,10 0))
+116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
+SELECT fid, AsText(g) FROM gis_multi_polygon ORDER by fid;
+fid AsText(g)
+117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
+118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
+119 MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
+SELECT fid, AsText(g) FROM gis_geometrycollection ORDER by fid;
+fid AsText(g)
+120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
+121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
+SELECT fid, AsText(g) FROM gis_geometry ORDER by fid;
+fid AsText(g)
+101 POINT(10 10)
+102 POINT(20 10)
+103 POINT(20 20)
+104 POINT(10 20)
+105 LINESTRING(0 0,0 10,10 0)
+106 LINESTRING(10 10,20 10,20 20,10 20,10 10)
+107 LINESTRING(10 10,40 10)
+108 POLYGON((10 10,20 10,20 20,10 20,10 10))
+109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
+110 POLYGON((0 0,30 0,30 30,0 0))
+111 MULTIPOINT(0 0,10 10,10 20,20 20)
+112 MULTIPOINT(1 1,11 11,11 21,21 21)
+113 MULTIPOINT(3 6,4 10)
+114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
+115 MULTILINESTRING((10 48,10 21,10 0))
+116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
+117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
+118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
+119 MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
+120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
+121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
+SELECT fid, Dimension(g) FROM gis_geometry ORDER by fid;
+fid Dimension(g)
+101 0
+102 0
+103 0
+104 0
+105 1
+106 1
+107 1
+108 2
+109 2
+110 2
+111 0
+112 0
+113 0
+114 1
+115 1
+116 1
+117 2
+118 2
+119 2
+120 1
+121 1
+SELECT fid, GeometryType(g) FROM gis_geometry ORDER by fid;
+fid GeometryType(g)
+101 POINT
+102 POINT
+103 POINT
+104 POINT
+105 LINESTRING
+106 LINESTRING
+107 LINESTRING
+108 POLYGON
+109 POLYGON
+110 POLYGON
+111 MULTIPOINT
+112 MULTIPOINT
+113 MULTIPOINT
+114 MULTILINESTRING
+115 MULTILINESTRING
+116 MULTILINESTRING
+117 MULTIPOLYGON
+118 MULTIPOLYGON
+119 MULTIPOLYGON
+120 GEOMETRYCOLLECTION
+121 GEOMETRYCOLLECTION
+SELECT fid, IsEmpty(g) FROM gis_geometry ORDER by fid;
+fid IsEmpty(g)
+101 0
+102 0
+103 0
+104 0
+105 0
+106 0
+107 0
+108 0
+109 0
+110 0
+111 0
+112 0
+113 0
+114 0
+115 0
+116 0
+117 0
+118 0
+119 0
+120 0
+121 0
+SELECT fid, AsText(Envelope(g)) FROM gis_geometry ORDER by fid;
+fid AsText(Envelope(g))
+101 POLYGON((10 10,10 10,10 10,10 10,10 10))
+102 POLYGON((20 10,20 10,20 10,20 10,20 10))
+103 POLYGON((20 20,20 20,20 20,20 20,20 20))
+104 POLYGON((10 20,10 20,10 20,10 20,10 20))
+105 POLYGON((0 0,10 0,10 10,0 10,0 0))
+106 POLYGON((10 10,20 10,20 20,10 20,10 10))
+107 POLYGON((10 10,40 10,40 10,10 10,10 10))
+108 POLYGON((10 10,20 10,20 20,10 20,10 10))
+109 POLYGON((0 0,50 0,50 50,0 50,0 0))
+110 POLYGON((0 0,30 0,30 30,0 30,0 0))
+111 POLYGON((0 0,20 0,20 20,0 20,0 0))
+112 POLYGON((1 1,21 1,21 21,1 21,1 1))
+113 POLYGON((3 6,4 6,4 10,3 10,3 6))
+114 POLYGON((10 0,16 0,16 48,10 48,10 0))
+115 POLYGON((10 0,10 0,10 48,10 48,10 0))
+116 POLYGON((1 2,21 2,21 8,1 8,1 2))
+117 POLYGON((28 0,84 0,84 42,28 42,28 0))
+118 POLYGON((28 0,84 0,84 42,28 42,28 0))
+119 POLYGON((0 0,3 0,3 3,0 3,0 0))
+120 POLYGON((0 0,10 0,10 10,0 10,0 0))
+121 POLYGON((3 6,44 6,44 9,3 9,3 6))
+explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE gis_geometry ALL NULL NULL NULL NULL 21 100.00
+Warnings:
+Note 1003 select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
+SELECT fid, X(g) FROM gis_point ORDER by fid;
+fid X(g)
+101 10
+102 20
+103 20
+104 10
+SELECT fid, Y(g) FROM gis_point ORDER by fid;
+fid Y(g)
+101 10
+102 10
+103 20
+104 20
+explain extended select X(g),Y(g) FROM gis_point;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE gis_point ALL NULL NULL NULL NULL 4 100.00
+Warnings:
+Note 1003 select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
+SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
+fid AsText(StartPoint(g))
+105 POINT(0 0)
+106 POINT(10 10)
+107 POINT(10 10)
+SELECT fid, AsText(EndPoint(g)) FROM gis_line ORDER by fid;
+fid AsText(EndPoint(g))
+105 POINT(10 0)
+106 POINT(10 10)
+107 POINT(40 10)
+SELECT fid, GLength(g) FROM gis_line ORDER by fid;
+fid GLength(g)
+105 24.142135623731
+106 40
+107 30
+SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
+fid NumPoints(g)
+105 3
+106 5
+107 2
+SELECT fid, AsText(PointN(g, 2)) FROM gis_line ORDER by fid;
+fid AsText(PointN(g, 2))
+105 POINT(0 10)
+106 POINT(20 10)
+107 POINT(40 10)
+SELECT fid, IsClosed(g) FROM gis_line ORDER by fid;
+fid IsClosed(g)
+105 0
+106 1
+107 0
+explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE gis_line ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
+SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
+fid AsText(Centroid(g))
+108 POINT(15 15)
+109 POINT(25.4166666666667 25.4166666666667)
+110 POINT(20 10)
+SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
+fid Area(g)
+108 100
+109 2400
+110 450
+SELECT fid, AsText(ExteriorRing(g)) FROM gis_polygon ORDER by fid;
+fid AsText(ExteriorRing(g))
+108 LINESTRING(10 10,20 10,20 20,10 20,10 10)
+109 LINESTRING(0 0,50 0,50 50,0 50,0 0)
+110 LINESTRING(0 0,30 0,30 30,0 0)
+SELECT fid, NumInteriorRings(g) FROM gis_polygon ORDER by fid;
+fid NumInteriorRings(g)
+108 0
+109 1
+110 0
+SELECT fid, AsText(InteriorRingN(g, 1)) FROM gis_polygon ORDER by fid;
+fid AsText(InteriorRingN(g, 1))
+108 NULL
+109 LINESTRING(10 10,20 10,20 20,10 20,10 10)
+110 NULL
+explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE gis_polygon ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
+SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
+fid IsClosed(g)
+114 0
+115 0
+116 0
+SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
+fid AsText(Centroid(g))
+117 POINT(55.5885277530424 17.426536064114)
+118 POINT(55.5885277530424 17.426536064114)
+119 POINT(2 2)
+SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
+fid Area(g)
+117 1684.5
+118 1684.5
+119 4.5
+SELECT fid, NumGeometries(g) from gis_multi_point ORDER by fid;
+fid NumGeometries(g)
+111 4
+112 4
+113 2
+SELECT fid, NumGeometries(g) from gis_multi_line ORDER by fid;
+fid NumGeometries(g)
+114 2
+115 1
+116 2
+SELECT fid, NumGeometries(g) from gis_multi_polygon ORDER by fid;
+fid NumGeometries(g)
+117 2
+118 2
+119 1
+SELECT fid, NumGeometries(g) from gis_geometrycollection ORDER by fid;
+fid NumGeometries(g)
+120 2
+121 2
+explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
+SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
+fid AsText(GeometryN(g, 2))
+111 POINT(10 10)
+112 POINT(11 11)
+113 POINT(4 10)
+SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_line ORDER by fid;
+fid AsText(GeometryN(g, 2))
+114 LINESTRING(16 0,16 23,16 48)
+115 NULL
+116 LINESTRING(2 5,5 8,21 7)
+SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_polygon ORDER by fid;
+fid AsText(GeometryN(g, 2))
+117 POLYGON((59 18,67 18,67 13,59 13,59 18))
+118 POLYGON((59 18,67 18,67 13,59 13,59 18))
+119 NULL
+SELECT fid, AsText(GeometryN(g, 2)) from gis_geometrycollection ORDER by fid;
+fid AsText(GeometryN(g, 2))
+120 LINESTRING(0 0,10 10)
+121 LINESTRING(3 6,7 9)
+SELECT fid, AsText(GeometryN(g, 1)) from gis_geometrycollection ORDER by fid;
+fid AsText(GeometryN(g, 1))
+120 POINT(0 0)
+121 POINT(44 6)
+explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3 100.00
+Warnings:
+Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
+SELECT g1.fid as first, g2.fid as second,
+Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
+Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
+Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
+FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
+first second w c o e d t i r
+120 120 1 1 0 1 0 0 1 0
+120 121 0 0 1 0 0 0 1 0
+121 120 0 0 1 0 0 0 1 0
+121 121 1 1 0 1 0 0 1 0
+explain extended SELECT g1.fid as first, g2.fid as second,
+Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
+Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
+Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
+FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE g1 ALL NULL NULL NULL NULL 2 100.00 Using temporary; Using filesort
+1 SIMPLE g2 ALL NULL NULL NULL NULL 2 100.00 Using join buffer
+Warnings:
+Note 1003 select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
+DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
+CREATE TABLE t1 (
+a INTEGER PRIMARY KEY AUTO_INCREMENT,
+gp point,
+ln linestring,
+pg polygon,
+mp multipoint,
+mln multilinestring,
+mpg multipolygon,
+gc geometrycollection,
+gm geometry
+);
+SHOW FIELDS FROM t1;
+Field Type Null Key Default Extra
+a int(11) NO PRI NULL auto_increment
+gp point YES NULL
+ln linestring YES NULL
+pg polygon YES NULL
+mp multipoint YES NULL
+mln multilinestring YES NULL
+mpg multipolygon YES NULL
+gc geometrycollection YES NULL
+gm geometry YES NULL
+ALTER TABLE t1 ADD fid INT;
+SHOW FIELDS FROM t1;
+Field Type Null Key Default Extra
+a int(11) NO PRI NULL auto_increment
+gp point YES NULL
+ln linestring YES NULL
+pg polygon YES NULL
+mp multipoint YES NULL
+mln multilinestring YES NULL
+mpg multipolygon YES NULL
+gc geometrycollection YES NULL
+gm geometry YES NULL
+fid int(11) YES NULL
+DROP TABLE t1;
+create table t1 (pk integer primary key auto_increment, a geometry not null);
+insert into t1 (a) values (GeomFromText('Point(1 2)'));
+insert into t1 (a) values ('Garbage');
+ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
+insert IGNORE into t1 (a) values ('Garbage');
+ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
+drop table t1;
+create table t1 (pk integer primary key auto_increment, fl geometry not null);
+insert into t1 (fl) values (1);
+ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
+insert into t1 (fl) values (1.11);
+ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
+insert into t1 (fl) values ("qwerty");
+ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
+insert into t1 (fl) values (pointfromtext('point(1,1)'));
+ERROR 23000: Column 'fl' cannot be null
+drop table t1;
+End of 4.1 tests
+CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
+INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
+INSERT INTO t1 VALUES("small", GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
+INSERT INTO t1 VALUES("big", GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
+INSERT INTO t1 VALUES("up", GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))'));
+INSERT INTO t1 VALUES("up2", GeomFromText('POLYGON (( 0 2, 0 4, 2 4, 2 2, 0 2))'));
+INSERT INTO t1 VALUES("up3", GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))'));
+INSERT INTO t1 VALUES("down", GeomFromText('POLYGON (( 0 -1, 0 1, 2 1, 2 -1, 0 -1))'));
+INSERT INTO t1 VALUES("down2", GeomFromText('POLYGON (( 0 -2, 0 0, 2 0, 2 -2, 0 -2))'));
+INSERT INTO t1 VALUES("down3", GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))'));
+INSERT INTO t1 VALUES("right", GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))'));
+INSERT INTO t1 VALUES("right2", GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))'));
+INSERT INTO t1 VALUES("right3", GeomFromText('POLYGON (( 3 0, 3 2, 5 2, 5 0, 3 0))'));
+INSERT INTO t1 VALUES("left", GeomFromText('POLYGON (( -1 0, -1 2, 1 2, 1 0, -1 0))'));
+INSERT INTO t1 VALUES("left2", GeomFromText('POLYGON (( -2 0, -2 2, 0 2, 0 0, -2 0))'));
+INSERT INTO t1 VALUES("left3", GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))'));
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrcontains FROM t1 a1 JOIN t1 a2 ON MBRContains( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbrcontains
+center,small
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrdisjoint FROM t1 a1 JOIN t1 a2 ON MBRDisjoint( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbrdisjoint
+down3,left3,right3,up3
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrequal FROM t1 a1 JOIN t1 a2 ON MBREqual( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbrequal
+center
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrintersect FROM t1 a1 JOIN t1 a2 ON MBRIntersects( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbrintersect
+big,center,down,down2,left,left2,right,right2,small,up,up2
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbroverlaps FROM t1 a1 JOIN t1 a2 ON MBROverlaps( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbroverlaps
+down,left,right,up
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrtouches FROM t1 a1 JOIN t1 a2 ON MBRTouches( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbrtouches
+down2,left2,right2,up2
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrwithin FROM t1 a1 JOIN t1 a2 ON MBRWithin( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+mbrwithin
+big,center
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS contains FROM t1 a1 JOIN t1 a2 ON Contains( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+contains
+center,small
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS disjoint FROM t1 a1 JOIN t1 a2 ON Disjoint( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+disjoint
+down3,left3,right3,up3
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS equals FROM t1 a1 JOIN t1 a2 ON Equals( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+equals
+center
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS intersect FROM t1 a1 JOIN t1 a2 ON Intersects( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+intersect
+big,center,down,down2,left,left2,right,right2,small,up,up2
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS overlaps FROM t1 a1 JOIN t1 a2 ON Overlaps( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+overlaps
+down,left,right,up
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS touches FROM t1 a1 JOIN t1 a2 ON Touches( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+touches
+down2,left2,right2,up2
+SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS within FROM t1 a1 JOIN t1 a2 ON Within( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
+within
+big,center
+SET @vert1 = GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))');
+SET @horiz1 = GeomFromText('POLYGON ((-2 0, 2 0, -2 0))');
+SET @horiz2 = GeomFromText('POLYGON ((-1 0, 3 0, -1 0))');
+SET @horiz3 = GeomFromText('POLYGON ((2 0, 3 0, 2 0))');
+SET @point1 = GeomFromText('POLYGON ((0 0))');
+SET @point2 = GeomFromText('POLYGON ((-2 0))');
+SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS overlaps FROM t1 a1 WHERE Overlaps(a1.square, @vert1) GROUP BY a1.name;
+overlaps
+SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS overlaps FROM t1 a1 WHERE Overlaps(a1.square, @horiz1) GROUP BY a1.name;
+overlaps
+SELECT Overlaps(@horiz1, @vert1) FROM DUAL;
+Overlaps(@horiz1, @vert1)
+0
+SELECT Overlaps(@horiz1, @horiz2) FROM DUAL;
+Overlaps(@horiz1, @horiz2)
+1
+SELECT Overlaps(@horiz1, @horiz3) FROM DUAL;
+Overlaps(@horiz1, @horiz3)
+0
+SELECT Overlaps(@horiz1, @point1) FROM DUAL;
+Overlaps(@horiz1, @point1)
+0
+SELECT Overlaps(@horiz1, @point2) FROM DUAL;
+Overlaps(@horiz1, @point2)
+0
+DROP TABLE t1;
+End of 5.0 tests
+CREATE TABLE t1 (p POINT);
+CREATE TABLE t2 (p POINT, INDEX(p));
+INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)'));
+INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)'));
+SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
+COUNT(*)
+1
+EXPLAIN
+SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ref p p 28 const 1 Using where
+SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
+COUNT(*)
+1
+INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)'));
+INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)'));
+EXPLAIN
+SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
+SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
+COUNT(*)
+2
+EXPLAIN
+SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ref p p 28 const 1 Using where
+SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
+COUNT(*)
+2
+EXPLAIN
+SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 ALL NULL NULL NULL NULL 2 Using where
+SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
+COUNT(*)
+2
+DROP TABLE t1, t2;
+End of 5.0 tests
+create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
+ERROR HY000: The used table type doesn't support SPATIAL indexes
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result b/mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result
new file mode 100644
index 00000000000..bd8760b8f79
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_lock_wait_timeout_1.result
@@ -0,0 +1,375 @@
+#
+# Bug #40113: Embedded SELECT inside UPDATE or DELETE can timeout
+# without error
+#
+CREATE TABLE t1 (a int, b int, PRIMARY KEY (a,b)) ENGINE=InnoDB;
+INSERT INTO t1 (a,b) VALUES (1070109,99);
+CREATE TABLE t2 (b int, a int, PRIMARY KEY (b)) ENGINE=InnoDB;
+INSERT INTO t2 (b,a) VALUES (7,1070109);
+SELECT * FROM t1;
+a b
+1070109 99
+BEGIN;
+SELECT b FROM t2 WHERE b=7 FOR UPDATE;
+b
+7
+BEGIN;
+SELECT b FROM t2 WHERE b=7 FOR UPDATE;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+INSERT INTO t1 (a) VALUES ((SELECT a FROM t2 WHERE b=7));
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+UPDATE t1 SET a='7000000' WHERE a=(SELECT a FROM t2 WHERE b=7);
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+DELETE FROM t1 WHERE a=(SELECT a FROM t2 WHERE b=7);
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+SELECT * FROM t1;
+a b
+1070109 99
+DROP TABLE t2, t1;
+# End of 5.0 tests
+#
+# Bug#46539 Various crashes on INSERT IGNORE SELECT + SELECT
+# FOR UPDATE
+#
+drop table if exists t1;
+create table t1 (a int primary key auto_increment,
+b int, index(b)) engine=innodb;
+insert into t1 (b) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
+set autocommit=0;
+begin;
+select * from t1 where b=5 for update;
+a b
+5 5
+insert ignore into t1 (b) select a as b from t1;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+# Cleanup
+#
+commit;
+set autocommit=default;
+drop table t1;
+#
+# Bug #37183 insert ignore into .. select ... hangs
+# after deadlock was encountered
+#
+create table t1(id int primary key,v int)engine=innodb;
+insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
+create table t2 like t1;
+begin;
+update t1 set v=id*2 where id=1;
+begin;
+update t1 set v=id*2 where id=2;
+update t1 set v=id*2 where id=2;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+insert ignore into t2 select * from t1 where id=1;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+rollback;
+rollback;
+drop table t1, t2;
+#
+# Bug#41756 Strange error messages about locks from InnoDB
+#
+drop table if exists t1;
+# In the default transaction isolation mode, and/or with
+# innodb_locks_unsafe_for_binlog=OFF, handler::unlock_row()
+# in InnoDB does nothing.
+# Thus in order to reproduce the condition that led to the
+# warning, one needs to relax isolation by either
+# setting a weaker tx_isolation value, or by turning on
+# the unsafe replication switch.
+# For testing purposes, choose to tweak the isolation level,
+# since it's settable at runtime, unlike
+# innodb_locks_unsafe_for_binlog, which is
+# only a command-line switch.
+#
+set @@session.tx_isolation="read-committed";
+# Prepare data. We need a table with a unique index,
+# for join_read_key to be used. The other column
+# allows to control what passes WHERE clause filter.
+create table t1 (a int primary key, b int) engine=innodb;
+# Let's make sure t1 has sufficient amount of rows
+# to exclude JT_ALL access method when reading it,
+# i.e. make sure that JT_EQ_REF(a) is always preferred.
+insert into t1 values (1,1), (2,null), (3,1), (4,1),
+(5,1), (6,1), (7,1), (8,1), (9,1), (10,1),
+(11,1), (12,1), (13,1), (14,1), (15,1),
+(16,1), (17,1), (18,1), (19,1), (20,1);
+#
+# Demonstrate that for the SELECT statement
+# used later in the test JT_EQ_REF access method is used.
+#
+explain
+select 1 from t1 natural join (select 2 as a, 1 as b union all
+select 2 as a, 2 as b) as t2 for update;
+id 1
+select_type PRIMARY
+table <derived2>
+type ALL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows 2
+Extra
+id 1
+select_type PRIMARY
+table t1
+type eq_ref
+possible_keys PRIMARY
+key PRIMARY
+key_len 4
+ref t2.a
+rows 1
+Extra Using where
+id 2
+select_type DERIVED
+table NULL
+type NULL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows NULL
+Extra No tables used
+id 3
+select_type UNION
+table NULL
+type NULL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows NULL
+Extra No tables used
+id NULL
+select_type UNION RESULT
+table <union2,3>
+type ALL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows NULL
+Extra
+#
+# Demonstrate that the reported SELECT statement
+# no longer produces warnings.
+#
+select 1 from t1 natural join (select 2 as a, 1 as b union all
+select 2 as a, 2 as b) as t2 for update;
+1
+commit;
+#
+# Demonstrate that due to lack of inter-sweep "reset" function,
+# we keep some non-matching records locked, even though we know
+# we could unlock them.
+# To do that, show that if there is only one distinct value
+# for a in t2 (a=2), we will keep record (2,null) in t1 locked.
+# But if we add another value for "a" to t2, say 6,
+# join_read_key cache will be pruned at least once,
+# and thus record (2, null) in t1 will get unlocked.
+#
+begin;
+select 1 from t1 natural join (select 2 as a, 1 as b union all
+select 2 as a, 2 as b) as t2 for update;
+1
+#
+# Switching to connection con1
+# We should be able to delete all records from t1 except (2, null),
+# since they were not locked.
+begin;
+# Delete in series of 3 records so that full scan
+# is not used and we're not blocked on record (2,null)
+delete from t1 where a in (1,3,4);
+delete from t1 where a in (5,6,7);
+delete from t1 where a in (8,9,10);
+delete from t1 where a in (11,12,13);
+delete from t1 where a in (14,15,16);
+delete from t1 where a in (17,18);
+delete from t1 where a in (19,20);
+#
+# Record (2, null) is locked. This is actually unnecessary,
+# because the previous select returned no rows.
+# Just demonstrate the effect.
+#
+delete from t1;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+rollback;
+#
+# Switching to connection default
+#
+# Show that the original contents of t1 is intact:
+select * from t1;
+a b
+1 1
+2 NULL
+3 1
+4 1
+5 1
+6 1
+7 1
+8 1
+9 1
+10 1
+11 1
+12 1
+13 1
+14 1
+15 1
+16 1
+17 1
+18 1
+19 1
+20 1
+commit;
+#
+# Have a one more record in t2 to show that
+# if join_read_key cache is purned, the current
+# row under the cursor is unlocked (provided, this row didn't
+# match the partial WHERE clause, of course).
+# Sic: the result of this test dependent on the order of retrieval
+# of records --echo # from the derived table, if !
+# We use DELETE to disable the JOIN CACHE. This DELETE modifies no
+# records. It also should leave no InnoDB row locks.
+#
+begin;
+delete t1.* from t1 natural join (select 2 as a, 2 as b union all
+select 0 as a, 0 as b) as t2;
+# Demonstrate that nothing was deleted form t1
+select * from t1;
+a b
+1 1
+2 NULL
+3 1
+4 1
+5 1
+6 1
+7 1
+8 1
+9 1
+10 1
+11 1
+12 1
+13 1
+14 1
+15 1
+16 1
+17 1
+18 1
+19 1
+20 1
+#
+# Switching to connection con1
+begin;
+# Since there is another distinct record in the derived table
+# the previous matching record in t1 -- (2,null) -- was unlocked.
+delete from t1;
+# We will need the contents of the table again.
+rollback;
+select * from t1;
+a b
+1 1
+2 NULL
+3 1
+4 1
+5 1
+6 1
+7 1
+8 1
+9 1
+10 1
+11 1
+12 1
+13 1
+14 1
+15 1
+16 1
+17 1
+18 1
+19 1
+20 1
+commit;
+#
+# Switching to connection default
+rollback;
+begin;
+#
+# Before this patch, we could wrongly unlock a record
+# that was cached and later used in a join. Demonstrate that
+# this is no longer the case.
+# Sic: this test is also order-dependent (i.e. the
+# the bug would show up only if the first record in the union
+# is retreived and processed first.
+#
+# Verify that JT_EQ_REF is used.
+explain
+select 1 from t1 natural join (select 3 as a, 2 as b union all
+select 3 as a, 1 as b) as t2 for update;
+id 1
+select_type PRIMARY
+table <derived2>
+type ALL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows 2
+Extra
+id 1
+select_type PRIMARY
+table t1
+type eq_ref
+possible_keys PRIMARY
+key PRIMARY
+key_len 4
+ref t2.a
+rows 1
+Extra Using where
+id 2
+select_type DERIVED
+table NULL
+type NULL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows NULL
+Extra No tables used
+id 3
+select_type UNION
+table NULL
+type NULL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows NULL
+Extra No tables used
+id NULL
+select_type UNION RESULT
+table <union2,3>
+type ALL
+possible_keys NULL
+key NULL
+key_len NULL
+ref NULL
+rows NULL
+Extra
+# Lock the record.
+select 1 from t1 natural join (select 3 as a, 2 as b union all
+select 3 as a, 1 as b) as t2 for update;
+1
+1
+# Switching to connection con1
+#
+# We should not be able to delete record (3,1) from t1,
+# (previously it was possible).
+#
+delete from t1 where a=3;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+# Switching to connection default
+commit;
+set @@session.tx_isolation=default;
+drop table t1;
+#
+# End of 5.1 tests
+#
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_multi_update.result b/mysql-test/suite/innodb_plugin/r/innodb_multi_update.result
new file mode 100644
index 00000000000..7af9b030d1f
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_multi_update.result
@@ -0,0 +1,76 @@
+CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb;
+CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb;
+INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
+INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100;
+select * from bug38999_1;
+a b
+101 1
+102 2
+103 3
+104 4
+105 5
+106 6
+107 7
+108 8
+109 9
+110 10
+111 11
+112 12
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101;
+select * from bug38999_1;
+a b
+201 1
+102 2
+103 3
+104 4
+105 5
+106 6
+107 7
+108 8
+109 9
+110 10
+111 11
+112 12
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2;
+select * from bug38999_1;
+a b
+201 1
+103 3
+104 4
+105 5
+106 6
+107 7
+108 8
+109 9
+110 10
+111 11
+102 12
+112 12
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100;
+select * from bug38999_1;
+a b
+201 1
+103 5
+104 6
+106 6
+105 7
+107 7
+108 8
+109 9
+110 10
+111 11
+102 12
+112 12
+select * from bug38999_2;
+a b
+1 1
+2 2
+6 6
+7 7
+8 8
+9 9
+3 13
+4 14
+5 15
+drop table bug38999_1,bug38999_2;
diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result
index 52a620e540b..53e979c350f 100644
--- a/mysql-test/r/innodb_mysql.result
+++ b/mysql-test/suite/innodb_plugin/r/innodb_mysql.result
@@ -356,7 +356,7 @@ SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
WHERE t1.name LIKE 'A%';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index PRIMARY,name name 23 NULL 3 Using where; Using index
-1 SIMPLE t2 ref fkey fkey 5 test.t1.id 1 Using index
+1 SIMPLE t2 ref fkey fkey 5 test.t1.id 1 Using where; Using index
EXPLAIN
SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
WHERE t1.name LIKE 'A%' OR FALSE;
@@ -1426,15 +1426,12 @@ DROP TABLE t1;
#
create table t1 (a bit(1) not null,b int) engine=myisam;
create table t2 (c int) engine=innodb;
-set @save_optimizer_switch=@@optimizer_switch;
-set @@optimizer_switch='partial_match_rowid_merge=off,partial_match_table_scan=off';
explain
select b from t1 where a not in (select b from t1,t2 group by a) group by a;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1
-set optimizer_switch=@save_optimizer_switch;
DROP TABLE t1,t2;
End of 5.0 tests
CREATE TABLE `t2` (
@@ -2299,6 +2296,28 @@ id select_type table type possible_keys key key_len ref rows Extra
drop table t1,t2;
#
#
+# Bug #39653: find_shortest_key in sql_select.cc does not consider
+# clustered primary keys
+#
+CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c INT, d INT, e INT, f INT,
+KEY (b,c)) ENGINE=INNODB;
+INSERT INTO t1 VALUES (1,1,1,1,1,1), (2,2,2,2,2,2), (3,3,3,3,3,3),
+(4,4,4,4,4,4), (5,5,5,5,5,5), (6,6,6,6,6,6),
+(7,7,7,7,7,7), (8,8,8,8,8,8), (9,9,9,9,9,9),
+(11,11,11,11,11,11);
+EXPLAIN SELECT COUNT(*) FROM t1;
+id 1
+select_type SIMPLE
+table t1
+type index
+possible_keys NULL
+key PRIMARY
+key_len 4
+ref NULL
+rows 10
+Extra Using index
+DROP TABLE t1;
+#
# Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may
# corrupt definition at engine
#
@@ -2332,36 +2351,6 @@ Index_type BTREE
Comment
DROP TABLE t1;
#
-# Bug #53334: wrong result for outer join with impossible ON condition
-# (see the same test case for MyISAM in join.test)
-#
-create table t1 (id int primary key);
-create table t2 (id int);
-insert into t1 values (75);
-insert into t1 values (79);
-insert into t1 values (78);
-insert into t1 values (77);
-replace into t1 values (76);
-replace into t1 values (76);
-insert into t1 values (104);
-insert into t1 values (103);
-insert into t1 values (102);
-insert into t1 values (101);
-insert into t1 values (105);
-insert into t1 values (106);
-insert into t1 values (107);
-insert into t2 values (107),(75),(1000);
-select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
-where t2.id=75 and t1.id is null;
-id id
-NULL 75
-explain select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
-where t2.id=75 and t1.id is null;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 const PRIMARY NULL NULL NULL 1 Impossible ON condition
-1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
-drop table t1,t2;
-#
# Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when
# JOINed during an UPDATE
#
@@ -2389,4 +2378,16 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
SECOND(c)-@bug47453
0
DROP TABLE t1, t2;
+#
+# Bug#38999 valgrind warnings for update statement in function compare_record()
+#
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 values (1),(2),(3),(4),(5);
+INSERT INTO t2 values (1);
+SELECT * FROM t1 WHERE a = 2;
+a
+2
+UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
+DROP TABLE t1,t2;
End of 5.1 tests
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result b/mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result
new file mode 100644
index 00000000000..21ac4295325
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_mysql_rbk.result
@@ -0,0 +1,21 @@
+CREATE TABLE t1(a INT, b INT NOT NULL, PRIMARY KEY (a)) ENGINE=innodb
+DEFAULT CHARSET=latin1;
+INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
+START TRANSACTION;
+SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE;
+a b
+3 3
+START TRANSACTION;
+UPDATE t1 SET b=b+12 WHERE a > 2 ORDER BY a;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+ROLLBACK;
+START TRANSACTION;
+SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE;
+a b
+3 3
+START TRANSACTION;
+UPDATE t1 SET b=10 WHERE a > 1 ORDER BY a;
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+SELECT * FROM t1 WHERE b = 10;
+a b
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_notembedded.result b/mysql-test/suite/innodb_plugin/r/innodb_notembedded.result
new file mode 100644
index 00000000000..af332aba38a
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_notembedded.result
@@ -0,0 +1,23 @@
+drop table if exists t1;
+SET @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
+SET GLOBAL log_bin_trust_function_creators = 1;
+create table t1 (col1 integer primary key, col2 integer) engine=innodb;
+insert t1 values (1,100);
+create function f1 () returns integer begin
+declare var1 int;
+select col2 into var1 from t1 where col1=1 for update;
+return var1;
+end|
+start transaction;
+select f1();
+f1()
+100
+update t1 set col2=0 where col1=1;
+select * from t1;
+col1 col2
+1 100
+rollback;
+rollback;
+drop table t1;
+drop function f1;
+SET @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
diff --git a/mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result b/mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result
new file mode 100644
index 00000000000..e2da6ba8af7
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/r/innodb_timeout_rollback.result
@@ -0,0 +1,36 @@
+drop table if exists t1;
+show variables like 'innodb_rollback_on_timeout';
+Variable_name Value
+innodb_rollback_on_timeout ON
+create table t1 (a int unsigned not null primary key) engine = innodb;
+insert into t1 values (1);
+commit;
+begin work;
+insert into t1 values (2);
+select * from t1;
+a
+1
+2
+begin work;
+insert into t1 values (5);
+select * from t1;
+a
+1
+5
+insert into t1 values (2);
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+select * from t1;
+a
+1
+commit;
+select * from t1;
+a
+1
+2
+commit;
+select * from t1;
+a
+1
+2
+drop table t1;
+End of 5.0 tests
diff --git a/mysql-test/suite/innodb_plugin/suite.pm b/mysql-test/suite/innodb_plugin/suite.pm
new file mode 100644
index 00000000000..2a146b8a52f
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/suite.pm
@@ -0,0 +1,19 @@
+package My::Suite::InnoDB_plugin;
+
+@ISA = qw(My::Suite);
+
+############# initialization ######################
+my @combinations;
+
+push @combinations, 'innodb_plugin' if $ENV{HA_INNODB_PLUGIN_SO};
+push @combinations, 'xtradb_plugin' if $ENV{HA_XTRADB_SO};
+push @combinations, 'xtradb' if $::mysqld_variables{'innodb'} eq "ON";
+
+return "Neither innodb_plugin nor xtradb are available" unless @combinations;
+
+$ENV{INNODB_PLUGIN_COMBINATIONS}=join ':', @combinations
+ unless $ENV{INNODB_PLUGIN_COMBINATIONS};
+
+############# return an object ######################
+bless { };
+
diff --git a/mysql-test/suite/innodb_plugin/t/disabled.def b/mysql-test/suite/innodb_plugin/t/disabled.def
new file mode 100644
index 00000000000..4c37bbc87ed
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/disabled.def
@@ -0,0 +1,13 @@
+##############################################################################
+#
+# List the test cases that are to be disabled temporarily.
+#
+# Separate the test case name and the comment with ':'.
+#
+# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment>
+#
+# Do not use any TAB characters for whitespace.
+#
+##############################################################################
+
+innodb_bug52745: Disabled as this has valgrind failures (also in MySQL 5.1.50)
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test
index 99cdac72e2e..5e4cf9dcb4c 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-44030.test
@@ -1,6 +1,8 @@
-- source include/have_innodb_plugin.inc
# embedded server ignores 'delayed', so skip this
-- source include/not_embedded.inc
+# remove the next line after bug #55503 is fixed
+-- source include/not_valgrind.inc
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test
new file mode 100644
index 00000000000..b359980768c
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb-autoinc-optimize.test
@@ -0,0 +1,19 @@
+-- source include/have_innodb_plugin.inc
+# embedded server ignores 'delayed', so skip this
+-- source include/not_embedded.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+#
+# Bug 34286
+#
+create table t1(a int not null auto_increment primary key) engine=innodb;
+insert into t1 set a = -1;
+# NOTE: The database needs to be shutdown and restarted (here) for
+# the test to work. It's included for reference only.
+optimize table t1;
+
+--echo ==== clean up ====
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test b/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test
index 5a83ffe3617..49394a019d0 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb-autoinc.test
@@ -1,6 +1,8 @@
-- source include/have_innodb_plugin.inc
# embedded server ignores 'delayed', so skip this
-- source include/not_embedded.inc
+# remove the next line after bug #55503 is fixed
+-- source include/not_valgrind.inc
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-consistent-master.opt b/mysql-test/suite/innodb_plugin/t/innodb-consistent-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-consistent-master.opt
+++ b/mysql-test/suite/innodb_plugin/t/innodb-consistent-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-master.opt b/mysql-test/suite/innodb_plugin/t/innodb-master.opt
index 4901efb416c..08a79432e47 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-master.opt
+++ b/mysql-test/suite/innodb_plugin/t/innodb-master.opt
@@ -1 +1 @@
---binlog_cache_size=32768 --innodb_lock_wait_timeout=1
+--binlog_cache_size=32768 --loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-semi-consistent-master.opt b/mysql-test/suite/innodb_plugin/t/innodb-semi-consistent-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-semi-consistent-master.opt
+++ b/mysql-test/suite/innodb_plugin/t/innodb-semi-consistent-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-timeout.test b/mysql-test/suite/innodb_plugin/t/innodb-timeout.test
index 34eda7279b2..f6d319c7961 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-timeout.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb-timeout.test
@@ -48,7 +48,7 @@ connection b;
select * from t1 for update;
connection a;
-sleep 2;
+sleep 3;
commit;
connection b;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-ucs2.test b/mysql-test/suite/innodb_plugin/t/innodb-ucs2.test
new file mode 100644
index 00000000000..050a05675e7
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb-ucs2.test
@@ -0,0 +1,230 @@
+-- source include/have_innodb_plugin.inc
+-- source include/have_ucs2.inc
+
+--disable_warnings
+drop table if exists t1, t2;
+--enable_warnings
+
+#
+# BUG 14056 Column prefix index on UTF-8 primary key column causes: Can't find record..
+#
+
+create table t1 (
+ a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+ a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six');
+insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven');
+insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+select a,hex(b),hex(c),filler from t2 order by filler;
+drop table t1;
+drop table t2;
+
+create table t1 (
+ a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+ a int, b varchar(10), c varchar(10), filler varchar(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six');
+insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven');
+insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+select a,hex(b),hex(c),filler from t2 order by filler;
+drop table t1;
+drop table t2;
+
+create table t1 (
+ a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+ a int, b text(10), c text(10), filler text(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xe880bde880bd,_utf8 0xe880bde880bd,'six');
+insert into t1 values (4,_utf8 0xe880bdD0B1e880bd,_utf8 0xe880bdD0B1e880bd,'seven');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05630563,_ucs2 0x05630563,'eleven');
+insert into t2 values (4,_ucs2 0x0563001fc0563,_ucs2 0x0563001fc0563,'point');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+select a,hex(b),hex(c),filler from t2 order by filler;
+drop table t1;
+drop table t2;
+
+create table t1 (
+ a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2))
+) character set utf8 engine = innodb;
+create table t2 (
+ a int, b blob(10), c blob(10), filler blob(10), primary key(a, b(2)), unique key (a, c(2))
+) character set ucs2 engine = innodb;
+insert into t1 values (1,'abcdefg','abcdefg','one');
+insert into t1 values (2,'ijkilmn','ijkilmn','two');
+insert into t1 values (3,'qrstuvw','qrstuvw','three');
+insert into t1 values (4,_utf8 0xe880bd,_utf8 0xe880bd,'four');
+insert into t1 values (4,_utf8 0x5b,_utf8 0x5b,'five');
+insert into t1 values (4,_utf8 0xD0B1,_utf8 0xD0B1,'eight');
+insert into t2 values (1,'abcdefg','abcdefg','one');
+insert into t2 values (2,'ijkilmn','ijkilmn','two');
+insert into t2 values (3,'qrstuvw','qrstuvw','three');
+insert into t2 values (4,_ucs2 0x00e400,_ucs2 0x00e400,'four');
+insert into t2 values (4,_ucs2 0x00640065,_ucs2 0x00640065,'five');
+insert into t2 values (4,_ucs2 0x00e400e50068,_ucs2 0x00e400e50068,'six');
+insert into t2 values (4,_ucs2 0x01fc,_ucs2 0x01fc,'seven');
+insert into t2 values (4,_ucs2 0x0120,_ucs2 0x0120,'eight');
+insert into t2 values (4,_ucs2 0x0563,_ucs2 0x0563,'ten');
+insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
+update t1 set filler = 'boo' where a = 1;
+update t2 set filler ='email' where a = 4;
+select a,hex(b),hex(c),filler from t1 order by filler;
+select a,hex(b),hex(c),filler from t2 order by filler;
+drop table t1;
+drop table t2;
+commit;
+
+#
+# Test cases for bug #15308 Problem of Order with Enum Column in Primary Key
+#
+CREATE TABLE t1 (
+ ind enum('0','1','2') NOT NULL default '0',
+ string1 varchar(250) NOT NULL,
+ PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+CREATE TABLE t2 (
+ ind enum('0','1','2') NOT NULL default '0',
+ string1 varchar(250) NOT NULL,
+ PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=ucs2;
+
+INSERT INTO t1 VALUES ('1', ''),('2', '');
+INSERT INTO t2 VALUES ('1', ''),('2', '');
+SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1;
+SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1;
+drop table t1,t2;
+
+CREATE TABLE t1 (
+ ind set('0','1','2') NOT NULL default '0',
+ string1 varchar(250) NOT NULL,
+ PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+CREATE TABLE t2 (
+ ind set('0','1','2') NOT NULL default '0',
+ string1 varchar(250) NOT NULL,
+ PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=ucs2;
+
+INSERT INTO t1 VALUES ('1', ''),('2', '');
+INSERT INTO t2 VALUES ('1', ''),('2', '');
+SELECT hex(ind),hex(string1) FROM t1 ORDER BY string1;
+SELECT hex(ind),hex(string1) FROM t2 ORDER BY string1;
+drop table t1,t2;
+
+CREATE TABLE t1 (
+ ind bit not null,
+ string1 varchar(250) NOT NULL,
+ PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+CREATE TABLE t2 (
+ ind bit not null,
+ string1 varchar(250) NOT NULL,
+ PRIMARY KEY (ind)
+) ENGINE=InnoDB DEFAULT CHARSET=ucs2;
+insert into t1 values(0,''),(1,'');
+insert into t2 values(0,''),(1,'');
+select hex(ind),hex(string1) from t1 order by string1;
+select hex(ind),hex(string1) from t2 order by string1;
+drop table t1,t2;
+
+# tests for bug #14056 Column prefix index on UTF-8 primary key column causes 'Can't find record..'
+
+create table t2 (
+ a int, b char(10), filler char(10), primary key(a, b(2))
+) character set utf8 engine = innodb;
+
+insert into t2 values (1,'abcdefg','one');
+insert into t2 values (2,'ijkilmn','two');
+insert into t2 values (3, 'qrstuvw','three');
+update t2 set a=5, filler='booo' where a=1;
+drop table t2;
+create table t2 (
+ a int, b char(10), filler char(10), primary key(a, b(2))
+) character set ucs2 engine = innodb;
+
+insert into t2 values (1,'abcdefg','one');
+insert into t2 values (2,'ijkilmn','two');
+insert into t2 values (3, 'qrstuvw','three');
+update t2 set a=5, filler='booo' where a=1;
+drop table t2;
+
+create table t1(a int not null, b char(110),primary key(a,b(100))) engine=innodb default charset=utf8;
+insert into t1 values(1,'abcdefg'),(2,'defghijk');
+insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1);
+insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2);
+select a,hex(b) from t1 order by b;
+update t1 set b = 'three' where a = 6;
+drop table t1;
+create table t1(a int not null, b text(110),primary key(a,b(100))) engine=innodb default charset=utf8;
+insert into t1 values(1,'abcdefg'),(2,'defghijk');
+insert into t1 values(6,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1);
+insert into t1 values(7,_utf8 0xD0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B1D0B2);
+select a,hex(b) from t1 order by b;
+update t1 set b = 'three' where a = 6;
+drop table t1;
+
+--echo End of 5.0 tests
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc-master.opt b/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc-master.opt
index acf3b8729ed..fc8582b5887 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc-master.opt
+++ b/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc-master.opt
@@ -1 +1 @@
---innodb-use-sys-malloc=true
+--loose-innodb-use-sys-malloc=true
diff --git a/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc.test b/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc.test
index bc042587287..af08e1c9812 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb-use-sys-malloc.test
@@ -1,4 +1,5 @@
-- source include/have_innodb_plugin.inc
+-- source include/not_valgrind.inc
#display current value of innodb_use_sys_malloc
SELECT @@GLOBAL.innodb_use_sys_malloc;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb.test b/mysql-test/suite/innodb_plugin/t/innodb.test
index 6cfc0f0cb9a..1b840f696c1 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb.test
@@ -16,6 +16,8 @@
-- source include/have_innodb_plugin.inc
let $MYSQLD_DATADIR= `select @@datadir`;
+let collation=utf8_unicode_ci;
+--source include/have_collation.inc
# Save the original values of some variables in order to be able to
# estimate how much they have changed during the tests. Previously this
@@ -915,33 +917,6 @@ UPDATE t1 set a=a+100 where b between 2 and 3 and a < 1000;
SELECT * from t1;
drop table t1;
-#
-# Test multi update with different join methods
-#
-
-CREATE TABLE t1 (a int not null primary key, b int not null, key (b)) engine=innodb;
-CREATE TABLE t2 (a int not null primary key, b int not null, key (b)) engine=innodb;
-INSERT INTO t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
-INSERT INTO t2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
-
-# Full join, without key
-update t1,t2 set t1.a=t1.a+100;
-select * from t1;
-
-# unique key
-update t1,t2 set t1.a=t1.a+100 where t1.a=101;
-select * from t1;
-
-# ref key
-update t1,t2 set t1.b=t1.b+10 where t1.b=2;
-select * from t1;
-
-# Range key (in t1)
-update t1,t2 set t1.b=t1.b+2,t2.b=t1.b+10 where t1.b between 3 and 5 and t1.a=t2.a+100;
-select * from t1;
-select * from t2;
-
-drop table t1,t2;
CREATE TABLE t2 ( NEXT_T BIGINT NOT NULL PRIMARY KEY) ENGINE=MyISAM;
CREATE TABLE t1 ( B_ID INTEGER NOT NULL PRIMARY KEY) ENGINE=InnoDB;
SET AUTOCOMMIT=0;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt
new file mode 100644
index 00000000000..e27ee9b2c78
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero-master.opt
@@ -0,0 +1 @@
+--loose-innodb-autoinc-lock-mode=0
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test
new file mode 100644
index 00000000000..5a0cd5fa766
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_autoinc_lock_mode_zero.test
@@ -0,0 +1,44 @@
+# This test runs with old-style locking, as:
+# --innodb-autoinc-lock-mode=0
+
+-- source include/have_innodb_plugin.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+
+#
+# Search on unique key
+#
+
+CREATE TABLE t1 (
+ id int(11) NOT NULL auto_increment,
+ ggid varchar(32) binary DEFAULT '' NOT NULL,
+ email varchar(64) DEFAULT '' NOT NULL,
+ passwd varchar(32) binary DEFAULT '' NOT NULL,
+ PRIMARY KEY (id),
+ UNIQUE ggid (ggid)
+) ENGINE=innodb;
+
+insert into t1 (ggid,passwd) values ('test1','xxx');
+insert into t1 (ggid,passwd) values ('test2','yyy');
+-- error ER_DUP_ENTRY
+insert into t1 (ggid,passwd) values ('test2','this will fail');
+-- error ER_DUP_ENTRY
+insert into t1 (ggid,id) values ('this will fail',1);
+
+select * from t1 where ggid='test1';
+select * from t1 where passwd='xxx';
+select * from t1 where id=2;
+
+replace into t1 (ggid,id) values ('this will work',1);
+replace into t1 (ggid,passwd) values ('test2','this will work');
+-- error ER_DUP_ENTRY
+update t1 set id=100,ggid='test2' where id=1;
+select * from t1;
+select * from t1 where id=1;
+select * from t1 where id=999;
+drop table t1;
+
+--echo End of tests
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt
new file mode 100644
index 00000000000..b21ee4fb85e
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug30919-master.opt
@@ -0,0 +1 @@
+--loose-innodb_autoinc_lock_mode=0
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug30919.test b/mysql-test/suite/innodb_plugin/t/innodb_bug30919.test
new file mode 100644
index 00000000000..cc1358294e1
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug30919.test
@@ -0,0 +1,68 @@
+--source include/have_innodb_plugin.inc
+--source include/have_partition.inc
+--vertical_results
+let $engine_type= 'innodb';
+
+######## Creat Table Section #########
+use test;
+
+eval CREATE TABLE test.part_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
+ dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
+ fkid MEDIUMINT, filler VARCHAR(255),
+ PRIMARY KEY(id)) ENGINE=$engine_type
+ PARTITION BY RANGE(id)
+ SUBPARTITION BY hash(id) subpartitions 2
+ (PARTITION pa3 values less than (42),
+ PARTITION pa6 values less than (60),
+ PARTITION pa7 values less than (70),
+ PARTITION pa8 values less than (80),
+ PARTITION pa9 values less than (90),
+ PARTITION pa10 values less than (100),
+ PARTITION pa11 values less than MAXVALUE);
+
+######## Create SPs, Functions, Views and Triggers Section ##############
+
+delimiter |;
+
+CREATE PROCEDURE test.proc_part()
+BEGIN
+ DECLARE ins_count INT DEFAULT 1000;
+ DECLARE del_count INT;
+ DECLARE cur_user VARCHAR(255);
+ DECLARE local_uuid VARCHAR(255);
+ DECLARE local_time TIMESTAMP;
+
+ SET local_time= NOW();
+ SET cur_user= CURRENT_USER();
+ SET local_uuid= UUID();
+
+ WHILE ins_count > 0 DO
+ INSERT INTO test.part_tbl VALUES (NULL, NOW(), USER() , UUID(),
+ ins_count,'Going to test MBR for MySQL');
+ SET ins_count = ins_count - 1;
+ END WHILE;
+ SELECT MAX(id) FROM test.part_tbl INTO del_count;
+ WHILE del_count > 0 DO
+ DELETE FROM test.part_tbl WHERE id = del_count;
+ select count(*) as internal_count, del_count -- these two lines are for
+ FROM test.part_tbl; -- debug to show the problem
+ SET del_count = del_count - 2;
+ END WHILE;
+END|
+
+delimiter ;|
+
+############ Finish Setup Section ###################
+
+############ Test Section ###################
+--horizontal_results
+
+CALL test.proc_part();
+
+select count(*) as Part from test.part_tbl;
+
+###### CLEAN UP SECTION ##############
+
+DROP PROCEDURE test.proc_part;
+DROP TABLE test.part_tbl;
+
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug39438-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_bug39438-master.opt
index 43fac202fd4..0746d13d1c0 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb_bug39438-master.opt
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug39438-master.opt
@@ -1 +1 @@
---innodb-file-per-table=1
+--loose-innodb-file-per-table=1
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug42101-nonzero-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_bug42101-nonzero-master.opt
index d71dbe17d5b..3e6a61f4511 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb_bug42101-nonzero-master.opt
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug42101-nonzero-master.opt
@@ -1 +1 @@
---innodb_commit_concurrency=1
+--loose-innodb_commit_concurrency=1
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug42419.test b/mysql-test/suite/innodb_plugin/t/innodb_bug42419.test
new file mode 100644
index 00000000000..2302e3c2233
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug42419.test
@@ -0,0 +1,78 @@
+#
+# Testcase for InnoDB
+# Bug#42419 Server crash with "Pure virtual method called" on two concurrent connections
+#
+
+--source include/not_embedded.inc
+--source include/have_innodb_plugin.inc
+
+let $innodb_lock_wait_timeout= query_get_value(SHOW VARIABLES LIKE 'innodb_lock_wait_timeout%', Value, 1);
+if (`SELECT $innodb_lock_wait_timeout < 10`)
+{
+ --echo # innodb_lock_wait_timeout must be >= 10 seconds
+ --echo # so that this test can work all time fine on an overloaded testing box
+ SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
+ exit;
+}
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+# First session
+connection default;
+
+
+--enable_warnings
+CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b INT) ENGINE = InnoDB;
+
+INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
+COMMIT;
+SET AUTOCOMMIT = 0;
+
+CREATE TEMPORARY TABLE t1_tmp ( b INT );
+
+INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 3;
+INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 2;
+
+# Second session
+connect (user2,localhost,root,,,$MASTER_MYPORT,$MASTER_MYSOCK);
+
+SET AUTOCOMMIT = 0;
+
+CREATE TEMPORARY TABLE t2_tmp ( a int, new_a int );
+INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
+
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
+send
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
+
+# The last update will wait for a lock held by the first session
+
+# First session
+connection default;
+
+# Poll till the UPDATE of the second session waits for lock
+let $show_statement= SHOW PROCESSLIST;
+let $field= State;
+let $condition= = 'Updating';
+--source include/wait_show_condition.inc
+
+# If the testing box is overloadeded and innodb_lock_wait_timeout is too small
+# we might get here ER_LOCK_WAIT_TIMEOUT.
+--error ER_LOCK_DEADLOCK
+INSERT INTO t1_tmp (b) SELECT b FROM t1 WHERE a = 1;
+
+# Second session
+connection user2;
+--echo Reap the server message for connection user2 UPDATE t1 ...
+reap;
+
+# The server crashed when executing this UPDATE or the succeeding SQL command.
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
+
+connection default;
+disconnect user2;
+DROP TABLE t1;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test b/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test
new file mode 100644
index 00000000000..fea3adf9216
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug48024.test
@@ -0,0 +1,22 @@
+# Bug #48024 Innodb doesn't work with multi-statements
+
+--source include/have_innodb_plugin.inc
+
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+# Bug #53644 InnoDB thinks that /*/ starts and ends a comment
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b);
+
+DROP TABLE bug48024,bug48024_b;
+
+# Work around Bug #53750 (failure in mysql-test-run --ps-protocol)
+-- disable_ps_protocol
+delimiter |;
+CREATE TABLE bug48024(a int PRIMARY KEY,b int NOT NULL,KEY(b)) ENGINE=InnoDB;
+CREATE TABLE bug48024_b(b int PRIMARY KEY) ENGINE=InnoDB;
+ALTER TABLE bug48024 /*/ADD CONSTRAINT FOREIGN KEY(c) REFERENCES(a),/*/
+ADD CONSTRAINT FOREIGN KEY(b) REFERENCES bug48024_b(b)|
+delimiter ;|
+
+DROP TABLE bug48024,bug48024_b;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug49164.test b/mysql-test/suite/innodb_plugin/t/innodb_bug49164.test
new file mode 100644
index 00000000000..a945bc681b6
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug49164.test
@@ -0,0 +1,47 @@
+-- source include/have_innodb_plugin.inc
+
+# Bug #49164 READ-COMMITTED reports "matched: 0" on compound PK
+# a duplicate of
+# Bug #52663 Lost update incrementing column value under READ COMMITTED
+
+connect (con1,localhost,root,,);
+connect (con2,localhost,root,,);
+
+connection con1;
+SET tx_isolation = 'READ-COMMITTED';
+
+CREATE TABLE bug49164 (a INT, b BIGINT, c TINYINT, PRIMARY KEY (a, b))
+ENGINE=InnoDB;
+
+insert into bug49164 values (1,1,1), (2,2,2), (3,3,3);
+
+begin;
+update bug49164 set c=7;
+select * from bug49164;
+rollback;
+select * from bug49164;
+begin;
+update bug49164 set c=7;
+
+connection con2;
+
+SET tx_isolation = 'READ-COMMITTED';
+begin;
+select * from bug49164;
+commit;
+begin;
+--send
+update bug49164 set c=6 where a=1 and b=1;
+
+connection con1;
+rollback;
+select * from bug49164;
+connection con2;
+reap;
+commit;
+connection con1;
+select * from bug49164;
+connection default;
+disconnect con1;
+disconnect con2;
+drop table bug49164;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test b/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test
index b20a993a2d1..05ad630fbe1 100644
--- a/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug52745.test
@@ -1,4 +1,6 @@
-- source include/have_innodb_plugin.inc
+let collation=utf8_persian_ci;
+--source include/have_collation.inc
let $file_format=`select @@innodb_file_format`;
let $file_format_check=`select @@innodb_file_format_check`;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53290.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53290.test
new file mode 100644
index 00000000000..3f6b9b513f7
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53290.test
@@ -0,0 +1,22 @@
+-- source include/have_innodb_plugin.inc
+
+create table bug53290 (x bigint) engine=innodb;
+
+insert into bug53290 () values (),(),(),(),(),(),(),(),(),(),(),();
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+insert into bug53290 select * from bug53290;
+
+alter table bug53290 add unique index `idx` (x);
+
+drop table bug53290;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test
new file mode 100644
index 00000000000..32871cad869
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53591.test
@@ -0,0 +1,25 @@
+#
+# XtraDB doesn't have this problem
+#
+-- source include/have_innodb_plugin.inc
+
+let $file_format=`select @@innodb_file_format`;
+let $file_format_check=`select @@innodb_file_format_check`;
+let $file_per_table=`select @@innodb_file_per_table`;
+
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=on;
+
+set old_alter_table=0;
+
+CREATE TABLE bug53591(a text charset utf8 not null)
+ENGINE=InnoDB KEY_BLOCK_SIZE=1;
+-- error 139
+ALTER TABLE bug53591 ADD PRIMARY KEY(a(220));
+SHOW WARNINGS;
+
+DROP TABLE bug53591;
+
+EVAL SET GLOBAL innodb_file_format=$file_format;
+EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
+EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test
new file mode 100644
index 00000000000..aec331e031b
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53592.test
@@ -0,0 +1,59 @@
+# Testcase for Bug #53592 - "crash replacing duplicates into
+# table after fast alter table added unique key". The fix is to make
+# sure index number lookup should go through "index translation table".
+
+--source include/have_innodb_plugin.inc
+
+# Use FIC for index creation
+set old_alter_table=0;
+
+create table bug53592(a int) engine=innodb row_format=compact;
+
+alter table bug53592 add column b text charset utf8;
+
+alter table bug53592 add column c blob not null;
+
+# Create a non-unique nonclustered index
+create index bug53592_b on bug53592(b(81));
+
+# Create a unique index, this unique index should have smaller
+# index number than bug53592_b, since unique index ranks higher
+# than regular index does
+create unique index bug53592_c on bug53592(c(1));
+
+# This will trigger a dup key error and will require fetching
+# the index number through a index structure for the error reporting.
+# To get the correct index number, the code should go through index
+# translation table. Otherwise, it will get the wrong index
+# number and later trigger a server crash.
+replace into bug53592 values (),();
+
+check table bug53592;
+
+drop table bug53592;
+
+# Running the same set of test when "old_alter_table" is turned on
+set old_alter_table=1;
+
+create table bug53592(a int) engine=innodb row_format=compact;
+
+alter table bug53592 add column b text charset utf8;
+
+alter table bug53592 add column c blob not null;
+
+# Create a non-unique nonclustered index
+create index bug53592_b on bug53592(b(81));
+
+# Create a unique index
+create unique index bug53592_c on bug53592(c(1));
+
+# This will trigger a dup key error and will require fetching
+# the index number through a index structure for the error reporting.
+# To get the correct index number, the code should go through index
+# translation table. Otherwise, it will get the wrong index
+# number and later trigger a server crash.
+replace into bug53592 values (),();
+
+check table bug53592;
+
+drop table bug53592;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt
new file mode 100644
index 00000000000..352b408dd3a
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53674-master.opt
@@ -0,0 +1 @@
+--log-bin=master-bin --loose-innodb-locks-unsafe-for-binlog --binlog-format=mixed
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug53674.test b/mysql-test/suite/innodb_plugin/t/innodb_bug53674.test
new file mode 100644
index 00000000000..e3cbf4466a7
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug53674.test
@@ -0,0 +1,8 @@
+-- source include/have_innodb_plugin.inc
+
+create table bug53674(a int)engine=innodb;
+insert into bug53674 values (1),(2);
+start transaction;
+select * from bug53674 for update;
+select * from bug53674 where a=(select a from bug53674 where a > 1);
+drop table bug53674;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test
new file mode 100644
index 00000000000..58f60a54130
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54044.test
@@ -0,0 +1,11 @@
+# This is the test for bug #54044. Special handle MYSQL_TYPE_NULL type
+# during create table, so it will not trigger assertion failure.
+
+--source include/have_innodb_plugin.inc
+
+# This 'create table' operation should fail because of
+# using NULL datatype
+--error ER_CANT_CREATE_TABLE
+CREATE TEMPORARY TABLE table_54044 ENGINE = INNODB
+ AS SELECT IF(NULL IS NOT NULL, NULL, NULL);
+
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54453.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54453.test
new file mode 100644
index 00000000000..486695d326d
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54453.test
@@ -0,0 +1,15 @@
+--source include/have_innodb_plugin.inc
+--source include/have_log_bin.inc
+
+--echo #
+--echo # Bug#54453: Failing assertion: trx->active_trans when renaming a table with active trx
+--echo #
+
+--disable_warnings
+DROP TABLE IF EXISTS bug54453;
+--enable_warnings
+
+CREATE TABLE bug54453(a INT) ENGINE=InnoDB;
+ALTER TABLE bug54453 RENAME TO bug54453_2;
+SELECT * FROM bug54453_2;
+DROP TABLE bug54453_2;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_bug54679.test b/mysql-test/suite/innodb_plugin/t/innodb_bug54679.test
new file mode 100644
index 00000000000..863d9847ac1
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_bug54679.test
@@ -0,0 +1,97 @@
+# Test Bug #54679 alter table causes compressed row_format to revert to compact
+
+--source include/have_innodb_plugin.inc
+
+let $file_format=`select @@innodb_file_format`;
+let $file_format_check=`select @@innodb_file_format_check`;
+let $file_per_table=`select @@innodb_file_per_table`;
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=ON;
+SET innodb_strict_mode=ON;
+
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+# The ROW_FORMAT of the table should be preserved when it is not specified
+# in ALTER TABLE.
+ALTER TABLE bug54679 ADD COLUMN b INT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+DROP TABLE bug54679;
+
+# Check that the ROW_FORMAT conversion to/from COMPRESSED works.
+
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+# KEY_BLOCK_SIZE implies COMPRESSED.
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+DROP TABLE bug54679;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
+SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
+WHERE TABLE_NAME='bug54679';
+
+# This prevents other than REDUNDANT or COMPACT ROW_FORMAT for new tables.
+SET GLOBAL innodb_file_format=Antelope;
+
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+DROP TABLE bug54679;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
+
+SET GLOBAL innodb_file_format=Barracuda;
+# This will prevent ROW_FORMAT=COMPRESSED, because the system tablespace
+# cannot be compressed.
+SET GLOBAL innodb_file_per_table=OFF;
+
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+DROP TABLE bug54679;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+--error ER_CANT_CREATE_TABLE
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
+SHOW WARNINGS;
+SET GLOBAL innodb_file_per_table=ON;
+CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
+DROP TABLE bug54679;
+
+EVAL SET GLOBAL innodb_file_format=$file_format;
+EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
+EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_gis.test b/mysql-test/suite/innodb_plugin/t/innodb_gis.test
new file mode 100644
index 00000000000..ad1d081f29c
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_gis.test
@@ -0,0 +1,10 @@
+--source include/have_innodb_plugin.inc
+SET storage_engine=innodb;
+--source include/gis_generic.inc
+--source include/gis_keys.inc
+
+#
+# Bug #15680 (SPATIAL key in innodb)
+#
+--error ER_TABLE_CANT_HANDLE_SPKEYS
+create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt
new file mode 100644
index 00000000000..82dec8b25fd
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1-master.opt
@@ -0,0 +1 @@
+--loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test
new file mode 100644
index 00000000000..d7272779bdd
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_lock_wait_timeout_1.test
@@ -0,0 +1,264 @@
+--source include/have_innodb_plugin.inc
+
+--echo #
+--echo # Bug #40113: Embedded SELECT inside UPDATE or DELETE can timeout
+--echo # without error
+--echo #
+
+CREATE TABLE t1 (a int, b int, PRIMARY KEY (a,b)) ENGINE=InnoDB;
+
+INSERT INTO t1 (a,b) VALUES (1070109,99);
+
+CREATE TABLE t2 (b int, a int, PRIMARY KEY (b)) ENGINE=InnoDB;
+
+INSERT INTO t2 (b,a) VALUES (7,1070109);
+
+SELECT * FROM t1;
+
+BEGIN;
+
+SELECT b FROM t2 WHERE b=7 FOR UPDATE;
+
+CONNECT (addconroot, localhost, root,,);
+CONNECTION addconroot;
+
+BEGIN;
+
+--error ER_LOCK_WAIT_TIMEOUT
+SELECT b FROM t2 WHERE b=7 FOR UPDATE;
+
+--error ER_LOCK_WAIT_TIMEOUT
+INSERT INTO t1 (a) VALUES ((SELECT a FROM t2 WHERE b=7));
+
+--error ER_LOCK_WAIT_TIMEOUT
+UPDATE t1 SET a='7000000' WHERE a=(SELECT a FROM t2 WHERE b=7);
+
+--error ER_LOCK_WAIT_TIMEOUT
+DELETE FROM t1 WHERE a=(SELECT a FROM t2 WHERE b=7);
+
+SELECT * FROM t1;
+
+CONNECTION default;
+DISCONNECT addconroot;
+
+DROP TABLE t2, t1;
+
+--echo # End of 5.0 tests
+
+--echo #
+--echo # Bug#46539 Various crashes on INSERT IGNORE SELECT + SELECT
+--echo # FOR UPDATE
+--echo #
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+create table t1 (a int primary key auto_increment,
+ b int, index(b)) engine=innodb;
+insert into t1 (b) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
+set autocommit=0;
+begin;
+select * from t1 where b=5 for update;
+connect (con1, localhost, root,,);
+connection con1;
+--error ER_LOCK_WAIT_TIMEOUT
+insert ignore into t1 (b) select a as b from t1;
+connection default;
+--echo # Cleanup
+--echo #
+disconnect con1;
+commit;
+set autocommit=default;
+drop table t1;
+
+--echo #
+--echo # Bug #37183 insert ignore into .. select ... hangs
+--echo # after deadlock was encountered
+--echo #
+connect (con1,localhost,root,,);
+create table t1(id int primary key,v int)engine=innodb;
+insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
+create table t2 like t1;
+
+--connection con1
+begin;
+update t1 set v=id*2 where id=1;
+
+--connection default
+begin;
+update t1 set v=id*2 where id=2;
+
+--connection con1
+--error 1205
+update t1 set v=id*2 where id=2;
+
+--connection default
+--error 1205
+insert ignore into t2 select * from t1 where id=1;
+rollback;
+
+--connection con1
+rollback;
+
+--connection default
+disconnect con1;
+drop table t1, t2;
+
+
+--echo #
+--echo # Bug#41756 Strange error messages about locks from InnoDB
+--echo #
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+--echo # In the default transaction isolation mode, and/or with
+--echo # innodb_locks_unsafe_for_binlog=OFF, handler::unlock_row()
+--echo # in InnoDB does nothing.
+--echo # Thus in order to reproduce the condition that led to the
+--echo # warning, one needs to relax isolation by either
+--echo # setting a weaker tx_isolation value, or by turning on
+--echo # the unsafe replication switch.
+--echo # For testing purposes, choose to tweak the isolation level,
+--echo # since it's settable at runtime, unlike
+--echo # innodb_locks_unsafe_for_binlog, which is
+--echo # only a command-line switch.
+--echo #
+set @@session.tx_isolation="read-committed";
+
+--echo # Prepare data. We need a table with a unique index,
+--echo # for join_read_key to be used. The other column
+--echo # allows to control what passes WHERE clause filter.
+create table t1 (a int primary key, b int) engine=innodb;
+--echo # Let's make sure t1 has sufficient amount of rows
+--echo # to exclude JT_ALL access method when reading it,
+--echo # i.e. make sure that JT_EQ_REF(a) is always preferred.
+insert into t1 values (1,1), (2,null), (3,1), (4,1),
+ (5,1), (6,1), (7,1), (8,1), (9,1), (10,1),
+ (11,1), (12,1), (13,1), (14,1), (15,1),
+ (16,1), (17,1), (18,1), (19,1), (20,1);
+--echo #
+--echo # Demonstrate that for the SELECT statement
+--echo # used later in the test JT_EQ_REF access method is used.
+--echo #
+--vertical_results
+explain
+select 1 from t1 natural join (select 2 as a, 1 as b union all
+ select 2 as a, 2 as b) as t2 for update;
+--horizontal_results
+--echo #
+--echo # Demonstrate that the reported SELECT statement
+--echo # no longer produces warnings.
+--echo #
+select 1 from t1 natural join (select 2 as a, 1 as b union all
+ select 2 as a, 2 as b) as t2 for update;
+commit;
+--echo #
+--echo # Demonstrate that due to lack of inter-sweep "reset" function,
+--echo # we keep some non-matching records locked, even though we know
+--echo # we could unlock them.
+--echo # To do that, show that if there is only one distinct value
+--echo # for a in t2 (a=2), we will keep record (2,null) in t1 locked.
+--echo # But if we add another value for "a" to t2, say 6,
+--echo # join_read_key cache will be pruned at least once,
+--echo # and thus record (2, null) in t1 will get unlocked.
+--echo #
+begin;
+select 1 from t1 natural join (select 2 as a, 1 as b union all
+ select 2 as a, 2 as b) as t2 for update;
+connect (con1,localhost,root,,);
+--echo #
+--echo # Switching to connection con1
+connection con1;
+--echo # We should be able to delete all records from t1 except (2, null),
+--echo # since they were not locked.
+begin;
+--echo # Delete in series of 3 records so that full scan
+--echo # is not used and we're not blocked on record (2,null)
+delete from t1 where a in (1,3,4);
+delete from t1 where a in (5,6,7);
+delete from t1 where a in (8,9,10);
+delete from t1 where a in (11,12,13);
+delete from t1 where a in (14,15,16);
+delete from t1 where a in (17,18);
+delete from t1 where a in (19,20);
+--echo #
+--echo # Record (2, null) is locked. This is actually unnecessary,
+--echo # because the previous select returned no rows.
+--echo # Just demonstrate the effect.
+--echo #
+--error ER_LOCK_WAIT_TIMEOUT
+delete from t1;
+rollback;
+--echo #
+--echo # Switching to connection default
+connection default;
+--echo #
+--echo # Show that the original contents of t1 is intact:
+select * from t1;
+commit;
+--echo #
+--echo # Have a one more record in t2 to show that
+--echo # if join_read_key cache is purned, the current
+--echo # row under the cursor is unlocked (provided, this row didn't
+--echo # match the partial WHERE clause, of course).
+--echo # Sic: the result of this test dependent on the order of retrieval
+--echo # of records --echo # from the derived table, if !
+--echo # We use DELETE to disable the JOIN CACHE. This DELETE modifies no
+--echo # records. It also should leave no InnoDB row locks.
+--echo #
+begin;
+delete t1.* from t1 natural join (select 2 as a, 2 as b union all
+ select 0 as a, 0 as b) as t2;
+--echo # Demonstrate that nothing was deleted form t1
+select * from t1;
+--echo #
+--echo # Switching to connection con1
+connection con1;
+begin;
+--echo # Since there is another distinct record in the derived table
+--echo # the previous matching record in t1 -- (2,null) -- was unlocked.
+delete from t1;
+--echo # We will need the contents of the table again.
+rollback;
+select * from t1;
+commit;
+--echo #
+--echo # Switching to connection default
+connection default;
+rollback;
+begin;
+--echo #
+--echo # Before this patch, we could wrongly unlock a record
+--echo # that was cached and later used in a join. Demonstrate that
+--echo # this is no longer the case.
+--echo # Sic: this test is also order-dependent (i.e. the
+--echo # the bug would show up only if the first record in the union
+--echo # is retreived and processed first.
+--echo #
+--echo # Verify that JT_EQ_REF is used.
+--vertical_results
+explain
+select 1 from t1 natural join (select 3 as a, 2 as b union all
+ select 3 as a, 1 as b) as t2 for update;
+--horizontal_results
+--echo # Lock the record.
+select 1 from t1 natural join (select 3 as a, 2 as b union all
+ select 3 as a, 1 as b) as t2 for update;
+--echo # Switching to connection con1
+connection con1;
+--echo #
+--echo # We should not be able to delete record (3,1) from t1,
+--echo # (previously it was possible).
+--echo #
+--error ER_LOCK_WAIT_TIMEOUT
+delete from t1 where a=3;
+--echo # Switching to connection default
+connection default;
+commit;
+
+disconnect con1;
+set @@session.tx_isolation=default;
+drop table t1;
+
+--echo #
+--echo # End of 5.1 tests
+--echo #
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test b/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test
new file mode 100644
index 00000000000..890889301e6
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_multi_update.test
@@ -0,0 +1,29 @@
+-- source include/have_innodb_plugin.inc
+
+#
+# Test multi update with different join methods
+#
+
+CREATE TABLE bug38999_1 (a int not null primary key, b int not null, key (b)) engine=innodb;
+CREATE TABLE bug38999_2 (a int not null primary key, b int not null, key (b)) engine=innodb;
+INSERT INTO bug38999_1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10),(11,11),(12,12);
+INSERT INTO bug38999_2 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9);
+
+# Full join, without key
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100;
+select * from bug38999_1;
+
+# unique key
+update bug38999_1,bug38999_2 set bug38999_1.a=bug38999_1.a+100 where bug38999_1.a=101;
+select * from bug38999_1;
+
+# ref key
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+10 where bug38999_1.b=2;
+select * from bug38999_1;
+
+# Range key (in bug38999_1)
+update bug38999_1,bug38999_2 set bug38999_1.b=bug38999_1.b+2,bug38999_2.b=bug38999_1.b+10 where bug38999_1.b between 3 and 5 and bug38999_1.a=bug38999_2.a+100;
+select * from bug38999_1;
+select * from bug38999_2;
+
+drop table bug38999_1,bug38999_2;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt
new file mode 100644
index 00000000000..5b4331aa7a6
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql-master.opt
@@ -0,0 +1 @@
+--loose-innodb-lock-wait-timeout=2
diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test
index ada4323dcee..5adaba43050 100644
--- a/mysql-test/t/innodb_mysql.test
+++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql.test
@@ -2,12 +2,12 @@
#
# Last update:
# 2006-07-26 ML test refactored (MySQL 5.1)
-# main testing code t/innodb_mysql.test -> include/mix1.inc
+# main testing code t/innodb_mysql.test -> include/mix1.inc
#
-# Slow test, don't run during staging part
--- source include/not_staging.inc
--- source include/have_innodb.inc
+-- source include/have_innodb_plugin.inc
+-- source include/have_query_cache.inc
+
let $engine_type= InnoDB;
let $other_engine_type= MEMORY;
# InnoDB does support FOREIGN KEYFOREIGN KEYs
@@ -561,6 +561,23 @@ drop table t1,t2;
--echo #
+--echo # Bug #39653: find_shortest_key in sql_select.cc does not consider
+--echo # clustered primary keys
+--echo #
+
+CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c INT, d INT, e INT, f INT,
+ KEY (b,c)) ENGINE=INNODB;
+
+INSERT INTO t1 VALUES (1,1,1,1,1,1), (2,2,2,2,2,2), (3,3,3,3,3,3),
+ (4,4,4,4,4,4), (5,5,5,5,5,5), (6,6,6,6,6,6),
+ (7,7,7,7,7,7), (8,8,8,8,8,8), (9,9,9,9,9,9),
+ (11,11,11,11,11,11);
+
+--query_vertical EXPLAIN SELECT COUNT(*) FROM t1
+
+DROP TABLE t1;
+
+--echo #
--echo # Bug #49838: DROP INDEX and ADD UNIQUE INDEX for same index may
--echo # corrupt definition at engine
--echo #
@@ -574,36 +591,6 @@ ALTER TABLE t1 DROP INDEX k, ADD UNIQUE INDEX k (a,b);
DROP TABLE t1;
---echo #
---echo # Bug #53334: wrong result for outer join with impossible ON condition
---echo # (see the same test case for MyISAM in join.test)
---echo #
-
-create table t1 (id int primary key);
-create table t2 (id int);
-
-insert into t1 values (75);
-insert into t1 values (79);
-insert into t1 values (78);
-insert into t1 values (77);
-replace into t1 values (76);
-replace into t1 values (76);
-insert into t1 values (104);
-insert into t1 values (103);
-insert into t1 values (102);
-insert into t1 values (101);
-insert into t1 values (105);
-insert into t1 values (106);
-insert into t1 values (107);
-
-insert into t2 values (107),(75),(1000);
-
-select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
- where t2.id=75 and t1.id is null;
-explain select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0
- where t2.id=75 and t1.id is null;
-
-drop table t1,t2;
--echo #
--echo # Bug #47453: InnoDB incorrectly changes TIMESTAMP columns when
@@ -633,4 +620,18 @@ SELECT SECOND(c)-@bug47453 FROM t1 JOIN t2 ON d=a;
DROP TABLE t1, t2;
+--echo #
+--echo # Bug#38999 valgrind warnings for update statement in function compare_record()
+--echo #
+
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 values (1),(2),(3),(4),(5);
+INSERT INTO t2 values (1);
+
+SELECT * FROM t1 WHERE a = 2;
+UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
+
+DROP TABLE t1,t2;
+
--echo End of 5.1 tests
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt
new file mode 100644
index 00000000000..0de618855c3
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk-master.opt
@@ -0,0 +1 @@
+--loose-innodb_lock_wait_timeout=1 --loose-innodb_rollback_on_timeout=1
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test
new file mode 100644
index 00000000000..d8d56adc448
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_mysql_rbk.test
@@ -0,0 +1,35 @@
+-- source include/have_innodb_plugin.inc
+
+#
+# Bug #41453: Assertion `m_status == DA_ERROR' failed in
+# Diagnostics_area::sql_errno
+#
+
+CREATE TABLE t1(a INT, b INT NOT NULL, PRIMARY KEY (a)) ENGINE=innodb
+DEFAULT CHARSET=latin1;
+INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
+CONNECT (con1,localhost,root,,);
+CONNECT (con2,localhost,root,,);
+
+CONNECTION con1;
+START TRANSACTION;
+SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE;
+CONNECTION con2;
+START TRANSACTION;
+--error ER_LOCK_WAIT_TIMEOUT
+UPDATE t1 SET b=b+12 WHERE a > 2 ORDER BY a;
+ROLLBACK;
+
+CONNECTION con1;
+START TRANSACTION;
+SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE;
+CONNECTION con2;
+START TRANSACTION;
+--error ER_LOCK_WAIT_TIMEOUT
+UPDATE t1 SET b=10 WHERE a > 1 ORDER BY a;
+SELECT * FROM t1 WHERE b = 10;
+
+CONNECTION default;
+DISCONNECT con1;
+DISCONNECT con2;
+DROP TABLE t1;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_notembedded.test b/mysql-test/suite/innodb_plugin/t/innodb_notembedded.test
new file mode 100644
index 00000000000..2afe9079ba8
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_notembedded.test
@@ -0,0 +1,50 @@
+-- source include/not_embedded.inc
+-- source include/have_innodb_plugin.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+SET @old_log_bin_trust_function_creators= @@global.log_bin_trust_function_creators;
+
+connect (a,localhost,root,,);
+connect (b,localhost,root,,);
+
+
+#
+# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
+# non-blocking SELECT
+#
+SET GLOBAL log_bin_trust_function_creators = 1;
+create table t1 (col1 integer primary key, col2 integer) engine=innodb;
+insert t1 values (1,100);
+delimiter |;
+create function f1 () returns integer begin
+declare var1 int;
+select col2 into var1 from t1 where col1=1 for update;
+return var1;
+end|
+delimiter ;|
+start transaction;
+select f1();
+connection b;
+send update t1 set col2=0 where col1=1;
+connection default;
+select * from t1;
+connection a;
+rollback;
+connection b;
+reap;
+rollback;
+
+# Cleanup
+connection a;
+disconnect a;
+--source include/wait_until_disconnected.inc
+connection b;
+disconnect b;
+--source include/wait_until_disconnected.inc
+connection default;
+drop table t1;
+drop function f1;
+SET @@global.log_bin_trust_function_creators= @old_log_bin_trust_function_creators;
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt
new file mode 100644
index 00000000000..a451be2eef0
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback-master.opt
@@ -0,0 +1 @@
+--loose-innodb_lock_wait_timeout=2 --loose-innodb_rollback_on_timeout
diff --git a/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test
new file mode 100644
index 00000000000..cc7ab9ee0bd
--- /dev/null
+++ b/mysql-test/suite/innodb_plugin/t/innodb_timeout_rollback.test
@@ -0,0 +1,5 @@
+-- source include/have_innodb_plugin.inc
+
+--source include/innodb_rollback_on_timeout.inc
+
+--echo End of 5.0 tests
diff --git a/mysql-test/suite/manual/r/rpl_replication_delay.result b/mysql-test/suite/manual/r/rpl_replication_delay.result
index a8fa6ce8265..73dd77cc647 100644
--- a/mysql-test/suite/manual/r/rpl_replication_delay.result
+++ b/mysql-test/suite/manual/r/rpl_replication_delay.result
@@ -4,45 +4,8 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-show slave status /* Second_behind reports 0 */;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port 9306
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 106
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 106
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
+# Second_behind reports 0
Seconds_Behind_Master 0
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
drop table if exists t1;
Warnings:
Note 1051 Unknown table 't1'
@@ -50,87 +13,13 @@ create table t1 (f1 int);
flush logs /* contaminate rli->last_master_timestamp */;
lock table t1 write;
insert into t1 values (1);
-show slave status /* bug emulated: reports slave threads starting time about 3*3 not 3 secs */;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port 9306
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 367
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 279
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
+# bug emulated: reports slave threads starting time about 3*3 not 3 secs
Seconds_Behind_Master 9
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
unlock tables;
flush logs /* this time rli->last_master_timestamp is not affected */;
lock table t1 write;
insert into t1 values (2);
-show slave status /* reports the correct diff with master query time about 3+3 secs */;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port 9306
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 455
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 367
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
+# reports the correct diff with master query time about 3+3 secs
Seconds_Behind_Master 7
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
unlock tables;
drop table t1;
diff --git a/mysql-test/suite/manual/t/rpl_replication_delay.test b/mysql-test/suite/manual/t/rpl_replication_delay.test
index 8230698c8f9..fc1db9bfe18 100644
--- a/mysql-test/suite/manual/t/rpl_replication_delay.test
+++ b/mysql-test/suite/manual/t/rpl_replication_delay.test
@@ -10,9 +10,9 @@ source include/master-slave.inc;
connection master;
#connection slave;
sync_slave_with_master;
---replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
---replace_column 1 # 8 # 9 # 23 #
---query_vertical show slave status /* Second_behind reports 0 */;
+--echo # Second_behind reports 0
+let $status_items= Seconds_Behind_Master;
+source include/show_slave_status.inc;
sleep 3;
### bug emulation
@@ -35,9 +35,8 @@ insert into t1 values (1);
sleep 3;
connection slave;
---replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
---replace_column 1 # 8 # 9 # 23 #
---query_vertical show slave status /* bug emulated: reports slave threads starting time about 3*3 not 3 secs */;
+--echo # bug emulated: reports slave threads starting time about 3*3 not 3 secs
+source include/show_slave_status.inc;
unlock tables;
connection master;
@@ -55,9 +54,8 @@ insert into t1 values (2);
sleep 3;
connection slave;
---replace_result $DEFAULT_MASTER_PORT DEFAULT_MASTER_PORT
---replace_column 1 # 8 # 9 # 23 #
---query_vertical show slave status /* reports the correct diff with master query time about 3+3 secs */;
+--echo # reports the correct diff with master query time about 3+3 secs
+source include/show_slave_status.inc;
unlock tables;
connection master;
diff --git a/mysql-test/suite/maria/r/compat_aliases.result b/mysql-test/suite/maria/r/compat_aliases.result
new file mode 100644
index 00000000000..db33737ebbc
--- /dev/null
+++ b/mysql-test/suite/maria/r/compat_aliases.result
@@ -0,0 +1,58 @@
+select * from information_schema.plugins where plugin_name like '%aria';
+PLUGIN_NAME PLUGIN_VERSION PLUGIN_STATUS PLUGIN_TYPE PLUGIN_TYPE_VERSION PLUGIN_LIBRARY PLUGIN_LIBRARY_VERSION PLUGIN_AUTHOR PLUGIN_DESCRIPTION PLUGIN_LICENSE PLUGIN_MATURITY PLUGIN_AUTH_VERSION
+Maria 1.5 ACTIVE DAEMON 50202.0 NULL NULL Monty Program Ab Compatibility aliases for the Aria engine GPL Gamma 1.5
+Aria 1.5 ACTIVE STORAGE ENGINE 50202.0 NULL NULL Monty Program Ab Crash-safe tables with MyISAM heritage GPL Gamma 1.5
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_variables as maria_vars left join
+information_schema.session_variables as aria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_status as maria_vars left join
+information_schema.session_status as aria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_variables as aria_vars left join
+information_schema.session_variables as maria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_status as aria_vars left join
+information_schema.session_status as maria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+set @old_checkpoint_interval=@@global.aria_checkpoint_interval;
+set global maria_checkpoint_interval=10;
+select @@global.aria_checkpoint_interval;
+@@global.aria_checkpoint_interval
+10
+set global maria_checkpoint_interval=@old_checkpoint_interval;
+set @old_sort_buffer_size=@@global.maria_sort_buffer_size;
+set global aria_sort_buffer_size=1024;
+select @@global.maria_sort_buffer_size;
+@@global.maria_sort_buffer_size
+1024
+set global aria_sort_buffer_size=@old_sort_buffer_size;
+set @old_sort_buffer_size=@@session.maria_sort_buffer_size;
+set session aria_sort_buffer_size=2048;
+select @@session.maria_sort_buffer_size;
+@@session.maria_sort_buffer_size
+2048
+set session aria_sort_buffer_size=@old_sort_buffer_size;
+set @old_max_sort_file_size=@@global.maria_max_sort_file_size,
+@old_repair_threads=@@global.aria_repair_threads;
+set @@global.maria_max_sort_file_size=default, @@global.aria_repair_threads=default;
+select @@global.maria_max_sort_file_size, @@global.aria_repair_threads;
+@@global.maria_max_sort_file_size @@global.aria_repair_threads
+9223372036853727232 1
+set @@global.aria_max_sort_file_size=@old_max_sort_file_size,
+@@global.maria_repair_threads=@old_repair_threads;
diff --git a/mysql-test/suite/maria/r/group_commit.result b/mysql-test/suite/maria/r/group_commit.result
index 75d7318340a..4fb85b912ec 100644
--- a/mysql-test/suite/maria/r/group_commit.result
+++ b/mysql-test/suite/maria/r/group_commit.result
@@ -1,17 +1,17 @@
drop table if exists t1;
create table t1 (a int);
-SET GLOBAL maria_group_commit="NONE";
-SET GLOBAL maria_group_commit_interval= 0;
-SET GLOBAL maria_group_commit="NONE";
-SET GLOBAL maria_group_commit_interval= 100;
-SET GLOBAL maria_group_commit="HARD";
-SET GLOBAL maria_group_commit_interval= 0;
-SET GLOBAL maria_group_commit="HARD";
-SET GLOBAL maria_group_commit_interval= 100;
-SET GLOBAL maria_group_commit="SOFT";
-SET GLOBAL maria_group_commit_interval= 0;
-SET GLOBAL maria_group_commit="SOFT";
-SET GLOBAL maria_group_commit_interval= 100;
-SET GLOBAL maria_group_commit="NONE";
-SET GLOBAL maria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="NONE";
+SET GLOBAL aria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="NONE";
+SET GLOBAL aria_group_commit_interval= 100;
+SET GLOBAL aria_group_commit="HARD";
+SET GLOBAL aria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="HARD";
+SET GLOBAL aria_group_commit_interval= 100;
+SET GLOBAL aria_group_commit="SOFT";
+SET GLOBAL aria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="SOFT";
+SET GLOBAL aria_group_commit_interval= 100;
+SET GLOBAL aria_group_commit="NONE";
+SET GLOBAL aria_group_commit_interval= 0;
drop table t1;
diff --git a/mysql-test/suite/maria/r/maria-autozerofill.result b/mysql-test/suite/maria/r/maria-autozerofill.result
index 0b069cd7a52..5638af70c5c 100644
--- a/mysql-test/suite/maria/r/maria-autozerofill.result
+++ b/mysql-test/suite/maria/r/maria-autozerofill.result
@@ -1,7 +1,7 @@
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
-create table t1(a int) engine=maria;
+create table t1(a int) engine=aria;
insert into t1 values(1);
flush table t1;
create_rename_lsn has non-magic value
diff --git a/mysql-test/suite/maria/r/maria-big.result b/mysql-test/suite/maria/r/maria-big.result
index 64b3296b6b2..cb6e02df00e 100644
--- a/mysql-test/suite/maria/r/maria-big.result
+++ b/mysql-test/suite/maria/r/maria-big.result
@@ -1,5 +1,5 @@
set global max_allowed_packet=400000000;
-set storage_engine=maria;
+set storage_engine=aria;
affected rows: 0
drop table if exists t1, t2;
affected rows: 0
diff --git a/mysql-test/suite/maria/r/maria-big2.result b/mysql-test/suite/maria/r/maria-big2.result
index 7fc57d6a203..3e4c6973997 100644
--- a/mysql-test/suite/maria/r/maria-big2.result
+++ b/mysql-test/suite/maria/r/maria-big2.result
@@ -1,4 +1,4 @@
-create table t2(id int,a varchar(255),b varchar(255),key(a))engine=maria row_format=dynamic transactional=0;
+create table t2(id int,a varchar(255),b varchar(255),key(a))engine=aria row_format=dynamic transactional=0;
Table Op Msg_type Msg_text
test.t2 check status OK
Table Op Msg_type Msg_text
diff --git a/mysql-test/suite/maria/r/maria-connect.result b/mysql-test/suite/maria/r/maria-connect.result
index 8fe483c8467..a02c29f3d5f 100644
--- a/mysql-test/suite/maria/r/maria-connect.result
+++ b/mysql-test/suite/maria/r/maria-connect.result
@@ -1,5 +1,5 @@
-set global storage_engine=maria;
-set session storage_engine=maria;
+set global storage_engine=aria;
+set session storage_engine=aria;
drop table if exists t1;
SET SQL_WARNINGS=1;
RESET MASTER;
diff --git a/mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result b/mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result
index 189872e8e13..743f1785f5c 100644
--- a/mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result
+++ b/mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result
@@ -1,4 +1,4 @@
-set storage_engine=maria;
+set storage_engine=aria;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -12,7 +12,7 @@ t1 CREATE TABLE `t1` (
`g` geometry NOT NULL,
PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=DYNAMIC
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=DYNAMIC
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(150 150, 150 150)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(149 149, 151 151)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(148 148, 152 152)'));
@@ -295,7 +295,7 @@ t2 CREATE TABLE `t2` (
`g` geometry NOT NULL,
PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`)
-) ENGINE=MARIA AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=DYNAMIC
+) ENGINE=Aria AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=DYNAMIC
SELECT count(*) FROM t2;
count(*)
100
diff --git a/mysql-test/suite/maria/r/maria-gis-rtree-trans.result b/mysql-test/suite/maria/r/maria-gis-rtree-trans.result
index 9e43daa9623..ae37b9d454d 100644
--- a/mysql-test/suite/maria/r/maria-gis-rtree-trans.result
+++ b/mysql-test/suite/maria/r/maria-gis-rtree-trans.result
@@ -1,4 +1,4 @@
-set storage_engine=maria;
+set storage_engine=aria;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -12,7 +12,7 @@ t1 CREATE TABLE `t1` (
`g` geometry NOT NULL,
PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=1
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(150 150, 150 150)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(149 149, 151 151)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(148 148, 152 152)'));
@@ -295,7 +295,7 @@ t2 CREATE TABLE `t2` (
`g` geometry NOT NULL,
PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`)
-) ENGINE=MARIA AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=1
SELECT count(*) FROM t2;
count(*)
100
diff --git a/mysql-test/suite/maria/r/maria-gis-rtree.result b/mysql-test/suite/maria/r/maria-gis-rtree.result
index 0c929fe1313..a61e93d2a3a 100644
--- a/mysql-test/suite/maria/r/maria-gis-rtree.result
+++ b/mysql-test/suite/maria/r/maria-gis-rtree.result
@@ -1,4 +1,4 @@
-set storage_engine=maria;
+set storage_engine=aria;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 (
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -12,7 +12,7 @@ t1 CREATE TABLE `t1` (
`g` geometry NOT NULL,
PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=0
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(150 150, 150 150)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(149 149, 151 151)'));
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(148 148, 152 152)'));
@@ -295,7 +295,7 @@ t2 CREATE TABLE `t2` (
`g` geometry NOT NULL,
PRIMARY KEY (`fid`),
SPATIAL KEY `g` (`g`)
-) ENGINE=MARIA AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=0
+) ENGINE=Aria AUTO_INCREMENT=101 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=0
SELECT count(*) FROM t2;
count(*)
100
diff --git a/mysql-test/suite/maria/r/maria-mvcc.result b/mysql-test/suite/maria/r/maria-mvcc.result
index 3919dfc597e..671b1bbf53c 100644
--- a/mysql-test/suite/maria/r/maria-mvcc.result
+++ b/mysql-test/suite/maria/r/maria-mvcc.result
@@ -1,11 +1,11 @@
-set global maria_page_checksum=1;
+set global aria_page_checksum=1;
drop table if exists t1;
-create table t1 (i int) engine=maria;
+create table t1 (i int) engine=aria;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
insert into t1 values (0);
lock tables t1 write concurrent;
insert into t1 values (1);
@@ -151,7 +151,7 @@ select count(*) from t1;
count(*)
8
drop table t1;
-CREATE TABLE t1 (fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL KEY(g) ) transactional=1 row_format=page engine=maria;
+CREATE TABLE t1 (fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL KEY(g) ) transactional=1 row_format=page engine=aria;
lock tables t1 write concurrent, t1 as t2 write concurrent;
insert into t1 (fid,g) values (NULL,GeomFromText('LineString(0 0,1 1)'));
select fid from t1 as t2;
diff --git a/mysql-test/suite/maria/r/maria-no-logging.result b/mysql-test/suite/maria/r/maria-no-logging.result
index e72842ae71b..0d3d7804853 100644
--- a/mysql-test/suite/maria/r/maria-no-logging.result
+++ b/mysql-test/suite/maria/r/maria-no-logging.result
@@ -1,8 +1,8 @@
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
-set global maria_checkpoint_interval=0;
+set global aria_checkpoint_interval=0;
create table t2 (a varchar(100)) engine=myisam;
insert into t2 select repeat('z',100);
insert into t2 select * from t2;
@@ -12,40 +12,40 @@ insert into t2 select * from t2;
insert into t2 select * from t2;
insert into t2 select * from t2;
* shut down mysqld, removed logs, restarted it
-create table t1 (a varchar(100)) engine=maria transactional=1;
+create table t1 (a varchar(100)) engine=aria transactional=1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(100) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
-show engine maria logs;
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+show engine aria logs;
Type Name Status
-MARIA Size 16384 maria_log.00000001 unknown
+Aria Size 16384 aria_log.00000001 unknown
insert into t1 values('a');
insert into t1 select * from t2;
-show engine maria logs;
+show engine aria logs;
Type Name Status
-MARIA Size 24576 maria_log.00000001 unknown
+Aria Size 24576 aria_log.00000001 unknown
* shut down mysqld, removed logs, restarted it
truncate table t1;
insert into t1 select * from t2;
-show engine maria logs;
+show engine aria logs;
Type Name Status
-MARIA Size 16384 maria_log.00000001 unknown
+Aria Size 16384 aria_log.00000001 unknown
drop table t1;
* shut down mysqld, removed logs, restarted it
-create table t1 (a varchar(100)) engine=maria transactional=1;
+create table t1 (a varchar(100)) engine=aria transactional=1;
insert into t1 values('a');
create table if not exists t1 select * from t2;
Warnings:
Note 1050 Table 't1' already exists
-show engine maria logs;
+show engine aria logs;
Type Name Status
-MARIA Size 24576 maria_log.00000001 unknown
+Aria Size 24576 aria_log.00000001 unknown
* shut down mysqld, removed logs, restarted it
drop table t1;
-create table t1 engine=maria transactional=1 select * from t2;
-show engine maria logs;
+create table t1 engine=aria transactional=1 select * from t2;
+show engine aria logs;
Type Name Status
-MARIA Size 16384 maria_log.00000001 unknown
+Aria Size 16384 aria_log.00000001 unknown
drop database mysqltest;
diff --git a/mysql-test/suite/maria/r/maria-page-checksum.result b/mysql-test/suite/maria/r/maria-page-checksum.result
index 0319bd9e9ca..c4d1b71e33a 100644
--- a/mysql-test/suite/maria/r/maria-page-checksum.result
+++ b/mysql-test/suite/maria/r/maria-page-checksum.result
@@ -1,940 +1,940 @@
drop table if exists t1;
-select @@global.maria_page_checksum;
-@@global.maria_page_checksum
+select @@global.aria_page_checksum;
+@@global.aria_page_checksum
1
# iteration 1
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 2
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 3
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 4
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 5
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 6
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 7
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 8
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 9
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 10
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 11
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 12
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 13
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 14
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 15
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 16
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 17
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 18
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 19
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 20
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 21
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 22
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 23
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 24
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 25
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 26
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 27
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 28
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 29
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 30
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 31
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 32
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 33
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 34
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 35
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
Page checksums are not used
drop table t1;
# iteration 36
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Page checksums are used
drop table t1;
# iteration 1
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
alter table t1 modify a bigint ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bigint(20) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
drop table t1;
# iteration 2
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
alter table t1 transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 3
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
alter table t1 transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 4
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
-alter table t1 engine=maria ;
+alter table t1 engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
drop table t1;
# iteration 5
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
-alter table t1 engine=maria transactional=0 ;
+alter table t1 engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 6
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
Crashsafe: yes
-alter table t1 engine=maria transactional=1 ;
+alter table t1 engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 7
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
alter table t1 modify a bigint ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bigint(20) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 8
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
alter table t1 transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 9
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
alter table t1 transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 10
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
-alter table t1 engine=maria ;
+alter table t1 engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 11
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
-alter table t1 engine=maria transactional=0 ;
+alter table t1 engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 12
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
-alter table t1 engine=maria transactional=1 ;
+alter table t1 engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 13
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
alter table t1 modify a bigint ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bigint(20) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 14
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
alter table t1 transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 15
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
alter table t1 transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 16
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
-alter table t1 engine=maria ;
+alter table t1 engine=aria ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
# iteration 17
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
-alter table t1 engine=maria transactional=0 ;
+alter table t1 engine=aria transactional=0 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=0
Crashsafe: no
drop table t1;
# iteration 18
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
-alter table t1 engine=maria transactional=1 ;
+alter table t1 engine=aria transactional=1 ;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
Crashsafe: yes
drop table t1;
diff --git a/mysql-test/suite/maria/r/maria-partitioning.result b/mysql-test/suite/maria/r/maria-partitioning.result
index ff3035e560e..840c7c0b3b4 100644
--- a/mysql-test/suite/maria/r/maria-partitioning.result
+++ b/mysql-test/suite/maria/r/maria-partitioning.result
@@ -1,11 +1,11 @@
-set global storage_engine=maria;
-set session storage_engine=maria;
+set global storage_engine=aria;
+set session storage_engine=aria;
DROP TABLE if exists t1,t2;
Warnings:
Note 1051 Unknown table 't1'
Note 1051 Unknown table 't2'
-create table t2(a blob) engine=maria;
-create table t1(a int primary key) engine=maria;
+create table t2(a blob) engine=aria;
+create table t1(a int primary key) engine=aria;
insert into t2 values ('foo'),('bar');
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
a a
@@ -16,8 +16,8 @@ insert into t1 values (2);
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
a a
drop table t1,t2;
-create table t2(a blob) engine= maria;
-create table t1(a int primary key) engine= maria PARTITION BY HASH (a) PARTITIONS 2;
+create table t2(a blob) engine= aria;
+create table t1(a int primary key) engine= aria PARTITION BY HASH (a) PARTITIONS 2;
insert into t2 values ('foo'),('bar');
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
a a
diff --git a/mysql-test/suite/maria/r/maria-preload.result b/mysql-test/suite/maria/r/maria-preload.result
index b7c65ba8bb4..a693b6768ac 100644
--- a/mysql-test/suite/maria/r/maria-preload.result
+++ b/mysql-test/suite/maria/r/maria-preload.result
@@ -1,20 +1,20 @@
drop table if exists t1, t2;
-set global maria_checkpoint_interval=0;
+set global aria_checkpoint_interval=0;
create temporary table initial
select variable_name,variable_value from
-information_schema.global_status where variable_name like "Maria_pagecache_reads";
+information_schema.global_status where variable_name like "Aria_pagecache_reads";
create table t1 (
a int not null auto_increment,
b char(16) not null,
primary key (a),
key (b)
-) engine=maria row_format=dynamic;
+) engine=aria row_format=dynamic;
create table t2(
a int not null auto_increment,
b char(16) not null,
primary key (a),
key (b)
-) engine=maria row_format=dynamic;
+) engine=aria row_format=dynamic;
insert into t1(b) values
('test0'),
('test1'),
@@ -50,21 +50,21 @@ count(*)
20672
flush tables;
flush status;
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 2
+ARIA_PAGECACHE_READS 2
select count(*) from t1 where b = 'test1';
count(*)
4181
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 9
+ARIA_PAGECACHE_READS 9
select count(*) from t1 where b = 'test1';
count(*)
4181
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 9
+ARIA_PAGECACHE_READS 9
flush tables;
flush status;
select @@preload_buffer_size;
@@ -73,20 +73,20 @@ select @@preload_buffer_size;
load index into cache t1;
Table Op Msg_type Msg_text
test.t1 preload_keys status OK
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 80
+ARIA_PAGECACHE_READS 80
select count(*) from t1 where b = 'test1';
count(*)
4181
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 80
+ARIA_PAGECACHE_READS 80
flush tables;
flush status;
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 80
+ARIA_PAGECACHE_READS 80
set session preload_buffer_size=256*1024;
select @@preload_buffer_size;
@@preload_buffer_size
@@ -94,20 +94,20 @@ select @@preload_buffer_size;
load index into cache t1 ignore leaves;
Table Op Msg_type Msg_text
test.t1 preload_keys status OK
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 151
+ARIA_PAGECACHE_READS 151
select count(*) from t1 where b = 'test1';
count(*)
4181
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 157
+ARIA_PAGECACHE_READS 157
flush tables;
flush status;
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 157
+ARIA_PAGECACHE_READS 157
set session preload_buffer_size=1*1024;
select @@preload_buffer_size;
@@preload_buffer_size
@@ -116,45 +116,45 @@ load index into cache t1, t2 key (primary,b) ignore leaves;
Table Op Msg_type Msg_text
test.t1 preload_keys status OK
test.t2 preload_keys status OK
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 271
+ARIA_PAGECACHE_READS 271
select count(*) from t1 where b = 'test1';
count(*)
4181
select count(*) from t2 where b = 'test1';
count(*)
2584
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 274
+ARIA_PAGECACHE_READS 274
flush tables;
flush status;
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 274
+ARIA_PAGECACHE_READS 274
load index into cache t3, t2 key (primary,b) ;
Table Op Msg_type Msg_text
test.t3 preload_keys Error Table 'test.t3' doesn't exist
test.t3 preload_keys status Operation failed
test.t2 preload_keys status OK
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 317
+ARIA_PAGECACHE_READS 317
flush tables;
flush status;
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 317
+ARIA_PAGECACHE_READS 317
load index into cache t3 key (b), t2 key (c) ;
Table Op Msg_type Msg_text
test.t3 preload_keys Error Table 'test.t3' doesn't exist
test.t3 preload_keys status Operation failed
test.t2 preload_keys Error Key 'c' doesn't exist in table 't2'
test.t2 preload_keys status Operation failed
-select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
variable_name g.variable_value-i.variable_value
-MARIA_PAGECACHE_READS 317
+ARIA_PAGECACHE_READS 317
drop table t1, t2;
drop temporary table initial;
show status like "key_read%";
diff --git a/mysql-test/suite/maria/r/maria-purge.result b/mysql-test/suite/maria/r/maria-purge.result
index eb67bab8cde..263e3270d26 100644
--- a/mysql-test/suite/maria/r/maria-purge.result
+++ b/mysql-test/suite/maria/r/maria-purge.result
@@ -1,7 +1,7 @@
* shut down mysqld, removed logs, restarted it
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_log_file_size=4294967295;
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_log_file_size=4294967295;
drop table if exists t1,t2;
SET SQL_WARNINGS=1;
CREATE TABLE t1 (
@@ -34,60 +34,60 @@ insert into t2 select * from t1;
insert into t1 select * from t2;
insert into t2 select * from t1;
insert into t1 select * from t2;
-set global maria_log_file_size=16777216;
-set global maria_checkpoint_interval=30;
-SHOW ENGINE maria logs;
+set global aria_log_file_size=16777216;
+set global aria_checkpoint_interval=30;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000002 in use
+Aria aria_log.00000002 in use
insert into t2 select * from t1;
insert into t1 select * from t2;
-set global maria_checkpoint_interval=30;
-SHOW ENGINE maria logs;
+set global aria_checkpoint_interval=30;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000004 in use
-set global maria_log_file_size=16777216;
-select @@global.maria_log_file_size;
-@@global.maria_log_file_size
+Aria aria_log.00000004 in use
+set global aria_log_file_size=16777216;
+select @@global.aria_log_file_size;
+@@global.aria_log_file_size
16777216
-set global maria_checkpoint_interval=30;
-SHOW ENGINE maria logs;
+set global aria_checkpoint_interval=30;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000004 in use
-set global maria_log_file_size=8388608;
-select @@global.maria_log_file_size;
-@@global.maria_log_file_size
+Aria aria_log.00000004 in use
+set global aria_log_file_size=8388608;
+select @@global.aria_log_file_size;
+@@global.aria_log_file_size
8388608
-set global maria_log_purge_type=at_flush;
+set global aria_log_purge_type=at_flush;
insert into t1 select * from t2;
-set global maria_checkpoint_interval=30;
-SHOW ENGINE maria logs;
+set global aria_checkpoint_interval=30;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000004 free
-MARIA maria_log.00000005 free
-MARIA maria_log.00000006 free
-MARIA maria_log.00000007 free
-MARIA maria_log.00000008 in use
+Aria aria_log.00000004 free
+Aria aria_log.00000005 free
+Aria aria_log.00000006 free
+Aria aria_log.00000007 free
+Aria aria_log.00000008 in use
flush logs;
-SHOW ENGINE maria logs;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000008 in use
-set global maria_log_file_size=16777216;
-set global maria_log_purge_type=external;
+Aria aria_log.00000008 in use
+set global aria_log_file_size=16777216;
+set global aria_log_purge_type=external;
insert into t1 select * from t2;
-set global maria_checkpoint_interval=30;
-SHOW ENGINE maria logs;
+set global aria_checkpoint_interval=30;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000008 free
-MARIA maria_log.00000009 in use
+Aria aria_log.00000008 free
+Aria aria_log.00000009 in use
flush logs;
-SHOW ENGINE maria logs;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000008 free
-MARIA maria_log.00000009 in use
-set global maria_log_purge_type=immediate;
+Aria aria_log.00000008 free
+Aria aria_log.00000009 in use
+set global aria_log_purge_type=immediate;
insert into t1 select * from t2;
-set global maria_checkpoint_interval=30;
-SHOW ENGINE maria logs;
+set global aria_checkpoint_interval=30;
+SHOW ENGINE aria logs;
Type Name Status
-MARIA maria_log.00000011 in use
+Aria aria_log.00000011 in use
drop table t1, t2;
diff --git a/mysql-test/suite/maria/r/maria-recover.result b/mysql-test/suite/maria/r/maria-recover.result
index aee4119304f..5353a249f96 100644
--- a/mysql-test/suite/maria/r/maria-recover.result
+++ b/mysql-test/suite/maria/r/maria-recover.result
@@ -1,22 +1,22 @@
-select @@global.maria_recover;
-@@global.maria_recover
+select @@global.aria_recover;
+@@global.aria_recover
BACKUP
-set global maria_recover=off;
-select @@global.maria_recover;
-@@global.maria_recover
+set global aria_recover=off;
+select @@global.aria_recover;
+@@global.aria_recover
OFF
-set global maria_recover=default;
-select @@global.maria_recover;
-@@global.maria_recover
-OFF
-set global maria_recover=normal;
-select @@global.maria_recover;
-@@global.maria_recover
+set global aria_recover=default;
+select @@global.aria_recover;
+@@global.aria_recover
+NORMAL
+set global aria_recover=normal;
+select @@global.aria_recover;
+@@global.aria_recover
NORMAL
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
-create table t1 (a varchar(1000), index(a)) engine=maria;
+create table t1 (a varchar(1000), index(a)) engine=aria;
insert into t1 values("ThursdayMorningsMarket");
flush table t1;
insert into t1 select concat(a,'b') from t1 limit 1;
@@ -32,4 +32,4 @@ select * from t_corrupted2;
a
ThursdayMorningsMarket
drop database mysqltest;
-set global maria_recover=backup;
+set global aria_recover=backup;
diff --git a/mysql-test/suite/maria/r/maria-recovery-big.result b/mysql-test/suite/maria/r/maria-recovery-big.result
index ecc53de437e..b205265f0da 100644
--- a/mysql-test/suite/maria/r/maria-recovery-big.result
+++ b/mysql-test/suite/maria/r/maria-recovery-big.result
@@ -1,10 +1,10 @@
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
* TEST of recovery with blobs
* shut down mysqld, removed logs, restarted it
-create table t1 (a int, b longtext) engine=maria table_checksum=1;
+create table t1 (a int, b longtext) engine=aria table_checksum=1;
* copied t1 for feeding_recovery
insert into t1 values (1,"123456789012345678901234567890"),(2,"09876543210987654321");
flush table t1;
@@ -62,7 +62,7 @@ a length(b)
2 5
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t1 back for feeding_recovery
* recovery happens
diff --git a/mysql-test/suite/maria/r/maria-recovery-bitmap.result b/mysql-test/suite/maria/r/maria-recovery-bitmap.result
index 01255c2394f..884825d4792 100644
--- a/mysql-test/suite/maria/r/maria-recovery-bitmap.result
+++ b/mysql-test/suite/maria/r/maria-recovery-bitmap.result
@@ -2,7 +2,7 @@ drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
* shut down mysqld, removed logs, restarted it
-create table t1 (a varchar(10000)) engine=maria;
+create table t1 (a varchar(10000)) engine=aria;
* TEST of over-allocated bitmap not flushed by checkpoint
insert into t1 values ("bbbbbbb");
flush table t1;
@@ -11,10 +11,10 @@ insert into t1 values ("bbbbbbb");
delete from t1 limit 1;
set session debug="+d,info,enter,exit,maria_over_alloc_bitmap";
insert into t1 values ("aaaaaaaaa");
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
SET SESSION debug="+d,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -31,7 +31,7 @@ lock tables t1 write;
insert into t1 values (REPEAT('a', 6000));
SET SESSION debug="+d,maria_flush_bitmap,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
diff --git a/mysql-test/suite/maria/r/maria-recovery-rtree-ft.result b/mysql-test/suite/maria/r/maria-recovery-rtree-ft.result
index b8b0daa0ad8..57a2927c749 100644
--- a/mysql-test/suite/maria/r/maria-recovery-rtree-ft.result
+++ b/mysql-test/suite/maria/r/maria-recovery-rtree-ft.result
@@ -1,4 +1,4 @@
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
@@ -8,12 +8,12 @@ line LINESTRING NOT NULL,
kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
name VARCHAR(32)
,SPATIAL key (line)
-) transactional=1 row_format=page engine=maria;
+) transactional=1 row_format=page engine=aria;
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 line 1 line A NULL 32 NULL SPATIAL
CREATE TABLE t2 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)
-) transactional=1 row_format=page engine=maria;
+) transactional=1 row_format=page engine=aria;
SHOW INDEX FROM t2;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t2 1 a 1 a NULL NULL NULL NULL YES FULLTEXT
@@ -27,7 +27,7 @@ flush table t1;
* copied t1 for comparison
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t2 back for feeding_recovery
* copied t1 back for feeding_recovery
@@ -53,7 +53,7 @@ flush table t1;
lock tables t1 write, t2 write;
SET SESSION debug="+d,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t2 extended;
@@ -76,7 +76,7 @@ flush table t1;
lock tables t1 write, t2 write;
SET SESSION debug="+d,maria_flush_whole_page_cache,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t2 extended;
@@ -99,7 +99,7 @@ flush table t1;
lock tables t1 write, t2 write;
SET SESSION debug="+d,maria_flush_states,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t2 extended;
@@ -122,7 +122,7 @@ flush table t1;
lock tables t1 write, t2 write;
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t2 extended;
@@ -140,7 +140,7 @@ ok
use mysqltest;
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t2 extended;
diff --git a/mysql-test/suite/maria/r/maria-recovery.result b/mysql-test/suite/maria/r/maria-recovery.result
index b0440489cd1..cfabbf10be9 100644
--- a/mysql-test/suite/maria/r/maria-recovery.result
+++ b/mysql-test/suite/maria/r/maria-recovery.result
@@ -1,9 +1,9 @@
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
* shut down mysqld, removed logs, restarted it
-create table t1 (a varchar(1000)) engine=maria;
+create table t1 (a varchar(1000)) engine=aria;
* TEST of REDO: see if recovery can reconstruct if we give it an old table
* copied t1 for feeding_recovery
insert into t1 values ("00000000");
@@ -11,7 +11,7 @@ flush table t1;
* copied t1 for comparison
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t1 back for feeding_recovery
* recovery happens
@@ -34,7 +34,7 @@ lock tables t1 write;
insert into t1 values ("aaaaaaaaa");
SET SESSION debug="+d,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -55,7 +55,7 @@ lock tables t1 write;
insert into t1 values ("aaaaaaaaa");
SET SESSION debug="+d,maria_flush_whole_page_cache,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -77,7 +77,7 @@ lock tables t1 write;
insert into t1 values ("aaaaaaaaa");
SET SESSION debug="+d,maria_flush_states,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -100,7 +100,7 @@ lock tables t1 write;
insert into t1 values ("aaaaaaaaa");
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -124,7 +124,7 @@ CREATE TABLE t1 (
i int,
b blob default NULL,
c varchar(6000) default NULL
-) ENGINE=MARIA CHECKSUM=1;
+) ENGINE=ARIA CHECKSUM=1;
* copied t1 for feeding_recovery
INSERT INTO t1 VALUES (1, REPEAT('a', 5000), REPEAT('b', 5000));
UPDATE t1 SET i=3, b=CONCAT(b,'c') WHERE i=1;
@@ -135,7 +135,7 @@ flush table t1;
* copied t1 for comparison
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t1 back for feeding_recovery
* recovery happens
@@ -156,7 +156,7 @@ CREATE TABLE t1 (
i int auto_increment primary key,
c varchar(6),
key(c)
-) ENGINE=MARIA;
+) ENGINE=ARIA;
insert into t1 values(null,"b");
* copied t1 for feeding_recovery
insert into t1 values(null,"a"), (null,"c"), (null,"d");
@@ -165,7 +165,7 @@ flush table t1;
* copied t1 for comparison
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t1 back for feeding_recovery
* recovery happens
@@ -183,7 +183,7 @@ t1 CREATE TABLE `t1` (
`c` varchar(6) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `c` (`c`)
-) ENGINE=MARIA AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
* TEST of UPDATE vs state.auto_increment
* copied t1 for feeding_recovery
update t1 set i=15 where c="a";
@@ -191,7 +191,7 @@ flush table t1;
* copied t1 for comparison
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t1 back for feeding_recovery
* recovery happens
@@ -209,7 +209,7 @@ t1 CREATE TABLE `t1` (
`c` varchar(6) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `c` (`c`)
-) ENGINE=MARIA AUTO_INCREMENT=16 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=16 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
* TEST of INSERT's rollback vs state.auto_increment
flush table t1;
* copied t1 for comparison
@@ -217,7 +217,7 @@ lock tables t1 write;
insert into t1 values(null, "e");
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -234,7 +234,7 @@ t1 CREATE TABLE `t1` (
`c` varchar(6) DEFAULT NULL,
PRIMARY KEY (`i`),
KEY `c` (`c`)
-) ENGINE=MARIA AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
insert into t1 values(null, "f");
drop table t1;
drop database mysqltest_for_feeding_recovery;
diff --git a/mysql-test/suite/maria/r/maria-recovery2.result b/mysql-test/suite/maria/r/maria-recovery2.result
index 88db518254f..b78d7dcc4e7 100644
--- a/mysql-test/suite/maria/r/maria-recovery2.result
+++ b/mysql-test/suite/maria/r/maria-recovery2.result
@@ -1,13 +1,13 @@
-call mtr.add_suppression("File '.*maria_log.000.*' not found \\(Errcode: 2\\)");
-call mtr.add_suppression("Table '.\/mysqltest\/t_corrupted1' is crashed, skipping it. Please repair it with maria_chk -r");
-set global maria_log_file_size=4294967295;
+call mtr.add_suppression("File '.*aria_log.000.*' not found \\(Errcode: 2\\)");
+call mtr.add_suppression("Table '.\/mysqltest\/t_corrupted1' is crashed, skipping it. Please repair it with aria_chk -r");
+set global aria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
* TEST of removing logs manually
* shut down mysqld, removed logs, restarted it
* TEST of UNDO_ROW_DELETE preserving rowid
-create table t1(a int) engine=maria;
+create table t1(a int) engine=aria;
insert into t1 values(1),(2);
flush table t1;
* copied t1 for comparison
@@ -16,7 +16,7 @@ insert into t1 values(3);
delete from t1 where a in (1,2,3);
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -29,8 +29,8 @@ use mysqltest;
drop table t1;
* TEST of checkpoint
set global debug="+d,info,query,enter,exit,loop,maria_checkpoint_indirect";
-set global maria_checkpoint_interval=10000;
-create table t1(a int, b varchar(10), index(a,b)) engine=maria;
+set global aria_checkpoint_interval=10000;
+create table t1(a int, b varchar(10), index(a,b)) engine=aria;
insert into t1 values(1,"a"),(2,"b"),(3,"c");
delete from t1 where b="b";
update t1 set b="d" where a=1;
@@ -40,14 +40,14 @@ lock tables t1 write;
insert into t1 values(4,"e"),(5,"f"),(6,"g");
update t1 set b="h" where a=5;
delete from t1 where b="g";
-show status like "Maria_pagecache_blocks_not_flushed";
+show status like "Aria_pagecache_blocks_not_flushed";
Variable_name Value
-Maria_pagecache_blocks_not_flushed 3
-set global maria_checkpoint_interval=10000;
+Aria_pagecache_blocks_not_flushed 3
+set global aria_checkpoint_interval=10000;
update t1 set b="i" where a=5;
SET SESSION debug="+d,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -59,7 +59,7 @@ ok
use mysqltest;
drop table t1;
Test of REPAIR's implicit commit
-create table t1 (a varchar(100), key(a)) engine=maria;
+create table t1 (a varchar(100), key(a)) engine=aria;
insert into t1 values(3);
flush table t1;
* copied t1 for comparison
@@ -76,7 +76,7 @@ a
3
SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -92,7 +92,7 @@ a
3
drop table t1;
* TEST of recovery when crash before bulk-insert-with-repair is committed
-create table t1 (a varchar(100), key(a)) engine=maria;
+create table t1 (a varchar(100), key(a)) engine=aria;
create table t2 (a varchar(100)) engine=myisam;
set rand_seed1=12, rand_seed2=254;
insert into t2 values (rand());
@@ -110,7 +110,7 @@ delete from t1 limit 1;
insert into t1 select * from t2;
SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -125,7 +125,7 @@ Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_par
t1 1 a 1 a A 1 NULL NULL YES BTREE
drop table t1;
* TEST of recovery when OPTIMIZE has replaced the index file and crash
-create table t_corrupted1 (a varchar(100), key(a)) engine=maria;
+create table t_corrupted1 (a varchar(100), key(a)) engine=aria;
insert into t_corrupted1 select (rand()) from t2;
flush table t_corrupted1;
* copied t_corrupted1 for comparison
@@ -136,7 +136,7 @@ ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t_corrupted1 extended;
Table Op Msg_type Msg_text
-mysqltest.t_corrupted1 check warning Table is marked as crashed and last repair failed
+mysqltest.t_corrupted1 check warning Last repair was aborted before finishing
mysqltest.t_corrupted1 check status OK
* testing that checksum after recovery is as expected
Checksum-check
diff --git a/mysql-test/suite/maria/r/maria-recovery3.result b/mysql-test/suite/maria/r/maria-recovery3.result
index 118ec537901..4ce52425204 100644
--- a/mysql-test/suite/maria/r/maria-recovery3.result
+++ b/mysql-test/suite/maria/r/maria-recovery3.result
@@ -1,20 +1,20 @@
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
drop database if exists mysqltest;
create database mysqltest;
use mysqltest;
* shut down mysqld, removed logs, restarted it
* TEST of Checkpoint between writing the commit log record and committing in trnman
-create table t1(a int primary key) engine=maria;
+create table t1(a int primary key) engine=aria;
insert into t1 values(1);
flush table t1;
* copied t1 for comparison
set session debug="+d,maria_sleep_in_commit";
insert into t1 values(2);
-set global maria_checkpoint_interval=1000;
+set global aria_checkpoint_interval=1000;
delete from t1 where a=2;
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* recovery happens
check table t1 extended;
@@ -29,11 +29,11 @@ drop table t1;
CREATE TABLE `t1` (
`blob` blob,
`blob_key` blob
-) ENGINE=maria ROW_FORMAT=page
+) ENGINE=aria ROW_FORMAT=page
;
* copied t1 for feeding_recovery
* compared t1 to old version
-set global maria_checkpoint_interval=0;
+set global aria_checkpoint_interval=0;
INSERT INTO `t1` VALUES (NULL,repeat('A',5198));
INSERT INTO `t1` VALUES (NULL,repeat('B',65535));
INSERT INTO `t1` VALUES (repeat('K',5198),repeat('L',2325));
@@ -50,7 +50,7 @@ flush table t1;
* compared t1 to old version
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
ERROR HY000: Lost connection to MySQL server during query
* copied t1 back for feeding_recovery
* recovery happens
@@ -63,9 +63,9 @@ ok
* compared t1 to old version
use mysqltest;
drop table t1;
-create table t1 engine=maria select 1;
+create table t1 engine=aria select 1;
* copied t1 for feeding_recovery
-set global maria_checkpoint_interval=0;
+set global aria_checkpoint_interval=0;
insert into t1 values(2);
truncate table t1;
flush table t1;
diff --git a/mysql-test/suite/maria/r/maria.result b/mysql-test/suite/maria/r/maria.result
index 49f3bbcd07a..f6e3777a0b6 100644
--- a/mysql-test/suite/maria/r/maria.result
+++ b/mysql-test/suite/maria/r/maria.result
@@ -1,10 +1,10 @@
-select * from INFORMATION_SCHEMA.ENGINES where ENGINE="MARIA";
+select * from INFORMATION_SCHEMA.ENGINES where ENGINE="ARIA";
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
-MARIA YES Crash-safe tables with MyISAM heritage YES NO NO
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_page_checksum=0;
-set global maria_log_file_size=4294967295;
+Aria YES Crash-safe tables with MyISAM heritage YES NO NO
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_page_checksum=0;
+set global aria_log_file_size=4294967295;
drop table if exists t1,t2;
drop view if exists v1;
SET SQL_WARNINGS=1;
@@ -702,9 +702,9 @@ checksum table t1;
Table Checksum
test.t1 4183529555
drop table t1;
-show variables like 'maria_stats_method';
+show variables like 'aria_stats_method';
Variable_name Value
-maria_stats_method nulls_unequal
+aria_stats_method nulls_unequal
create table t1 (a int, key(a));
insert into t1 values (0),(1),(2),(3),(4);
insert into t1 select NULL from t1;
@@ -722,10 +722,10 @@ test.t1 check status OK
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 a 1 a A 10 NULL NULL YES BTREE
-set maria_stats_method=nulls_equal;
-show variables like 'maria_stats_method';
+set aria_stats_method=nulls_equal;
+show variables like 'aria_stats_method';
Variable_name Value
-maria_stats_method nulls_equal
+aria_stats_method nulls_equal
insert into t1 values (11);
delete from t1 where a=11;
analyze table t1;
@@ -742,10 +742,10 @@ test.t1 check status OK
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 a 1 a A 5 NULL NULL YES BTREE
-set maria_stats_method=DEFAULT;
-show variables like 'maria_stats_method';
+set aria_stats_method=DEFAULT;
+show variables like 'aria_stats_method';
Variable_name Value
-maria_stats_method nulls_unequal
+aria_stats_method nulls_unequal
insert into t1 values (11);
delete from t1 where a=11;
analyze table t1;
@@ -763,10 +763,10 @@ show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 a 1 a A 10 NULL NULL YES BTREE
drop table t1;
-set maria_stats_method=nulls_ignored;
-show variables like 'maria_stats_method';
+set aria_stats_method=nulls_ignored;
+show variables like 'aria_stats_method';
Variable_name Value
-maria_stats_method nulls_ignored
+aria_stats_method nulls_ignored
create table t1 (
a char(3), b char(4), c char(5), d char(6),
key(a,b,c,d)
@@ -794,7 +794,7 @@ t1 1 a 1 a A 0 NULL NULL YES BTREE
t1 1 a 2 b A 0 NULL NULL YES BTREE
t1 1 a 3 c A 0 NULL NULL YES BTREE
t1 1 a 4 d A 0 NULL NULL YES BTREE
-set maria_stats_method=DEFAULT;
+set aria_stats_method=DEFAULT;
drop table t1;
create table t1(
cip INT NOT NULL,
@@ -819,7 +819,7 @@ id2 int not null default '0',
t text not null,
primary key (id1),
key x (id2, t(32))
-) engine=maria;
+) engine=aria;
insert into t1 (id2, t) values
(10, 'abc'), (10, 'abc'), (10, 'abc'),
(20, 'abc'), (20, 'abc'), (20, 'def'),
@@ -852,10 +852,10 @@ a b
xxxxxxxxx bbbbbb
xxxxxxxxx bbbbbb
DROP TABLE t1;
-SET @@maria_repair_threads=2;
-SHOW VARIABLES LIKE 'maria_repair%';
+SET @@aria_repair_threads=2;
+SHOW VARIABLES LIKE 'aria_repair%';
Variable_name Value
-maria_repair_threads 2
+aria_repair_threads 2
CREATE TABLE t1 (
`_id` int(11) NOT NULL default '0',
`url` text,
@@ -897,7 +897,7 @@ _id
DELETE FROM t1 WHERE _id < 8;
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 2 # # # # 0 # # # # # #
+t1 Aria 10 Page 2 # # # # 0 # # # # # #
CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
@@ -909,7 +909,7 @@ Table Op Msg_type Msg_text
test.t1 check status OK
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 2 # # # # 0 # # # # # #
+t1 Aria 10 Page 2 # # # # 0 # # # # # #
SELECT _id FROM t1;
_id
8
@@ -956,7 +956,7 @@ _id
DELETE FROM t1 WHERE _id < 8;
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 2 # # # # 0 # # # # # #
+t1 Aria 10 Page 2 # # # # 0 # # # # # #
CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
@@ -968,16 +968,16 @@ Table Op Msg_type Msg_text
test.t1 check status OK
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 2 # # # # 0 # # # # # #
+t1 Aria 10 Page 2 # # # # 0 # # # # # #
SELECT _id FROM t1;
_id
8
9
DROP TABLE t1;
-SET @@maria_repair_threads=1;
-SHOW VARIABLES LIKE 'maria_repair%';
+SET @@aria_repair_threads=1;
+SHOW VARIABLES LIKE 'aria_repair%';
Variable_name Value
-maria_repair_threads 1
+aria_repair_threads 1
drop table if exists t1,t2,t3;
--- Testing varchar ---
--- Testing varchar ---
@@ -997,7 +997,7 @@ t1 CREATE TABLE `t1` (
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
`t` text
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
create table t2 like t1;
show create table t2;
Table Create Table
@@ -1005,7 +1005,7 @@ t2 CREATE TABLE `t2` (
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
`t` text
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
create table t3 select * from t1;
show create table t3;
Table Create Table
@@ -1013,7 +1013,7 @@ t3 CREATE TABLE `t3` (
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL,
`t` text
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
alter table t1 modify c varchar(10);
show create table t1;
Table Create Table
@@ -1021,7 +1021,7 @@ t1 CREATE TABLE `t1` (
`v` varchar(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
`t` text
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
alter table t1 modify v char(10);
show create table t1;
Table Create Table
@@ -1029,7 +1029,7 @@ t1 CREATE TABLE `t1` (
`v` char(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
`t` text
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
alter table t1 modify t varchar(10);
Warnings:
Note 1265 Data truncated for column 't' at row 2
@@ -1039,7 +1039,7 @@ t1 CREATE TABLE `t1` (
`v` char(10) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
`t` varchar(10) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
select concat('*',v,'*',c,'*',t,'*') from t1;
concat('*',v,'*',c,'*',t,'*')
*+*+*+ *
@@ -1055,7 +1055,7 @@ t1 CREATE TABLE `t1` (
KEY `v` (`v`),
KEY `c` (`c`),
KEY `t` (`t`(10))
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
select count(*) from t1;
count(*)
270
@@ -1274,7 +1274,7 @@ t1 CREATE TABLE `t1` (
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
select count(*) from t1 where v='a';
count(*)
10
@@ -1354,7 +1354,7 @@ t1 CREATE TABLE `t1` (
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`(30))
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
select count(*) from t1 where v='a';
count(*)
10
@@ -1434,7 +1434,7 @@ t1 CREATE TABLE `t1` (
KEY `c` (`c`),
KEY `t` (`t`(10)),
KEY `v` (`v`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
select v,count(*) from t1 group by v limit 10;
v count(*)
a 1
@@ -1512,14 +1512,14 @@ t1 CREATE TABLE `t1` (
KEY `v` (`v`(5)),
KEY `c` (`c`(5)),
KEY `t` (`t`(5))
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (v char(10) character set utf8);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`v` char(10) CHARACTER SET utf8 DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (v varchar(10), c char(10)) row_format=fixed;
show create table t1;
@@ -1527,7 +1527,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`v` varchar(10) DEFAULT NULL,
`c` char(10) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED
insert into t1 values('a','a'),('a ','a ');
select concat('*',v,'*',c,'*') from t1;
concat('*',v,'*',c,'*')
@@ -1560,7 +1560,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`v` mediumtext
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (v varchar(65530) character set utf8);
Warnings:
@@ -1569,7 +1569,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`v` mediumtext CHARACTER SET utf8
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (v varchar(65535));
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
@@ -1696,32 +1696,32 @@ DROP TABLE t1;
CREATE TABLE t1 (c1 INT, c2 INT, UNIQUE INDEX (c1), INDEX (c2));
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 0 # # # 8192 # # # # # # #
+t1 Aria 10 Page 0 # # # 8192 # # # # # # #
INSERT INTO t1 VALUES (1,1);
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 1 # # # 24576 # # # # # # #
+t1 Aria 10 Page 1 # # # 24576 # # # # # # #
ALTER TABLE t1 DISABLE KEYS;
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 1 # # # 24576 # # # # # # #
+t1 Aria 10 Page 1 # # # 24576 # # # # # # #
ALTER TABLE t1 ENABLE KEYS;
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 1 # # # 24576 # # # # # # #
+t1 Aria 10 Page 1 # # # 24576 # # # # # # #
ALTER TABLE t1 DISABLE KEYS;
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 1 # # # 24576 # # # # # # #
+t1 Aria 10 Page 1 # # # 24576 # # # # # # #
ALTER TABLE t1 ENABLE KEYS;
SHOW TABLE STATUS LIKE 't1';
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
-t1 MARIA 10 Page 1 # # # 24576 # # # # # # #
+t1 Aria 10 Page 1 # # # 24576 # # # # # # #
# Enable keys with parallel repair
-SET @@maria_repair_threads=2;
+SET @@aria_repair_threads=2;
ALTER TABLE t1 DISABLE KEYS;
ALTER TABLE t1 ENABLE KEYS;
-SET @@maria_repair_threads=1;
+SET @@aria_repair_threads=1;
CHECK TABLE t1 EXTENDED;
Table Op Msg_type Msg_text
test.t1 check status OK
@@ -1748,7 +1748,7 @@ id ref
3 2
4 5
DROP TABLE t1, t2;
-CREATE TABLE t1 (a INT) ENGINE=MARIA CHECKSUM=1 ROW_FORMAT=DYNAMIC;
+CREATE TABLE t1 (a INT) ENGINE=ARIA CHECKSUM=1 ROW_FORMAT=DYNAMIC;
INSERT INTO t1 VALUES (0);
UPDATE t1 SET a=1;
SELECT a FROM t1;
@@ -1777,7 +1777,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, key `a` (a) key_block_size=2048);
show create table t1;
@@ -1785,7 +1785,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a varchar(2048), key `a` (a));
Warnings:
@@ -1795,7 +1795,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(2048) DEFAULT NULL,
KEY `a` (`a`(1208))
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1024);
Warnings:
@@ -1805,7 +1805,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(2048) DEFAULT NULL,
KEY `a` (`a`(1208)) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024;
Warnings:
@@ -1817,7 +1817,7 @@ t1 CREATE TABLE `t1` (
`b` varchar(2048) DEFAULT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=1024
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=1024
alter table t1 key_block_size=2048;
show create table t1;
Table Create Table
@@ -1826,7 +1826,7 @@ t1 CREATE TABLE `t1` (
`b` varchar(2048) DEFAULT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
alter table t1 add c int, add key (c);
show create table t1;
Table Create Table
@@ -1837,7 +1837,7 @@ t1 CREATE TABLE `t1` (
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192,
KEY `c` (`c`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
alter table t1 key_block_size=0;
alter table t1 add d int, add key (d);
show create table t1;
@@ -1851,7 +1851,7 @@ t1 CREATE TABLE `t1` (
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192,
KEY `c` (`c`) KEY_BLOCK_SIZE=8192,
KEY `d` (`d`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192;
Warnings:
@@ -1863,7 +1863,7 @@ t1 CREATE TABLE `t1` (
`b` varchar(2048) DEFAULT NULL,
KEY `a` (`a`),
KEY `b` (`b`(1208))
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
drop table t1;
create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192;
Warnings:
@@ -1875,7 +1875,7 @@ t1 CREATE TABLE `t1` (
`b` varchar(2048) DEFAULT NULL,
KEY `a` (`a`),
KEY `b` (`b`(1208))
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
drop table t1;
create table t1 (a int not null, b int, key (a) key_block_size=1024, key(b) key_block_size=8192) key_block_size=16384;
show create table t1;
@@ -1885,7 +1885,7 @@ t1 CREATE TABLE `t1` (
`b` int(11) DEFAULT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
KEY `b` (`b`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=16384
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=16384
drop table t1;
create table t1 (a int not null, key `a` (a) key_block_size=512);
show create table t1;
@@ -1893,7 +1893,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
Warnings:
@@ -1903,7 +1903,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(2048) DEFAULT NULL,
KEY `a` (`a`(1208)) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, key `a` (a) key_block_size=1025);
show create table t1;
@@ -1911,7 +1911,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, key key_block_size=1024 (a));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1024 (a))' at line 1
@@ -1965,7 +1965,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1)
-) ENGINE=maria;
+) ENGINE=aria;
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
SELECT COUNT(*) FROM t1;
COUNT(*)
@@ -1986,7 +1986,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1)
-) ENGINE=maria;
+) ENGINE=aria;
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
SELECT COUNT(*) FROM t1;
COUNT(*)
@@ -2007,7 +2007,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1)
-) ENGINE=maria;
+) ENGINE=aria;
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
INSERT INTO t1 VALUES('b', 'b');
INSERT INTO t1 VALUES('c', 'b');
@@ -2026,13 +2026,13 @@ CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1),
KEY (c1)
-) ENGINE=maria;
+) ENGINE=aria;
# Insert 100 rows. Query log disabled.
UPDATE t1 SET c1=REPEAT("a",128) LIMIT 90;
SELECT COUNT(*) FROM t1;
COUNT(*)
100
-ALTER TABLE t1 ENGINE=maria;
+ALTER TABLE t1 ENGINE=aria;
SELECT COUNT(*) FROM t1;
COUNT(*)
100
@@ -2046,7 +2046,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
SELECT COUNT(*) FROM t1;
COUNT(*)
@@ -2067,7 +2067,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
SELECT COUNT(*) FROM t1;
COUNT(*)
@@ -2088,7 +2088,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
INSERT INTO t1 VALUES('b', 'b');
INSERT INTO t1 VALUES('c', 'b');
@@ -2107,13 +2107,13 @@ CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1),
KEY (c1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
# Insert 100 rows. Query log disabled.
UPDATE t1 SET c1=REPEAT(_utf8 x'e0ae85',43) LIMIT 90;
SELECT COUNT(*) FROM t1;
COUNT(*)
100
-ALTER TABLE t1 ENGINE=maria;
+ALTER TABLE t1 ENGINE=aria;
SELECT COUNT(*) FROM t1;
COUNT(*)
100
@@ -2130,8 +2130,8 @@ c2 CHAR(10) DEFAULT NULL,
c3 VARCHAR(10) NOT NULL,
KEY (c1),
KEY (c2)
-) ENGINE=maria DEFAULT CHARSET=utf8 PACK_KEYS=0;
-MARIA file: MYSQLD_DATADIR/test/t1
+) ENGINE=aria DEFAULT CHARSET=utf8 PACK_KEYS=0;
+Aria file: MYSQLD_DATADIR/test/t1
Record format: Block
Crashsafe: yes
Character set: utf8_general_ci (33)
@@ -2139,7 +2139,7 @@ Data records: 0 Deleted blocks: 0
Block_size: 8192
Recordlength: 99
-table description:
+Table description:
Key Start Len Index Type
1 2 30 multip. varchar
2 33 30 multip. char NULL
@@ -2150,14 +2150,14 @@ Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 TRANSACTIONAL=1
drop table t1;
-CREATE TABLE t1 (line LINESTRING NOT NULL) engine=maria;
+CREATE TABLE t1 (line LINESTRING NOT NULL) engine=aria;
INSERT INTO t1 VALUES (GeomFromText("POINT(0 0)"));
checksum table t1;
Table Checksum
test.t1 326284887
-CREATE TABLE t2 (line LINESTRING NOT NULL) engine=maria;
+CREATE TABLE t2 (line LINESTRING NOT NULL) engine=aria;
INSERT INTO t2 VALUES (GeomFromText("POINT(0 0)"));
checksum table t2;
Table Checksum
@@ -2168,7 +2168,7 @@ Table Checksum
test.t3 326284887
drop table t1,t2,t3;
End of 5.1 tests
-create table t2(a varchar(255),key(a))engine=maria row_format=dynamic transactional=0;
+create table t2(a varchar(255),key(a))engine=aria row_format=dynamic transactional=0;
insert into t2 values (repeat('o',124)), (repeat('h',226)), (repeat('i',236)),
(repeat('l',234)), (repeat('b',13)), (repeat('g',236)), (repeat('y',205)),
(repeat('c',99)), (repeat('g',145)), (repeat('o',131)), (repeat('e',63)),
@@ -2380,7 +2380,7 @@ col172 tinyint(1) DEFAULT NULL,
col173 tinytext,
col174 decimal(10,0) DEFAULT NULL,
col175 double DEFAULT NULL
-) engine=maria;
+) engine=aria;
insert ignore into t1 set
col10=abs(28449) % 2,
col11='1973',
@@ -2505,7 +2505,7 @@ check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
-create table t1 (a char(200) primary key, b int default 12345) engine=maria;
+create table t1 (a char(200) primary key, b int default 12345) engine=aria;
insert t1 (a) values (repeat('0', 200));
insert t1 (a) values (repeat('1', 200)), (repeat('2', 200)), (repeat('3', 200)),
(repeat('4', 200)), (repeat('5', 200)), (repeat('6', 200)), (repeat('7', 200)),
@@ -2525,14 +2525,14 @@ b
12345
12345
drop table t1;
-create table t1 (a int) engine=maria transactional=1;
+create table t1 (a int) engine=aria transactional=1;
insert into t1 values (1);
lock table t1 write concurrent;
delete from t1;
ERROR 42000: The storage engine for the table doesn't support DELETE in WRITE CONCURRENT
drop table t1;
create table t1 (p int primary key, i int, a char(10), key k1(i), key k2(a))
-engine maria;
+engine aria;
insert into t1 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
insert into t1 values (5, 3, 'yyyy'), (6, 3, 'yyyy'), (7, 0, NULL),
@@ -2563,8 +2563,8 @@ check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
-create table t1 (f1 int unique, f2 int) engine=maria;
-create table t2 (f3 int, f4 int) engine=maria;
+create table t1 (f1 int unique, f2 int) engine=aria;
+create table t2 (f3 int, f4 int) engine=aria;
create view v1 as select * from t1, t2 where f1= f3;
insert into t1 values (1,11), (2,22);
insert into v1 (f1) values (3) on duplicate key update f1= f3 + 10;
@@ -2573,7 +2573,7 @@ insert into v1 (f1) values (3) on duplicate key update f1= f3 + 10;
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
drop table t1,t2;
drop view v1;
-CREATE TABLE t1 (id int, c varchar(10)) engine=maria;
+CREATE TABLE t1 (id int, c varchar(10)) engine=aria;
INSERT INTO t1 VALUES (1,"1");
ALTER TABLE t1 CHANGE c d varchar(10);
affected rows: 0
@@ -2590,7 +2590,7 @@ lock table t1 read, t2 read;
flush tables with read lock;
unlock tables;
drop table t1, t2;
-create table t1(a int primary key, b blob, c blob) engine=maria;
+create table t1(a int primary key, b blob, c blob) engine=aria;
insert into t1 values(1,repeat('a',100), repeat('b',657860));
Warnings:
Warning 1265 Data truncated for column 'c' at row 1
@@ -2600,3 +2600,27 @@ check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
+Create table t1 (a int) engine="aria";
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+drop table t1;
+CREATE TABLE t1 ( f1 DOUBLE , f2 DOUBLE , f3 DOUBLE , f4 DOUBLE , v3 DOUBLE , v4 DOUBLE , KEY ( v3 ) , KEY ( v4 ) ) engine=maria;
+REPLACE t1 ( f2 , f1 ) VALUES ( f2 , 56 ) ;
+INSERT t1 ( f1 , f2 , f3 , f4 ) VALUES ( 0 , f2 , 8 , f3 ) ;
+INSERT t1 ( f4 , f2 ) VALUES ( 4 , 92 ) ;
+DELETE FROM t1 WHERE v3 = 173 OR v4 = 9 ;
+drop table t1;
+CREATE TABLE t1 (
+f1 CHAR(255) BINARY ,
+f2 CHAR(255) BINARY NOT NULL DEFAULT '0',
+f3 CHAR(255) BINARY NOT NULL ,
+f4 CHAR(255) BINARY NOT NULL DEFAULT '0' ,
+v3 CHAR(255) BINARY AS ( ( f1 NOT LIKE '%' ) ) PERSISTENT,
+KEY (v3)
+) ENGINE=Maria;
+INSERT INTO t1 ( f1 , f2 , f3 , f4 ) SELECT f1 , f4 , f1 , f4 FROM t1;
+DELETE FROM t1;
+drop table t1;
diff --git a/mysql-test/suite/maria/r/maria2.result b/mysql-test/suite/maria/r/maria2.result
index e721ceaafae..f145a4884e7 100644
--- a/mysql-test/suite/maria/r/maria2.result
+++ b/mysql-test/suite/maria/r/maria2.result
@@ -3,7 +3,7 @@ CREATE TABLE t1 (
line BLOB,
kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
name VARCHAR(32)
-) transactional=0 row_format=page engine=maria;
+) transactional=0 row_format=page engine=aria;
select count(*) from t1;
count(*)
810
@@ -17,8 +17,8 @@ check table t1 extended;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
-create table t1 (i int) engine=maria;
-create table t2 (j int) engine=maria;
+create table t1 (i int) engine=aria;
+create table t2 (j int) engine=aria;
lock table t1 write, t2 read;
alter table t1 modify i int default 1;
insert into t1 values (2);
@@ -30,7 +30,7 @@ select * from t1;
i
2
drop table t1,t2;
-create table t1(id int, s char(1), unique(s)) engine=maria;
+create table t1(id int, s char(1), unique(s)) engine=aria;
insert into t1 values(1,"a") on duplicate key update t1.id=t1.id+1;
insert into t1 values(1,"a") on duplicate key update t1.id=t1.id+1;
insert into t1 select 1,"a" on duplicate key update t1.id=t1.id+1;
@@ -42,7 +42,7 @@ select * from t1;
id s
1 a
drop table t1;
-create table t1 (pk int primary key, apk int unique, data int) engine=maria;
+create table t1 (pk int primary key, apk int unique, data int) engine=aria;
insert into t1 values (1, 1, 1), (4, 4, 4), (6, 6, 6);
load data concurrent infile '../../std_data/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (pk, apk);
select * from t1 order by pk;
diff --git a/mysql-test/suite/maria/r/maria3.result b/mysql-test/suite/maria/r/maria3.result
index ff609eb21da..2311669640b 100644
--- a/mysql-test/suite/maria/r/maria3.result
+++ b/mysql-test/suite/maria/r/maria3.result
@@ -1,10 +1,10 @@
-select * from INFORMATION_SCHEMA.ENGINES where ENGINE="MARIA";
+select * from INFORMATION_SCHEMA.ENGINES where ENGINE="ARIA";
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
-MARIA YES Crash-safe tables with MyISAM heritage YES NO NO
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_page_checksum=0;
-set global maria_log_file_size=4294967295;
+Aria YES Crash-safe tables with MyISAM heritage YES NO NO
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_page_checksum=0;
+set global aria_log_file_size=4294967295;
drop table if exists t1,t2;
SET SQL_WARNINGS=1;
create table t1 (a int not null, key `a` (a) key_block_size=512);
@@ -13,7 +13,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
Warnings:
@@ -23,7 +23,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` varchar(2048) DEFAULT NULL,
KEY `a` (`a`(1208)) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, key `a` (a) key_block_size=1025);
show create table t1;
@@ -31,7 +31,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL,
KEY `a` (`a`) KEY_BLOCK_SIZE=8192
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
drop table t1;
create table t1 (a int not null, key key_block_size=1024 (a));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1024 (a))' at line 1
@@ -87,14 +87,14 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 TRANSACTIONAL=0
drop table t1;
create table t1 (a int) row_format=dynamic transactional=0;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC TRANSACTIONAL=0
drop table t1;
create table t1 (a int) row_format=dynamic transactional=1;
Warnings:
@@ -103,13 +103,13 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
alter table t1 row_format=PAGE;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
alter table t1 row_format=DYNAMIC;
Warnings:
Note 1478 Row format set to PAGE because of TRANSACTIONAL=1 option
@@ -117,46 +117,46 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
alter table t1 transactional=0;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC TRANSACTIONAL=0
alter table t1 row_format=DYNAMIC;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC TRANSACTIONAL=0
drop table t1;
create table t1 (a int) row_format=PAGE;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE
drop table t1;
create table t1 (a int) row_format=PAGE TRANSACTIONAL=DEFAULT;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE
alter table t1 row_format=DYNAMIC;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=DYNAMIC
drop table t1;
create table t1 (a int) transactional=0 row_format=FIXED;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
alter table t1 transactional=1;
Warnings:
Note 1478 Row format set to PAGE because of TRANSACTIONAL=1 option
@@ -164,20 +164,20 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
alter table t1 transactional=0;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
drop table t1;
create table t1 (a int) transactional=0 row_format=FIXED;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
alter table t1 transactional=1;
Warnings:
Note 1478 Row format set to PAGE because of TRANSACTIONAL=1 option
@@ -185,20 +185,20 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=PAGE TRANSACTIONAL=1
alter table t1 transactional=0;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 ROW_FORMAT=FIXED TRANSACTIONAL=0
drop table t1;
create table `t1` (
t1_name varchar(255) default null,
t1_id int(10) unsigned not null auto_increment,
key (t1_name),
primary key (t1_id)
-) engine=maria auto_increment = 1000 default charset=latin1;
+) engine=aria auto_increment = 1000 default charset=latin1;
lock tables t1 write;
INSERT INTO `t1` VALUES ('bla',1000),('bla',1001),('bla',1002);
check table t1;
@@ -226,7 +226,7 @@ check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
-CREATE TABLE t1 (a int, b int, v varchar(60000)) checksum=1 engine=maria;
+CREATE TABLE t1 (a int, b int, v varchar(60000)) checksum=1 engine=aria;
insert into t1 values (1,1,"aaa"),(1,2,null);
checksum table t1;
Table Checksum
@@ -278,9 +278,9 @@ KEY (umedium),
KEY (ulong),
KEY (ulonglong,ulong),
KEY (options,flags)
-) engine=maria;
+) engine=aria;
insert into t1 values (10,1,1,1,1,1,1,1,1,1,1,1,1,1,NULL,0,0,0,1,1,1,1,'one','one');
-create table t2 (primary key (auto)) engine=maria row_format=page select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
+create table t2 (primary key (auto)) engine=aria row_format=page select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
check table t1,t2;
Table Op Msg_type Msg_text
test.t1 check status OK
@@ -289,7 +289,7 @@ select t1,t2,length(t3),length(t4),length(t5),length(t6),t7,t8 from t2;
t1 t2 length(t3) length(t4) length(t5) length(t6) t7 t8
1 a 256 256 4096 4096
drop table t2;
-create table t2 (primary key (auto)) engine=maria row_format=dynamic select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
+create table t2 (primary key (auto)) engine=aria row_format=dynamic select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
check table t2;
Table Op Msg_type Msg_text
test.t2 check status OK
@@ -301,35 +301,35 @@ check table t1 extended;
Table Op Msg_type Msg_text
test.t1 check status OK
drop table t1;
-select lower(variable_name) as Variable_name, Variable_value as Value from information_schema.session_variables where variable_name like "maria%" and variable_name not like "maria_used_for_temp_tables" order by 1;
+select lower(variable_name) as Variable_name, Variable_value as Value from information_schema.session_variables where variable_name like "aria%" and variable_name not like "aria_used_for_temp_tables" order by 1;
Variable_name Value
-maria_block_size 8192
-maria_checkpoint_interval 30
-maria_force_start_after_recovery_failures 0
-maria_group_commit none
-maria_group_commit_interval 0
-maria_log_file_size 4294959104
-maria_log_purge_type immediate
-maria_max_sort_file_size 9223372036853727232
-maria_pagecache_age_threshold 300
-maria_pagecache_buffer_size 8384512
-maria_pagecache_division_limit 100
-maria_page_checksum OFF
-maria_recover OFF
-maria_repair_threads 1
-maria_sort_buffer_size 8388608
-maria_stats_method nulls_unequal
-maria_sync_log_dir NEWFILE
-show status like 'maria%';
+aria_block_size 8192
+aria_checkpoint_interval 30
+aria_force_start_after_recovery_failures 0
+aria_group_commit none
+aria_group_commit_interval 0
+aria_log_file_size 4294959104
+aria_log_purge_type immediate
+aria_max_sort_file_size 9223372036853727232
+aria_pagecache_age_threshold 300
+aria_pagecache_buffer_size 134213632
+aria_pagecache_division_limit 100
+aria_page_checksum OFF
+aria_recover NORMAL
+aria_repair_threads 1
+aria_sort_buffer_size 134217728
+aria_stats_method nulls_unequal
+aria_sync_log_dir NEWFILE
+show status like 'aria%';
Variable_name Value
-Maria_pagecache_blocks_not_flushed #
-Maria_pagecache_blocks_unused #
-Maria_pagecache_blocks_used #
-Maria_pagecache_read_requests #
-Maria_pagecache_reads #
-Maria_pagecache_write_requests #
-Maria_pagecache_writes #
-Maria_transaction_log_syncs #
+Aria_pagecache_blocks_not_flushed #
+Aria_pagecache_blocks_unused #
+Aria_pagecache_blocks_used #
+Aria_pagecache_read_requests #
+Aria_pagecache_reads #
+Aria_pagecache_write_requests #
+Aria_pagecache_writes #
+Aria_transaction_log_syncs #
create table t1 (b char(0));
insert into t1 values(NULL),("");
select length(b) from t1;
@@ -385,15 +385,15 @@ drop table t1;
CREATE TABLE t1 (col1 int, s1 char(16) DEFAULT NULL, s2 char(16) DEFAULT NULL, KEY (s1,s2));
insert into t1 (col1) values(0);
drop table t1;
-set global maria_page_checksum=1;
+set global aria_page_checksum=1;
create table t1 (a int);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
drop table t1;
-set global maria_log_file_size=4294967296;
+set global aria_log_file_size=4294967296;
Warnings:
Warning 1292 Truncated incorrect log_file_size value: '4294967296'
create table t1 (a int not null);
@@ -415,7 +415,7 @@ create table t3 select * from t1, t2;
ERROR 42S21: Duplicate column name 'c'
create table t3 select t1.c AS c1, t2.c AS c2,1 as "const" from t1, t2;
drop table t1, t2, t3;
-create table t1 (t datetime) engine=maria;
+create table t1 (t datetime) engine=aria;
insert into t1 values (101),(691231),(700101),(991231),(10000101),(99991231),(101000000),(691231000000),(700101000000),(991231235959),(10000101000000),(99991231235959),(20030100000000),(20030000000000);
select * from t1;
t
@@ -500,38 +500,38 @@ n c
301 c
302 d
drop table t1;
-create table t1 (n int not null, c char(1)) engine=maria;
+create table t1 (n int not null, c char(1)) engine=aria;
alter table t1 engine=myisam;
-alter table t1 engine=maria;
+alter table t1 engine=aria;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
drop table t1;
-create table t1 (n int not null, c char(1)) engine=maria transactional=1;
+create table t1 (n int not null, c char(1)) engine=aria transactional=1;
alter table t1 engine=myisam;
Warnings:
Error 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
-alter table t1 engine=maria;
+alter table t1 engine=aria;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
drop table t1;
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
Warnings:
Error 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
-alter table t1 engine=maria;
+alter table t1 engine=aria;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`n` int(11) NOT NULL,
`c` char(1) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
drop table t1;
create table t1 (a int, key(a)) transactional=0;
insert into t1 values (0),(1),(2),(3),(4);
@@ -552,6 +552,30 @@ select count(*) from t1 where a >= 4;
count(*)
1
drop table t1, t2;
+create temporary table t1 (a int, key(a)) transactional=0 row_format=page;
+create temporary table t2 (a int, key(a)) transactional=0 row_format=page;
+insert into t1 values (0),(1),(2),(3),(4);
+insert into t2 select * from t1;
+insert into t1 select NULL from t2;
+select count(*) from t1;
+count(*)
+10
+select count(*) from t1 where a >= 4;
+count(*)
+1
+drop table t1, t2;
+create temporary table t1 (a int, key(a)) transactional=0 row_format=fixed;
+create temporary table t2 (a int, key(a)) transactional=0 row_format=dynamic;
+insert into t1 values (0),(1),(2),(3),(4);
+insert into t2 select * from t1;
+insert into t1 select NULL from t2;
+select count(*) from t1;
+count(*)
+10
+select count(*) from t1 where a >= 4;
+count(*)
+1
+drop table t1, t2;
create table t1 (i int auto_increment not null primary key) transactional=0;
check table t1 extended;
Table Op Msg_type Msg_text
@@ -579,17 +603,17 @@ SELECT a FROM t1 WHERE MATCH a AGAINST ('+city (of)*' IN BOOLEAN MODE);
a
City Of God
DROP TABLE t1;
-create table t1(a int) engine=maria transactional=1;
+create table t1(a int) engine=aria transactional=1;
select CREATE_OPTIONS from information_schema.TABLES where
TABLE_SCHEMA='test' and TABLE_NAME='t1';
CREATE_OPTIONS
transactional=1
drop table t1;
-create table t1 (a int, unique(a)) engine=maria transactional=1;
+create table t1 (a int, unique(a)) engine=aria transactional=1;
insert into t1 values(1);
insert into t1 values(2),(2);
ERROR 23000: Duplicate entry '2' for key 'a'
-create table t2 (a int, unique(a)) engine=maria transactional=0 row_format=dynamic;
+create table t2 (a int, unique(a)) engine=aria transactional=0 row_format=dynamic;
insert into t2 values(1);
insert into t2 values(2),(2);
ERROR 23000: Duplicate entry '2' for key 'a'
diff --git a/mysql-test/suite/maria/r/maria_notembedded.result b/mysql-test/suite/maria/r/maria_notembedded.result
index 77325d24421..f9d8bbfedc8 100644
--- a/mysql-test/suite/maria/r/maria_notembedded.result
+++ b/mysql-test/suite/maria/r/maria_notembedded.result
@@ -1,4 +1,4 @@
-set session storage_engine=maria;
+set session storage_engine=aria;
create table t1 (a int) row_format=page;
insert delayed into t1 values(1);
ERROR HY000: DELAYED option not supported for table 't1'
diff --git a/mysql-test/suite/maria/r/maria_partition.result b/mysql-test/suite/maria/r/maria_partition.result
index e501af7ec4a..372230c0b71 100644
--- a/mysql-test/suite/maria/r/maria_partition.result
+++ b/mysql-test/suite/maria/r/maria_partition.result
@@ -1,6 +1,6 @@
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_page_checksum=0;
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_page_checksum=0;
drop table if exists t1,t2;
drop view if exists v1;
SET SQL_WARNINGS=1;
@@ -9,8 +9,8 @@ insert into t1 values (1);
alter table t1 partition by list (s1) (partition p1 values in (2));
ERROR HY000: Table has no partition for value 1
drop table t1;
-create table t2(a blob) engine=maria;
-create table t1(a int primary key) engine=maria;
+create table t2(a blob) engine=aria;
+create table t1(a int primary key) engine=aria;
insert into t2 values ('foo'),('bar');
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
a a
diff --git a/mysql-test/suite/maria/r/maria_showlog_error.result b/mysql-test/suite/maria/r/maria_showlog_error.result
index b27b4a5b21c..e2434efec28 100644
--- a/mysql-test/suite/maria/r/maria_showlog_error.result
+++ b/mysql-test/suite/maria/r/maria_showlog_error.result
@@ -1,5 +1,5 @@
* shut down mysqld, removed logs, restarted it
-show engine maria logs;
+show engine aria logs;
Type Name Status
-MARIA Size unknown ; maria_log.00000001 can't stat
+Aria Size unknown ; aria_log.00000001 can't stat
* shut down mysqld, removed logs, restarted it
diff --git a/mysql-test/suite/maria/r/optimize.result b/mysql-test/suite/maria/r/optimize.result
new file mode 100644
index 00000000000..9cce55d6199
--- /dev/null
+++ b/mysql-test/suite/maria/r/optimize.result
@@ -0,0 +1,8 @@
+drop table if exists t1;
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+OPTIMIZE TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 optimize status OK
+drop table t1;
diff --git a/mysql-test/suite/maria/r/ps_maria.result b/mysql-test/suite/maria/r/ps_maria.result
index e2dcfc68d46..30f7edb8a99 100644
--- a/mysql-test/suite/maria/r/ps_maria.result
+++ b/mysql-test/suite/maria/r/ps_maria.result
@@ -4,7 +4,7 @@ create table t1
(
a int, b varchar(30),
primary key(a)
-) engine = 'MARIA' ;
+) engine = 'ARIA' ;
create table t9
(
c1 tinyint, c2 smallint, c3 mediumint, c4 int,
@@ -17,7 +17,7 @@ c25 blob, c26 text, c27 mediumblob, c28 mediumtext,
c29 longblob, c30 longtext, c31 enum('one', 'two', 'three'),
c32 set('monday', 'tuesday', 'wednesday'),
primary key(c1)
-) engine = 'MARIA' ;
+) engine = 'ARIA' ;
delete from t1 ;
insert into t1 values (1,'one');
insert into t1 values (2,'two');
@@ -1166,7 +1166,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t9 ALL NULL NULL NULL NULL 2
drop table if exists t2 ;
create table t2 (s varchar(25), fulltext(s)) TRANSACTIONAL= 0
-ENGINE = 'MARIA' ;
+ENGINE = 'ARIA' ;
insert into t2 values ('Gravedigger'), ('Greed'),('Hollow Dogs') ;
commit ;
prepare stmt1 from ' select s from t2 where match (s) against (?) ' ;
@@ -1352,7 +1352,7 @@ create table t2
(
a int, b varchar(30),
primary key(a)
-) engine = 'MARIA' ;
+) engine = 'ARIA' ;
insert into t2(a,b) select a, b from t1 ;
prepare stmt1 from 'update t1 set a=? where b=?
and a in (select ? from t2
@@ -1542,7 +1542,7 @@ execute stmt1 using @arg00, @arg01;
ERROR 23000: Duplicate entry '82' for key 'PRIMARY'
drop table if exists t2 ;
create table t2 (id int auto_increment primary key)
-ENGINE= 'MARIA' ;
+ENGINE= 'ARIA' ;
prepare stmt1 from ' select last_insert_id() ' ;
insert into t2 values (NULL) ;
execute stmt1 ;
diff --git a/mysql-test/suite/maria/suite.pm b/mysql-test/suite/maria/suite.pm
new file mode 100644
index 00000000000..e6efcdca829
--- /dev/null
+++ b/mysql-test/suite/maria/suite.pm
@@ -0,0 +1,8 @@
+package My::Suite::Maria;
+
+@ISA = qw(My::Suite);
+
+return "Need Aria engine" unless $::mysqld_variables{'aria'} eq "ON";
+
+bless { };
+
diff --git a/mysql-test/suite/maria/t/compat_aliases-master.opt b/mysql-test/suite/maria/t/compat_aliases-master.opt
new file mode 100644
index 00000000000..73f18586361
--- /dev/null
+++ b/mysql-test/suite/maria/t/compat_aliases-master.opt
@@ -0,0 +1 @@
+--maria-max-sort-file-size=100M --aria-repair-threads=10000
diff --git a/mysql-test/suite/maria/t/compat_aliases.test b/mysql-test/suite/maria/t/compat_aliases.test
new file mode 100644
index 00000000000..d48128a3041
--- /dev/null
+++ b/mysql-test/suite/maria/t/compat_aliases.test
@@ -0,0 +1,58 @@
+#
+# test for maria* aliases (system variables, status variables,
+# command-line options). They should match aria* variables.
+#
+
+select * from information_schema.plugins where plugin_name like '%aria';
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_variables as maria_vars left join
+ information_schema.session_variables as aria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_status as maria_vars left join
+ information_schema.session_status as aria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_variables as aria_vars left join
+ information_schema.session_variables as maria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_status as aria_vars left join
+ information_schema.session_status as maria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+set @old_checkpoint_interval=@@global.aria_checkpoint_interval;
+set global maria_checkpoint_interval=10;
+select @@global.aria_checkpoint_interval;
+set global maria_checkpoint_interval=@old_checkpoint_interval;
+
+set @old_sort_buffer_size=@@global.maria_sort_buffer_size;
+set global aria_sort_buffer_size=1024;
+select @@global.maria_sort_buffer_size;
+set global aria_sort_buffer_size=@old_sort_buffer_size;
+
+set @old_sort_buffer_size=@@session.maria_sort_buffer_size;
+set session aria_sort_buffer_size=2048;
+select @@session.maria_sort_buffer_size;
+set session aria_sort_buffer_size=@old_sort_buffer_size;
+
+set @old_max_sort_file_size=@@global.maria_max_sort_file_size,
+ @old_repair_threads=@@global.aria_repair_threads;
+set @@global.maria_max_sort_file_size=default, @@global.aria_repair_threads=default;
+--replace_result 4293918720 9223372036853727232
+select @@global.maria_max_sort_file_size, @@global.aria_repair_threads;
+set @@global.aria_max_sort_file_size=@old_max_sort_file_size,
+ @@global.maria_repair_threads=@old_repair_threads;
+
diff --git a/mysql-test/suite/maria/t/group_commit.test b/mysql-test/suite/maria/t/group_commit.test
index e2cace14036..38b2c9d3bf4 100644
--- a/mysql-test/suite/maria/t/group_commit.test
+++ b/mysql-test/suite/maria/t/group_commit.test
@@ -7,8 +7,8 @@ drop table if exists t1;
create table t1 (a int);
-SET GLOBAL maria_group_commit="NONE";
-SET GLOBAL maria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="NONE";
+SET GLOBAL aria_group_commit_interval= 0;
--disable_query_log
let $num = 5000;
while ($num)
@@ -17,8 +17,8 @@ while ($num)
dec $num;
}
--enable_query_log
-SET GLOBAL maria_group_commit="NONE";
-SET GLOBAL maria_group_commit_interval= 100;
+SET GLOBAL aria_group_commit="NONE";
+SET GLOBAL aria_group_commit_interval= 100;
--disable_query_log
let $num = 5000;
while ($num)
@@ -27,8 +27,8 @@ while ($num)
dec $num;
}
--enable_query_log
-SET GLOBAL maria_group_commit="HARD";
-SET GLOBAL maria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="HARD";
+SET GLOBAL aria_group_commit_interval= 0;
--disable_query_log
let $num = 5000;
while ($num)
@@ -37,8 +37,8 @@ while ($num)
dec $num;
}
--enable_query_log
-SET GLOBAL maria_group_commit="HARD";
-SET GLOBAL maria_group_commit_interval= 100;
+SET GLOBAL aria_group_commit="HARD";
+SET GLOBAL aria_group_commit_interval= 100;
--disable_query_log
let $num = 5000;
while ($num)
@@ -47,8 +47,8 @@ while ($num)
dec $num;
}
--enable_query_log
-SET GLOBAL maria_group_commit="SOFT";
-SET GLOBAL maria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="SOFT";
+SET GLOBAL aria_group_commit_interval= 0;
--disable_query_log
let $num = 5000;
while ($num)
@@ -57,8 +57,8 @@ while ($num)
dec $num;
}
--enable_query_log
-SET GLOBAL maria_group_commit="SOFT";
-SET GLOBAL maria_group_commit_interval= 100;
+SET GLOBAL aria_group_commit="SOFT";
+SET GLOBAL aria_group_commit_interval= 100;
--disable_query_log
let $num = 5000;
while ($num)
@@ -67,6 +67,6 @@ while ($num)
dec $num;
}
--enable_query_log
-SET GLOBAL maria_group_commit="NONE";
-SET GLOBAL maria_group_commit_interval= 0;
+SET GLOBAL aria_group_commit="NONE";
+SET GLOBAL aria_group_commit_interval= 0;
drop table t1;
diff --git a/mysql-test/suite/maria/t/maria-autozerofill.test b/mysql-test/suite/maria/t/maria-autozerofill.test
index 45eb39fbc21..2f47d13ba50 100644
--- a/mysql-test/suite/maria/t/maria-autozerofill.test
+++ b/mysql-test/suite/maria/t/maria-autozerofill.test
@@ -1,5 +1,5 @@
# Test to verify that auto-zerofilling happens when a table is
-# imported from a different Maria instance
+# imported from a different Aria instance
# can't restart in embedded
--source include/not_embedded.inc
@@ -20,16 +20,16 @@ connection default;
use mysqltest;
--enable_reconnect
-create table t1(a int) engine=maria;
+create table t1(a int) engine=aria;
insert into t1 values(1);
flush table t1;
# Check that table is not zerofilled, not movable
let $MYSQLD_DATADIR= `select @@datadir`;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= <FILE>;
print grep(/Status:.*(zerofilled|movable)/, @content);
@@ -37,23 +37,23 @@ perl;
close FILE;
EOF
-# this will remove control file, so change the uuid of the Maria
+# this will remove control file, so change the uuid of the Aria
# instance, thus t1 will appear as imported from elsewhere.
-- source include/maria_empty_logs.inc
-disable_ps_protocol; # see maria-recover.test
+disable_ps_protocol; # see aria-recover.test
replace_regex /Table.*t1/t1/ ;
select * from t1;
enable_ps_protocol;
flush table t1;
# Check that table is auto-zerofilled, movable
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= <FILE>;
print grep(/Status:.*zerofilled/, @content);
@@ -61,16 +61,16 @@ perl;
close FILE;
EOF
-# this will attach t1 to the current Maria instance
+# this will attach t1 to the current Aria instance
insert into t1 values(2);
flush table t1;
# Check that table is not zerofilled, not movable
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= <FILE>;
print grep(/Status:.*(zerofilled|movable)/, @content);
diff --git a/mysql-test/suite/maria/t/maria-big.test b/mysql-test/suite/maria/t/maria-big.test
index 612cdbabb81..5b4b6c4defe 100644
--- a/mysql-test/suite/maria/t/maria-big.test
+++ b/mysql-test/suite/maria/t/maria-big.test
@@ -9,7 +9,7 @@ connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
connection root;
enable_info;
-set storage_engine=maria;
+set storage_engine=aria;
disable_warnings;
drop table if exists t1, t2;
enable_warnings;
@@ -68,7 +68,7 @@ drop table t1;
# Set defaults back
--disable_result_log
--disable_query_log
-set global maria_log_file_size=default;
+set global aria_log_file_size=default;
set global max_allowed_packet=default;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria-big2.test b/mysql-test/suite/maria/t/maria-big2.test
index 867ce71d4b5..d138892fe3c 100644
--- a/mysql-test/suite/maria/t/maria-big2.test
+++ b/mysql-test/suite/maria/t/maria-big2.test
@@ -5,7 +5,7 @@
# (CHECK TABLE said Invalid key block position: 15731098820608 key
# block size: 8192 file_length: 425984)
-create table t2(id int,a varchar(255),b varchar(255),key(a))engine=maria row_format=dynamic transactional=0;
+create table t2(id int,a varchar(255),b varchar(255),key(a))engine=aria row_format=dynamic transactional=0;
disable_query_log;
insert into t2(a,b) values ('zmysnptvgzljpaumbdhrzkmbhefugcyhncbl','urecietrsfhgusavxffpdszrfcpdqbwxzvygsuwammwunjhpxanvozwnngnnjbwfenjgosaixpccjyviiutzpxkwiecuprltzrpxvkrjnjqgsneniewbagpvwelajvnckbbkqpaicxor')
diff --git a/mysql-test/suite/maria/t/maria-connect.test b/mysql-test/suite/maria/t/maria-connect.test
index 31b15b1f8f1..9efb5844bc2 100644
--- a/mysql-test/suite/maria/t/maria-connect.test
+++ b/mysql-test/suite/maria/t/maria-connect.test
@@ -6,8 +6,8 @@
-- source include/have_log_bin.inc
let $default=`select @@global.storage_engine`;
-set global storage_engine=maria;
-set session storage_engine=maria;
+set global storage_engine=aria;
+set session storage_engine=aria;
# Initialise
--disable_warnings
@@ -18,7 +18,7 @@ SET SQL_WARNINGS=1;
#
# UNIQUE key test
#
-# as long as maria cannot rollback, binlog should contain both inserts
+# as long as aria cannot rollback, binlog should contain both inserts
#
RESET MASTER;
set binlog_format=statement;
@@ -36,6 +36,6 @@ set binlog_format=default;
--disable_result_log
--disable_query_log
eval set global storage_engine=$default;
-set global maria_log_file_size=default;
+set global aria_log_file_size=default;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria-gis-rtree-dynamic.test b/mysql-test/suite/maria/t/maria-gis-rtree-dynamic.test
index 228998c01c3..166c88cab36 100644
--- a/mysql-test/suite/maria/t/maria-gis-rtree-dynamic.test
+++ b/mysql-test/suite/maria/t/maria-gis-rtree-dynamic.test
@@ -1,7 +1,7 @@
-- source include/have_maria.inc
-- source include/have_geometry.inc
-set storage_engine=maria;
+set storage_engine=aria;
#
# test of rtree (using with spatial data)
diff --git a/mysql-test/suite/maria/t/maria-gis-rtree-trans.test b/mysql-test/suite/maria/t/maria-gis-rtree-trans.test
index f530699c755..ec1573c3e29 100644
--- a/mysql-test/suite/maria/t/maria-gis-rtree-trans.test
+++ b/mysql-test/suite/maria/t/maria-gis-rtree-trans.test
@@ -1,10 +1,10 @@
# Because state.key_root is updated differently between transactional
-# and non-trans tables, we have several maria-gis-rtree-* tests.
+# and non-trans tables, we have several aria-gis-rtree-* tests.
-- source include/have_maria.inc
-- source include/have_geometry.inc
-set storage_engine=maria;
+set storage_engine=aria;
#
# test of rtree (using with spatial data)
diff --git a/mysql-test/suite/maria/t/maria-gis-rtree.test b/mysql-test/suite/maria/t/maria-gis-rtree.test
index 7a3e5634388..beffbfc99fe 100644
--- a/mysql-test/suite/maria/t/maria-gis-rtree.test
+++ b/mysql-test/suite/maria/t/maria-gis-rtree.test
@@ -1,7 +1,7 @@
-- source include/have_maria.inc
-- source include/have_geometry.inc
-set storage_engine=maria;
+set storage_engine=aria;
#
# test of rtree (using with spatial data)
diff --git a/mysql-test/suite/maria/t/maria-mvcc.test b/mysql-test/suite/maria/t/maria-mvcc.test
index 4b6f8a3996d..8be8e2ea630 100644
--- a/mysql-test/suite/maria/t/maria-mvcc.test
+++ b/mysql-test/suite/maria/t/maria-mvcc.test
@@ -4,7 +4,7 @@
#
-- source include/have_maria.inc
-set global maria_page_checksum=1;
+set global aria_page_checksum=1;
--disable_warnings
drop table if exists t1;
@@ -13,7 +13,7 @@ drop table if exists t1;
connect (con1,localhost,root,,);
connection con1;
-create table t1 (i int) engine=maria;
+create table t1 (i int) engine=aria;
show create table t1;
# versioning is disabled when table is empty, so insert a row
@@ -94,7 +94,7 @@ drop table t1;
# Test count(*) for not versioned tables
#
-CREATE TABLE t1 (fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL KEY(g) ) transactional=1 row_format=page engine=maria;
+CREATE TABLE t1 (fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, g GEOMETRY NOT NULL, SPATIAL KEY(g) ) transactional=1 row_format=page engine=aria;
lock tables t1 write concurrent, t1 as t2 write concurrent;
insert into t1 (fid,g) values (NULL,GeomFromText('LineString(0 0,1 1)'));
diff --git a/mysql-test/suite/maria/t/maria-no-logging.test b/mysql-test/suite/maria/t/maria-no-logging.test
index bca99848250..f0533686588 100644
--- a/mysql-test/suite/maria/t/maria-no-logging.test
+++ b/mysql-test/suite/maria/t/maria-no-logging.test
@@ -4,7 +4,7 @@
# can't restart server in embedded
--source include/not_embedded.inc
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
--disable_warnings
drop database if exists mysqltest;
@@ -19,8 +19,8 @@ use mysqltest;
--enable_reconnect
# checkpoints can make log unrepeatable
-let $def_checkinterval=`select @@global.maria_checkpoint_interval`;
-set global maria_checkpoint_interval=0;
+let $def_checkinterval=`select @@global.aria_checkpoint_interval`;
+set global aria_checkpoint_interval=0;
# Prepare table to help for big load
create table t2 (a varchar(100)) engine=myisam;
@@ -36,24 +36,24 @@ insert into t2 select * from t2;
# no optimization because table not empty
-# SHOW ENGINE MARIA LOGS could be influenced by older logs
+# SHOW ENGINE ARIA LOGS could be influenced by older logs
-- source include/maria_empty_logs.inc
-create table t1 (a varchar(100)) engine=maria transactional=1;
+create table t1 (a varchar(100)) engine=aria transactional=1;
show create table t1;
---replace_regex /; .+maria_log/maria_log/
-show engine maria logs;
+--replace_regex /; .+aria_log/aria_log/
+show engine aria logs;
insert into t1 values('a');
insert into t1 select * from t2;
---replace_regex /; .+maria_log/maria_log/
-show engine maria logs;
+--replace_regex /; .+aria_log/aria_log/
+show engine aria logs;
# optimization because table is empty
-- source include/maria_empty_logs.inc
truncate table t1;
insert into t1 select * from t2;
---replace_regex /; .+maria_log/maria_log/
-show engine maria logs;
+--replace_regex /; .+aria_log/aria_log/
+show engine aria logs;
drop table t1;
@@ -61,23 +61,23 @@ drop table t1;
# no optimization because table not empty
-- source include/maria_empty_logs.inc
-create table t1 (a varchar(100)) engine=maria transactional=1;
+create table t1 (a varchar(100)) engine=aria transactional=1;
insert into t1 values('a');
create table if not exists t1 select * from t2;
---replace_regex /; .+maria_log/maria_log/
-show engine maria logs;
+--replace_regex /; .+aria_log/aria_log/
+show engine aria logs;
# optimization because table is empty
-- source include/maria_empty_logs.inc
drop table t1;
-create table t1 engine=maria transactional=1 select * from t2;
---replace_regex /; .+maria_log/maria_log/
-show engine maria logs;
+create table t1 engine=aria transactional=1 select * from t2;
+--replace_regex /; .+aria_log/aria_log/
+show engine aria logs;
drop database mysqltest;
--disable_result_log
--disable_query_log
-eval set global maria_checkpoint_interval=$def_checkinterval;
+eval set global aria_checkpoint_interval=$def_checkinterval;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria-page-checksum.test b/mysql-test/suite/maria/t/maria-page-checksum.test
index 9b05b00a371..8dd68fce245 100644
--- a/mysql-test/suite/maria/t/maria-page-checksum.test
+++ b/mysql-test/suite/maria/t/maria-page-checksum.test
@@ -1,4 +1,4 @@
-# Tests for two bugs related to ALTER TABLE and maria-specific alter
+# Tests for two bugs related to ALTER TABLE and aria-specific alter
# options (PAGE_CHECKSUM and TRANSACTIONAL).
-- source include/have_maria.inc
@@ -13,34 +13,34 @@ drop table if exists t1;
let $MYSQLD_DATADIR= `select @@datadir`;
-select @@global.maria_page_checksum;
+select @@global.aria_page_checksum;
# we scan through combinations in the cartesian product of
-# (first value of maria_page_checksum) x (clauses in CREATE TABLE) x
-# (second value of maria_page_checksum) x (clauses in ALTER TABLE).
+# (first value of aria_page_checksum) x (clauses in CREATE TABLE) x
+# (second value of aria_page_checksum) x (clauses in ALTER TABLE).
--echo # iteration 1
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -49,27 +49,27 @@ EOF
drop table t1;
--echo # iteration 2
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -78,27 +78,27 @@ EOF
drop table t1;
--echo # iteration 3
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -107,27 +107,27 @@ EOF
drop table t1;
--echo # iteration 4
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -136,27 +136,27 @@ EOF
drop table t1;
--echo # iteration 5
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -165,27 +165,27 @@ EOF
drop table t1;
--echo # iteration 6
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -194,27 +194,27 @@ EOF
drop table t1;
--echo # iteration 7
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -223,27 +223,27 @@ EOF
drop table t1;
--echo # iteration 8
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -252,27 +252,27 @@ EOF
drop table t1;
--echo # iteration 9
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -281,27 +281,27 @@ EOF
drop table t1;
--echo # iteration 10
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -310,27 +310,27 @@ EOF
drop table t1;
--echo # iteration 11
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -339,27 +339,27 @@ EOF
drop table t1;
--echo # iteration 12
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -368,27 +368,27 @@ EOF
drop table t1;
--echo # iteration 13
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -397,27 +397,27 @@ EOF
drop table t1;
--echo # iteration 14
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -426,27 +426,27 @@ EOF
drop table t1;
--echo # iteration 15
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -455,27 +455,27 @@ EOF
drop table t1;
--echo # iteration 16
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -484,27 +484,27 @@ EOF
drop table t1;
--echo # iteration 17
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -513,27 +513,27 @@ EOF
drop table t1;
--echo # iteration 18
-set global maria_page_checksum = 0 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 0 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -542,27 +542,27 @@ EOF
drop table t1;
--echo # iteration 19
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -571,27 +571,27 @@ EOF
drop table t1;
--echo # iteration 20
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -600,27 +600,27 @@ EOF
drop table t1;
--echo # iteration 21
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -629,27 +629,27 @@ EOF
drop table t1;
--echo # iteration 22
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -658,27 +658,27 @@ EOF
drop table t1;
--echo # iteration 23
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -687,27 +687,27 @@ EOF
drop table t1;
--echo # iteration 24
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -716,27 +716,27 @@ EOF
drop table t1;
--echo # iteration 25
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -745,27 +745,27 @@ EOF
drop table t1;
--echo # iteration 26
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -774,27 +774,27 @@ EOF
drop table t1;
--echo # iteration 27
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -803,27 +803,27 @@ EOF
drop table t1;
--echo # iteration 28
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -832,27 +832,27 @@ EOF
drop table t1;
--echo # iteration 29
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -861,27 +861,27 @@ EOF
drop table t1;
--echo # iteration 30
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=0 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -890,27 +890,27 @@ EOF
drop table t1;
--echo # iteration 31
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 0 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -919,27 +919,27 @@ EOF
drop table t1;
--echo # iteration 32
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -948,27 +948,27 @@ EOF
drop table t1;
--echo # iteration 33
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 0 ;
+set global aria_page_checksum = 0 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -977,27 +977,27 @@ EOF
drop table t1;
--echo # iteration 34
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
-alter table t1 engine=maria ;
+set global aria_page_checksum = 1 ;
+alter table t1 engine=aria ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -1006,27 +1006,27 @@ EOF
drop table t1;
--echo # iteration 35
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=0 ;
show create table t1 /* expecting PAGE_CHECKSUM=0 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -1035,27 +1035,27 @@ EOF
drop table t1;
--echo # iteration 36
-set global maria_page_checksum = 1 ;
-create table t1(a int) engine=maria PAGE_CHECKSUM=1 ;
+set global aria_page_checksum = 1 ;
+create table t1(a int) engine=aria PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
close FILE;
EOF
-set global maria_page_checksum = 1 ;
+set global aria_page_checksum = 1 ;
alter table t1 PAGE_CHECKSUM=1 ;
show create table t1 /* expecting PAGE_CHECKSUM=1 */ ;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
my @content= grep(/Page checksums are used/, <FILE>);
print @content ? $content[0] : "Page checksums are not used\n";
@@ -1065,20 +1065,20 @@ drop table t1;
#
# Test for BUG#37005
-# "Maria: ALTER TABLE TRANSACTIONAL=0 leaves table transactional inside Maria"
+# "Aria: ALTER TABLE TRANSACTIONAL=0 leaves table transactional inside Aria"
#
# we scan through combinations in the cartesian product of
# (clauses in CREATE TABLE) x (clauses in ALTER TABLE).
--echo # iteration 1
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1086,11 +1086,11 @@ EOF
alter table t1 modify a bigint ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1099,13 +1099,13 @@ drop table t1;
--echo # iteration 2
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1113,11 +1113,11 @@ EOF
alter table t1 transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1126,13 +1126,13 @@ drop table t1;
--echo # iteration 3
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1140,11 +1140,11 @@ EOF
alter table t1 transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1153,25 +1153,25 @@ drop table t1;
--echo # iteration 4
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria ;
+alter table t1 engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1180,25 +1180,25 @@ drop table t1;
--echo # iteration 5
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria transactional=0 ;
+alter table t1 engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1207,25 +1207,25 @@ drop table t1;
--echo # iteration 6
-create table t1(a int) engine=maria ;
+create table t1(a int) engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria transactional=1 ;
+alter table t1 engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1234,13 +1234,13 @@ drop table t1;
--echo # iteration 7
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1248,11 +1248,11 @@ EOF
alter table t1 modify a bigint ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1261,13 +1261,13 @@ drop table t1;
--echo # iteration 8
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1275,11 +1275,11 @@ EOF
alter table t1 transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1288,13 +1288,13 @@ drop table t1;
--echo # iteration 9
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1302,11 +1302,11 @@ EOF
alter table t1 transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1315,25 +1315,25 @@ drop table t1;
--echo # iteration 10
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria ;
+alter table t1 engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1342,25 +1342,25 @@ drop table t1;
--echo # iteration 11
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria transactional=0 ;
+alter table t1 engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1369,25 +1369,25 @@ drop table t1;
--echo # iteration 12
-create table t1(a int) engine=maria transactional=0 ;
+create table t1(a int) engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria transactional=1 ;
+alter table t1 engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1396,13 +1396,13 @@ drop table t1;
--echo # iteration 13
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1410,11 +1410,11 @@ EOF
alter table t1 modify a bigint ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1423,13 +1423,13 @@ drop table t1;
--echo # iteration 14
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1437,11 +1437,11 @@ EOF
alter table t1 transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1450,13 +1450,13 @@ drop table t1;
--echo # iteration 15
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1464,11 +1464,11 @@ EOF
alter table t1 transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1477,25 +1477,25 @@ drop table t1;
--echo # iteration 16
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria ;
+alter table t1 engine=aria ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1504,25 +1504,25 @@ drop table t1;
--echo # iteration 17
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria transactional=0 ;
+alter table t1 engine=aria transactional=0 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
@@ -1531,25 +1531,25 @@ drop table t1;
--echo # iteration 18
-create table t1(a int) engine=maria transactional=1 ;
+create table t1(a int) engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
EOF
-alter table t1 engine=maria transactional=1 ;
+alter table t1 engine=aria transactional=1 ;
show create table t1;
---exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/mariachk.txt
+--exec $MARIA_CHK -dv $MYSQLD_DATADIR/test/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
perl;
use strict;
use warnings;
- my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/mariachk.txt";
+ my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
open(FILE, "<", $fname) or die;
print grep(/Crashsafe/, <FILE>);
close FILE;
diff --git a/mysql-test/suite/maria/t/maria-partitioning.test b/mysql-test/suite/maria/t/maria-partitioning.test
index 589b489331d..612c44be57e 100644
--- a/mysql-test/suite/maria/t/maria-partitioning.test
+++ b/mysql-test/suite/maria/t/maria-partitioning.test
@@ -1,21 +1,21 @@
#
-# Testing of potential problems in Maria with partitioning
+# Testing of potential problems in Aria with partitioning
#
--source include/have_maria.inc
--source include/have_partition.inc
let $default_engine=`select @@global.storage_engine`;
-let $default_checksum=`select @@global.maria_page_checksum`;
-set global storage_engine=maria;
-set session storage_engine=maria;
+let $default_checksum=`select @@global.aria_page_checksum`;
+set global storage_engine=aria;
+set session storage_engine=aria;
#
# Test outer join const propagation
#
DROP TABLE if exists t1,t2;
-create table t2(a blob) engine=maria;
-create table t1(a int primary key) engine=maria;
+create table t2(a blob) engine=aria;
+create table t1(a int primary key) engine=aria;
insert into t2 values ('foo'),('bar');
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
insert into t1 values (1);
@@ -24,8 +24,8 @@ insert into t1 values (2);
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
drop table t1,t2;
-create table t2(a blob) engine= maria;
-create table t1(a int primary key) engine= maria PARTITION BY HASH (a) PARTITIONS 2;
+create table t2(a blob) engine= aria;
+create table t1(a int primary key) engine= aria PARTITION BY HASH (a) PARTITIONS 2;
insert into t2 values ('foo'),('bar');
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
insert into t1 values (1);
diff --git a/mysql-test/suite/maria/t/maria-preload.test b/mysql-test/suite/maria/t/maria-preload.test
index 5012ca64f31..efac10ecbec 100644
--- a/mysql-test/suite/maria/t/maria-preload.test
+++ b/mysql-test/suite/maria/t/maria-preload.test
@@ -11,15 +11,15 @@ drop table if exists t1, t2;
--enable_warnings
# Background dirty pages flushing may influence page cache stats:
-let $def_checkinterval=`select @@global.maria_checkpoint_interval`;
-set global maria_checkpoint_interval=0;
+let $def_checkinterval=`select @@global.aria_checkpoint_interval`;
+set global aria_checkpoint_interval=0;
# Work around BUG#34911 "FLUSH STATUS doesn't flush what it should":
# compute differences in status variables before and after relevant
-# queries. Maria_pagecache_read_requests varies accross machines.
+# queries. Aria_pagecache_read_requests varies accross machines.
create temporary table initial
select variable_name,variable_value from
-information_schema.global_status where variable_name like "Maria_pagecache_reads";
+information_schema.global_status where variable_name like "Aria_pagecache_reads";
# we don't use block-format because we want page cache stats
# about indices and not data pages.
@@ -29,14 +29,14 @@ create table t1 (
b char(16) not null,
primary key (a),
key (b)
-) engine=maria row_format=dynamic;
+) engine=aria row_format=dynamic;
create table t2(
a int not null auto_increment,
b char(16) not null,
primary key (a),
key (b)
-) engine=maria row_format=dynamic;
+) engine=aria row_format=dynamic;
insert into t1(b) values
('test0'),
@@ -71,7 +71,7 @@ select count(*) from t1;
select count(*) from t2;
flush tables; flush status;
-let $show_stat=select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Maria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
+let $show_stat=select g.variable_name,g.variable_value-i.variable_value from information_schema.global_status as g,initial as i where g.variable_name like "Aria_pagecache_read%" and g.variable_name=i.variable_name order by g.variable_name desc;
eval $show_stat;
select count(*) from t1 where b = 'test1';
eval $show_stat;
@@ -116,11 +116,11 @@ eval $show_stat;
drop table t1, t2;
drop temporary table initial;
-# check that Maria didn't use key cache
+# check that Aria didn't use key cache
show status like "key_read%";
--disable_result_log
--disable_query_log
-eval set global maria_checkpoint_interval=$def_checkinterval;
+eval set global aria_checkpoint_interval=$def_checkinterval;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria-purge.test b/mysql-test/suite/maria/t/maria-purge.test
index 0aa720543f6..c38a58bc492 100644
--- a/mysql-test/suite/maria/t/maria-purge.test
+++ b/mysql-test/suite/maria/t/maria-purge.test
@@ -2,7 +2,7 @@
-- source include/big_test.inc
-- source include/not_embedded.inc
-# pre-requisites for maria_empty_logs
+# pre-requisites for aria_empty_logs
connect (admin, localhost, root,,test,,);
#
--enable_reconnect
@@ -10,18 +10,18 @@ connection default;
--enable_reconnect
# end of pre-requisites
-# SHOW ENGINE MARIA LOGS could be influenced by older logs
+# SHOW ENGINE ARIA LOGS could be influenced by older logs
# Also, possibly automatic checkpoints (see if that happens in
# practice)
-- source include/maria_empty_logs.inc
let $default=`select @@global.storage_engine`;
-set global storage_engine=maria;
-set session storage_engine=maria;
-let $def_logsize=`select @@global.maria_log_file_size`;
-let $def_checkinterval=`select @@global.maria_checkpoint_interval`;
+set global storage_engine=aria;
+set session storage_engine=aria;
+let $def_logsize=`select @@global.aria_log_file_size`;
+let $def_checkinterval=`select @@global.aria_checkpoint_interval`;
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
# Initialise
--disable_warnings
drop table if exists t1,t2;
@@ -61,58 +61,58 @@ insert into t1 select * from t2;
insert into t2 select * from t1;
insert into t1 select * from t2;
-set global maria_log_file_size=16777216;
+set global aria_log_file_size=16777216;
# force a checkpoint to allow log purge
-eval set global maria_checkpoint_interval=$def_checkinterval;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
+eval set global aria_checkpoint_interval=$def_checkinterval;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
insert into t2 select * from t1;
insert into t1 select * from t2;
-eval set global maria_checkpoint_interval=$def_checkinterval;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
-set global maria_log_file_size=16777216;
-select @@global.maria_log_file_size;
-eval set global maria_checkpoint_interval=$def_checkinterval;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
-set global maria_log_file_size=8388608;
-select @@global.maria_log_file_size;
+eval set global aria_checkpoint_interval=$def_checkinterval;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
+set global aria_log_file_size=16777216;
+select @@global.aria_log_file_size;
+eval set global aria_checkpoint_interval=$def_checkinterval;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
+set global aria_log_file_size=8388608;
+select @@global.aria_log_file_size;
-set global maria_log_purge_type=at_flush;
+set global aria_log_purge_type=at_flush;
insert into t1 select * from t2;
-eval set global maria_checkpoint_interval=$def_checkinterval;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
+eval set global aria_checkpoint_interval=$def_checkinterval;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
flush logs;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
-set global maria_log_file_size=16777216;
-set global maria_log_purge_type=external;
+set global aria_log_file_size=16777216;
+set global aria_log_purge_type=external;
insert into t1 select * from t2;
-eval set global maria_checkpoint_interval=$def_checkinterval;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
+eval set global aria_checkpoint_interval=$def_checkinterval;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
flush logs;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
-set global maria_log_purge_type=immediate;
+set global aria_log_purge_type=immediate;
insert into t1 select * from t2;
-eval set global maria_checkpoint_interval=$def_checkinterval;
---replace_regex /Size +[0-9]+ ; .+maria_log/maria_log/
-SHOW ENGINE maria logs;
+eval set global aria_checkpoint_interval=$def_checkinterval;
+--replace_regex /Size +[0-9]+ ; .+aria_log/aria_log/
+SHOW ENGINE aria logs;
drop table t1, t2;
--disable_result_log
--disable_query_log
-set global maria_log_purge_type=immediate;
+set global aria_log_purge_type=immediate;
eval set global storage_engine=$default;
-eval set global maria_log_file_size=$def_logsize;
-eval set global maria_checkpoint_interval=$def_checkinterval;
+eval set global aria_log_file_size=$def_logsize;
+eval set global aria_checkpoint_interval=$def_checkinterval;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria-recover-master.opt b/mysql-test/suite/maria/t/maria-recover-master.opt
index 0cdefeadf3d..7582a381a32 100644
--- a/mysql-test/suite/maria/t/maria-recover-master.opt
+++ b/mysql-test/suite/maria/t/maria-recover-master.opt
@@ -1 +1 @@
---loose-maria-recover=backup --loose-maria-log-dir-path=$MYSQLTEST_VARDIR/tmp
+--loose-aria-recover=backup --loose-aria-log-dir-path=$MYSQLTEST_VARDIR/tmp
diff --git a/mysql-test/suite/maria/t/maria-recover.test b/mysql-test/suite/maria/t/maria-recover.test
index e9ae0933d4c..0fad13a297b 100644
--- a/mysql-test/suite/maria/t/maria-recover.test
+++ b/mysql-test/suite/maria/t/maria-recover.test
@@ -1,4 +1,4 @@
-# Test of the --maria-recover option.
+# Test of the --aria-recover option.
--source include/have_maria.inc
@@ -14,13 +14,13 @@ call mtr.add_suppression("Table '\\..mysqltest.t_corrupted2' is marked as crashe
# so that the perl code below can access it.
let MYSQLD_DATADIR= `select @@datadir`;
-select @@global.maria_recover;
-set global maria_recover=off;
-select @@global.maria_recover;
-set global maria_recover=default;
-select @@global.maria_recover;
-set global maria_recover=normal;
-select @@global.maria_recover;
+select @@global.aria_recover;
+set global aria_recover=off;
+select @@global.aria_recover;
+set global aria_recover=default;
+select @@global.aria_recover;
+set global aria_recover=normal;
+select @@global.aria_recover;
--disable_warnings
drop database if exists mysqltest;
@@ -29,7 +29,7 @@ create database mysqltest;
use mysqltest;
-create table t1 (a varchar(1000), index(a)) engine=maria;
+create table t1 (a varchar(1000), index(a)) engine=aria;
insert into t1 values("ThursdayMorningsMarket");
flush table t1; # put index page on disk
@@ -45,7 +45,7 @@ copy_file $MYSQLD_DATADIR/mysqltest/t1.MAD $MYSQLD_DATADIR/mysqltest/t_corrupted
copy_file $MYSQLD_DATADIR/mysqltest/t1.MAI $MYSQLD_DATADIR/mysqltest/t_corrupted2.MAI;
# Ruin the index file.
-# If maria-block-size is smaller than the default, the corruption
+# If aria-block-size is smaller than the default, the corruption
# messages will differ.
perl;
use strict;
@@ -65,4 +65,4 @@ select * from t_corrupted2; # should show corruption and repair messages
select * from t_corrupted2; # should show just rows
drop database mysqltest;
-set global maria_recover=backup;
+set global aria_recover=backup;
diff --git a/mysql-test/suite/maria/t/maria-recovery-big.test b/mysql-test/suite/maria/t/maria-recovery-big.test
index 4de8f934ec1..7a9a56c67ea 100644
--- a/mysql-test/suite/maria/t/maria-recovery-big.test
+++ b/mysql-test/suite/maria/t/maria-recovery-big.test
@@ -1,4 +1,4 @@
-# Maria recovery test which cannot run in shared memory
+# Aria recovery test which cannot run in shared memory
# because it generates too much data, or which takes a lot of time.
--source include/not_embedded.inc
@@ -9,7 +9,7 @@
--source include/have_maria.inc
--source include/big_test.inc
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
--disable_warnings
drop database if exists mysqltest;
@@ -33,7 +33,7 @@ use mysqltest;
--echo * TEST of recovery with blobs
-- source include/maria_empty_logs.inc
-create table t1 (a int, b longtext) engine=maria table_checksum=1;
+create table t1 (a int, b longtext) engine=aria table_checksum=1;
let $mms_tables=1;
-- source include/maria_make_snapshot_for_feeding_recovery.inc
insert into t1 values (1,"123456789012345678901234567890"),(2,"09876543210987654321");
@@ -57,7 +57,7 @@ select a,length(b) from t1;
let $mvr_restore_old_snapshot=1;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
-- source include/maria_verify_recovery.inc
drop table t1;
diff --git a/mysql-test/suite/maria/t/maria-recovery-bitmap.test b/mysql-test/suite/maria/t/maria-recovery-bitmap.test
index f6b6583e9df..856785a04a8 100644
--- a/mysql-test/suite/maria/t/maria-recovery-bitmap.test
+++ b/mysql-test/suite/maria/t/maria-recovery-bitmap.test
@@ -1,4 +1,4 @@
-# Tests of Maria's recovery of the bitmap pages
+# Tests of Aria's recovery of the bitmap pages
--source include/not_embedded.inc
# Don't test this under valgrind, memory leaks will occur as we crash
@@ -25,14 +25,14 @@ use mysqltest;
-- source include/maria_empty_logs.inc
let $mms_tables=1;
-create table t1 (a varchar(10000)) engine=maria;
+create table t1 (a varchar(10000)) engine=aria;
# we want recovery to use the tables as they were at time of crash
let $mvr_restore_old_snapshot=0;
# UNDO phase prevents physical comparison, normally,
# so we'll only use checksums to compare.
let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
--echo * TEST of over-allocated bitmap not flushed by checkpoint
let $mvr_debug_option="+d,maria_crash";
@@ -45,7 +45,7 @@ insert into t1 values ("bbbbbbb");
insert into t1 values ("bbbbbbb");
delete from t1 limit 1;
# Use a separate connection here. The reason is that we leave a dangling
-# --send on the connection during maria_verify_recovery.inc, which makes that
+# --send on the connection during aria_verify_recovery.inc, which makes that
# script fail if it were to try to use that connection before --reap.
connect (extra, localhost, root,,mysqltest,,);
set session debug="+d,info,enter,exit,maria_over_alloc_bitmap";
@@ -59,7 +59,7 @@ sleep 5;
# bitmap page; as REDO-UNDO was not written, bitmap and data page
# would be inconsistent. Correct checkpoint will wait until UNDO is
# written.
-set global maria_checkpoint_interval=1;
+set global aria_checkpoint_interval=1;
-- source include/maria_verify_recovery.inc
connection default;
diff --git a/mysql-test/suite/maria/t/maria-recovery-master.opt b/mysql-test/suite/maria/t/maria-recovery-master.opt
index 9023fb74e8b..58d0d012c54 100644
--- a/mysql-test/suite/maria/t/maria-recovery-master.opt
+++ b/mysql-test/suite/maria/t/maria-recovery-master.opt
@@ -1 +1 @@
---skip-stack-trace --skip-core-file --loose-maria-log-dir-path=$MYSQLTEST_VARDIR/tmp
+--skip-stack-trace --skip-core-file --loose-aria-log-dir-path=$MYSQLTEST_VARDIR/tmp
diff --git a/mysql-test/suite/maria/t/maria-recovery-rtree-ft.test b/mysql-test/suite/maria/t/maria-recovery-rtree-ft.test
index 3ede5002b72..a943185d12f 100644
--- a/mysql-test/suite/maria/t/maria-recovery-rtree-ft.test
+++ b/mysql-test/suite/maria/t/maria-recovery-rtree-ft.test
@@ -7,7 +7,7 @@
--source include/have_debug.inc
--source include/have_maria.inc
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
let $MARIA_LOG=.;
--disable_warnings
@@ -34,10 +34,10 @@ CREATE TABLE t1 (
kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
name VARCHAR(32)
,SPATIAL key (line)
-) transactional=1 row_format=page engine=maria;
+) transactional=1 row_format=page engine=aria;
SHOW INDEX FROM t1;
CREATE TABLE t2 (a VARCHAR(200), b TEXT, FULLTEXT (a,b)
-) transactional=1 row_format=page engine=maria;
+) transactional=1 row_format=page engine=aria;
SHOW INDEX FROM t2;
let $query1= INSERT INTO t1 (name, kind, line) VALUES
@@ -113,7 +113,7 @@ while($1)
let $mvr_restore_old_snapshot=1;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
# the script below will trigger recovery and compare checksums
-- source include/maria_verify_recovery.inc
@@ -132,7 +132,7 @@ let $mvr_restore_old_snapshot=0;
# UNDO phase prevents physical comparison, normally,
# so we'll only use checksums to compare.
let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
# Note that we don't remove logs between iterations. Test is
# cumulative (each new recovery processes more log records than the previous).
diff --git a/mysql-test/suite/maria/t/maria-recovery.test b/mysql-test/suite/maria/t/maria-recovery.test
index 6ba8e65e658..6eb91c59dc1 100644
--- a/mysql-test/suite/maria/t/maria-recovery.test
+++ b/mysql-test/suite/maria/t/maria-recovery.test
@@ -5,7 +5,7 @@
--source include/have_debug.inc
--source include/have_maria.inc
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
let $MARIA_LOG=../../tmp;
--disable_warnings
@@ -27,7 +27,7 @@ use mysqltest;
# A sample test
-- source include/maria_empty_logs.inc
let $mms_tables=1;
-create table t1 (a varchar(1000)) engine=maria;
+create table t1 (a varchar(1000)) engine=aria;
--echo * TEST of REDO: see if recovery can reconstruct if we give it an old table
@@ -42,7 +42,7 @@ let $mvr_restore_old_snapshot=1;
# produce a physically identical table.
let $mms_compare_physically=1;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
# the script below will trigger recovery and compare checksums
-- source include/maria_verify_recovery.inc
let $mms_compare_physically=0;
@@ -63,7 +63,7 @@ let $mvr_restore_old_snapshot=0;
# UNDO phase prevents physical comparison, normally,
# so we'll only use checksums to compare.
let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
# Note that we don't remove logs between iterations. Test is
# cumulative (each new recovery processes more log records than the previous).
@@ -131,7 +131,7 @@ CREATE TABLE t1 (
i int,
b blob default NULL,
c varchar(6000) default NULL
-) ENGINE=MARIA CHECKSUM=1;
+) ENGINE=ARIA CHECKSUM=1;
-- source include/maria_make_snapshot_for_feeding_recovery.inc
INSERT INTO t1 VALUES (1, REPEAT('a', 5000), REPEAT('b', 5000));
UPDATE t1 SET i=3, b=CONCAT(b,'c') WHERE i=1;
@@ -141,7 +141,7 @@ SELECT LENGTH(b) FROM t1 WHERE i=3;
let $mvr_restore_old_snapshot=1;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
-- source include/maria_verify_recovery.inc
SELECT LENGTH(b) FROM t1 WHERE i=3;
drop table t1;
@@ -154,7 +154,7 @@ CREATE TABLE t1 (
i int auto_increment primary key,
c varchar(6),
key(c)
-) ENGINE=MARIA;
+) ENGINE=ARIA;
insert into t1 values(null,"b");
-- source include/maria_make_snapshot_for_feeding_recovery.inc
insert into t1 values(null,"a"), (null,"c"), (null,"d");
@@ -164,7 +164,7 @@ delete from t1 where c="d";
let $mvr_restore_old_snapshot=1;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
-- source include/maria_verify_recovery.inc
show create table t1;
@@ -176,7 +176,7 @@ update t1 set i=15 where c="a";
let $mvr_restore_old_snapshot=1;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
-- source include/maria_verify_recovery.inc
show create table t1;
@@ -187,7 +187,7 @@ show create table t1;
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
lock tables t1 write;
insert into t1 values(null, "e");
-- source include/maria_verify_recovery.inc
diff --git a/mysql-test/suite/maria/t/maria-recovery2-master.opt b/mysql-test/suite/maria/t/maria-recovery2-master.opt
index 36b4216a4b4..9b232472a24 100644
--- a/mysql-test/suite/maria/t/maria-recovery2-master.opt
+++ b/mysql-test/suite/maria/t/maria-recovery2-master.opt
@@ -1 +1 @@
---skip-stack-trace --skip-core-file --loose-maria-log-dir-path=$MYSQLTEST_VARDIR/tmp --myisam-recover=
+--skip-stack-trace --skip-core-file --loose-aria-log-dir-path=$MYSQLTEST_VARDIR/tmp --myisam-recover=
diff --git a/mysql-test/suite/maria/t/maria-recovery2.test b/mysql-test/suite/maria/t/maria-recovery2.test
index 017256a5ec8..81ea45fbd42 100644
--- a/mysql-test/suite/maria/t/maria-recovery2.test
+++ b/mysql-test/suite/maria/t/maria-recovery2.test
@@ -5,10 +5,10 @@
--source include/have_debug.inc
--source include/have_maria.inc
-call mtr.add_suppression("File '.*maria_log.000.*' not found \\(Errcode: 2\\)");
-call mtr.add_suppression("Table '.\/mysqltest\/t_corrupted1' is crashed, skipping it. Please repair it with maria_chk -r");
+call mtr.add_suppression("File '.*aria_log.000.*' not found \\(Errcode: 2\\)");
+call mtr.add_suppression("Table '.\/mysqltest\/t_corrupted1' is crashed, skipping it. Please repair it with aria_chk -r");
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
let $MARIA_LOG=../../tmp;
--disable_warnings
@@ -31,13 +31,13 @@ let $mms_tables=1;
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
# Test of removing logs manually
--echo * TEST of removing logs manually
let $mel_keep_control_file=1;
# this will shut mysqld down cleanly (so, take a checkpoint) and
-# remove only logs; at restart Maria will create a new log with a high
+# remove only logs; at restart Aria will create a new log with a high
# number
-- source include/maria_empty_logs.inc
let $mel_keep_control_file=0;
@@ -49,8 +49,8 @@ let $mvr_restore_old_snapshot=0;
# UNDO phase prevents physical comparison, normally,
# so we'll only use checksums to compare.
let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
-create table t1(a int) engine=maria;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
+create table t1(a int) engine=aria;
insert into t1 values(1),(2);
-- source include/maria_make_snapshot_for_comparison.inc
lock tables t1 write;
@@ -64,8 +64,8 @@ drop table t1;
# Don't take a full checkpoints, we want to test checkpoint vs dirty pages
set global debug="+d,info,query,enter,exit,loop,maria_checkpoint_indirect";
# restart checkpoint thread for it to notice the above
-set global maria_checkpoint_interval=10000;
-create table t1(a int, b varchar(10), index(a,b)) engine=maria;
+set global aria_checkpoint_interval=10000;
+create table t1(a int, b varchar(10), index(a,b)) engine=aria;
insert into t1 values(1,"a"),(2,"b"),(3,"c");
delete from t1 where b="b";
update t1 set b="d" where a=1;
@@ -74,15 +74,15 @@ lock tables t1 write;
insert into t1 values(4,"e"),(5,"f"),(6,"g");
update t1 set b="h" where a=5;
delete from t1 where b="g";
-show status like "Maria_pagecache_blocks_not_flushed";
+show status like "Aria_pagecache_blocks_not_flushed";
# force a checkpoint; there should be dirty pages and an open transaction
-set global maria_checkpoint_interval=10000;
+set global aria_checkpoint_interval=10000;
# do some more work
update t1 set b="i" where a=5;
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
# Now we have a recovery, which should use the checkpoint record
# and its dirty pages list.
-- source include/maria_verify_recovery.inc
@@ -90,10 +90,10 @@ drop table t1;
--echo Test of REPAIR's implicit commit
let $mms_tables=1;
-create table t1 (a varchar(100), key(a)) engine=maria;
+create table t1 (a varchar(100), key(a)) engine=aria;
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
insert into t1 values(3);
@@ -111,11 +111,11 @@ select * from t1;
drop table t1;
--echo * TEST of recovery when crash before bulk-insert-with-repair is committed
-create table t1 (a varchar(100), key(a)) engine=maria;
+create table t1 (a varchar(100), key(a)) engine=aria;
create table t2 (a varchar(100)) engine=myisam;
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
set rand_seed1=12, rand_seed2=254; # repeatable
insert into t2 values (rand());
@@ -136,7 +136,7 @@ show keys from t1; # should be enabled
drop table t1;
--echo * TEST of recovery when OPTIMIZE has replaced the index file and crash
-create table t_corrupted1 (a varchar(100), key(a)) engine=maria;
+create table t_corrupted1 (a varchar(100), key(a)) engine=aria;
# we use a special name because this test portion will generate
# corruption warnings, which we tell mtr_report.pl to ignore by
# putting the message in mtr_report.pl, but we don't want to it ignore
diff --git a/mysql-test/suite/maria/t/maria-recovery3-master.opt b/mysql-test/suite/maria/t/maria-recovery3-master.opt
index 9023fb74e8b..58d0d012c54 100644
--- a/mysql-test/suite/maria/t/maria-recovery3-master.opt
+++ b/mysql-test/suite/maria/t/maria-recovery3-master.opt
@@ -1 +1 @@
---skip-stack-trace --skip-core-file --loose-maria-log-dir-path=$MYSQLTEST_VARDIR/tmp
+--skip-stack-trace --skip-core-file --loose-aria-log-dir-path=$MYSQLTEST_VARDIR/tmp
diff --git a/mysql-test/suite/maria/t/maria-recovery3.test b/mysql-test/suite/maria/t/maria-recovery3.test
index a241473f457..192361633ca 100644
--- a/mysql-test/suite/maria/t/maria-recovery3.test
+++ b/mysql-test/suite/maria/t/maria-recovery3.test
@@ -5,7 +5,7 @@
--source include/have_debug.inc
--source include/have_maria.inc
-set global maria_log_file_size=4294967295;
+set global aria_log_file_size=4294967295;
let $MARIA_LOG=../../tmp;
--disable_warnings
@@ -28,7 +28,7 @@ let $mms_tables=1;
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_crash_statement= set global aria_checkpoint_interval=1;
-- source include/maria_empty_logs.inc
@@ -39,7 +39,7 @@ let $mvr_restore_old_snapshot=0;
# UNDO phase prevents physical comparison, normally,
# so we'll only use checksums to compare.
let $mms_compare_physically=0;
-create table t1(a int primary key) engine=maria;
+create table t1(a int primary key) engine=aria;
insert into t1 values(1);
-- source include/maria_make_snapshot_for_comparison.inc
set session debug="+d,maria_sleep_in_commit";
@@ -49,7 +49,7 @@ sleep 1;
# but not yet called trnman_commit(), so for checkpoint it's not
# committed.
connection admin;
-set global maria_checkpoint_interval=1000; # force a checkpoint
+set global aria_checkpoint_interval=1000; # force a checkpoint
connection default;
reap; # end of INSERT
delete from t1 where a=2;
@@ -64,17 +64,17 @@ drop table t1;
# before checkpoint happens, test should still pass (though it won't
# reproduce the conditions of the bug).
-# Test for BUG#41493 Maria: two recovery failures (wrong logging of BLOB pages)
+# Test for BUG#41493 Aria: two recovery failures (wrong logging of BLOB pages)
--echo * TEST of logging of BLOBs
let $mvr_restore_old_snapshot=1;
let $mms_compare_physically=1;
CREATE TABLE `t1` (
`blob` blob,
`blob_key` blob
-) ENGINE=maria ROW_FORMAT=page
+) ENGINE=aria ROW_FORMAT=page
;
-- source include/maria_make_snapshot_for_feeding_recovery.inc
-set global maria_checkpoint_interval=0; # no checkpoints
+set global aria_checkpoint_interval=0; # no checkpoints
INSERT INTO `t1` VALUES (NULL,repeat('A',5198));
INSERT INTO `t1` VALUES (NULL,repeat('B',65535));
INSERT INTO `t1` VALUES (repeat('K',5198),repeat('L',2325));
@@ -88,14 +88,14 @@ check table t1 extended;
-- source include/maria_verify_recovery.inc
drop table t1;
-# Test for BUG#42112 "Maria: recovery failure (pushbuild2) Assertion
+# Test for BUG#42112 "Aria: recovery failure (pushbuild2) Assertion
# `rownr == 0 && new_page' failed"
let $mvr_restore_old_snapshot=0;
let $mms_compare_physically=0;
-create table t1 engine=maria select 1;
+create table t1 engine=aria select 1;
-- source include/maria_make_snapshot_for_feeding_recovery.inc
-set global maria_checkpoint_interval=0; # no checkpoints
+set global aria_checkpoint_interval=0; # no checkpoints
insert into t1 values(2);
truncate table t1;
-- source include/maria_make_snapshot_for_comparison.inc
diff --git a/mysql-test/suite/maria/t/maria.test b/mysql-test/suite/maria/t/maria.test
index c40dde5952b..ccbe2c99037 100644
--- a/mysql-test/suite/maria/t/maria.test
+++ b/mysql-test/suite/maria/t/maria.test
@@ -1,20 +1,20 @@
#
-# Testing of potential problems in Maria
+# Testing of potential problems in Aria
# This code was initially taken from myisam.test
#
-- source include/have_maria.inc
-- source include/have_partition.inc
-select * from INFORMATION_SCHEMA.ENGINES where ENGINE="MARIA";
+select * from INFORMATION_SCHEMA.ENGINES where ENGINE="ARIA";
let $default_engine=`select @@global.storage_engine`;
-let $default_checksum=`select @@global.maria_page_checksum`;
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_page_checksum=0;
-let $default_log_file_size=`select @@global.maria_log_file_size`;
-set global maria_log_file_size=4294967295;
+let $default_checksum=`select @@global.aria_page_checksum`;
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_page_checksum=0;
+let $default_log_file_size=`select @@global.aria_log_file_size`;
+set global aria_log_file_size=4294967295;
# Initialise
--disable_warnings
@@ -116,7 +116,7 @@ DROP TABLE t1;
#
# Test of optimize, when only mi_sort_index (but not mi_repair*) is done
-# in ha_maria::repair, and index size is changed (decreased).
+# in ha_aria::repair, and index size is changed (decreased).
#
create table t1 ( t1 char(255), key(t1(250)));
@@ -154,7 +154,7 @@ check table t1;
drop table t1;
#
-# test of maria with huge number of packed fields
+# test of aria with huge number of packed fields
#
create table t1 (i1 int, i2 int, i3 int, i4 int, i5 int, i6 int, i7 int, i8
@@ -533,7 +533,7 @@ drop table t1;
#
# Test join that could miss concurrently inserted row
-# Note that for the moment Maria only supports multiple writers if we have
+# Note that for the moment Aria only supports multiple writers if we have
# static or dynamic row format
#
# Partial key.
@@ -664,10 +664,10 @@ checksum table t1;
drop table t1;
#
-# maria_stats_method variable.
+# aria_stats_method variable.
#
-show variables like 'maria_stats_method';
+show variables like 'aria_stats_method';
create table t1 (a int, key(a));
insert into t1 values (0),(1),(2),(3),(4);
@@ -682,8 +682,8 @@ check table t1;
show index from t1;
# Set nulls to be equal:
-set maria_stats_method=nulls_equal;
-show variables like 'maria_stats_method';
+set aria_stats_method=nulls_equal;
+show variables like 'aria_stats_method';
insert into t1 values (11);
delete from t1 where a=11;
@@ -697,8 +697,8 @@ check table t1;
show index from t1;
# Set nulls back to be equal
-set maria_stats_method=DEFAULT;
-show variables like 'maria_stats_method';
+set aria_stats_method=DEFAULT;
+show variables like 'aria_stats_method';
insert into t1 values (11);
delete from t1 where a=11;
@@ -713,9 +713,9 @@ show index from t1;
drop table t1;
-# WL#2609, CSC#XXXX: MARIA
-set maria_stats_method=nulls_ignored;
-show variables like 'maria_stats_method';
+# WL#2609, CSC#XXXX: ARIA
+set aria_stats_method=nulls_ignored;
+show variables like 'aria_stats_method';
create table t1 (
a char(3), b char(4), c char(5), d char(6),
@@ -735,7 +735,7 @@ delete from t1;
analyze table t1;
show index from t1;
-set maria_stats_method=DEFAULT;
+set aria_stats_method=DEFAULT;
drop table t1;
@@ -768,7 +768,7 @@ create table t1 (
t text not null,
primary key (id1),
key x (id2, t(32))
-) engine=maria; # engine clause is redundant but it's to test its parsing
+) engine=aria; # engine clause is redundant but it's to test its parsing
insert into t1 (id2, t) values
(10, 'abc'), (10, 'abc'), (10, 'abc'),
(20, 'abc'), (20, 'abc'), (20, 'def'),
@@ -801,8 +801,8 @@ DROP TABLE t1;
#
# OPTIMIZE TABLE with multiple threads
#
-SET @@maria_repair_threads=2;
-SHOW VARIABLES LIKE 'maria_repair%';
+SET @@aria_repair_threads=2;
+SHOW VARIABLES LIKE 'aria_repair%';
#
# Test OPTIMIZE. This creates a new data file.
CREATE TABLE t1 (
@@ -888,8 +888,8 @@ SHOW TABLE STATUS LIKE 't1';
SELECT _id FROM t1;
DROP TABLE t1;
#
-SET @@maria_repair_threads=1;
-SHOW VARIABLES LIKE 'maria_repair%';
+SET @@aria_repair_threads=1;
+SHOW VARIABLES LIKE 'aria_repair%';
#
# Test varchar
@@ -910,7 +910,7 @@ create table t1 (v varchar(65530) character set utf8);
show create table t1;
drop table t1;
-# MARIA specific varchar tests
+# ARIA specific varchar tests
--error 1118
create table t1 (v varchar(65535));
@@ -1040,7 +1040,7 @@ create table t4 (c1 int) pack_keys=2;
drop table t1, t2, t3;
#
-# Bug#28476: force index on a disabled maria index gives error 124
+# Bug#28476: force index on a disabled aria index gives error 124
#
CREATE TABLE t1(a INT, b INT, KEY inx (a), UNIQUE KEY uinx (b));
@@ -1078,13 +1078,13 @@ ALTER TABLE t1 ENABLE KEYS;
--replace_column 6 # 7 # 8 # 10 # 11 # 12 # 13 # 14 # 15 # 16 #
SHOW TABLE STATUS LIKE 't1';
#--exec ls -log var/mysqld.1/data/test/t1
-#--exec maria_chk -dvv var/mysqld.1/data/test/t1
-#--exec maria_chk -iev var/mysqld.1/data/test/t1
+#--exec aria_chk -dvv var/mysqld.1/data/test/t1
+#--exec aria_chk -iev var/mysqld.1/data/test/t1
--echo # Enable keys with parallel repair
-SET @@maria_repair_threads=2;
+SET @@aria_repair_threads=2;
ALTER TABLE t1 DISABLE KEYS;
ALTER TABLE t1 ENABLE KEYS;
-SET @@maria_repair_threads=1;
+SET @@aria_repair_threads=1;
CHECK TABLE t1 EXTENDED;
DROP TABLE t1;
@@ -1108,7 +1108,7 @@ DROP TABLE t1, t2;
#
# Bug#37310: 'on update CURRENT_TIMESTAMP' option crashes the table
#
-CREATE TABLE t1 (a INT) ENGINE=MARIA CHECKSUM=1 ROW_FORMAT=DYNAMIC;
+CREATE TABLE t1 (a INT) ENGINE=ARIA CHECKSUM=1 ROW_FORMAT=DYNAMIC;
INSERT INTO t1 VALUES (0);
UPDATE t1 SET a=1;
SELECT a FROM t1;
@@ -1237,7 +1237,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1)
-) ENGINE=maria;
+) ENGINE=aria;
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
SELECT COUNT(*) FROM t1;
CHECK TABLE t1;
@@ -1252,7 +1252,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1)
-) ENGINE=maria;
+) ENGINE=aria;
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
SELECT COUNT(*) FROM t1;
CHECK TABLE t1 EXTENDED;
@@ -1267,7 +1267,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1)
-) ENGINE=maria;
+) ENGINE=aria;
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
# Insert more rows and delete one in the middle to force optimize.
INSERT INTO t1 VALUES('b', 'b');
@@ -1286,7 +1286,7 @@ CREATE TABLE t1 (
c1 CHAR(130),
c2 VARCHAR(1),
KEY (c1)
-) ENGINE=maria;
+) ENGINE=aria;
#
# Insert 100 rows. This turns bulk insert on during the copy phase of
# ALTER TABLE. Bulk insert disables keys before the insert and re-enables
@@ -1304,7 +1304,7 @@ while ($count)
# Change most of the rows into long character values with > 127 characters.
UPDATE t1 SET c1=REPEAT("a",128) LIMIT 90;
SELECT COUNT(*) FROM t1;
-ALTER TABLE t1 ENGINE=maria;
+ALTER TABLE t1 ENGINE=aria;
#
# With bug present, this shows that all long rows are gone.
SELECT COUNT(*) FROM t1;
@@ -1318,7 +1318,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
# Using Tamil Letter A, Unicode U+0B85
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
SELECT COUNT(*) FROM t1;
@@ -1334,7 +1334,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
# Using Tamil Letter A, Unicode U+0B85
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
SELECT COUNT(*) FROM t1;
@@ -1350,7 +1350,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
# Using Tamil Letter A, Unicode U+0B85
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
# Insert more rows and delete one in the middle to force optimize.
@@ -1370,7 +1370,7 @@ CREATE TABLE t1 (
c1 CHAR(50),
c2 VARCHAR(1),
KEY (c1)
-) ENGINE=maria DEFAULT CHARSET UTF8;
+) ENGINE=aria DEFAULT CHARSET UTF8;
#
# Insert 100 rows. This turns bulk insert on during the copy phase of
# ALTER TABLE. Bulk insert disables keys before the insert and re-enables
@@ -1389,7 +1389,7 @@ while ($count)
# Using Tamil Letter A, Unicode U+0B85
UPDATE t1 SET c1=REPEAT(_utf8 x'e0ae85',43) LIMIT 90;
SELECT COUNT(*) FROM t1;
-ALTER TABLE t1 ENGINE=maria;
+ALTER TABLE t1 ENGINE=aria;
#
# With bug present, this shows that all long rows are gone.
SELECT COUNT(*) FROM t1;
@@ -1406,7 +1406,7 @@ CREATE TABLE t1 (
c3 VARCHAR(10) NOT NULL,
KEY (c1),
KEY (c2)
-) ENGINE=maria DEFAULT CHARSET=utf8 PACK_KEYS=0;
+) ENGINE=aria DEFAULT CHARSET=utf8 PACK_KEYS=0;
let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
--exec $MARIA_CHK -d $MYSQLD_DATADIR/test/t1
@@ -1423,10 +1423,10 @@ drop table t1;
# (same content / differen checksum)
#
-CREATE TABLE t1 (line LINESTRING NOT NULL) engine=maria;
+CREATE TABLE t1 (line LINESTRING NOT NULL) engine=aria;
INSERT INTO t1 VALUES (GeomFromText("POINT(0 0)"));
checksum table t1;
-CREATE TABLE t2 (line LINESTRING NOT NULL) engine=maria;
+CREATE TABLE t2 (line LINESTRING NOT NULL) engine=aria;
INSERT INTO t2 VALUES (GeomFromText("POINT(0 0)"));
checksum table t2;
CREATE TABLE t3 select * from t1;
@@ -1437,7 +1437,7 @@ drop table t1,t2,t3;
#
# from bug37276_reduced_corruption.sql
#
-create table t2(a varchar(255),key(a))engine=maria row_format=dynamic transactional=0;
+create table t2(a varchar(255),key(a))engine=aria row_format=dynamic transactional=0;
insert into t2 values (repeat('o',124)), (repeat('h',226)), (repeat('i',236)),
(repeat('l',234)), (repeat('b',13)), (repeat('g',236)), (repeat('y',205)),
(repeat('c',99)), (repeat('g',145)), (repeat('o',131)), (repeat('e',63)),
@@ -1649,7 +1649,7 @@ col172 tinyint(1) DEFAULT NULL,
col173 tinytext,
col174 decimal(10,0) DEFAULT NULL,
col175 double DEFAULT NULL
-) engine=maria;
+) engine=aria;
insert ignore into t1 set
col10=abs(28449) % 2,
@@ -1766,10 +1766,10 @@ check table t1;
drop table t1;
#
-# Bug#38466 maria: range query returns no data
+# Bug#38466 aria: range query returns no data
#
-create table t1 (a char(200) primary key, b int default 12345) engine=maria;
+create table t1 (a char(200) primary key, b int default 12345) engine=aria;
insert t1 (a) values (repeat('0', 200));
insert t1 (a) values (repeat('1', 200)), (repeat('2', 200)), (repeat('3', 200)),
(repeat('4', 200)), (repeat('5', 200)), (repeat('6', 200)), (repeat('7', 200)),
@@ -1787,7 +1787,7 @@ drop table t1;
#
# BUG#38606 test suite
#
-create table t1 (a int) engine=maria transactional=1;
+create table t1 (a int) engine=aria transactional=1;
insert into t1 values (1);
lock table t1 write concurrent;
# should be fixed with fully implemented versioning
@@ -1801,7 +1801,7 @@ drop table t1;
#
create table t1 (p int primary key, i int, a char(10), key k1(i), key k2(a))
-engine maria;
+engine aria;
insert into t1 values (1, 1, 'qqqq'), (2, 1, 'pppp'),
(3, 1, 'yyyy'), (4, 3, 'zzzz');
insert into t1 values (5, 3, 'yyyy'), (6, 3, 'yyyy'), (7, 0, NULL),
@@ -1819,8 +1819,8 @@ drop table t1;
# --mysqld=--binlog-format=row --ps-protocol
#
-create table t1 (f1 int unique, f2 int) engine=maria;
-create table t2 (f3 int, f4 int) engine=maria;
+create table t1 (f1 int unique, f2 int) engine=aria;
+create table t2 (f3 int, f4 int) engine=aria;
create view v1 as select * from t1, t2 where f1= f3;
insert into t1 values (1,11), (2,22);
--error 1393
@@ -1834,7 +1834,7 @@ drop view v1;
# BUG#39399 ALTER TABLE renaming column: affected_rows > 0
#
-CREATE TABLE t1 (id int, c varchar(10)) engine=maria;
+CREATE TABLE t1 (id int, c varchar(10)) engine=aria;
INSERT INTO t1 VALUES (1,"1");
--enable_info
ALTER TABLE t1 CHANGE c d varchar(10);
@@ -1842,7 +1842,7 @@ ALTER TABLE t1 CHANGE c d varchar(10);
drop table t1;
#
-# Bug #39227 Maria: crash with ALTER TABLE PARTITION
+# Bug #39227 Aria: crash with ALTER TABLE PARTITION
#
create table t1 (s1 int);
@@ -1852,7 +1852,7 @@ alter table t1 partition by list (s1) (partition p1 values in (2));
drop table t1;
#
-# Bug #39226 Maria: crash with FLUSH TABLES WITH READ LOCK after LOCK TABLES
+# Bug #39226 Aria: crash with FLUSH TABLES WITH READ LOCK after LOCK TABLES
create table t1 (c1 int);
create table t2 (c1 int);
@@ -1866,18 +1866,58 @@ drop table t1, t2;
# Crash when aborting inserting of row with 2 blobs where first is short
#
-create table t1(a int primary key, b blob, c blob) engine=maria;
+create table t1(a int primary key, b blob, c blob) engine=aria;
insert into t1 values(1,repeat('a',100), repeat('b',657860));
--error ER_DUP_ENTRY
insert into t1 values(1,repeat('a',100), repeat('b',657860));
check table t1;
drop table t1;
+#
+# Check we can create a table with the 'Aria' alias
+#
+
+Create table t1 (a int) engine="aria";
+show create table t1;
+drop table t1;
+
+#
+# Test of LP#614265. This happens when we where using quick_range_select in
+# delete
+#
+
+CREATE TABLE t1 ( f1 DOUBLE , f2 DOUBLE , f3 DOUBLE , f4 DOUBLE , v3 DOUBLE , v4 DOUBLE , KEY ( v3 ) , KEY ( v4 ) ) engine=maria;
+REPLACE t1 ( f2 , f1 ) VALUES ( f2 , 56 ) ;
+INSERT t1 ( f1 , f2 , f3 , f4 ) VALUES ( 0 , f2 , 8 , f3 ) ;
+INSERT t1 ( f4 , f2 ) VALUES ( 4 , 92 ) ;
+DELETE FROM t1 WHERE v3 = 173 OR v4 = 9 ;
+drop table t1;
+
+#
+# Test for LP#61465 Memory corruption with (M)aria storage engine and
+# virtual columns
+#
+
+CREATE TABLE t1 (
+ f1 CHAR(255) BINARY ,
+ f2 CHAR(255) BINARY NOT NULL DEFAULT '0',
+ f3 CHAR(255) BINARY NOT NULL ,
+ f4 CHAR(255) BINARY NOT NULL DEFAULT '0' ,
+ v3 CHAR(255) BINARY AS ( ( f1 NOT LIKE '%' ) ) PERSISTENT,
+ KEY (v3)
+) ENGINE=Maria;
+INSERT INTO t1 ( f1 , f2 , f3 , f4 ) SELECT f1 , f4 , f1 , f4 FROM t1;
+DELETE FROM t1;
+drop table t1;
+
+#
+# End of test
+#
# Set defaults back
--disable_result_log
--disable_query_log
eval set global storage_engine=$default_engine,
-maria_page_checksum=$default_checksum,
-maria_log_file_size=$default_log_file_size;
+aria_page_checksum=$default_checksum,
+aria_log_file_size=$default_log_file_size;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria2.test b/mysql-test/suite/maria/t/maria2.test
index 45155ab9cae..00bbea165ee 100644
--- a/mysql-test/suite/maria/t/maria2.test
+++ b/mysql-test/suite/maria/t/maria2.test
@@ -6,13 +6,13 @@ drop table if exists t1,t2;
--enable_warnings
# Test for BUG#36319
-# "Maria: table is not empty but DELETE and SELECT find no rows"
+# "Aria: table is not empty but DELETE and SELECT find no rows"
CREATE TABLE t1 (
line BLOB,
kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
name VARCHAR(32)
-) transactional=0 row_format=page engine=maria;
+) transactional=0 row_format=page engine=aria;
let $query= INSERT INTO t1 (name, kind, line) VALUES
("Aadaouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
@@ -74,8 +74,8 @@ drop table t1;
# Testing of ALTER TABLE under lock tables
#
-create table t1 (i int) engine=maria;
-create table t2 (j int) engine=maria;
+create table t1 (i int) engine=aria;
+create table t2 (j int) engine=aria;
lock table t1 write, t2 read;
alter table t1 modify i int default 1;
insert into t1 values (2);
@@ -89,7 +89,7 @@ drop table t1,t2;
# test INSERT ON DUPLICATE KEY UPDATE
#
-create table t1(id int, s char(1), unique(s)) engine=maria;
+create table t1(id int, s char(1), unique(s)) engine=aria;
insert into t1 values(1,"a") on duplicate key update t1.id=t1.id+1;
insert into t1 values(1,"a") on duplicate key update t1.id=t1.id+1;
insert into t1 select 1,"a" on duplicate key update t1.id=t1.id+1;
@@ -101,7 +101,7 @@ select * from t1;
drop table t1;
# test LOAD DATA INFILE REPLACE
-create table t1 (pk int primary key, apk int unique, data int) engine=maria;
+create table t1 (pk int primary key, apk int unique, data int) engine=aria;
insert into t1 values (1, 1, 1), (4, 4, 4), (6, 6, 6);
load data concurrent infile '../../std_data/loaddata5.dat' replace into table t1 fields terminated by '' enclosed by '' ignore 1 lines (pk, apk);
select * from t1 order by pk;
diff --git a/mysql-test/suite/maria/t/maria3.test b/mysql-test/suite/maria/t/maria3.test
index 45765b3b868..55b5959a970 100644
--- a/mysql-test/suite/maria/t/maria3.test
+++ b/mysql-test/suite/maria/t/maria3.test
@@ -1,14 +1,14 @@
-- source include/have_maria.inc
-select * from INFORMATION_SCHEMA.ENGINES where ENGINE="MARIA";
+select * from INFORMATION_SCHEMA.ENGINES where ENGINE="ARIA";
let $default_engine=`select @@global.storage_engine`;
-let $default_checksum=`select @@global.maria_page_checksum`;
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_page_checksum=0;
-let $default_log_file_size=`select @@global.maria_log_file_size`;
-set global maria_log_file_size=4294967295;
+let $default_checksum=`select @@global.aria_page_checksum`;
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_page_checksum=0;
+let $default_log_file_size=`select @@global.aria_log_file_size`;
+set global aria_log_file_size=4294967295;
# Initialise
--disable_warnings
@@ -142,7 +142,7 @@ create table `t1` (
t1_id int(10) unsigned not null auto_increment,
key (t1_name),
primary key (t1_id)
-) engine=maria auto_increment = 1000 default charset=latin1;
+) engine=aria auto_increment = 1000 default charset=latin1;
lock tables t1 write;
INSERT INTO `t1` VALUES ('bla',1000),('bla',1001),('bla',1002);
check table t1;
@@ -188,7 +188,7 @@ drop table t1;
# Test where we shrink varchar
#
-CREATE TABLE t1 (a int, b int, v varchar(60000)) checksum=1 engine=maria;
+CREATE TABLE t1 (a int, b int, v varchar(60000)) checksum=1 engine=aria;
insert into t1 values (1,1,"aaa"),(1,2,null);
checksum table t1;
lock table t1 write;
@@ -239,13 +239,13 @@ CREATE TABLE t1 (
KEY (ulong),
KEY (ulonglong,ulong),
KEY (options,flags)
-) engine=maria;
+) engine=aria;
insert into t1 values (10,1,1,1,1,1,1,1,1,1,1,1,1,1,NULL,0,0,0,1,1,1,1,'one','one');
-create table t2 (primary key (auto)) engine=maria row_format=page select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
+create table t2 (primary key (auto)) engine=aria row_format=page select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
check table t1,t2;
select t1,t2,length(t3),length(t4),length(t5),length(t6),t7,t8 from t2;
drop table t2;
-create table t2 (primary key (auto)) engine=maria row_format=dynamic select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
+create table t2 (primary key (auto)) engine=aria row_format=dynamic select auto+1 as auto,1 as t1, 'a' as t2, repeat('a',256) as t3, binary repeat('b',256) as t4, repeat('a',4096) as t5, binary repeat('b',4096) as t6, '' as t7, binary '' as t8 from t1;
check table t2;
drop table t1,t2;
@@ -259,9 +259,9 @@ drop table t1;
# Fix if we are using safemalloc
--replace_result 8388572 8388600
-select lower(variable_name) as Variable_name, Variable_value as Value from information_schema.session_variables where variable_name like "maria%" and variable_name not like "maria_used_for_temp_tables" order by 1;
+select lower(variable_name) as Variable_name, Variable_value as Value from information_schema.session_variables where variable_name like "aria%" and variable_name not like "aria_used_for_temp_tables" order by 1;
--replace_column 2 #
-show status like 'maria%';
+show status like 'aria%';
#
# Test creating table with no field data and index on zero length columns
@@ -300,7 +300,7 @@ drop table t1;
#
# Show that page_checksum is remembered
#
-set global maria_page_checksum=1;
+set global aria_page_checksum=1;
create table t1 (a int);
show create table t1;
drop table t1;
@@ -310,7 +310,7 @@ drop table t1;
#
--enable_warnings
-set global maria_log_file_size=4294967296;
+set global aria_log_file_size=4294967296;
#
# Test delete of all rows in autocommit and not autocommit
@@ -338,10 +338,10 @@ create table t3 select * from t1, t2; # Should give an error
create table t3 select t1.c AS c1, t2.c AS c2,1 as "const" from t1, t2;
drop table t1, t2, t3;
-# Test for bug "maria_repair() (OPTIMIZE) leaves wrong
+# Test for bug "aria_repair() (OPTIMIZE) leaves wrong
# data_file_length" (originally from type_datetime.test)
-create table t1 (t datetime) engine=maria;
+create table t1 (t datetime) engine=aria;
insert into t1 values (101),(691231),(700101),(991231),(10000101),(99991231),(101000000),(691231000000),(700101000000),(991231235959),(10000101000000),(99991231235959),(20030100000000),(20030000000000);
select * from t1;
optimize table t1;
@@ -394,18 +394,18 @@ drop table t1;
# Test warnings with transactional=1 with MyISAM
#
-create table t1 (n int not null, c char(1)) engine=maria;
+create table t1 (n int not null, c char(1)) engine=aria;
alter table t1 engine=myisam;
-alter table t1 engine=maria;
+alter table t1 engine=aria;
show create table t1;
drop table t1;
-create table t1 (n int not null, c char(1)) engine=maria transactional=1;
+create table t1 (n int not null, c char(1)) engine=aria transactional=1;
alter table t1 engine=myisam;
-alter table t1 engine=maria;
+alter table t1 engine=aria;
show create table t1;
drop table t1;
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
-alter table t1 engine=maria;
+alter table t1 engine=aria;
show create table t1;
drop table t1;
@@ -433,9 +433,27 @@ select count(*) from t1;
select count(*) from t1 where a >= 4;
drop table t1, t2;
+create temporary table t1 (a int, key(a)) transactional=0 row_format=page;
+create temporary table t2 (a int, key(a)) transactional=0 row_format=page;
+insert into t1 values (0),(1),(2),(3),(4);
+insert into t2 select * from t1;
+insert into t1 select NULL from t2;
+select count(*) from t1;
+select count(*) from t1 where a >= 4;
+drop table t1, t2;
+
+create temporary table t1 (a int, key(a)) transactional=0 row_format=fixed;
+create temporary table t2 (a int, key(a)) transactional=0 row_format=dynamic;
+insert into t1 values (0),(1),(2),(3),(4);
+insert into t2 select * from t1;
+insert into t1 select NULL from t2;
+select count(*) from t1;
+select count(*) from t1 where a >= 4;
+drop table t1, t2;
+
#
# Test problems with small rows and row_type=page
-# Bug 35048 "maria table corruption reported when transactional=0"
+# Bug 35048 "aria table corruption reported when transactional=0"
#
create table t1 (i int auto_increment not null primary key) transactional=0;
@@ -481,19 +499,19 @@ DROP TABLE t1;
# BUG#36104 - INFORMATION_SCHEMA.TABLES shows TRANSACTIONAL=1 twice in
# CREATE_OPTIONS
#
-create table t1(a int) engine=maria transactional=1;
+create table t1(a int) engine=aria transactional=1;
select CREATE_OPTIONS from information_schema.TABLES where
TABLE_SCHEMA='test' and TABLE_NAME='t1';
drop table t1;
#
-# BUG#39697 - Maria: hang when failing to insert due to UNIQUE
+# BUG#39697 - Aria: hang when failing to insert due to UNIQUE
#
-create table t1 (a int, unique(a)) engine=maria transactional=1;
+create table t1 (a int, unique(a)) engine=aria transactional=1;
insert into t1 values(1);
--error 1062
insert into t1 values(2),(2);
-create table t2 (a int, unique(a)) engine=maria transactional=0 row_format=dynamic;
+create table t2 (a int, unique(a)) engine=aria transactional=0 row_format=dynamic;
insert into t2 values(1);
--error 1062
insert into t2 values(2),(2);
@@ -509,7 +527,7 @@ drop table t1, t2;
--disable_result_log
--disable_query_log
eval set global storage_engine=$default_engine,
-maria_page_checksum=$default_checksum,
-maria_log_file_size=$default_log_file_size;
+aria_page_checksum=$default_checksum,
+aria_log_file_size=$default_log_file_size;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria_notembedded.test b/mysql-test/suite/maria/t/maria_notembedded.test
index 0f27802de27..f1d71e90354 100644
--- a/mysql-test/suite/maria/t/maria_notembedded.test
+++ b/mysql-test/suite/maria/t/maria_notembedded.test
@@ -4,7 +4,7 @@
-- source include/have_maria.inc
let $default_engine=`select @@session.storage_engine`;
-set session storage_engine=maria;
+set session storage_engine=aria;
# Verify that INSERT DELAYED is disabled only for transactional tables
# ("embedded" server translates them to plain INSERT)
diff --git a/mysql-test/suite/maria/t/maria_partition.test b/mysql-test/suite/maria/t/maria_partition.test
index ced87903c21..47571c7a4be 100644
--- a/mysql-test/suite/maria/t/maria_partition.test
+++ b/mysql-test/suite/maria/t/maria_partition.test
@@ -1,13 +1,13 @@
-# Maria tests which require partitioning enabled
+# Aria tests which require partitioning enabled
--source include/have_partition.inc
-- source include/have_maria.inc
let $default_engine=`select @@global.storage_engine`;
-let $default_checksum=`select @@global.maria_page_checksum`;
-set global storage_engine=maria;
-set session storage_engine=maria;
-set global maria_page_checksum=0;
+let $default_checksum=`select @@global.aria_page_checksum`;
+set global storage_engine=aria;
+set session storage_engine=aria;
+set global aria_page_checksum=0;
# Initialise
--disable_warnings
@@ -17,7 +17,7 @@ drop view if exists v1;
SET SQL_WARNINGS=1;
#
-# Bug #39227 Maria: crash with ALTER TABLE PARTITION
+# Bug #39227 Aria: crash with ALTER TABLE PARTITION
#
create table t1 (s1 int);
@@ -29,8 +29,8 @@ drop table t1;
#
# Test outer join const propagation
#
-create table t2(a blob) engine=maria;
-create table t1(a int primary key) engine=maria;
+create table t2(a blob) engine=aria;
+create table t1(a int primary key) engine=aria;
insert into t2 values ('foo'),('bar');
select * from t2 left join t1 on (t2.a=t1.a) where t2.a='bbb';
insert into t1 values (1);
@@ -52,7 +52,7 @@ drop table t1,t2;
# Set defaults back
--disable_result_log
--disable_query_log
-eval set global storage_engine=$default_engine, maria_page_checksum=$default_checksum;
-set global maria_log_file_size=default;
+eval set global storage_engine=$default_engine, aria_page_checksum=$default_checksum;
+set global aria_log_file_size=default;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/maria/t/maria_showlog_error.test b/mysql-test/suite/maria/t/maria_showlog_error.test
index 9c4d5b8ef2c..d6c59c5a0a6 100644
--- a/mysql-test/suite/maria/t/maria_showlog_error.test
+++ b/mysql-test/suite/maria/t/maria_showlog_error.test
@@ -19,9 +19,9 @@ connection default;
connection default;
let MYSQLD_DATADIR= `select @@datadir`;
-remove_file $MYSQLD_DATADIR/$MARIA_LOG/maria_log.00000001;
---replace_regex /Size unknown ; .*maria_log.00000001/Size unknown ; maria_log.00000001/
-show engine maria logs;
+remove_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log.00000001;
+--replace_regex /Size unknown ; .*aria_log.00000001/Size unknown ; aria_log.00000001/
+show engine aria logs;
# cleunup after this test
-- source include/maria_empty_logs.inc
diff --git a/mysql-test/suite/maria/t/optimize.test b/mysql-test/suite/maria/t/optimize.test
new file mode 100644
index 00000000000..fe87bc558cb
--- /dev/null
+++ b/mysql-test/suite/maria/t/optimize.test
@@ -0,0 +1,162 @@
+--source include/have_maria.inc
+
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+#
+# Test for LP#603026: RQG: pagecache_read: Assertion `pageno < ((1ULL) << 40)' on OPTIMIZE TABLE of a Aria table
+#
+
+--disable_query_log
+set autocommit=1;
+--disable_warnings
+CREATE TABLE t1 ( `col_varchar_1024_utf8_not_null_key` varchar(1024) CHARACTER SET utf8 not null, `col_varchar_1024_utf8_key` varchar(1024) CHARACTER SET utf8, `col_varchar_1024_utf8_not_null` varchar(1024) CHARACTER SET utf8 not null, `col_varchar_1024_utf8` varchar(1024) CHARACTER SET utf8, pk varchar(1024) not null, `col_varchar_1024_latin1` varchar(1024) CHARACTER SET latin1, `col_varchar_1024_latin1_not_null_key` varchar(1024) CHARACTER SET latin1 not null, `col_varchar_1024_latin1_not_null` varchar(1024) CHARACTER SET latin1 not null, `col_varchar_1024_latin1_key` varchar(1024) CHARACTER SET latin1, /*Indices*/ key (`col_varchar_1024_utf8_not_null_key` ), key (`col_varchar_1024_utf8_key` ), primary key (pk), key (`col_varchar_1024_latin1_not_null_key` ), key (`col_varchar_1024_latin1_key` )) ENGINE=aria;
+--enable_warnings
+INSERT /*! IGNORE */ INTO t1 VALUES ('dbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzb', 'wdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwby', 'something', 'pwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfa', 1, 'dpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjr', 'can', 'hdpwdbhfatqokbosjofmpdxvhq', 'rhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxw') , ('urhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxci', 'turhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidl', 'to', 'rturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftka', 2, 'grturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmh', 'ygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvh', 'rygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlfusfplamodraqbpgtdgviqngjtlykclmdokwpttsicss', 'vrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizw') , ('c', 'wvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbld', 'had', 'twvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxw', 3, 'htwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjd', 'q', 'z', 'phtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfi') , ('vphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapn', 'jvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjv', 'ejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgq', 'vejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqyt', 4, 't', 'why', 'your', 'cvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxrey') , ('v', 'rcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambx', 'frcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilx', 'p', 5, 'kfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlfusfplamodr', 'i', 'ikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmy', 'jikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmu');
+INSERT /*! IGNORE */ INTO t1 VALUES ('wjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcq', 'uwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnng', 'zuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajy', 'i', 6, 'u', 'q', 'd', 'izuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkq') , ('bizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdub', 'd', 'lbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbn', 'llbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfz', 7, 'bllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutf', 'rbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmf', 'really', 'yrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnngh') , ('tyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwp', 'xtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmsw', 'kxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgkne', 'mkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjv', 8, 'zmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgx', 'ezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlfusfplamodraqbpgtdgviqngjtlykclm', 'no', 'eezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczs') , ('m', 'keezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfep', 'tkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqh', 'ztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpxxwmabsoaiqscbnfwvhwdjgrhlf', 9, 'n', 'hey', 'hztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxw', 'shztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveamb') , ('bshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvf', 'on', 'look', 'I', 10, 'xbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxz', 'lxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjr', 'what', 'ilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnrolj');
+INSERT /*! IGNORE */ INTO t1 VALUES ('he', 'hilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkj', 'khilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecf', 'o', 11, 'i', 'okhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygr', 'hokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpd', 'khokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveamb') , ('kkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphuni', 'about', 'ckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeq', 'sckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtb', 12, 'xsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwn', 'at', 'pxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpaj', 'kpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhqcxvmhqqvzowtbnjpx') , ('in', 'see', 'ikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyi', 'say', 13, 'you', 'x', 'wikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhit', 'why') , ('mean', 'a', 'now', 'm', 14, 'cwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqo', 'acwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaaht', 'racwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswv', 'hracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoa') , ('v', 'l', 'shracwikpxsckkhokhilx', 'gshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwyto', 15, 'fgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsv', 'say', 'nfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfu', 'onfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpaj');
+INSERT /*! IGNORE */ INTO t1 VALUES ('vonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcil', 'svonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccm', 'osvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmah', 'zosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrx', 16, 'f', 'from', 'azosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwp', 'that\'s') , ('h', 'tazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnest', 'my', 'dtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpol', 17, 'her', 'fdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfz', 'efdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxw', 'n') , ('t', 'x', 'sefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizw', 'hsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynve', 18, 'mhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqd', 'kmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswc', 'bkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxci', 'abkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztk') , ('uabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsyg', 'who', 'i', 'v', 19, 'xuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdk', 'xxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpvea', 'yxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywi', 'dyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbi') , ('adyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzknd', 'nadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphu', 'that', 'knadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitck', 20, 'lknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxq', 'go', 'mlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqp', 'qmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiar');
+INSERT /*! IGNORE */ INTO t1 VALUES ('tqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgt', 'y', 'ktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnp', 'oktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgj', 21, 'boktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmj', 'wboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucap', 'zwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfam', 'd') , ('i', 'kzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyyn', 'get', 'dkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqa', 22, 'fdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnuj', 'd', 'lfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnb', 'go') , ('z', 'clfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnes', 'qclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitapnjnestutftmutidlvdubbjdznrxsrrmahxsxurpkqkedeznqccfidiazhmmasxemcshyvhq', 'not', 23, 'b', 'want', 'pqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlp', 'come') , ('c', 'ipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnh', 'x', 'are', 24, 'kipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlq', 'bkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejw', 'hbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwb', 'mhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdca') , ('t', 'zmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzss', 'this', 'u', 25, 'not', 'yeah', 'gzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxdmajqwizwmyvustnzbrbopxmspxnazyxzmuysgonfckdeurqnroljslhdnjmdetcftzsrkjzmhimfmsbhnsgriqkaejakxzbldvftdcaugaahtcwtnujxmwqvkfepcswvrvqhibmuutnuhmvcnctfzmswcmtsrpmyedqxpoluufzbhwbrmcdiwytofotjitmaijfpfbpdwickgvibccphunilmnxvdsykirhgxvyehxyhixejfktoptnpveambxrovrpulkkjqccekfbfamsuiwhofodwrlsvwmxtvaoazfufeehwftkaugjsnebabzsscqhnafqodwrvohesokjrzhnkjhqowroirjsmofgfvfuomwlcdytimiwybmtuheejeitap', 'a');
+INSERT /*! IGNORE */ INTO t1 VALUES ('cmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfik', 'r', 'ecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjk', 'uecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemo', 111, 'fuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf', 'zfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeqjpdeydhvhrxolrlxmxxd', 'vzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvd', 'ovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwku') , ('dovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpub', 'd', 'hdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbi', 'rhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwd', 112, 'rrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsx', 'say', 'mean', 'right') , ('she', 'out', 'drrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbki', 'back', 113, 'pdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgt', 'I', 'because', 'updrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwd') , ('qupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcow', 'oqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrf', 'eoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqz', 'x', 114, 'feoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctp', 'tfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezm', 'xtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloi', 'ixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoi') , ('fixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndc', 'afixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoup', 'yafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgr', 'going', 115, 'say', 'myafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttc', 'my', 'fmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('efmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoks', 'e', 'it', 'jefmyafixtfeoqupdrrhdovzfuecmgg', 116, 'h', 's', 'when', 'ujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinh') , ('don\'t', 'yujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckz', 'fyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjluf', 'sfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqy', 117, 'usfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbp', 'rusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsm', 'zrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaai', 'ezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpn') , ('d', 'iezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbny', 'be', 'p', 118, 'riezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlp', 'h', 'f', 'nriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhs') , ('inriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzd', 'oinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknad', 'that', 'loinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylgl', 119, 'uloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgb', 'what', 'x', 's') , ('buloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecm', 'q', 'didn\'t', 'was', 120, 'would', 'fbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinb', 'sfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvv', 'j');
+INSERT /*! IGNORE */ INTO t1 VALUES ('asfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgk', 'dasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmh', 'and', 't', 121, 'jdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbm', 'got', 'yjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbm', 'lyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwbok') , ('with', 'tlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsm', 'ztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxk', 'kztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudo', 122, 'lkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsry', 't', 'ktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzztt', 'gktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkreijhlyhznczsxfdezymeq') , ('qgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftd', 'sqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednpt', 'in', 'see', 123, 'r', 'ssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjia', 'me', 'rssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolm') , ('irssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbk', 'c', 'jirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokup', 'yeah', 124, 'a', 'fjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajya', 'rfjir', 'qrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumctcfmndgknecfzkndoohlpkgksukysorfgkvvkr') , ('n', 'dqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpick', 'idqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxu', 'y', 125, 't', 'nidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavn', 'fnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajse', 'in');
+INSERT /*! IGNORE */ INTO t1 VALUES ('now', 'ffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednpt', 'nffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshrac', 'gnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzb', 126, 'ygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajs', 'lygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfeme', 'alygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokr', 'halygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdr') , ('i', 'some', 'phalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmh', 'could', 127, 'was', 'q', 'zphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtod', 'czphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwbok') , ('yczphalygnffnidqrfji', 'r', 'xyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzz', 'xxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgz', 128, 'had', 'zxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbw', 'k', 'g') , ('some', 'm', 'ozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemo', 'to', 129, 'mozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqsef', 'kmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvf', 'dkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwc', 'like') , ('you', 'idkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbki', 'xidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckk', 'why', 130, 'sxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjr', 'asxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlev', 'rasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfgi', 'prasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwda');
+INSERT /*! IGNORE */ INTO t1 VALUES ('aprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmj', 'laprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpi', 'xlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrq', 'n', 131, 'dxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlyky', 'qdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhx', 'vqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppy', 'm') , ('bvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqsef', 'cbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenh', 'd', 'lcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseo', 132, 'to', 'up', 'that', 'wlcbvqdxlaprasxi') , ('cwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmp', 'got', 'kcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarcbkgoudqpkecymujxlwfzdeqnrumc', 'y', 133, 'her', 'from', 'he', 'rkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlp') , ('yrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmm', 'k', 'lyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashf', 'blyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthi', 134, 'hblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkq', 'going', 'bhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcr', 'lbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlg') , ('a', 'xlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosj', 'wxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofm', 'nwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxr', 135, 't', 'his', 'fnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnx', 'this');
+INSERT /*! IGNORE */ INTO t1 VALUES ('afnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoq', 's', 'r', 'i', 136, 'her', 'nafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgby', 'mnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjda', 'jmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjy') , ('there', 'cjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptud', 'hcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsyg', 'm', 137, 'xhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuse', 'jxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzt', 'jjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspun', 'gjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqcl') , ('mgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnz', 'pmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhf', 't', 'y', 138, 'that\'s', 'all', 'epmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'aepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznth') , ('aaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfe', 'jaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickht', 'djaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwby', 'g', 139, 'zdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodq', 'her', 'azdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqx', 'dazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpuca') , ('ldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfzsztftgvgzkqhwpnbztbcpoqdmhgjffokjvoaejwgqpnhemopbmrkfnkwngdjiawsiarc', 'gldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvvtlpajyalhsygtjrhjxreywihgnxlevtsvfz', 'egldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnq', 'hegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmaskl', 140, 'with', 'good', 'whegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttc', 'kwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhk');
+INSERT /*! IGNORE */ INTO t1 VALUES ('it', 'qxcxsriduotqpzazkhrlmlyzuyvqxz', 'x', 'going', 151, 'tqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbz', 'u', 'a', 'j') , ('do', 'ctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfd', 'is', 'tctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqs', 152, 'ftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfg', 'f', 'he', 'vftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssq') , ('svftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhd', 'out', 'esvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpx', 'pesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnz', 153, 'lpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhin', 'blpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppj', 'ablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlkn', 'if') , ('fablpesvftctqxcxsriduotqpzazkhrlml', 'ffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdas', 'cffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'ncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveaht', 154, 'with', 'say', 'how', 'hncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeez') , ('e', 'ghncffablpesvftctqxcxsriduotqpzazkhrlmlyz', 'when', 'yghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoup', 155, 'gyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxi', 'qgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednp', 'v', 'q');
+INSERT /*! IGNORE */ INTO t1 VALUES ('oh', 'd', 'xqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmo', 'm', 156, 'zxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfov', 'gzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfe', 'ygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqx', 'oygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwi') , ('aoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzy', 'iaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhi', 'i', 'diaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfu', 157, 'ndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcd', 'sndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcc', 'really', 'j') , ('fsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmx', 'hey', 'can', 'tfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuq', 158, 'dtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjj', 'edtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoap', 'know', 'now') , ('r', 'have', 'cedtfsndi', 'ycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgq', 159, 'think', 'rycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwl', 'see', 's') , ('tell', 'I\'m', 'l', 'mrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzu', 160, 'out', 'i', 'cmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygn', 'had');
+INSERT /*! IGNORE */ INTO t1 VALUES ('pcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwgvlnnghjvv', 'lpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgpp', 'nlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupd', 'wnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseft', 161, 'xwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccf', 'g', 'qxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzw', 'xqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyaf') , ('h', 'ok', 'q', 'because', 162, 'oxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfb', 'moxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirs', 'think', 'cmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxu') , ('ncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryft', 'i', 'cncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthi', 'could', 163, 'zcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemeg', 'czcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpi', 'vczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddu', 'qvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvej') , ('t', 'z', 'p', 'zqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleiz', 164, 'and', 'nzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpza', 'knzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxc', 'nknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmoupppjcctptgoksleizxkrbednzzwg') , ('if', 'q', 'rnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtb', 'lrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmg', 165, 'from', 'flrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzf', 'jflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafi', 'mean');
+INSERT /*! IGNORE */ INTO t1 VALUES ('ljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbsh', 'mljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygz', 'wmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpub', 'lwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmx', 166, 'u', 'elwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluz', 'just', 'welwmljflrnknzqvczcn') , ('been', 'iwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'd', 'miwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselv', 167, 'y', 'nmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqj', 'b', 'cnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsnd') , ('ycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmaskl', 'a', 'who', 'yycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwby', 168, 'gyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegl', 'up', 'ggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhsk', 'zggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqv') , ('szggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhcz', 'zszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpc', 'nzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemew', 'l', 169, 'znzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpe', 'fznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsj', 'ufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvpht', 'she') , ('lufznzszggyycnmiwe', 'q', 'wlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashfuwbyynvenjcsmasklnxxtbzrqxmouppp', 'lwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjw', 170, 'ilwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwe', 'ailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfg', 'tailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqp', 'm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('think', 'ztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpge', 'sztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtaz', 'from', 171, 'msztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftl', 'rmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncff', 'prmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywm', 'fprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhk') , ('bfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytncc', 'dbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvv', 'l', 'qdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpz', 172, 'on', 'zqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhe', 'they', 'k') , ('izqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'nizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeez', 'hnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryr', 'q', 173, 'mhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhs', 'go', 'could', 'bmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf') , ('abmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtv', 'you', 'nabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovve', 'we', 174, 'okay', 'inabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzg', 'dinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgp', 'idinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlkn') , ('c', 'widinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktdeqxndcqytizhxaaiyashf', 'kwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazk', 'as', 175, 'because', 'mkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxqvfikqseftdkgtlqzbwpucapktde', 'zmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfy', 'x');
+INSERT /*! IGNORE */ INTO t1 VALUES ('lzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'glzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfg', 'vglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncff', 'mvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiief', 176, 'f', 'i', 'why', 'wmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmc') , ('t', 'gwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavntt', 'qgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeez', 'l', 177, 'z', 'the', 'iqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfs', 'piqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyv') , ('o', 'rpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzg', 'or', 'jrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseo', 178, 'jjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcnc', 'yjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxycz', 'they', 'l') , ('y', 'iyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhq', 'j', 'h', 179, 'y', 'one', 'at', 'o') , ('ciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'iciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmq', 'iiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffa', 'your', 180, 'do', 'could', 'giiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgz', 'agiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('uagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyu', 'wuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'zwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinri', 'pzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqe', 181, 'cpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihml', 's', 'mcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpc', 't') , ('kmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednpt', 'hkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikf', 'were', 'ehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhw', 182, 'eehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfn', 'jeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmleccmmxqxcilxq', 'y', 'g') , ('jjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfov', 'ojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdko', 'iojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbh', 'uiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmd', 183, 'kuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicb', 'akuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi', 'uakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvon', 'uuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoq') , ('wuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzq', 'fwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjg', 'was', 'at', 184, 'lfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerr', 'g', 'c', 'dlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracw') , ('kdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsr', 'dkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepm', 'rdkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxh', 'ardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqr', 185, 'oardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxb', 'poardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrn', 'ipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxz', 'gipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxow');
+INSERT /*! IGNORE */ INTO t1 VALUES ('rgipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdb', 'ergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdb', 'mergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczm', 'vmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqer', 186, 'p', 'pvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppyilihmlec', 'this', 'q') , ('lpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekwemegyaluzytnccflbvqnqnmfvvlhitckzgppy', 'really', 'glpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskok', 'of', 187, 'with', 'i', 'kglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffni', 'h') , ('r', 'bkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzc', 'jbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyj', 'and', 188, 'wjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloi', 'pwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcb', 'from', 'bpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhs') , ('t', 'xbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcm', 'yxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmr', 'r', 189, 'time', 'ryx', 'who', 'j') , ('gryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtb', 'ogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjgh', 'uogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'c', 190, 'muogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdx', 'wmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacd', 'gwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseoux', 'pgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlyk');
+INSERT /*! IGNORE */ INTO t1 VALUES ('to', 'o', 'mpgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxermmjkovqnoqhpubzfjxwqacdiwyekweme', 'y', 191, 'empgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvpht', 'f', 'x', 'mempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrf') , ('e', 'and', 'imempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghnc', 'ximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftct', 192, 'j', 'say', 'sximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxl', 'psximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesq') , ('y', 'v', 'mpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtv', 'zmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxb', 193, 'd', 'like', 'come', 'fzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbga') , ('gfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirs', 'ogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptud', 'have', 'oogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcar', 194, 'koogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclf', 'ykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfy', 'lykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxb', 'xlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhniz') , ('rxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhs', 'at', 'lrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdy', 'plrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfci', 195, 'tplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginly', 'wtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwe', 'out', 'm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('your', 'ok', 'r', 'to', 196, 'nwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgw', 'anwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlu', 'tanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwj', 'mtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyu') , ('umtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqx', 'a', 'will', 'yumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvp', 197, 'did', 'wyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyr', 'q', 'that\'s') , ('s', 'gwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbos', 'this', 'wgwyumtanwtplrxlykoogfzmpsximempgwmuogryxb', 198, 'rwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwo', 'nrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepm', 'jnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajse', 'pjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi') , ('t', 'ypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryf', 'aypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqg', 'haypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxe', 199, 'didn\'t', 'with', 'qhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbul', 'j') , ('eqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgt', 'e', 'meqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciy', 'emeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxla', 200, 'yemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkg', 'y', 'xyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkip', 'just');
+INSERT /*! IGNORE */ INTO t1 VALUES ('jxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipq', 'wjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbic', 'bwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickh', 'vbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtw', 201, 'jvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlb', 'they', 'rjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus', 'arjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatqokbosjofmpdxvhqvfnyxowgqqxerm') , ('karjvbwjxyemeqhaypjnrwgwyu', 'tkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthi', 'utkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzg', 'jutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfb', 202, 'were', 'up', 'z', 'r') , ('jjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdja', 'rjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjd', 'jrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfw', 'pjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknady', 203, 'apjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwm', 'for', 'rapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbk', 'my') , ('erapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbto', 'uerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglaf', 'querapjrjjutkarjvbwjxyeme', 'who', 204, 'squerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwl', 'q', 'msquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlu', 'kmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkret') , ('a', 'tkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtan', 'etkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlk', 'uetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunl', 205, 'one', 'to', 'muetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxh', 'vmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlap');
+INSERT /*! IGNORE */ INTO t1 VALUES ('some', 'y', 'cvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwk', 'e', 206, 'qcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryf', 'pqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkret', 'cpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzztt', 'lcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmya') , ('klcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszg', 'your', 'will', 'bklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvm', 207, 'gbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqg', 'hgbklcpqcvmuetkmsquerapjrjjutka', 'nhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgj', 'd') , ('vnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgj', 'ovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhts', 'really', 'w', 208, 'wovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfue', 'dwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvpht', 'ldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhkln', 'bldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxe') , ('qbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmh', 'uqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdj', 'hey', 'puqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanw', 209, 'hpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfatq', 'bhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsefdtazosvonfgshracwikpxsckkhokhilxbshztkeezmkxtyrbllbizuwjikfrcvejvphtwvrygrturhdpwdbhfat', 'qbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuabkmhsef', 'and') , ('e', 'l', 'cqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyyc', 'u', 210, 'do', 'scqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwluf', 'jscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxl', 'mjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiw');
+INSERT /*! IGNORE */ INTO t1 VALUES ('umjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyu', 'aumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 'z', 'at', 211, 'laumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcj', 'then', 'zlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagii', 'hzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwd') , ('khzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodq', 'zkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqg', 'l', 'xzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjb', 212, 'yxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuec', 'myxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkr', 'there', 'didn\'t') , ('bmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqo', 'you\'re', 'sbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf', 'dsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhr', 213, 'odsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbk', 'godsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsri', 'fgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkret', 'q') , ('know', 'i', 'a', 'efgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbul', 214, 'because', 'l', 'vefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxl', 'n') , ('or', 's', 'evefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcd', 's', 215, 'levefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptu', 'z', 'up', 'plevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdko');
+INSERT /*! IGNORE */ INTO t1 VALUES ('yes', 'k', 'r', 'with', 216, 'could', 'p', 'vplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiw', 'qvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwm') , ('jqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdk', 'mjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvq', 'a', 'tmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyy', 217, 'jtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjj', 'pjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjn', 'h', 'not') , ('opjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwboktqmlknadyxxuab', 'jopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailw', 'from', 'you\'re', 218, 'vjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyh', 'wvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowl', 'iwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafn', 'biwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddu') , ('cbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnc', 'rcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvf', 'f', 'urcbiwvj', 219, 'n', 'curcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidq', 'gcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykf', 'igcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlap') , ('nigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtced', 'd', 'for', 'know', 220, 'znigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedt', 'or', 'v', 'f');
+INSERT /*! IGNORE */ INTO t1 VALUES ('eznigcurcb', 'a', 'keznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmp', 'ukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiy', 221, 'don\'t', 'mukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxi', 'pmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhp', 'he\'s') , ('lpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuec', 'klpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgw', 'oklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajs', 'for', 222, 'm', 'f', 'y', 'k') , ('u', 'voklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuse', 'her', 'bvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgw', 223, 'going', 'zbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhb', 'yzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxq', 'y') , ('syzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbk', 'ksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnk', 'hksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxq', 'dhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhm', 224, 'z', 'ndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvb', 'qndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwd', 'vqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyh') , ('lvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwheglda', 'well', 'b', 'mlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqac', 225, 'pmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'upmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinrie', 'gupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinri', 'rgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptu');
+INSERT /*! IGNORE */ INTO t1 VALUES ('can\'t', 'rrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnw', 'frrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfw', 'mean', 226, 'q', 'vfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftc', 'uvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkh', 'iuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus') , ('qiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'rqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqo', 'yrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmox', 'oyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbl', 227, 'qoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkm', 'tqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkr', 'utqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbw', 'butqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesv') , ('ybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylgl', 'iybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvgl', 'viybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjx', 'b', 228, 'q', 'f', 'vviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi', 'say') , ('cvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzl', 'wcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowl', 'or', 'h', 229, 'c', 'bwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffabl', 'nbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptudozkrfwpiddumitfnampjqgtvqmwgzmhbkipqclfdkzwbok', 'fnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafix') , ('no', 'all', 'rfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvpl', 'rrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkravwwhtsaiznthifhinhwvtcednptud', 230, 'jrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszg', 'my', 'say', 'h');
+INSERT /*! IGNORE */ INTO t1 VALUES ('w', 'lnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznz', 'j', 'plnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbf', 241, 'kplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgd', 'nkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssq', 'qnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskok', 'zqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbw') , ('vzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoar', 'mvzqnkpl', 'fmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'g', 242, 'hfmvzqnkplnldmpawbzosnvunqqpushgph', 'xhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlapra', 'uxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqv', 'huxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjkrav') , ('r', 'ihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcy', 'go', 'his', 243, 'didn\'t', 'your', 'nihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnk', 'jnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyh') , ('ijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhk', 'hijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzck', 'xhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluopqxujovhqbvokrfjtxqerrkwjghiiefmdzggtbmdvgbyhspunlqywmfvqxenhskokupndmesqehdylglafavnttdjk', 'oxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 244, 'ooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgygh', 'uooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeq', 'there', 'be') , ('back', 'luooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknz', 'z', 'wluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffn', 245, 'can\'t', 'kwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevr', 'skwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqq', 'askwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdas');
+INSERT /*! IGNORE */ INTO t1 VALUES ('m', 'aaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscq', 'laaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'wlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfb', 246, 'mwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiin', 'this', 'rmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgesk', 's') , ('the', 'armwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnr', 'warmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwo', 'e', 247, 'jwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloi', 'vjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqx', 'cvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriez', 'r') , ('u', 'ccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveaht', 'o', 'o', 248, 'xccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipo', 'jxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzz', 'xjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfu', 'at') , ('jxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffni', 'I\'ll', 'y', 'xjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlyk', 249, 'k', 'p', 'q', 'sxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsx') , ('nsxjxjxccvjwa', 'knsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhd', 'pknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnr', 'rpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlc', 250, 'up', 'drpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnm', 'u', 'udrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfo');
+INSERT /*! IGNORE */ INTO t1 VALUES ('sudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyir', 'i', 'wsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsq', 'been', 251, 'kwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdp', 'jkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwn', 'cjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdm', 'i') , ('hcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwol', 'i', 'thcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogry', 'othcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdmcowluo', 252, 'gothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpus', 'are', 'tgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablp', 'otgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzm') , ('l', 'gotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqx', 'jgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkre', 'qjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgod', 253, 'were', 'gqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvq', 'fgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzx', 'a') , ('r', 'sfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyg', 'esfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhc', 'cesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjx', 254, 'dcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhd', 'have', 'mdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'd') , ('kmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbm', 'mkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihu', 'qmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeo', 'yeah', 255, 'gqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'lgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpu', 'algqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkm', 'ialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhp');
+INSERT /*! IGNORE */ INTO t1 VALUES ('rialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbm', 'jrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczp', 'jjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfm', 'fjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcv', 256, 'vfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'ivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnf', 'vivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmry', 'c') , ('lvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaask', 'mlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawb', 'hmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqg', 'here', 257, 'zhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldw', 'tzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqb', 'oh', 'ntzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinl') , ('intzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'not', 'her', 'qintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnk', 258, 'kqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyir', 'lkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrp', 'plkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhb', 'h') , ('kplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgar', 'kkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlau', 'ikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedc', 'oikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrj', 259, 'foikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjj', 'he\'s', 'jfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgygh', 'be') , ('qjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvd', 'oqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnm', 'can\'t', 'q', 260, 'foqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczm', 'mfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttc', 'zmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgp', 'mzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqn');
+INSERT /*! IGNORE */ INTO t1 VALUES ('what', 'cmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzz', 'ycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmp', 'y', 261, 'rycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcin', 'u', 'brycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxw', 'u') , ('qbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupd', 'rqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlyk', 'h', 'hrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuo', 262, 'some', 'w', 'h', 'well') , ('xhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwx', 'm', 'cxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsxime', 'acxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxl', 263, 'dacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznig', 'edacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhn', 'zedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhczmpwolmhmhklnzbhsjyirfginlykykfwdm', 'tzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrj') , ('ytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpick', 'nytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesf', 'xnytzedacxhrqbrycmzmfoqjfoikk', 'wxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbm', 264, 'rwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtp', 'lrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyem', 'l', 'hlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlv') , ('vhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznz', 'look', 'ovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlp', 'm', 265, 'come', 'o', 'zovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickht', 'u');
+INSERT /*! IGNORE */ INTO t1 VALUES ('nzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduot', 'there', 'hnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcb', 'shnzo', 266, 'lshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaae', 'xlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhml', 'axlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfh', 'h') , ('haxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmi', 'ohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnf', 'pohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyaf', 'zpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvu', 267, 'g', 'we', 'jzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpi', 'u') , ('mjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwi', 'jmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchz', 'ejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkm', 'iejmjzpohaxlshnzovhlrwxnytze', 268, 'eiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmy', 'xeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwu', 'be', 'e') , ('oxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkm', 'foxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfn', 'vfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmp', 'cvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvm', 269, 'acvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvc', 'kacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcd', 'ikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxj', 'bikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygz') , ('w', 'like', 'l', 'going', 270, 'x', 'qbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnb', 'eqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrr', 'keqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsn');
+INSERT /*! IGNORE */ INTO t1 VALUES ('something', 'rkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzam', 'irkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjda', 'wirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrh', 271, 'swirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamfhpxfcinbicbnylsnkhcnxuseouxhcz', 'wswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrq', 'bwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgn', 'zbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdko') , ('bzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagi', 'mbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkw', 'ymbzbwswirkeqbikacvfoxeie', 'wymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmc', 272, 'bwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwk', 'xbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunq', 'vxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcm', 'rvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuio') , ('jrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlc', 'wjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfovveahtfemewfrfyvfwgjmzzamf', 'vwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldaz', 'rvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjz', 273, 'srvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjir', 'see', 'wsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpil', 'g') , ('him', 'pwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerap', 'like', 'u', 274, 'apwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'don\'t', 'oh', 'oapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsnd') , ('hoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdk', 'dhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushg', 'qdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyi', 'xqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjr', 275, 'z', 'txqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhk', 'qtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtod', 'aqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyz');
+INSERT /*! IGNORE */ INTO t1 VALUES ('daqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoik', 'udaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkc', 'iudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushg', 'her', 276, 'biudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcar', 'k', 'lbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxd', 'what') , ('could', 'xlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciy', 'bxlbiudaqtxqdhoapwsrvwjrvx', 'I\'m', 277, 'zbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxa', 'ozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnc', 'kozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkw', 'z') , ('pkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablp', 'npkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzb', 'hnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzos', 'hhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqp', 278, 'ghhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagii', 'then', 'why', 'ughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwov') , ('well', 'b', 'r', 'tell', 279, 'u', 'from', 'jughhnpkozbxlbiuda', 'he\'s') , ('out', 'zjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbi', 'hzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvcz', 'ehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbi', 280, 'uehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjl', 'it\'s', 'wuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbw', 'ywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickhtsmqoiyfbpevrwdvdnfo');
+INSERT /*! IGNORE */ INTO t1 VALUES ('was', 'wywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmn', 'I\'ll', 'my', 281, 'swywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbw', 'jswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbv', 'one', 'some') , ('mjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozx', 'nmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzq', 'gnmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelw', 'ignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjg', 282, 'pignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmo', 'vpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzckyzgdjyuqwxsjqacqgnchzsrnbgarbtodqxrxovowpickh', 'ivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjri', 'fivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyem') , ('o', 'why', 'qfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbv', 'iqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnff', 283, 'i', 'm', 'liqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeeh', 'yliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloin') , ('nyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyr', 'xnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetk', 'uxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdj', 'quxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoi', 284, 'g', 'dquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgkt', 'a', 'you') , ('wdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajs', 'wwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsry', 'swwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsri', 'fswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmc', 285, 'yfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqu', 'who', 'b', 'k');
+INSERT /*! IGNORE */ INTO t1 VALUES ('gyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnyt', 'tgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkpln', 'y', 'xtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 286, 'she', 'i', 'cxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogry', 'o') , ('ocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcv', 'o', 'qocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvp', 'look', 287, 'x', 'nqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoog', 'z', 'bnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsz') , ('bbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqd', 'if', 'time', 'ebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozb', 288, 'n', 'your', 'lebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsrid', 'but') , ('come', 'dlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkk', 'why', 'edlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaae', 289, 'nedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesv', 'hnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmx', 'ahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhml', 'b') , ('kahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinl', 'ikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpi', 'rikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghn', 'j', 290, 'prikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfe', 'c', 'dprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnf', 'rdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrfxdpqoaptdkoumbmxcyzgrjrxqqzcky');
+INSERT /*! IGNORE */ INTO t1 VALUES ('crdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbw', 'scrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvc', 'w', 'her', 291, 'hscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcp', 'khscrdprik', 'could', 'here') , ('fkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczp', 'will', 'ifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarj', 'aifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoh', 292, 'oaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxb', 'l', 'toaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlv', 'utoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhbl') , ('lutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuak', 'glutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabm', 'qglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgk', 'k', 293, 'tqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphal', 'c', 'think', 'as') , ('dtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkk', 'ndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxs', 'qndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywue', 'but', 294, 'sqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbl', 'in', 'gsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedac', 'egsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbk') , ('gegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidk', 'yeah', 'there', 'your', 295, 'ngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzh', 'at', 'i', 'j');
+INSERT /*! IGNORE */ INTO t1 VALUES ('to', 'kngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapj', 'rkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus', 'irkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanw', 296, 'firkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfj', 'bfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhay', 'dbfirkngegsqndtqglutoaifkhscrdprikah', 'g') , ('wdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlm', 'i', 'he', 'owdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjr', 297, 'aowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpaw', 't', 'go', 'raowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopj') , ('uraowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirss', 'buraowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailw', 'but', 'iburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarj', 298, 'something', 'yiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlb', 'ayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglp', 'out') , ('layiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqg', 'slayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoi', 'pslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbh', 'lpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrq', 299, 'xlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtg', 'sxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvvi', 'psxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyy', 'ypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcj') , ('vypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxl', 'yes', 'i', 'okay', 300, 'wvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnh', 'p', 'cwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjug', 's');
+INSERT /*! IGNORE */ INTO t1 VALUES ('hcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxw', 'rhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyc', 'urhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzaz', 'see', 301, 'a', 'xurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgcrnzzttcjlufhfwkunsryrf', 'x', 'pxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbw') , ('ypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviyb', 'xypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkoz', 'bxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdce', 'sbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggy', 302, 'know', 'msbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopj', 'f', 'rmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnh') , ('jrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbw', 'about', 'here', 'wjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqu', 303, 'uwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqd', 'q', 'puwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcp', 'mpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgj') , ('as', 'v', 'wmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiwdajselvnxbpjrjbwcdcryftlgc', 'hey', 304, 'qwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmly', 'had', 'u', 'are') , ('oqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoa', 'doqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufz', 'y', 'q', 305, 'qdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxak', 'zqdoqwmpuw', 'I', 'm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('dzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiu', 'udzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzaz', 'zudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshn', 'gzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpz', 306, 'qgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhc', 'c', 'zqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'to') , ('tzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgph', 'ctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsl', 'octzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrp', 'in', 307, 'the', 'doctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukezn', 'xdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdas', 'ixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsud') , ('pixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklc', 'kpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedl', 'ykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqupdrrhdovzfuecmggqjwhfgxbmqpiloisrhkkretiw', 'pykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvyp', 308, 'y', 'vpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempg', 'just', 'pvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbika') , ('zpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyv', 'who', 'azpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurc', 'qazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocx', 309, 'tqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymb', 'ltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgw', 'dltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxc', 'ddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmps') , ('hddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpc', 'rhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqp', 'jrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxl', 'ijrhddlt', 310, 'z', 'nijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrus', 'tnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdb', 'w');
+INSERT /*! IGNORE */ INTO t1 VALUES ('htnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxu', 'a', 'a', 'j', 311, 'thtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvo', 'xthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdces', 'rxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjsc', 'irxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxye') , ('firxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahn', 'pfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwy', 'had', 'v', 312, 'yes', 'opfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawb', 'gopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempg', 'what') , ('ggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuq', 'xggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiw', 'dxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftct', 'v', 313, 'tdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarq', 'f', 'e', 'ytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhbly') , ('mytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusf', 'zmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnkn', 'got', 'time', 314, 'pzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphaly', 'dpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvpleve', 'n', 'tdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbika') , ('otdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnp', 'say', 'sotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxei', 'dsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukezn', 315, 'e', 'zdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbk', 'lzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztl', 'z');
+INSERT /*! IGNORE */ INTO t1 VALUES ('ylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidi', 'iylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmp', 'oiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjirssqgktlkztlyjdasfbuloinriezrusfyujefmyafixtfeoqu', 'yoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrd', 316, 'f', 'hey', 'qyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburao', 'rqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldm') , ('crqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbh', 'rcrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqp', 'ircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvokl', 'wircrqyoiylzdsotdpzmytdxggopf', 317, 'one', 'is', 'dwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogf', 'a') , ('edwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapws', 'b', 'nedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphaly', 'b', 318, 'w', 'because', 'hnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnf', 'lhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwu') , ('qlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljf', 'the', 'iqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmg', 'niqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrial', 319, 'p', 'mniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnkn', 's', 'bmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndia') , ('dbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwy', 'here', 'z', 'sdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikk', 320, 'asdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkw', 'pasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiici', 'right', 'vpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('cvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqgl', 'lcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusf', 'got', 'p', 321, 'j', 'if', 'vlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzm', 'pvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgw') , ('ok', 'are', 'him', 'vpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwsw', 322, 'hvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndi', 'b', 'thvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmly', 'h') , ('rthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'grthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdb', 'ogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiuda', 'who', 323, 'time', 'sogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 'zsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgo', 'are') , ('her', 'szsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltq', 'e', 'qszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfo', 324, 'yqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcb', 'l', 'hyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhayp', 'x') , ('t', 'f', 'd', 'chyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfi', 325, 'qchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjk', 'u', 'jqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfji', 'l');
+INSERT /*! IGNORE */ INTO t1 VALUES ('because', 'pjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdc', 'xpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'txpjqchyqszsog', 326, 'y', 'htxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegl', 'q', 'l') , ('ohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotd', 'rohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhni', 'yrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukez', 'u', 327, 'ayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqoc', 'kayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwu', 'x', 'oh') , ('kkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjj', 'nkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgw', 'tnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdqux', 'qtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbw', 328, 'bqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkmozxxyczphalygnffnidqrfjir', 'oh', 'mbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyi', 'umbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjx') , ('yumbqtnkkayro', 'tyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 'n', 'come', 329, 'styumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsla', 'oh', 'bstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnr', 'tbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhayp') , ('u', 'ctbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumj', 'why', 'got', 330, 'will', 'actbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqn', 'x', 'eactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('her', 'eeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngeg', 'leeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrv', 'yleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjria', 331, 'nyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwn', 'think', 'if', 'xnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdja') , ('going', 'xxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmry', 'pxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmc', 'wpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmca', 332, 'rwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhks', 'irwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnz', 'l', 'mirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyy') , ('in', 'qmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacx', 'pqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoo', 'upqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlviv', 333, 'vupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywue', 'mvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfp', 'y', 'fmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhni') , ('this', 'u', 'my', 'know', 334, 'wfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmyt', 'dwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayi', 'vdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 'were') , ('nvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcur', 'znvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasx', 'eznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcx', 'beznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarm', 335, 'bbeznvdwfmvup', 'p', 'rbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrkcwlcbvqdxlaprasxidkm', 'nrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznz');
+INSERT /*! IGNORE */ INTO t1 VALUES ('znrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvq', 'n', 'didn\'t', 'mznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwj', 336, 'ymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggy', 'kymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbry', 'can', 'ekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhay') , ('tekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxb', 'jtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosd', 'that', 'ljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlbhblyrk', 337, 'or', 'sljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwirc', 'hsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoap', 'nhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjo') , ('back', 'anhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffabl', 'qanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdces', 'lqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumj', 338, 'f', 'clqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzm', 'gclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgq', 'egclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafnwxlb') , ('fegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzju', 'u', 'efegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqha', 'a', 339, 'you\'re', 'sefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjr', 'can', 'yeah') , ('you\'re', 'hsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'ghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqc', 'zghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignm', 340, 'tzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrms', 'with', 'j', 'right');
+INSERT /*! IGNORE */ INTO t1 VALUES ('ktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotd', 'sktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctq', 'the', 'xsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaaepmgjjxhcjmnafn', 341, 'your', 'xxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwd', 'o', 'look') , ('xxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsot', 'xxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmn', 'lxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxu', 'vlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpz', 342, 'mvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjop', 'fmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyh', 'xfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmy', 'axfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoap') , ('haxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayibur', 'ehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghncffablpesvftctqxcxsriduotqpzazkhrlmlyzuyvqxzkmcarqdbyhpmxakusfmmpgeskhdkwhegldazdjaae', 'cehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbf', 'mcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuu', 343, 'xmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqi', 'like', 'xxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpy', 'sxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjr') , ('hsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirke', 'well', 'xhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgot', 'w', 344, 'kxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuag', 'm', 'they', 'ukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeie') , ('aukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjx', 'laukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'hlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikk', 'there', 345, 'hhlaukxhsx', 'd', 'mhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqv', 'dmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('qdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkar', 'at', 'h', 'cqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlyk', 346, 'n', 'k', 'e', 'zcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklc') , ('xzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbk', 'axzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiao', 'haxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznig', 'zhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycn', 347, 'at', 'with', 'hzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszgg', 'whzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwm') , ('twhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxny', 'her', 't', 'r', 348, 'ctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfpr', 'a', 'on', 'hctwhzhaxzcqdmhhlaukxhsxxmcehaxf') , ('oh', 'qhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltq', 'jqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapj', 'ljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvple', 349, 'r', 'mljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoh', 'qmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhk', 'kqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkng') , ('be', 'hkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhi', 'hhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwluf', 'd', 350, 'lhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvp', 'think', 'r', 'qlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfo');
+INSERT /*! IGNORE */ INTO t1 VALUES ('eqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuet', 'reqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiw', 'didn\'t', 'ireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjr', 351, 'they', 'hireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfo', 'w', 'bhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqsz') , ('cbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpw', 'scbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiej', 'come', 'uscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozb', 352, 'wuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviy', 'fwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsog', 'this', 'dfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwn') , ('bdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbw', 'gbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxm', 'qgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwsw', 'so', 353, 'jqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmj', 'a', 'ejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximem', 'jejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpv') , ('of', 'd', 'with', 'just', 354, 'zjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxc', 'wzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfm', 'jwzjejqgbdfwuscbhire', 'wjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztailwlufznzszggyycnmiwelwmljflrnknzqvczcncmoxqxwnlpcmrycedtfsndiaoygzxqgyghnc') , ('the', 'zwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehz', 'will', 'vzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbh', 355, 'j', 'yvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'qyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymb', 'at');
+INSERT /*! IGNORE */ INTO t1 VALUES ('s', 'kqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocx', 'just', 'xkqyvzwjw', 356, 'who', 'zxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukez', 'bzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 'me') , ('mbzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzov', 'ambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghse', 'her', 'oambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqm', 357, 'like', 'n', 'like', 'e') , ('qoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgp', 'kqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqg', 'x', 'him', 358, 'jkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqint', 'ljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgo', 'iljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuiojjeehkmcpzwuagiiciyjjrpiqgwmvglzmkwidinabmhnizqdbfprmsztai', 'I\'m') , ('out', 'j', 'o', 'when', 359, 'time', 'don\'t', 'xiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmni', 'sxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcx') , ('o', 'mean', 'hsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypx', 'i', 360, 'were', 'ehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddl', 'hehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvd', 'mhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs');
+INSERT /*! IGNORE */ INTO t1 VALUES ('irwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpas', 'really', 'it\'s', 'sirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzx', 381, 'were', 'and', 'nsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkw', 'jnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikk') , ('ejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurh', 'your', 'up', 'wejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjop', 382, 'lwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcff', 'z', 'x', 'tlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbry') , ('what', 'gtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirk', 'ugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrf', 'eugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymb', 383, 'deugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvme', 'bdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslay', 'yeah', 'bbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahn') , ('gbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarm', 'bgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnr', 'tbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlh', 'itbgbbdeugtlwejnsirwilkkojpktx', 384, 'pitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqin', 'tpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzd', 'not', 'htpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjr') , ('your', 'yhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzds', 'will', 'mean', 385, 'zyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaow', 'lzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs', 'want', 'not');
+INSERT /*! IGNORE */ INTO t1 VALUES ('xlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintz', 'sxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijn', 'when', 'mean', 386, 'bsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoar', 'have', 'i', 'hbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabq') , ('ahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnk', 'hahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnro', 'p', 'we', 387, 'thahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz', 'here', 'bthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxei', 'kbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpvmergipoardkdlfwuuakuio') , ('mkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxyemeqhaypjnrwgwyumtanwtplrxlykoogfzmpsximempgwmuogryxbpwjbkglpv', 'wmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjq', 'ewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctw', 'u', 388, 'g', 'mewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnij', 'smewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyi', 'if') , ('tsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacx', 'k', 'etsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzla', 'setsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoq', 389, 'f', 'dsetsmewmkbthahbsxlzyhtpitbgbb', 'p', 'jdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrjjutkarjvbwjxy') , ('u', 'g', 'a', 'bjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdces', 390, 'ebjdsetsmewmkbthahbsxlzyhtpitbgbbdeu', 'yebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmd', 'kyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpk', 'qkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircr');
+INSERT /*! IGNORE */ INTO t1 VALUES ('y', 'so', 'back', 'do', 391, 'hqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'qhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerap', 'zqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'x') , ('rzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvu', 'crzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwc', 'were', 'kcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopj', 392, 'nkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieou', 'w', 'dnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqml', 'rdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjym') , ('prdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvi', 'uprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbkl', 'quprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfox', 'equprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgu', 393, 'pequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasd', 'qpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpy', 'yqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpab', 'o') , ('lyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqnd', 'so', 'didn\'t', 'mlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtym', 394, 'x', 'umlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwv', 's', 'vumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxil') , ('a', 'o', 'pvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmh', 'opvumlyqpequprdnkcrzqhqkyebjd', 395, 'his', 'on', 'yes', 'bopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscq');
+INSERT /*! IGNORE */ INTO t1 VALUES ('cbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhks', 'xcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgot', 'sxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukezn', 'csxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymz', 396, 'l', 'qcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjsc', 'kqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeie', 'get') , ('g', 'ekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpj', 'pekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpy', 'vpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtx', 397, 'avpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmheh', 'there', 'kavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthv', 'dkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyl') , ('it', 'zdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshn', 'they', 'kzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvple', 398, 'skzdkavpekqcsxcbopvumlyqpequprdnkcrz', 'cskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjyly', 'some', 'jcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpv') , ('e', 'vjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzed', 'xvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqd', 't', 399, 'fxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjx', 'really', 'vfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrq', 'd') , ('lvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkp', 'olvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesf', 'c', 'why', 400, 'n', 'solvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvple', 'mean', 'csolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmp');
+INSERT /*! IGNORE */ INTO t1 VALUES ('n', 'scsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyx', 'mscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwirc', 'I\'ll', 401, 'c', 'yeah', 's', 'u') , ('hmscsolvfxvjcs', 'xhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjds', 'jxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'when', 402, 'njxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqy', 'enjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgods', 'good', 'ok') , ('come', 'nenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhd', 'snenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbq', 'nsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequpr', 403, 'come', 'to', 'like', 'xnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjo') , ('zxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquerapjrj', 'wzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosn', 'some', 'awzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsquer', 404, 'sawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpo', 'ysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijni', 'g', 'uysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumj') , ('buysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekym', 'fbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkka', 'm', 'nfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetk', 405, 'l', 'unfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahne', 'runfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgot', 'n');
+INSERT /*! IGNORE */ INTO t1 VALUES ('hrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcd', 'jhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxx', 'ajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlw', 'y', 406, 'want', 'x', 'bajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqag', 'she') , ('u', 'rbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgy', 'rrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuetkmsqu', 'grrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigc', 407, 's', 'so', 'xgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwd', 'kxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsbmyxzkhzlaumjscqbhpuqbldwovnhgbklcpqcvmuet') , ('ykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignm', 'did', 'aykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpu', 'naykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiud', 408, 'p', 'is', 'vnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejn', 'uvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykp') , ('I', 'suvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnz', 'here', 'asuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmj', 409, 'pasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhc', 'ipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkq', 'bipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnro', 'ibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsx') , ('jibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiy', 'cjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvf', 'yeah', 'xcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdf', 410, 'it', 'sxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz', 'i', 'msxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsog');
+INSERT /*! IGNORE */ INTO t1 VALUES ('nmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxy', 'hnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlsh', 'khnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoh', 'ckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqnd', 411, 'as', 'hckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegcl', 'my', 'yhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkpl') , ('jyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbo', 'cjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekq', 'ecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbty', 'gecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunq', 412, 'agecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgo', 'magecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxgg', 'cmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljq', 'just') , ('he', 'acmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytze', 'yacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmy', 'iyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 413, 'u', 'xiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbm', 'b', 'zxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbs') , ('nzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqj', 'onzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbm', 'sonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjri', 'up', 414, 'bsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbu', 'dbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmp', 'do', 'tdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwy') , ('dtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpa', 'then', 'zdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfw', 'a', 415, 'qzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihu', 'r', 'iqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupm', 'p');
+INSERT /*! IGNORE */ INTO t1 VALUES ('some', 'niqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzq', 'yniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevef', 'all', 416, 'v', 'hyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaob', 'want', 'lhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyv') , ('right', 'jlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpu', 'yjlhyniqzdtdbsonzx', 'yyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxh', 417, 'dyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'j', 'I\'ll', 'n') , ('ndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyq', 'lndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglut', 'v', 'dlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukez', 418, 'ddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbst', 'lddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgo', 'vlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhl', 's') , ('m', 'gvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirx', 'wgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaif', 'hwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjr', 419, 'to', 'hhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtl', 'back', 'was') , ('m', 'x', 'lhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxy', 'a', 420, 'olhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 'iolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'm', 'yeah');
+INSERT /*! IGNORE */ INTO t1 VALUES ('oiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpkn', 'qoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwusc', 'n', 'gqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjria', 421, 'something', 'can\'t', 'he\'s', 'egqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckh') , ('degqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcq', 'qdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutqoyrqiuvfrrgupmlvqndhksyzbvoklpmukeznigcurcbiwvjopjtmjqvplevefgodsb', 'v', 'jqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwla', 422, 'you', 'v', 'kjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxh', 'jkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcb') , ('what', 'x', 'v', 'z', 423, 'pjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifd', 'dpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhl', 'pdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskw', 'qpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaas') , ('w', 'did', 'nqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhct', 'knqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqc', 424, 'aknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzd', 'h', 'caknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyf', 'from') , ('m', 'kcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeug', 'vkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgb', 'cvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiie', 425, 'with', 'back', 'dcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'fdcvkcaknqpdpjkjq');
+INSERT /*! IGNORE */ INTO t1 VALUES ('xfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfi', 'ixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpo', 'k', 'cixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbso', 426, 'lcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwi', 'xlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocx', 'zxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz', 'about') , ('are', 'xzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasm', 'p', 'about', 427, 'h', 'txzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxh', 'something', 'jtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkko') , ('ljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhij', 'vljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbry', 'yvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyu', 'l', 428, 'k', 'myvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiyl', 'why', 'umyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactb') , ('her', 'you\'re', 'be', 'u', 429, 'qumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdp', 'not', 'j', 'can\'t') , ('pqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxh', 'zpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpi', 'him', 'izpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykp', 430, 'h', 'lizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzd', 'plizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnrosdekjylyjrrfnbwcvviybutq', 'dplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyao');
+INSERT /*! IGNORE */ INTO t1 VALUES ('zdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpe', 'u', 'kzdplizpqumyvljtxz', 'akzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddlt', 431, 'no', 'rakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpc', 'xrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpe', 'exrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxns') , ('fexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrq', 'zfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbn', 'bzfexrakzdplizpqumyvljtxzxlcixfdcvkcak', 'cbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxg', 432, 'i', 'say', 'dcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswi', 'udcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnk') , ('n', 'y', 'fudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfm', 'vfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffv', 433, 't', 'this', 'gvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycm', 'tgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxg') , ('ntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbw', 'nntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkk', 'b', 'anntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxyiiinlgnro', 434, 'janntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdq', 'gjanntgvfudcbzfexra', 'w', 'sgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxh') , ('hsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpoha', 'h', 'nhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggop', 'unhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpek', 435, 'eunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwar', 'from', 's', 'zeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuv');
+INSERT /*! IGNORE */ INTO t1 VALUES ('x', 'g', 'l', 'tzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkng', 436, 'c', 'would', 'been', 'gtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxyp') , ('x', 'did', 'z', 'ngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhla', 437, 'kngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqgluto', 'rkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoio', 'srkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiud', 'hsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedw') , ('n', 'chsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsm', 'xchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfke', 'rxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedle', 438, 'lrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnv', 'in', 'klrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqt', 'because') , ('pklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxyp', 'k', 'w', 'fpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkk', 439, 'x', 'ffpklrxchsrkngtzeunhsgjanntgvfudc', 'lffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkpl', 'did') , ('k', 'elffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdt', 'selffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjl', 'aselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqag', 440, 'uaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupq', 'puaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrb', 'ppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvuml', 'yppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkplnldmpawbzosnvunqqpushgphfkedcxy');
+INSERT /*! IGNORE */ INTO t1 VALUES ('in', 'it\'s', 'how', 'going', 441, 'a', 'xyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebb', 'be', 'i') , ('axyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpj', 'iaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxp', 'n', 'i', 442, 'wiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvl', 'p', 'lwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqago', 'elwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqde') , ('l', 'helwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudz', 'i', 'k', 443, 's', 'zhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunf', 'f', 'q') , ('fzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyq', 'i', 'afzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlr', 'we', 444, 'g', 'cafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyli', 'u', 'pucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsud') , ('gpucafzhelwiaxyppuaselffpklrx', 'dgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs', 'ddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgoth', 'hddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqint', 445, 'mhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjw', 'kmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughh', 'q', 'nkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwu');
+INSERT /*! IGNORE */ INTO t1 VALUES ('g', 'pnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjc', 'dpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjugh', 'ndpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhi', 446, 'g', 'endpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqf', 'mendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvum', 'omendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszso') , ('u', 'gomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbh', 'sgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbg', 'a', 447, 'qsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxf', 'yqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'o', 'xyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhned') , ('lxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddln', 'zlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckh', 'q', 'wzlxyqsgomendpnkmhddgpucafzhelwiax', 448, 'h', 'dwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrm', 't', 'ydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotg') , ('we', 'mydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzov', 'but', 'ymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwl', 449, 'lymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzd', 'vlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhi', 'uvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhml', 'puvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijnihuxhfmvzqnkp') , ('wpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudrpknsxjxjxccvjwarmwlaaskwluooxhijni', 'cwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkoj', 'ccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkca', 'iccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexr', 450, 'niccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedac', 'fniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjib', 'for', 'xfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbo');
+INSERT /*! IGNORE */ INTO t1 VALUES ('pxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplk', 'qpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdo', 'bqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzy', 'nbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkj', 451, 'f', 'xnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzd', 'that\'s', 'his') , ('ixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakz', 'I', 'rixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvup', 'e', 452, 'back', 'f', 'orixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdb', 'forixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvw') , ('but', 'xforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvlj', 'ixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwu', 'vixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykx', 453, 'hvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzha', 'khvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvp', 'hkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytz', 'shkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmceh') , ('vshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntg', 'yvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxgg', 'that\'s', 'byvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeq', 454, 'yeah', 'k', 'hbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpign', 'yhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbezn') , ('tyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjds', 'rtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqj', 'zrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkm', 'czrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozb', 455, 'qczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyht', 'qqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqch', 'bqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdpli', 'really');
+INSERT /*! IGNORE */ INTO t1 VALUES ('obqqczrtyhbyvshkhvix', 's', 'all', 'hobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbs', 456, 'uhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvd', 'we', 'uuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzed', 'nuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmf') , ('so', 'lnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvyps', 'glnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcr', 'just', 457, 'pglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsudr', 'z', 'cpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmag', 'can\'t') , ('ncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtx', 'l', 'h', 'qncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqd', 458, 'sqncpglnuuh', 'xsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzed', 'rxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtg', 'rrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlci') , ('mrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgja', 'amrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbaj', 'why', 'a', 459, 'pamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytzedacxhrqbrycmzmfoqjfoikkplkqintzhmlvivfjjrialgqmkmdcesfgqjgotgothcjkwsud', 'on', 'apamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliq', 'lapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgb') , ('it', 'llapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnk', 'nllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwf', 'is', 460, 's', 'a', 'mnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznv', 'xmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('her', 'no', 'b', 'bxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwz', 461, 'lbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbik', 'llbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazp', 'b', 'o') , ('for', 'j', 'h', 'n', 462, 'nllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikac', 'snllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwf', 'dsnllbxmnlla', 'well') , ('sdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixfori', 'look', 'yes', 'dsdsnllbxmnllapamrrxsqn', 463, 'here', 'hdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjr', 'qhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzo', 'tqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxg') , ('c', 'i', 'atqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoc', 'uatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjs', 464, 's', 'puatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysa', 'i', 'that') , ('x', 'gpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxs', 'there', 'tgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwi', 465, 'mtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacma', 'omtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryy', 'r', 'oomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqaz');
+INSERT /*! IGNORE */ INTO t1 VALUES ('p', 'mean', 'could', 'boomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrb', 466, 'uboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfsw', 'yuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjx', 'oyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixfori', 'woyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpeq') , ('pwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprika', 'I\'m', 'how', 'gpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdm', 467, 'zgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopv', 'mean', 'well', 'zzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnk') , ('k', 'pzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsme', 'spzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxns', 'lspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkq', 468, 'r', 'hlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeug', 'get', 'of') , ('yhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhe', 'me', 'syhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyv', 'xsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgz', 469, 'been', 'jxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxnytz', 'mean', 'pjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbb') , ('rpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmceha', 'so', 'prpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapw', 'yprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxeiejmjzpohaxlshnzovhlrwxn', 470, 'kyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcji', 'dkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs', 'wdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhc', 'his');
+INSERT /*! IGNORE */ INTO t1 VALUES ('p', 'fwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 'sfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqk', 'c', 471, 'usfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdt', 'like', 'n', 'm') , ('xusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvk', 'all', 'u', 'sxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjr', 472, 'wsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcr', 'u', 'owsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwd', 'iowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacv') , ('miowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobo', 'tmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbg', 'vtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkr', 'rvtmiowsxusfwdkyprpjxsyhlspzzgpwoyu', 473, 'jrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjs', 'jjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboo', 'ijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdpli', 'or') , ('for', 'oijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'm', 'uoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifk', 474, 'euoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrk', 'beuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcv', 'vbeuoijjrvtmiowsxusfwdkyp', 'like') , ('r', 'rvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhla', 'crvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwej', 'it\'s', 475, 'yeah', 'that\'s', 'didn\'t', 'be');
+INSERT /*! IGNORE */ INTO t1 VALUES ('dcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyo', 'ddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyq', 'rddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlh', 'come', 476, 'nrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyht', 'cnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhe', 'hcnrdd', 'yes') , ('I\'m', 'hhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolh', 'j', 'go', 477, 'nhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdh', 't', 'mnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'yeah') , ('tmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdk', 'xtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdk', 'uxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqd', 'euxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbik', 478, 'want', 'seuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfiv', 'gseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpi', 'pgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhn') , ('be', 'ppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonz', 'uppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyao', 'cuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomend', 479, 'acuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcv', 'dacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwjrvxbwymbzbwswirkeqbikacvfoxe', 'were', 'gdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrx') , ('hgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprp', 'qhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxskt', 'aqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfnic', 'maqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhn', 480, 'k', 'he', 'mmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbb', 'is');
+INSERT /*! IGNORE */ INTO t1 VALUES ('i', 'qmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhd', 'okay', 'b', 481, 'uqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzw', 'x', 'm', 'fuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxns') , ('me', 'cfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhdd', 'f', 's', 482, 'or', 'o', 'there', 'i') , ('xcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywuehzjughhnpkozbxlbiudaqtxqdhoapwsrvwj', 'txcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgv', 'a', 'mtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeug', 483, 'good', 'if', 'were', 'wmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieo') , ('pwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnm', 'npwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonz', 'bnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxx', 'mbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdp', 484, 'pmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenj', 'apmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvp', 'v', 'aapmbnpwmtxcfuqmmaqhgdacu') , ('waapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgy', 'rwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltq', 'wrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglut', 'ywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfswwdquxnyliqfivpignmjswywueh', 485, 'you\'re', 'w', 'sywrwaap', 'b');
+INSERT /*! IGNORE */ INTO t1 VALUES ('g', 'dsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsl', 'been', 'that', 486, 'ddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseux', 'qddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyum', 'l', 'lqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfni') , ('r', 'are', 'one', 'not', 487, 'v', 'wlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupq', 'f', 'dwlqddsywrwaapmbnpwmtxcfu') , ('adwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwusc', 'd', 'padwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeu', 'j', 488, 'tpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchs', 'w', 'were', 'jtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpi') , ('rjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeihe', 'xrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoij', 'f', 'tell', 489, 'jxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnms', 'q', 'yes', 'say') , ('ujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbb', 'l', 'vujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmag', 'm', 490, 'bvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoa', 'vbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdj', 'k', 'as');
+INSERT /*! IGNORE */ INTO t1 VALUES ('if', 'no', 'tvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs', 'itvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbb', 491, 'in', 'sitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedle', 'fsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasm', 'ufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowd') , ('x', 'r', 't', 'tufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhk', 492, 'ntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqp', 'mntu', 'get', 'kmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsg') , ('tkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmt', 'q', 'some', 'etkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdp', 493, 'zetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoi', 'nzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgr', 'inzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbq', 'minzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniq') , ('qminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs', 'rqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxyp', 'm', 'wrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegc', 494, 'r', 'y', 'gwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvz', 'rgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkc') , ('trgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsi', 'itrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymy', 'l', 'how', 495, 'citrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhslj', 'scitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobo', 'yeah', 'gscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('sgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhdd', 'u', 'o', 'isgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjq', 496, 'that\'s', 'going', 'sisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolh', 'isisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl') , ('didn\'t', 'were', 'visisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoi', 'tvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahne', 497, 'ptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoaifkhscrdprikahnedlebbnqocxtgyfsw', 'e', 'qptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpsla', 'kqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscs') , ('s', 'will', 'lkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdka', 'd', 498, 'alkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfi', 'you', 'd', 'valkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsx') , ('x', 'u', 'ovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjr', 'xovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhc', 499, 'sxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpj', 'rsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyq', 'be', 'drsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqp') , ('did', 'have', 'ldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehax', 'dldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 500, 'zdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdj', 'd', 'u', 'czdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeac');
+INSERT /*! IGNORE */ INTO t1 VALUES ('z', 'had', 'aczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseu', 's', 501, 'naczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxh', 'okay', 'bnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymy', 'zbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmn') , ('out', 'azbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdq', 'about', 'going', 502, 'razbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrm', 'erazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzf', 'xerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejq', 'bxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqg') , ('u', 'hbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlx', 'had', 'mhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyo', 503, 'gmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfnicc', 'fgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrd', 'wfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqch', 'up') , ('uwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminz', 'muwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhne', 'xmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqz', 'b', 504, 'd', 'xxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsy', 'vxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndtqglutoai', 'lvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeac') , ('tlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxurhcwvypsxlpslayiburaowdbfirkngegsqndt', 'x', 'gtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzg', 'ogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyp', 505, 'kogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkye', 'z', 'zkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckh', 'nzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlauk');
+INSERT /*! IGNORE */ INTO t1 VALUES ('a', 'hnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvt', 'my', 'nhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctw', 506, 'will', 'p', 'gnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'rgnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqan') , ('argnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqcz', 'i', 'can', 'jargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoei', 507, 'sjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxi', 'usjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtx', 'husjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdpli', 'f') , ('e', 'jhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniq', 'b', 'xjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbz', 508, 'nxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghs', 'lnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtx', 'glnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubk', 'okay') , ('e', 'oglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcr', 'boglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffv', 'i', 509, 'vboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjy', 'z', 'qvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxy', 'gqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvs') , ('sgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljq', 'wsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrs', 'i', 'for', 510, 'e', 'his', 'vwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcb', 'ivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqml');
+INSERT /*! IGNORE */ INTO t1 VALUES ('qivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejq', 'bqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeact', 'abqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefe', 'time', 511, 'something', 'l', 'that\'s', 'm') , ('uabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjt', 'to', 'get', 'auabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnm', 512, 'd', 'rauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqp', 'zrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdb', 'bzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitb') , ('cbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwjrmsbxypxu', 'some', 'e', 'could', 513, 'ncbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhh', 'will', 'right', 'j') , ('no', 'b', 'encbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhq', 'about', 514, 'mencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbth', 'omencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcs', 'lomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpuca', 'flomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrdd') , ('a', 'v', 'nflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixf', 'x', 515, 'good', 'or', 'what', 'nnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtg');
+INSERT /*! IGNORE */ INTO t1 VALUES ('n', 'qnnflomen', 'b', 'hey', 516, 'gqnnflomencbzrauabqivwsgqvboglnxjhusjargnhn', 'dgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbh', 'mdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpj', 'as') , ('e', 'hmdgqn', 'going', 'ghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrun', 517, 'k', 'kghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 's', 'kkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeihe') , ('skkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhi', 'me', 'c', 'it\'s', 518, 'gskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvum', 'dgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqh', 'rdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctzqgzudzqdoqwmpuwj', 'wrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuas') , ('ewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacupp', 'okay', 'mewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucaf', 'want', 519, 'c', 'ymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyp', 'y', 'gymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvu') , ('zgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvsh', 'rzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvl', 'you\'re', 'srzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmt', 520, 'fsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiie', 'zfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtz', 'tzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrz', 'xtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvt');
+INSERT /*! IGNORE */ INTO t1 VALUES ('ok', 'ixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsl', 'when', 'lixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvsh', 521, 'm', 'nlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqs', 'nnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbez', 'a') , ('ynnlixtzfsrzgymewrdgs', 'k', 'rynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuu', 'srynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgom', 522, 'ysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhl', 'v', 's', 'I\'ll') , ('c', 'c', 'g', 'nysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvpykpixdoctz', 523, 'think', 'q', 'q', 'dnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcf') , ('ldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnk', 'at', 'oldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxt', 'uoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgsc', 524, 'zuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrx', 'wzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyle', 'kwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayroh', 'dkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjc') , ('was', 'mdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumy', 'nmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljteky', 'ynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbh', 525, 'yynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeun', 'xyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrb', 'hxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgb', 'uhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqd');
+INSERT /*! IGNORE */ INTO t1 VALUES ('auhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdpzmytdxggopfirxthtnijrhddltqazpvp', 'hauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlauk', 'x', 'jhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetk', 526, 'pjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdp', 'your', 'didn\'t', 'mpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpq') , ('mmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkk', 'will', 'vmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkk', 'zvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljq', 527, 'lzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpc', 'ulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdq', 'all', 'v') , ('eulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyl', 'aeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeact', 'gaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvu', 'one', 528, 'ugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhnedwircrqyoiylzdsotdp', 'fugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyubo', 'b', 'xfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkm') , ('wxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhi', 'ewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxm', 'is', 'pewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufs', 529, 'h', 'ypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrd', 'lypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxo', 'qlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqky') , ('don\'t', 'jqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasu', 'him', 'ajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhq', 530, 'fajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivw', 'zfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaself', 'm', 'dzfajqlypewxfugaeulzv');
+INSERT /*! IGNORE */ INTO t1 VALUES ('will', 'is', 'pdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzghsefegclqanhsljtekymznrbbeznvdwfmvupqmirwpxxnyleeactbstyumbqtnkkayrohtxpjqchyqszsogrthvpvlcvpasdbmniqlhne', 'qpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgsci', 531, 'when', 'j', 't', 'not') , ('tqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsi', 'ktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnb', 'about', 'lktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqd', 532, 'because', 'i', 'jlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwz', 'ijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspz') , ('bijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnac', 'k', 'hbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifd', 'with', 533, 'nhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitb', 'qnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhel', 'iqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolv', 'ziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgyme') , ('sziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmv', 't', 'osziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyrauxgdqjpylcdjymcffvptpabqdkrqagoqaoeiheycfmhehsxiljkqoambzxkqyvzwjwzjejqgbdfwuscbhireqlhhkqmljqhctwhzhaxzcqdmhhlaukxhsxxmcehaxfmvlxxxxsktzgh', 'n', 534, 'gosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjh', 'g', 'n', 'n') , ('mean', 'z', 'lgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhru', 'nlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsi', 535, 'hnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyh', 'is', 'ohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprdnkcrzqhqkyebjdsetsmewmkbthahbsxlzyhtpitbgbbdeugtlwejnsirwilkkojpktxifdbtymyhiieoubkryyaobojbpcpibasmtxfyraux', 'hohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuysawzxnsnenjxhmscsolvfxvjcskzdkavpekqcsxcbopvumlyqpequprd');
+INSERT /*! IGNORE */ INTO t1 VALUES ('cgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhf', 'scgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxo', 'tell', 'b', 621, 'kscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuu', 'kkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulok', 'some', 'lkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaap') , ('slkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbc', 'sslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqy', 'jsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrg', 'r', 622, 'i', 'cjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqi', 'you', 'gcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendp') , ('igcjsslkkscgen', 'some', 'b', 'kigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvf', 623, 'nkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvb', 'v', 'mnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfim', 'ymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnayk') , ('iymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgoszi', 'viymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanv', 'had', 's', 624, 'eviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetk', 'oeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacmagecjyhckhnmsxcjibipasuvnaykxgrrbajhrunfbuys', 'on', 'yoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwz') , ('y', 'is', 'ryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfid', 'oryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzg', 625, 'boryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwia', 'gboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexra', 'say', 'cgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddgpucafzhelwiaxyppuaselffpklrxchsrkngtzeunhsgjanntgvfudcbzfexrakzdplizpqumyvljtxzxlcixfdcvkcaknqpdpjkjqdegqoiolhhwgvlddlndyyjlhyniqzdtdbsonzxiyacm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('tjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyh', 'f', 'itjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgq', 'i', 646, 'qitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'lqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynn', 'vlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyr', 'mean') , ('q', 'dvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvsh', 'zdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocya', 'czdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdlt', 647, 'eczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrj', 'yes', 'ceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvy', 'if') , ('s', 'like', 'oceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbz', 'g', 648, 'foceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapa', 's', 'ufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxal', 'w') , ('w', 'that', 'my', 'oufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjarg', 649, 'uoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzg', 'nuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmu', 'fnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnax', 'be') , ('kfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyx', 'zkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencb', 'come', 'do', 650, 'tzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencb', 'i', 'atzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxova', 'qatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrr');
+INSERT /*! IGNORE */ INTO t1 VALUES ('uqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujx', 'ruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpj', 'she', 'c', 651, 'don\'t', 'i', 'think', 'hruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapa') , ('b', 'hhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyyb', 'nhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapam', 'lnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajql', 652, 'blnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnll', 'zblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejam', 'bzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvuj', 'zbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkg') , ('me', 'o', 'well', 'vzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmh', 653, 'o', 'zovzbzblnhhruqatzk', 'zzovzbzblnhhruqatzkfnuoufocec', 'nzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulz') , ('snzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbyd', 'jsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqn', 'rjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpgln', 'z', 654, 'zrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhd', 'qzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhv', 'zqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpuf', 'jzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywg') , ('zjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwq', 'ezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbm', 'iezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiuj', 'her', 655, 'they', 'i', 'diezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyq', 'idiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzu');
+INSERT /*! IGNORE */ INTO t1 VALUES ('eidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxm', 'xeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqn', 'her', 'mxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgy', 656, 'one', 'd', 'xmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbna', 'yxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnu') , ('qyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsok', 'jqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtx', 'a', 'ejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddc', 657, 'vejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqr', 'dvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmd', 'that\'s', 'I\'ll') , ('x', 'jdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsy', 'zjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyqsgomendpnkmhddg', 'jzjdvejqyxmxeidiezj', 658, 'c', 'ijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwph', 'hey', 'dijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnn') , ('cdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeu', 'qcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvlymydwzlxyq', 'aqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncp', 'taqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlct', 659, 'itaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnksh', 'xitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkq', 'nxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnu', 'onxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlype') , ('conxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfniccwpuvl', 'lconxitaqcdijzjdvejqyxmx', 'vlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgk', 'hvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorb', 660, 'ihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrz', 'xihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvbogl', 'y', 'the');
+INSERT /*! IGNORE */ INTO t1 VALUES ('did', 'been', 's', 'uxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgsc', 661, 'suxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbor', 'psuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboom', 'ipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulel', 'is') , ('eipsuxihvlconxitaqcdijzjdvej', 'zeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsn', 'czeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrb', 'v', 662, 'or', 'g', 'mczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 'didn\'t') , ('b', 'kmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgen', 'jkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqiv', 'right', 663, 'tjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfnicc', 'ftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacu', 'dftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqc', 'jdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpa') , ('q', 'ojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhb', 'this', 'qojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasv', 664, 'd', 'eqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyeche', 'b', 'r') , ('qeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhau', 'look', 'jqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapy', 'e', 665, 'o', 'ijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydut', 'g', 'nijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzbl');
+INSERT /*! IGNORE */ INTO t1 VALUES ('i', 'u', 'it', 'tnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmn', 666, 'etnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdj', 'there', 'see', 'h') , ('fetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuw', 'ufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyag', 'wufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligng', 'xwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlv', 667, 'from', 'vxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdu', 'svxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxu', 'asvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktq') , ('h', 'when', 'oasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgsk', 'uoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywy', 668, 'g', 'suoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxy', 'lsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynn', 'llsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechef') , ('mllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforixnbqpxfn', 'tmllsuoasvxwu', 'when', 'jtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyub', 669, 'who', 'xjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnj', 'something', 'bxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhx') , ('who', 'jbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszc', 'ejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvuj', 'ok', 670, 'xejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaac', 'f', 'd', 'tell');
+INSERT /*! IGNORE */ INTO t1 VALUES ('zxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgse', 'xzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqczrtyhbyvshkhvixforix', 'fxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixt', 'pfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutj', 671, 'ypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyx', 'I\'m', 'k', 'it') , ('for', 'n', 'oypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbec', 'ooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboo', 672, 'nooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusja', 'f', 'unooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgk', 'can') , ('x', 'dunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxu', 'tdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhlig', 'can\'t', 673, 'u', 'ltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwge', 'yltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'oyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoal') , ('y', 'be', 'we', 'soyltdunooypfxzxejbxjtmllsuo', 674, 'a', 'qsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsdsnllbxmnllapamrrxsqncpglnuuhobqqcz', 'can', 'bqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhh') , ('nbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauh', 'some', 'hnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqdds', 'rhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsm', 675, 'trhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbz', 'ztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxera', 'mztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbo', 'pmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzbln');
+INSERT /*! IGNORE */ INTO t1 VALUES ('cpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoij', 'gcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcor', 'who', 's', 676, 'tgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirky', 'atgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpa', 'vatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscit', 'h') , ('uvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrg', 'buvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiez', 'no', 'sbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjss', 677, 'ssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefg', 'mssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgda', 'hmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjh', 'when') , ('phmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrg', 'z', 'jphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgs', 'right', 678, 'o', 'know', 'xjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbz', 'exjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzx') , ('t', 'w', 'wexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrq', 'xwexjphmssbuvatgcpmztrhnbqsoyltdunoo', 679, 'kxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgp', 'jkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxov', 'njkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgda', 'jnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqm') , ('okay', 'right', 'rjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldny', 'xrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoce', 680, 'uxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxera', 't', 'xuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmm', 'rxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlk');
+INSERT /*! IGNORE */ INTO t1 VALUES ('frxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspzzgpwoyuboomtgpuatqhdsds', 'cfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrs', 'dcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgo', 'hdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnh', 681, 'ehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzbl', 'v', 'fehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojd', 'you\'re') , ('ufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyn', 'tell', 'have', 'rufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxusfwdkyprpjxsyhlspz', 682, 'wrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmi', 'swrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsab', 'bswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvbo', 'up') , ('be', 'ebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusja', 'd', 'cebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfu', 683, 'pcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjd', 'ok', 'will', 'out') , ('cpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhl', 'ok', 'icpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejq', 'kicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqes', 684, 'ikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwv', 'iikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqa', 'biikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfg', 'his') , ('mbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhh', 'nmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwl', 'rnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'can', 685, 'brnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqd', 'gbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqe', 'y', 'g');
+INSERT /*! IGNORE */ INTO t1 VALUES ('wgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnz', 'e', 'bewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefg', 't', 686, 'some', 'dbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzv', 'bdbewgbrnmbiikicpcebswru', 'nbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrd') , ('bnbdbewgbrnmbiikicpcebswrufehdcfrxuxr', 'mbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuo', 'is', 'v', 687, 'ymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgos', 'gymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmma', 'ngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqddsywrwaapmbnpwmtxcfuqmmaqhgdacuppgseuxtmnhhcnrddcrvbeuoijjrvtmiowsxus', 'cngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetni') , ('ucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhus', 'k', 'j', 'd', 688, 'rucngymbnbdbewgbrnmbiikicpcebswrufehdcfr', 'lrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqdds', 'n', 'llrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbij') , ('k', 'rllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvuj', 't', 'u', 689, 'yrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledzi', 'ayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszc', 'gayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutj', 'dgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqk') , ('ndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbyd', 'wndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxo', 'is', 'rwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrd', 690, 'g', 'xrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefg', 'c', 'jxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyor');
+INSERT /*! IGNORE */ INTO t1 VALUES ('djxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmr', 'zdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdi', 'uzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadic', 'out', 691, 'kuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwp', 'got', 'x', 'vkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmm') , ('g', 'h', 'ivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmx', 'livkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgos', 692, 'rlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbn', 'rrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmh', 'krrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjk', 'bkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyr') , ('ok', 'hbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'no', 'think', 693, 'a', 'g', 'ahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmss', 'jahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrjtpadwlqdd') , ('up', 'e', 'y', 'y', 694, 'kjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysx', 'akjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssb', 'fakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugk', 'lfakjahbkrrlivkuzdjxrwndgayrllruc') , ('get', 'qlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgb', 'dqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyi', 'q', 695, 'edqlfakjahbkrrlivkuzdjxrwndgay', 'hedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkn', 'that', 'uhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdg');
+INSERT /*! IGNORE */ INTO t1 VALUES ('nuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanv', 'znuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdj', 'lznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredco', 'all', 696, 'ylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwn', 'u', 'rylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjx', 'brylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnz') , ('t', 'really', 'nbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsq', 'hnbrylznuhedqlfakj', 697, 'uhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgm', 'can\'t', 'would', 'puhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjs') , ('epuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnhe', 'like', 'u', 'want', 698, 'depuhnbrylznuhedq', 'are', 'vdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqe', 'had') , ('j', 'a', 'gvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjg', 'that', 699, 'mgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargn', 'rmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxz', 'prmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdffl', 'sprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhn') , ('c', 'rsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywt', 'zrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptvisisgscitrgwrqminzetkmntufsitvbvujxrj', 'azrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftn', 700, 'fazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaea', 'h', 'gfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujg', 'bgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrl');
+INSERT /*! IGNORE */ INTO t1 VALUES ('vbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 'e', 'zvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogt', 'o', 701, 'a', 'lzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwn', 'olzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbii', 'something') , ('h', 'it\'s', 'dolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfaj', 'pdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphm', 702, 'u', 'f', 'hpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzf', 'ohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqso') , ('t', 'cohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodom', 'acohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqi', 'k', 703, 'racohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxal', 'aracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxe', 'because', 'can\'t') , ('varacohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmic', 'one', 'ovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhau', 'fovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylb', 704, 'd', 'bfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzr', 'dbfovaracohpdo', 'gdbfovaraco') , ('ygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcnde', 'lygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxan', 'the', 'elygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqpt', 705, 'up', 'celygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufocecz', 'good', 'mcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysx');
+INSERT /*! IGNORE */ INTO t1 VALUES ('c', 'emcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxd', 'e', 'wemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkx', 706, 'uwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrra', 'zuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjar', 'w', 'vzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfs') , ('bvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqs', 'nbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'no', 'lnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrj', 707, 'glnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpd', 'c', 'as', 't') , ('s', 'r', 'cglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgoszi', 'some', 708, 's', 'mcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgb', 'me', 'vmcglnbvzuwemcelygdbfovaracohpdolz') , ('vvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptv', 'q', 'evvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkm', 'jevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 709, 'ajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziw', 'x', 'cajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwum', 'going') , ('jcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvde', 'about', 'vjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlype', 'zvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqsk', 710, 'xzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuwfgmhbxerazbnaczdldrsxovalkqptv', 'axzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslk', 'yaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvb', 'myaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhn');
+INSERT /*! IGNORE */ INTO t1 VALUES ('t', 'n', 'k', 'umyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkq', 711, 'wumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivku', 'me', 'y', 'nwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyi') , ('pnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqs', 'time', 'dpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnh', 'v', 712, 'odpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrb', 'codpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszcc', 'bcodpnwumyaxzvjcajevvmcglnb', 'q') , ('jbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysr', 'good', 'c', 'p', 713, 'fjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomenc', 'want', 'y', 'him') , ('v', 'o', 'tfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvbo', 'dtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyy', 714, 'udtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtml', 'yudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxa', 's', 'cyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdij') , ('t', 'v', 'y', 'jcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryo', 715, 'f', 'r', 'e', 'wjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunv');
+INSERT /*! IGNORE */ INTO t1 VALUES ('or', 'hwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlkt', 'k', 'mhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqy', 716, 'wmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllh', 't', 'ywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdlt', 'd') , ('vywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcg', 'something', 'lvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoylt', 'hlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvboglnxjhusjargnhnzkogtlvxxmuw', 717, 'so', 'all', 'ahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsj', 'sahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlh') , ('q', 'bsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlg', 'hey', 'ybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 718, 'bybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoc', 'mbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagz', 'kmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibx', 'jkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatz') , ('ujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdv', 'mean', 'pujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqso', 'qpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokh', 719, 'rqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfs', 'arqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnflomencbzrauabqivwsgqvb', 'a', 'that\'s') , ('a', 'narqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbo', 'see', 'oh', 720, 'gnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdc', 'but', 'w', 'the');
+INSERT /*! IGNORE */ INTO t1 VALUES ('egnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmred', 'negnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhli', 'nnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmp', 't', 721, 'fnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgr', 'xfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqta', 'exfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqo', 'texfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfuga') , ('h', 'xtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfa', 'f', 'uxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaraco', 722, 'nuxtexfnn', 'qnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzx', 'jqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxz', 'how') , ('get', 'v', 'hjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijz', 'nhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvl', 723, 'z', 'snhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhb', 'usnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkv', 'v') , ('qusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxb', 'lqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucn', 'mlqusnhjqnuxtexfnnegn', 'lmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomg', 724, 'then', 'plmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmes', 'pplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcaje', 'w') , ('xpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltd', 'axpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfh', 'paxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskeja', 'all', 725, 'spaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdv', 'cspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwnd', 'ccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvq', 'i');
+INSERT /*! IGNORE */ INTO t1 VALUES ('j', 'u', 'zccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzo', 's', 726, 'h', 'nzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafa', 'right', 'nnzccspaxpplmlq') , ('f', 'u', 'on', 'xnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnb', 727, 'yxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydu', 'd', 'byxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgs', 'pbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzd') , ('hpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwj', 'jhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkr', 'g', 'wjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaraco', 728, 'pwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyi', 'm', 'I\'ll', 'fpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiej') , ('a', 'go', 'bfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwlj', 'u', 729, 'nbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxt', 'v', 'r', 'o') , ('x', 'enbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpv', 'uenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrb', 'suenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazr', 730, 'all', 'n', 'd', 'be');
+INSERT /*! IGNORE */ INTO t1 VALUES ('why', 'gsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracoh', 'he\'s', 'n', 731, 'ogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufocec', 'x', 'b', 'xogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg') , ('jxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgo', 'you', 'hjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixt', 'thjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbec', 732, 'mthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledz', 'dmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnar', 'zdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvmmpjhauhxyynmdkwzuoldnysrynnlixtzfsrzgymewrdgskkghmdgqnnfl', 'uzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmd') , ('y', 'a', 'd', 'j', 733, 'fuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylb', 'with', 'ufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgb', 'eufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb') , ('oeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzr', 'n', 'eoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiu', 'feoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhl', 734, 'cfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtd', 'o', 'i', 'icfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeulzvm') , ('k', 'x', 'for', 'iicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysx', 735, 'eiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlc', 'm', 'neiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrh', 'for');
+INSERT /*! IGNORE */ INTO t1 VALUES ('his', 'tneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdf', 'h', 'f', 736, 'is', 'm', 'dtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvyw', 'time') , ('ndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkn', 'lndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnw', 'elndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjn', 'g', 737, 'selndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmb', 'like', 'cselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredco', 'like') , ('dcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejq', 'odcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyy', 'up', 'when', 738, 'eodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfw', 'aeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnki', 'that\'s', 'oaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbyb') , ('h', 'k', 'n', 'doaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecau', 739, 'd', 'adoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgos', 'vadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtule', 'nvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufed') , ('znvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcaje', 'a', 'n', 'xznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvl', 740, 'do', 's', 'kxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfck', 'bkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnb');
+INSERT /*! IGNORE */ INTO t1 VALUES ('gbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaraco', 'bgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryo', 'ibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqt', 'ok', 741, 'yibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymb', 'as', 'will', 'I\'m') , ('p', 'it\'s', 'xyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmh', 'him', 742, 'gxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqz', 'qgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqes', 'w', 'hqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbr') , ('mean', 'vhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdffl', 'j', 'can\'t', 743, 'yvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqx', 'have', 'v', 'xyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvi') , ('or', 'sxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspax', 'csxyvhqgxyibgbkxznvadoaeodcselndtnei', 'can', 744, 'ucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfc', 'lucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvll', 'ylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrr', 'zylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij') , ('pzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemi', 'mpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'a', 'for', 745, 'smpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoe', 'hsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdj', 'qhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmn', 'bqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcely');
+INSERT /*! IGNORE */ INTO t1 VALUES ('qbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegna', 'sqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlgosziqnhbijlktqpdzfajqlypewxfugaeul', 'ksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexj', 'm', 746, 'l', 'hksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedql', 'zhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnz', 'l') , ('jzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlco', 'mjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufe', 'x', 'hmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxej', 747, 'e', 'f', 'but', 'dhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedw') , ('x', 'rdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfx', 's', 'brdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgbor', 748, 'b', 'ibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhr', 'look', 'eibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconx') , ('feibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczh', 'a', 'f', 'oh', 749, 'u', 'ufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznu', 'to', 'that') , ('j', 'mufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetn', 'do', 'kmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnh', 750, 'akmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmi', 'c', 'qakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczhvyefjwwqkfhfyymqhmiejvmcgpgledziwvplllhohnlg', 'iqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('hiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkks', 'shiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedql', 'tshiqakmufei', 'a', 751, 'o', 'wtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyya', 'x', 'hwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgf') , ('y', 'lhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'l', 'clhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviy', 752, 'pclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnhe', 'cpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnux', 'you\'re', 'b') , ('ucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemce', 'wucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpuj', 'iwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcg', 'o', 753, 'diwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb', 'adiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszq', 'something', 'wadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlq') , ('ok', 'lwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocy', 'd', 'zlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntnaxanvqmbfaeaaczh', 754, 'czlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoa', 'bczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtaf', 'o', 'bbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltd') , ('were', 'bbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcse', 'fbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 'efbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmth', 755, 'd', 'yeah', 'oefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpi', 'ooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxw');
+INSERT /*! IGNORE */ INTO t1 VALUES ('eooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflc', 'deooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwph', 'zdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspa', 'bzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngym', 756, 'hbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfa', 'ihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemi', 'fihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdep', 'rfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhed') , ('f', 'hrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufei', 'o', 'on', 757, 'shrfihbzdeooefbbbczlwadiwucpclhwtshiqa', 'ushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwu', 'qushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmll', 'hqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqg') , ('were', 'hhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmesllt', 'to', 'n', 758, 'u', 'shhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmu', 'f', 'zshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpi') , ('qzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamw', 'hqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllruc', 'rhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhm', 'grhqzshhqushrfih', 759, 'bgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwq', 'xbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzy', 'hxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcel', 'hhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvi') , ('are', 'hhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebsw', 'lhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmic', 'tlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrl', 760, 'back', 'htlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmre', 'y', 'rhtlhhhxbgrhqzshhqushrfihb');
+INSERT /*! IGNORE */ INTO t1 VALUES ('xrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvj', 'jxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmcz', 'f', 't', 761, 'xjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqp', 'wxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfi', 'i', 'x') , ('uwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndg', 'suwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiez', 'h', 'a', 762, 'r', 'z', 'fsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaok', 'xfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwge') , ('uxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqn', 'that', 'j', 'muxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdlt', 763, 'umuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtb', 'wumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnar', 'd', 'kwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufet') , ('b', 'xkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtuleluf', 'hxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszq', 'shxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunoo', 764, 'jshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsmxbcndenyorypmhhywtsjpqkntn', 'sjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnh', 'vsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadi', 'as') , ('come', 'jvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicljdvjnlxtboqnxgulokhywyiujglvqoiydmzsm', 'ljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlco', 'look', 765, 'what', 'nljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqql', 'lnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbm', 'xlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbiz');
+INSERT /*! IGNORE */ INTO t1 VALUES ('I', 'dxlnljvsjshxkwumuxfsuwxjxr', 'tdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxod', 'mtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetni', 766, 'qmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqak', 'can', 'cqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvl', 'dcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnksht') , ('kdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmby', 'dkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcseln', 'wdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxns', 'dwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkf', 767, 'rdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsr', 'qrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxor', 'xqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrb', 'o') , ('m', 'like', 'jxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxita', 'have', 768, 'hjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkks', 'phjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarq', 'd', 's') , ('on', 'dphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdug', 'adphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbr', 'yadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxz', 769, 'gyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxo', 'tgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejb', 'ytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqy', 'gytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy') , ('got', 'jgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsu', 'they', 'vjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrj', 770, 'p', 'ivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxd', 'and', 'qivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi');
+INSERT /*! IGNORE */ INTO t1 VALUES ('was', 'z', 'bqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdol', 'ubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligngmicl', 771, 'yubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumya', 'tyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmlls', 'utyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizb', 'rutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbye') , ('jrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoa', 'wjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzov', 'go', 'j', 772, 'swjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhlig', 'dswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphms', 'don\'t', 'k') , ('mean', 'a', 'rdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqb', 'vrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjzocyagzsabjzwqykmnhdugkvllpzgrranfckmicfwgemiwqqzvvqqlhligng', 773, 'kvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsu', 'tkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshts', 'but', 'jtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhr') , ('mjtkvrdswjrutyubqivjgytgyadphjxqrdwdkd', 'fmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbr', 'do', 'pfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgr', 774, 'opfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzov', 'so', 'popfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarq', 'your') , ('hpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecau', 'g', 'zhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibx', 'mzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsj', 775, 'wmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdw', 'v', 'lwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrr', 'ylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexf');
+INSERT /*! IGNORE */ INTO t1 VALUES ('h', 'rylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicg', 'l', 'trylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecauvsjz', 776, 'back', 'etrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfn', 'xetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylu', 'bxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhn') , ('u', 'it', 'r', 'sbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtm', 777, 'lsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjsh', 'mlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljm', 'i', 'imlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztr') , ('eimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuv', 'veimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtml', 'zveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwd', 'jzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivj', 778, 'going', 'c', 'ajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcx', 'uajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxns') , ('auajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgv', 'mauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuo', 'lmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhf', 'rlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsm', 779, 'vrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'kvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnki', 'z', 'ukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuen') , ('mukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcy', 'cmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjg', 'acmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdffl', 'see', 780, 'vacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfim', 'oh', 'vvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzb', 'pvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeip');
+INSERT /*! IGNORE */ INTO t1 VALUES ('rpvvacmu', 'mrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjt', 'time', 'lmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbms', 781, 'what', 'dlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovara', 'hdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvado', 'or') , ('thdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprm', 'rthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdtxxejbecau', 'just', 'arthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpce', 782, 'darthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjx', 'udarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfgl', 'd', 'yudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy') , ('zyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoy', 'mzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqi', 'vmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdf', 'but', 783, 'jvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfak', 'hjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrmnzuaqdt', 'ghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwx', 'p') , ('k', 'm', 'a', 'fghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqt', 784, 'rfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgy', 'rrfghjvmzyudart', 'h', 'krrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdv') , ('ykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjb', 'wykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'd', 'was', 785, 'd', 'owykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimo', 'fowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhh', 'xfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbx');
+INSERT /*! IGNORE */ INTO t1 VALUES ('uxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbf', 't', 'kuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyyb', 'ok', 786, 'wkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulel', 'vwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij', 'zvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqu', 'z') , ('dzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhh', 'l', 'g', 'w', 787, 'hdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgc', 'm', 'x', 'g') , ('chdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevv', 'tchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnhe', 'gtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxita', 'zgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksq', 788, 'I', 'bzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgo', 'kbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsy', 'how') , ('I\'m', 'mkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwum', 'amkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxy', 'were', 789, 'oamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiik', 'goamkbzgtchdzvwkuxfowykrrfgh', 'cgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqsk', 'g') , ('vcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfova', 'y', 'just', 'dvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznu', 790, 'fdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqesz', 'q', 'nfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufe', 'anfdvcgoamkb');
+INSERT /*! IGNORE */ INTO t1 VALUES ('r', 'ianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxor', 'what', 'jianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbv', 791, 'how', 'y', 'ijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpo', 'iijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruq') , ('yiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswr', 'iyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqev', 'riyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltduno', 'nriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvde', 792, 'cnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrli', 'bcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgos', 'one', 'rbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikic') , ('srbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgb', 'v', 'usrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcn', 'wusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxgylbmredcorlfdmeslltdkqyrcftnmpufedwumapyrm', 793, 'u', 'bwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbd', 'hey', 'ybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhq') , ('can\'t', 'pybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqso', 'zpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmth', 'jzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwum', 794, 'ijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumy', 's', 'can', 'will') , ('fijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyech', 'n', 'efijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgx', 's', 795, 'p', 'c', 'that\'s', 'you');
+INSERT /*! IGNORE */ INTO t1 VALUES ('tefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmh', 'htefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvy', 'zhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrs', 'bzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzd', 796, 'his', 'lbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdm', 'one', 'albzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdve') , ('walbzhtefijzpybwusrbcnri', 'swalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgk', 'zswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghj', 'u', 797, 'f', 'qzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgv', 'all', 'v') , ('kqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjs', 'u', 'mkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqi', 'zmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdk', 798, 'zzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqus', 'jzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiiki', 'wjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwu', 'n') , ('owjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy', 'yowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszwnvbydutjpgqeszqfiduvqirkyyasvpibxorbfzdltcysxg', 'why', 'x', 799, 'pyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqx', 'npyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwu', 'go', 'nnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlk') , ('znnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqi', 'uznnpyowjzzmkqzswalbzhtefijzpybwusrb', 'iuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtd', 'x', 800, 'qiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpc', 'h', 'aqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmu', 'taqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllr');
+INSERT /*! IGNORE */ INTO t1 VALUES ('ptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexj', 'jptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcs', 'sjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayr', 'fsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfd', 801, 'bfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnsokrlctlkqevlvfglpvrbmszw', 'ibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylw', 'hibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfn', 'he\'s') , ('ehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndg', 'yehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetryl', 'wyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokz', 'fwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhed', 802, 'h', 'f', 'efwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnl', 'p') , ('eefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetry', 'meefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmunvicnkshtsyxnso', 'b', 'c', 803, 'f', 'imeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxm', 'fimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxj', 'qfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvw') , ('tell', 'vqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselnd', 'jvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvj', 'djvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxe', 804, 'rdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohp', 'of', 'jrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsb', 'ujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijian') , ('at', 'kujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrg', 'j', 'i', 805, 'fkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwa', 'it\'s', 'mfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxaln', 'r');
+INSERT /*! IGNORE */ INTO t1 VALUES ('gmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuo', 'rgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbu', 'crgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'tcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiik', 806, 'ntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbry', 'zntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfih', 'from', 'u') , ('wzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqc', 'his', 'twzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpc', 'w', 807, 'wtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkb', 'something', 'ywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwljmdbhyybwphwtulelufnhrgscbmhfimoalyyndcxbmu', 'mean') , ('oywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiw', 'v', 'poywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmc', 'for', 808, 'mpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'one', 'xmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijz', 'my') , ('will', 'sxmpoywtwzntcrgmfkujrdjvqfimeefwyeh', 'd', 'isxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqp', 809, 'here', 'i', 'visxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb', 'qvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjq') , ('vqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuo', 'lvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpz', 'flvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzvei', 'qflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeid', 810, 'xqflvq', 'his', 'axqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeu', 'taxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyud');
+INSERT /*! IGNORE */ INTO t1 VALUES ('jtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxf', 'cjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqy', 'I\'ll', 'dcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpc', 811, 'kdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllruc', 'pkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxy', 'mpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxzn', 'impkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkm') , ('uimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznv', 'tell', 'tuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfov', 'i', 812, 'they', 'was', 'ctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkm', 'xctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrf') , ('txctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxppl', 'e', 'rtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoevi', 'w', 813, 'irtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeef', 'a', 'firtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumux', 'h') , ('r', 'j', 'sfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodom', 'what', 814, 'have', 's', 'fsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxf', 'z') , ('sfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkig', 'f', 's', 'w', 815, 'msfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexj', 'wmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicf', 'twmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnz', 'itwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxi');
+INSERT /*! IGNORE */ INTO t1 VALUES ('nitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooyp', 'cnitwmsfsfirtxct', 'i', 'y', 816, 'going', 'vcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmt', 'nvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnathyijzwlj', 's') , ('knvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpuj', 'e', 'wknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywg', 'your', 817, 'twknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxet', 'he\'s', 'like', 'd') , ('got', 'd', 'btwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzz', 'mbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvis', 818, 'her', 'at', 'r', 'm') , ('smbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbco', 'really', 'gsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdft', 'f', 819, 'bgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtd', 'm', 'mbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqs', 'zmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooef') , ('oh', 'yzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxo', 'pyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufeh', 'just', 820, 'ipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelyg', 'bipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrr', 'fbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnu', 'on');
+INSERT /*! IGNORE */ INTO t1 VALUES ('I\'m', 'd', 'like', 'efbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxt', 821, 'how', 'pefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebsw', 'vpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmz', 'evpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrj') , ('yevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplml', 'uyevpefbipyzmbgsmbtwknv', 'u', 'he\'s', 822, 'euyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuh', 'neuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'fneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcn', 'sfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfime') , ('ksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpm', 'nksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdo', 'cnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrliv', 'ccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcn', 823, 'hccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlq', 'phccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspax', 'tphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumy', 'ltphccnksfneuyevpefbipyzmbgsmbt') , ('l', 'cltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalnsrmpcnat', 'your', 'n', 824, 'i', 'acltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvw', 'pacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdun', 'w') , ('me', 'h', 'g', 'jpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxq', 825, 'k', 'e', 'ejpacltphccnksfneuyevp', 'if');
+INSERT /*! IGNORE */ INTO t1 VALUES ('j', 'is', 'up', 'to', 826, 'w', 'vejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij', 'ivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgc', 'u') , ('tivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnne', 'ftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfr', 'then', 'uftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxt', 827, 'v', 'v', 'as', 'cuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjph') , ('s', 'rcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcgl', 'prcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscgenxalns', 'w', 828, 'oprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxzn', 'don\'t', 'I\'ll', 'yoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimee') , ('a', 'uyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcsel', 'cuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqsla', 'it', 829, 'oh', 'ncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhj', 'p', 'as') , ('oncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbyechefgkvyrsqxodomgkoadicgboryoeviymnkigcjsslkkscge', 'loncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcni', 'jloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqh', 'cjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswa', 830, 'zcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqrbizbye', 'y', 'would', 'kzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygd');
+INSERT /*! IGNORE */ INTO t1 VALUES ('okzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzde', 'n', 'tokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodp', 'so', 831, 'ntokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoa', 'that', 'ontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'k') , ('i', 'gontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvd', 'agontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxvsfbzywgvvjsnjxdrtxdjgoshszccqr', 'dagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfim', 832, 'odagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvac', 'fodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwy', 'got', 'why') , ('from', 'lfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxf', 'klfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpb', 'oklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufei', 833, 'get', 'coklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzj', 'bcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvy', 'xbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgs') , ('f', 'mxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhe', 'amxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxita', 'bamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqe', 834, 'ibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnn', 'to', 'libamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwuc', 'b') , ('clibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmp', 'jclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphm', 'ljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvva', 'could', 835, 'vljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufo', 'at', 'rvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeu', 'orvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwt');
+INSERT /*! IGNORE */ INTO t1 VALUES ('norvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewg', 'vnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeq', 'fvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtaf', 'lfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqslaokzxv', 836, 'r', 'olfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxj', 'golfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftj', 'ok') , ('rgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpe', 'drgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylu', 'adrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrs', 'oadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruq', 837, 'ioadrgolfvnorvl', 'oioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqz', 'f', 'v') , ('xoioad', 'zxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfaz', 'f', 'ozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqs', 838, 'hozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwu', 'shozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspa', 'q', 'xshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdv') , ('dxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbk', 'ydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjv', 'v', 'fydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcf', 839, 'gfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 'just', 'bgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetryl', 'c') , ('him', 'a', 'e', 'k', 840, 'if', 'fbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejam', 'y', 'dfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujr');
+INSERT /*! IGNORE */ INTO t1 VALUES ('ndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneu', 'all', 't', 'qndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgb', 841, 'can\'t', 'eqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmss', 'was', 'beqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnb') , ('c', 'hbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimee', 'u', 'ghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvr', 842, 'kghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknv', 'is', 'y', 'ykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefb') , ('could', 'wykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswa', 'xwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypf', 'exwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuh', 843, 'qexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfp', 'jqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxb', 'kjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksf', 'ykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiezjzqzrjsnzzovzbzblnhhruqatzkfnuoufoceczdvlqitjxqtafabxtdfflcnsqpxmqskejamwnheqsl') , ('sykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfow', 'i', 'me', 'osykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoylt', 844, 'out', 'dosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmcze', 'tdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtc', 'ytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgt') , ('we', 'rytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzv', 'got', 'can\'t', 845, 'and', 'arytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjt', 'get', 'g');
+INSERT /*! IGNORE */ INTO t1 VALUES ('kbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi', 'gkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdu', 'o', 'dgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfd', 866, 'qdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllruc', 'jqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywm', 'ojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'something') , ('xojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyi', 'bxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfi', 'nbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhx', 'wnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvj', 867, 'yeah', 'nwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnar', 'tnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsux', 'jtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsj') , ('vjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxux', 'mvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrl', 'x', 'bmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdvejqyxmxeidiez', 868, 'mbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmll', 'hmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlq', 'whmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxj', 'a') , ('t', 'v', 'say', 'a', 869, 'ewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoi', 'of', 'fewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczl', 'kfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqeqojdftjkmczeipsuxihvlconxitaqcdijzjdv') , ('I\'m', 'had', 'don\'t', 'dkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogr', 870, 'o', 'at', 'udkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufe', 'okay');
+INSERT /*! IGNORE */ INTO t1 VALUES ('yudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjg', 'oyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiq', 'that', 'a', 871, 'would', 'boyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowy', 'sboyudkfewhmbmvjtnwnbxojqdg', 's') , ('usboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmb', 'susboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwkn', 'ususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnn', 'kususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexw', 872, 'ikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpu', 'yikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfj', 'nyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmz', 'lnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxpar') , ('b', 'c', 'hlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmb', 'j', 873, 'g', 'mean', 'vhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufe', 'vvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnij') , ('pvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrll', 'back', 'tpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxs', 'him', 874, 'ttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuz', 'sttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhn', 'ysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbe', 'wysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooypfxzxejbxjtmllsuoasvxwufetnijqe') , ('jwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuf', 'cjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakm', 'i', 'your', 875, 'just', 'ccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnn', 'c', 'dccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowj');
+INSERT /*! IGNORE */ INTO t1 VALUES ('there', 'vdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdz', 'jvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcr', 'that\'s', 876, 'fjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybw', 'cfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubq', 'zcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi', 'i') , ('wzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfn', 'had', 'i', 'his', 877, 'that', 'gwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzay', 'is', 'vgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiic') , ('qvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqd', 'wqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxln', 'k', 'bwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewg', 878, 'it\'s', 'a', 'zbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicp', 'f') , ('I', 'izbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjnjkxwexjphmssbuvatgcpmztrhnbqsoyltdunooy', 'sizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwd', 'osizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcq', 879, 'some', 'when', 'sosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgf', 'nsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjl') , ('knsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmb', 'jknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahl', 'in', 'ujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudar', 880, 'rujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuh', 'my', 'srujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmv', 'esrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('t', 'pesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdh', 'tpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnk', 'otpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbg', 881, 'aotpesrujknsosizbw', 'he', 'eaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpo', 'd') , ('jeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcf', 'me', 'wjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeo', 'swjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtex', 882, 'zswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdl', 'ozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhp', 'gozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'q') , ('ggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwt', 'qggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamk', 'sqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybs', 'time', 883, 'wsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeq', 'ewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijian', 'zewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnb', 'to') , ('she', 'who', 'm', 'going', 884, 'nzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvq', 'bnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacm', 'l', 'mean') , ('tbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdby', 'htbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadi', 'ahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznv', 'pahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjs', 885, 'what', 'n', 'npahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjru', 'fnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykr');
+INSERT /*! IGNORE */ INTO t1 VALUES ('dfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfod', 'hdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuw', 'ghdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogs', 'ughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsa', 886, 'hughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyi', 'j', 'lhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswru', 'plhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxpar') , ('i', 'yplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmj', 'e', 'h', 887, 'I\'m', 'wyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobe', 'don\'t', 'ewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrv') , ('yewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsx', 'are', 'q', 'v', 888, 'syewyplhughd', 'ysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgf', 'tysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavb', 'my') , ('but', 'xtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqz', 'the', 'sxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxt', 889, 'xsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotk', 'bxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojq', 'o', 'up') , ('pbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzy', 'ypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymb', 'f', 'dypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxn', 890, 'z', 'sdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrjn', 'qsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtnei', 'uqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphcc');
+INSERT /*! IGNORE */ INTO t1 VALUES ('duqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 'dduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbk', 'hdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiw', 'whdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjq', 891, 'owhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmuk', 'a', 'she', 'at') , ('s', 'bowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdbewgbrnmbiikicpcebswrufehdcfrxuxrj', 'because', 'ok', 892, 's', 'd', 'qbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvh', 'pqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipy') , ('kpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovar', 'mkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqh', 'e', 'w', 893, 'fmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrlivkuzdjxrwndgayrllrucngymbnbdb', 'rfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpop', 'something', 'm') , ('srfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfnii', 'n', 'me', 'ssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeu', 894, 'nssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnze', 'so', 'i', 'w') , ('don\'t', 'w', 'knssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzsw', 'right', 895, 'dknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexf', 'fdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetryl', 'b', 'nfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvz');
+INSERT /*! IGNORE */ INTO t1 VALUES ('anfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjq', 'tanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgv', 'c', 'wtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfb', 896, 'f', 'm', 'for', 'w') , ('up', 'swtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbc', 'z', 'jswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmr', 897, 'ujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtnei', 'tujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttp', 'otujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjz', 'j') , ('okay', 'totujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhln', 'btotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozx', 'fbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnk', 898, 'kfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthd', 'kkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvi', 'akkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogs', 'j') , ('kakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvj', 'fkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmg', 'rfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbco', 'nrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyv', 899, 'jnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswje', 'k', 'xjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeoo', 'axjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjq') , ('hey', 'maxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjg', 'amaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikus', 'vamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygdbfovaracohpdolzvbgfazrsprmgvdepuhnbrylznuhedqlfakjahbkrrliv', 900, 'y', 'jvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusr', 'ijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadr', 'm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('c', 'hijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcni', 'yes', 'k', 901, 'ghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjw', 'nghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbip', 'o', 'vnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcelygd') , ('k', 'pvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdon', 'oh', 'vpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxsho', 902, 'dvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxty', 'zdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvywmhwjcyudtfjbcodpnwumyaxzvjcajevvmcglnbvzuwemcel', 'azdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnn', 'kazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsb') , ('k', 'out', 'k', 'jkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtch', 903, 'fjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsd', 'say', 'lfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwu', 'mlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljcli') , ('zmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzc', 'all', 'you', 'gzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtneiicfeoeufuzdmthjxogsuenbfpwjhpbyxnnzccspaxpplmlqusnhjqnuxtexfnnegnarqpujkmbybsahlvyw', 904, 'agzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljv', 'xagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftiv', 'oxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeoo', 'boxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeib') , ('uboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjlon', 'fuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudar', 'ifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswje', 'k', 905, 'jifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwkn', 'I\'m', 'bjifubox', 'v');
+INSERT /*! IGNORE */ INTO t1 VALUES ('hezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnr', 'what', 'bhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsmpzylucsxyvhqgxyibgbkxznvadoaeodcselndtn', 'c', 946, 'w', 'd', 'i', 'wbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjsh') , ('q', 'had', 'jwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctu', 'njwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghb', 947, 'rnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqu', 'yrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbi', 'zyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiw', 'czyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriy') , ('cczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijia', 'u', 'ucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwk', 'uucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyo', 948, 'ouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphcc', 'iouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdozn', 'me', 'he\'s') , ('diouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcosk', 'it', 'now', 'n', 949, 'l', 'what', 'tdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfs', 'v') , ('vtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxe', 'pvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpv', 's', 'fpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbf', 950, 'at', 'kfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakm', 'really', 'about');
+INSERT /*! IGNORE */ INTO t1 VALUES ('lkfpvtdiouucczyrnjwbhezsureyaebufctbj', 'plkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcx', 'yes', 'vplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiiji', 951, 'cvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkf', 'qcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrl', 'lqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlm', 'c') , ('o', 'x', 'nlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfi', 'dnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmz', 952, 'will', 'z', 'a', 'odnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvam') , ('what', 'j', 'n', 'p', 953, 'podnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbw', 'ypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsd', 'xypodnlqcvplkfpvt', 'fxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtd') , ('qfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxsh', 'go', 'c', 'tqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdo', 954, 'want', 'd', 'this', 'ntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqz') , ('lntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfn', 'go', 'jlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaeb', 'w', 955, 'something', 'here', 'tjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudk', 'ytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeoo');
+INSERT /*! IGNORE */ INTO t1 VALUES ('I\'ll', 'yytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyva', 'him', 'uyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdd', 956, 'huyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvr', 'ihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxf', 'gihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuy', 'did') , ('lgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifubo', 'been', 'clg', 'c', 957, 'iclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteije', 'riclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlw', 'sriclgihuyytjlntqfxyp', 'asriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjk') , ('his', 'wasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqe', 'wwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhln', 'wwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdo', 958, 'wwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiw', 'ywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysy', 'l', 'wywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbia') , ('owywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqushrfihbzdeooefbbbczlwadiwucpclhwtshiqakmufeibrdhmjzhksqbqhsm', 'rowy', 'n', 'lrowywwwwasriclgihuyytjlntq', 959, 'elrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxpary', 'felrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtlhhhxbgrhqzshhqus', 'jfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpop', 'tjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdr') , ('gtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfime', 'mgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtax', 'ymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcu', 'with', 960, 'l', 'mymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkw', 'I', 'imymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhp');
+INSERT /*! IGNORE */ INTO t1 VALUES ('you', 'a', 'i', 'if', 961, 'rimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolf', 'zrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydn', 'ezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjta', 'iezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfptei') , ('l', 'hiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvor', 'ihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmp', 'I\'ll', 962, 'lihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxty', 'that', 'm', 'jlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwb') , ('look', 'vjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfak', 'f', 'tvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwir', 963, 'd', 'utvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsu', 'q', 'all') , ('iutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduq', 'because', 'xiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqex', 'zxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxag', 964, 'ozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdj', 'so', 'k', 'come') , ('wozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcr', 'kwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyae', 'p', 'ykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbco', 965, 'kykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriy', 's', 'dkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkaz', 'edkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphj');
+INSERT /*! IGNORE */ INTO t1 VALUES ('nedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveim', 'you\'re', 'fnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziaui', 'me', 966, 'ofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotuj', 'g', 'sofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfzi', 'msofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubq') , ('gmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtx', 'bgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurz', 'that', 'q', 967, 'h', 'rbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvd', 'you\'re', 'say') , ('prbgms', 'tell', 'uprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdf', 'wuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbw', 968, 'hwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaaf', 'I\'ll', 'thwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxd', 'for') , ('some', 'uthwuprbgmsofnedkykwozxiutvjlihie', 'vuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggoz', 'vvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfime', 969, 'the', 'hvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbg', 's', 'ahvvuthwuprbgmsofnedkykwoz') , ('nahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpi', 'tnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoq', 'qtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrp', 'kqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzv', 970, 'zkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkd', 'n', 'azkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgur', 'fazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcx');
+INSERT /*! IGNORE */ INTO t1 VALUES ('hfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlma', 'lhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgyt', 'glhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjw', 'lglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiou', 971, 'flglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcn', 'dflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxk', 'rdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalb', 'prdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzh') , ('nprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqi', 'ynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 's', 'lynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfg', 972, 'there', 'ylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeef', 'p', 'h') , ('iylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveiml', 'h', 'e', 'u', 973, 'we', 'riylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvp', 'h', 'nriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlq') , ('me', 'ynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkaz', 'kynriylynprdflglhfazkqtnahvvuthwuprbgms', 'now', 974, 'pkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkwumuxfsuwxjxrhtl', 'apkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususbo', 'c', 'tapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjf') , ('etapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjr', 'oetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitw', 'eoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrl', 'reoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwo', 975, 'lreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfd', 'out', 'then', 'that');
+INSERT /*! IGNORE */ INTO t1 VALUES ('flreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetr', 'aflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvde', 'oaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykgh', 'z', 976, 'xoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivjgytgyadphjxqrdwdkdcqmtdxlnljvsjshxkw', 'see', 'r', 'uxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnze') , ('g', 'yeah', 'huxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzv', 'j', 977, 'her', 'chuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewh', 'see', 'y') , ('k', 'kchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvc', 'jkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrim', 'did', 978, 'bjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbm', 'it\'s', 'wbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozs', 'nwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxyc') , ('fnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahv', 'my', 'ifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuo', 'vifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvp', 979, 'oh', 'had', 'evifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxh', 'uevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufc') , ('g', 'nuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtch', 'ynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijei', 'but', 980, 'oynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkak', 'eoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzsw', 'y', 'oeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkux');
+INSERT /*! IGNORE */ INTO t1 VALUES ('doeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrf', 'adoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmz', 'madoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyubqivj', 'come', 981, 'hmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuim', 'ahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauial', 'f', 'look') , ('q', 'tahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacl', 'okay', 'ntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduq', 982, 'gntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpt', 'zgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmjtkvrdswjrutyu', 'kzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczy', 'in') , ('okzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecico', 'wokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxn', 'mwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'you\'re', 983, 'xmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrlmauajzveimlsbxetrylwmzhpopfmj', 'mean', 'y', 't') , ('lxmwokzgntahmadoeoynuevifnwb', 'olxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdsp', 'you\'re', 'he\'s', 984, 'were', 'about', 'volxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlq', 'zvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzy') , ('v', 'bzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcn', 'ibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsa', 'eibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbi', 985, 'ieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowy', 'some', 'hieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbm', 'fhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenm');
+INSERT /*! IGNORE */ INTO t1 VALUES ('her', 'don\'t', 'all', 'mfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmz', 986, 'm', 'ymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtn', 'g', 'zymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcn') , ('nzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmr', 'a', 'pnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpaclt', 'w', 987, 'don\'t', 'upnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpe', 'eupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfyd', 'w') , ('leupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncu', 'vleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlmrpvvacmukvrl', 'x', 'ivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeao', 988, 'g', 'sivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucc', 'you\'re', 'nsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufc') , ('znsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqc', 'c', 'oznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfoda', 'hoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbc', 989, 'uhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujk', 'cuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfzi', 'bcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamk', 'dbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparyt') , ('adbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsd', 'uadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkuj', 'huadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbec', 'hhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyy', 990, 'uhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoe', 'iuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvt', 'qiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqex', 'eqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjw');
+INSERT /*! IGNORE */ INTO t1 VALUES ('keqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyi', 'f', 'jkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwo', 'xjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyop', 991, 'pxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofne', 'f', 'f', 'dpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdio') , ('xdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzc', 's', 'got', 'on', 992, 'bxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtef', 'xbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfp', 'p', 'x') , ('xxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwas', 'exxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzp', 'vexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowh', 'gvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialk', 993, 'ugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsx', 'pugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgyc', 'kpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyy', 'her') , ('d', 'ikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckz', 'who', 'bikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialk', 994, 'abikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaot', 'were', 'wabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznb', 'y') , ('vwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxh', 'to', 'qvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphcc', 'xqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjp', 995, 'jxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxc', 'o', 'xjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbj', 'rxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqic');
+INSERT /*! IGNORE */ INTO t1 VALUES ('urxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoz', 'curxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzew', 'acurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamax', 'with', 996, 'was', 'uacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwusrbcnriyiijianfdvcgoamkbzgtchdzvwkuxfowykrrfghjvmzyudarthdlm', 'duacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiut', 'nduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokz') , ('had', 'gnduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfck', 'ognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvn', 'oognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctu', 997, 'toognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshoz', 'ytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyopr', 'bytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpef', 'jbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokz') , ('ujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutv', 'dujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuev', 'are', 'i', 998, 'bdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcos', 'y', 'w', 'b') , ('ybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriyl', 'go', 'zybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahl', 'ok', 999, 'fzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczy', 'l', 'bfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxctuimpkdcjtaxqflvqvisxmpoywtwzntcrgmfkujrdjvqfimeefwyehibfsjptaqiuznnpyowjzzmkqzswalbzhtefijzpybwus', 'nbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbiahlemtcoskaafhqdonuvfakxhrrljevcruxbcnrdoznxnpoiwtycgycyefjmhotkmhogrvoqavbzayrfniickzwbmsaxdbyobeqqxparytdosykjqexwykghbeqndfbgfydxshozxoioadrgolfvnorvljclibamxbcoklfodagontokzcjloncuyoprcuftivejpacltphccnksfneuyevpefbipyzmbgsmbtwknvcnitwmsfsfirtxct') , ('nnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnr', 'ynnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiu', 'b', 'o', 1000, 'fynnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyewsfyenmcxdvddqdvjzdmcxycpinvyxdspwajhwpdtzpelbfpteijeisukfgurzqicgvhmvbkhzfziauialkyolxxpwirxkpzawchzbvnrmmzqbdrvorvfbgbecicohkxaevsoapogbwzbjifuboxagzmlfjkazdvpvnghijvamaxjnrfkakkfbtotujswtanfdknssrfmkpqbowhdduqsdypbxsxtysyewyplhughdfnpahtbnzewsqggozswjeaotpesrujknsosizbwqvgwzcfjvdccjwysttpvvhlnyikususboyudkfewhmbmvjtnwnbxojqdgkbia', 'f', 'r', 'ifynnbfzybdujbytoognduacurxjxqvwabikpugvexxbxdpxjkeqiuhhuadbcuhoznsivleupnzymfhieibzvolxmwokzgntahmadoeoynuevifnwbjkchuxoaflreoetapkynriylynprdflglhfazkqtnahvvuthwuprbgmsofnedkykwozxiutvjlihiezrimymgtjfelrowywwwwasriclgihuyytjlntqfxypodnlqcvplkfpvtdiouucczyrnjwbhezsureyaebufctbjfckznbydnjuomgyvasucvdeyew');
+--enable_query_log
+
+check table t1;
+OPTIMIZE TABLE t1;
+drop table t1;
diff --git a/mysql-test/suite/maria/t/ps_maria.test b/mysql-test/suite/maria/t/ps_maria.test
index 34960d90f8f..d3623314631 100644
--- a/mysql-test/suite/maria/t/ps_maria.test
+++ b/mysql-test/suite/maria/t/ps_maria.test
@@ -1,6 +1,6 @@
###############################################
# #
-# Prepared Statements test on MARIA tables #
+# Prepared Statements test on ARIA tables #
# #
###############################################
@@ -12,7 +12,7 @@
use test;
-let $type= 'MARIA' ;
+let $type= 'ARIA' ;
-- source include/ps_create.inc
-- source include/ps_renew.inc
@@ -47,6 +47,6 @@ drop table t1, t9;
--disable_result_log
--disable_query_log
-set global maria_log_file_size=default;
+set global aria_log_file_size=default;
--enable_result_log
--enable_query_log
diff --git a/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result b/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result
index 97300e7131b..fb0324bc89e 100644
--- a/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result
+++ b/mysql-test/suite/ndb_team/r/rpl_ndb_extraColMaster.result
@@ -91,49 +91,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -454,7 +412,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1;
-update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3;
+update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
+Warnings:
+Warning 1048 Column 'f3' cannot be null
** Delete from Master **
@@ -463,50 +423,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -539,50 +461,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -614,50 +499,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -768,45 +616,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -854,45 +664,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -940,45 +712,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
@@ -1230,49 +964,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -1593,7 +1285,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1;
-update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3;
+update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
+Warnings:
+Warning 1048 Column 'f3' cannot be null
** Delete from Master **
@@ -1602,50 +1296,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -1678,50 +1334,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -1753,50 +1372,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -1907,45 +1489,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -1993,45 +1537,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -2079,45 +1585,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result b/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result
index f9c077f38da..203a59b4613 100644
--- a/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result
+++ b/mysql-test/suite/ndb_team/r/rpl_ndb_mix_innodb.result
@@ -26,21 +26,21 @@ from mysql.ndb_apply_status;
# since insert is done with transactional engine, expect a BEGIN
# at <start_pos>
-show binlog events from <start_pos> limit 1;
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 <start_pos> Query 1 # BEGIN
+master-bin.000001 # Query # # BEGIN
# Now the insert, one step after
-show binlog events from <start_pos> limit 1,1;
+show binlog events from <binlog_start> limit 1,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; insert into t1 values (1,2)
+master-bin.000001 # Query # # use `test`; insert into t1 values (1,2)
# and the COMMIT should be at <end_pos>
-show binlog events from <start_pos> limit 2,1;
+show binlog events from <binlog_start> limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
+master-bin.000001 # Xid # # COMMIT /* XID */
begin;
insert into t1 values (2,3);
@@ -51,18 +51,18 @@ select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
from mysql.ndb_apply_status;
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
<log_name> <start_pos> <end_pos>
-show binlog events from <start_pos> limit 1;
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 <start_pos> Query 1 # BEGIN
+master-bin.000001 # Query # # BEGIN
-show binlog events from <start_pos> limit 1,2;
+show binlog events from <binlog_start> limit 1,2;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; insert into t1 values (2,3)
master-bin.000001 # Query # # use `test`; insert into t2 values (3,4)
-show binlog events from <start_pos> limit 3,1;
+show binlog events from <binlog_start> limit 3,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
+master-bin.000001 # Xid # # COMMIT /* XID */
DROP TABLE test.t1, test.t2;
SHOW TABLES;
diff --git a/mysql-test/suite/ndb_team/t/rpl_ndb_mix_innodb-master.opt b/mysql-test/suite/ndb_team/t/rpl_ndb_mix_innodb-master.opt
index 3596fc4d3bd..416f8692654 100644
--- a/mysql-test/suite/ndb_team/t/rpl_ndb_mix_innodb-master.opt
+++ b/mysql-test/suite/ndb_team/t/rpl_ndb_mix_innodb-master.opt
@@ -1 +1 @@
---innodb --default-storage-engine=innodb
+--loose-innodb --default-storage-engine=innodb
diff --git a/mysql-test/suite/oqgraph/include/have_oqgraph_engine.inc b/mysql-test/suite/oqgraph/include/have_oqgraph_engine.inc
deleted file mode 100644
index 6fc3c6a0632..00000000000
--- a/mysql-test/suite/oqgraph/include/have_oqgraph_engine.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-disable_query_log;
---require r/true.require
-select (PLUGIN_LIBRARY LIKE 'oqgraph_engine%') as `TRUE` from information_schema.plugins where PLUGIN_NAME='OQGRAPH';
-enable_query_log;
diff --git a/mysql-test/suite/oqgraph/suite.opt b/mysql-test/suite/oqgraph/suite.opt
new file mode 100644
index 00000000000..bc7ccfc1414
--- /dev/null
+++ b/mysql-test/suite/oqgraph/suite.opt
@@ -0,0 +1 @@
+--plugin-load=$HA_OQGRAPH_SO
diff --git a/mysql-test/suite/oqgraph/suite.pm b/mysql-test/suite/oqgraph/suite.pm
new file mode 100644
index 00000000000..5066d4e9f8a
--- /dev/null
+++ b/mysql-test/suite/oqgraph/suite.pm
@@ -0,0 +1,8 @@
+package My::Suite::OQGraph;
+
+@ISA = qw(My::Suite);
+
+return "No OQGraph" unless $ENV{HA_OQGRAPH_SO};
+
+bless { };
+
diff --git a/mysql-test/suite/oqgraph/t/basic.test b/mysql-test/suite/oqgraph/t/basic.test
index b39341ba3d5..731f07c0eeb 100644
--- a/mysql-test/suite/oqgraph/t/basic.test
+++ b/mysql-test/suite/oqgraph/t/basic.test
@@ -1,5 +1,3 @@
--- source suite/oqgraph/include/have_oqgraph_engine.inc
-
drop table if exists graph;
CREATE TABLE graph (
diff --git a/mysql-test/suite/oqgraph/t/binlog.test b/mysql-test/suite/oqgraph/t/binlog.test
index ac7c8867533..7b3b6bdb8a9 100644
--- a/mysql-test/suite/oqgraph/t/binlog.test
+++ b/mysql-test/suite/oqgraph/t/binlog.test
@@ -1,4 +1,3 @@
--- source suite/oqgraph/include/have_oqgraph_engine.inc
-- source include/have_log_bin.inc
--disable_warnings
diff --git a/mysql-test/suite/oqgraph/t/suite.opt b/mysql-test/suite/oqgraph/t/suite.opt
deleted file mode 100644
index 4fe63014479..00000000000
--- a/mysql-test/suite/oqgraph/t/suite.opt
+++ /dev/null
@@ -1,2 +0,0 @@
-$OQGRAPH_PLUGIN_OPT
-$OQGRAPH_PLUGIN_LOAD
diff --git a/mysql-test/suite/parts/r/optimizer.result b/mysql-test/suite/parts/r/optimizer.result
new file mode 100644
index 00000000000..cdf0b2b83dc
--- /dev/null
+++ b/mysql-test/suite/parts/r/optimizer.result
@@ -0,0 +1,45 @@
+drop table if exists t1,t2;
+#
+# Bug#50939: Loose Index Scan unduly relies on engine to remember range
+# endpoints
+#
+CREATE TABLE t1 (
+a INT,
+b INT,
+KEY ( a, b )
+) PARTITION BY HASH (a) PARTITIONS 1;
+CREATE TABLE t2 (
+a INT,
+b INT,
+KEY ( a, b )
+);
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
+INSERT INTO t1 SELECT a + 5, b + 5 FROM t1;
+INSERT INTO t1 SELECT a + 10, b + 10 FROM t1;
+INSERT INTO t1 SELECT a + 20, b + 20 FROM t1;
+INSERT INTO t1 SELECT a + 40, b + 40 FROM t1;
+INSERT INTO t2 SELECT * FROM t1;
+# plans should be identical
+EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
+EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by
+FLUSH status;
+SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a;
+a MAX(b)
+10 10
+# Should be no more than 4 reads.
+SHOW status LIKE 'handler_read_key';
+Variable_name Value
+Handler_read_key 4
+FLUSH status;
+SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
+a MAX(b)
+10 10
+# Should be no more than 4 reads.
+SHOW status LIKE 'handler_read_key';
+Variable_name Value
+Handler_read_key 4
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/parts/r/partition_alter2_1_maria.result b/mysql-test/suite/parts/r/partition_alter2_1_maria.result
index 3d4553e8d0f..4f52cb3c131 100644
--- a/mysql-test/suite/parts/r/partition_alter2_1_maria.result
+++ b/mysql-test/suite/parts/r/partition_alter2_1_maria.result
@@ -1,5 +1,5 @@
SET @max_row = 20;
-SET @@session.storage_engine = 'MARIA';
+SET @@session.storage_engine = 'Aria';
#------------------------------------------------------------------------
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
@@ -73,7 +73,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -538,7 +538,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -1017,16 +1017,16 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -1507,14 +1507,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -1987,14 +1987,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -2477,21 +2477,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -2972,21 +2972,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -3465,13 +3465,13 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -3951,7 +3951,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -4468,7 +4468,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -4999,16 +4999,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -5541,14 +5541,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -6073,14 +6073,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -6615,21 +6615,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -7162,21 +7162,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -7707,13 +7707,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -8243,7 +8243,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -8760,7 +8760,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -9291,16 +9291,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -9833,14 +9833,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -10365,14 +10365,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -10907,21 +10907,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -11454,21 +11454,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -11999,13 +11999,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -12539,7 +12539,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -13004,7 +13004,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -13483,16 +13483,16 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -13973,14 +13973,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -14453,14 +14453,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -14943,21 +14943,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -15438,21 +15438,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -15931,13 +15931,13 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -16415,7 +16415,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
PARTITIONS 2 */
@@ -16880,7 +16880,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1,f_int2)
PARTITIONS 5 */
@@ -17359,16 +17359,16 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -17849,14 +17849,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -18329,14 +18329,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY HASH (f_int2)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -18817,21 +18817,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int2)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -19312,21 +19312,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int2 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -19805,13 +19805,13 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -20291,7 +20291,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -20808,7 +20808,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -21339,16 +21339,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -21881,14 +21881,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -22413,14 +22413,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -22955,21 +22955,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -23502,21 +23502,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -24047,13 +24047,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -24583,7 +24583,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
PARTITIONS 2 */
@@ -25100,7 +25100,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1,f_int2)
PARTITIONS 5 */
@@ -25631,16 +25631,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -26173,14 +26173,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -26705,14 +26705,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY HASH (f_int2)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -27245,21 +27245,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int2)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -27792,21 +27792,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int2 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -28337,13 +28337,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -28873,7 +28873,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -29390,7 +29390,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -29921,16 +29921,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -30463,14 +30463,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -30995,14 +30995,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -31537,21 +31537,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -32084,21 +32084,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -32629,13 +32629,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -33165,7 +33165,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
PARTITIONS 2 */
@@ -33682,7 +33682,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1,f_int2)
PARTITIONS 5 */
@@ -34213,16 +34213,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -34755,14 +34755,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -35287,14 +35287,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY HASH (f_int2)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -35827,21 +35827,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int2)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -36374,21 +36374,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int2 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -36919,13 +36919,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
diff --git a/mysql-test/suite/parts/r/partition_alter2_2_maria.result b/mysql-test/suite/parts/r/partition_alter2_2_maria.result
index 2dc7023100c..f310169fb6e 100644
--- a/mysql-test/suite/parts/r/partition_alter2_2_maria.result
+++ b/mysql-test/suite/parts/r/partition_alter2_2_maria.result
@@ -1,5 +1,5 @@
SET @max_row = 20;
-SET @@session.storage_engine = 'MARIA';
+SET @@session.storage_engine = 'Aria';
#------------------------------------------------------------------------
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
@@ -73,7 +73,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -540,7 +540,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -1021,16 +1021,16 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -1513,14 +1513,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -1993,14 +1993,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -2485,21 +2485,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -2980,21 +2980,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -3475,13 +3475,13 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -3963,7 +3963,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -4482,7 +4482,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -5015,16 +5015,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -5559,14 +5559,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -6091,14 +6091,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -6635,21 +6635,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -7182,21 +7182,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -7729,13 +7729,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -8267,7 +8267,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -8786,7 +8786,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -9319,16 +9319,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -9863,14 +9863,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -10395,14 +10395,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -10939,21 +10939,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -11486,21 +11486,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -12033,13 +12033,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -12574,7 +12574,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -13042,7 +13042,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -13524,16 +13524,16 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -14017,14 +14017,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -14502,14 +14502,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -14995,21 +14995,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -15495,21 +15495,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -15991,13 +15991,13 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -16478,7 +16478,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
PARTITIONS 2 */
@@ -16946,7 +16946,7 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1,f_int2)
PARTITIONS 5 */
@@ -17428,16 +17428,16 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -17921,14 +17921,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -18406,14 +18406,14 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY HASH (f_int2)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -18899,21 +18899,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int2)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -19399,21 +19399,21 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int2 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -19895,13 +19895,13 @@ t1 CREATE TABLE `t1` (
`f_char1` char(20) DEFAULT NULL,
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -20384,7 +20384,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -20904,7 +20904,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -21438,16 +21438,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -21983,14 +21983,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -22520,14 +22520,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -23065,21 +23065,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -23617,21 +23617,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -24165,13 +24165,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -24704,7 +24704,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
PARTITIONS 2 */
@@ -25224,7 +25224,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1,f_int2)
PARTITIONS 5 */
@@ -25758,16 +25758,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -26303,14 +26303,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -26840,14 +26840,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY HASH (f_int2)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -27385,21 +27385,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int2)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -27937,21 +27937,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int2 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -28485,13 +28485,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int1`,`f_int2`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -29024,7 +29024,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1)
PARTITIONS 2 */
@@ -29544,7 +29544,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1)
PARTITIONS 5 */
@@ -30078,16 +30078,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -30623,14 +30623,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -31160,14 +31160,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
SUBPARTITION BY HASH (f_int1)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -31705,21 +31705,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int1)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -32257,21 +32257,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int1 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -32805,13 +32805,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int1)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
@@ -33344,7 +33344,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
PARTITIONS 2 */
@@ -33864,7 +33864,7 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (f_int1,f_int2)
PARTITIONS 5 */
@@ -34398,16 +34398,16 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
-(PARTITION part_3 VALUES IN (-3) ENGINE = MARIA,
- PARTITION part_2 VALUES IN (-2) ENGINE = MARIA,
- PARTITION part_1 VALUES IN (-1) ENGINE = MARIA,
- PARTITION part_N VALUES IN (NULL) ENGINE = MARIA,
- PARTITION part0 VALUES IN (0) ENGINE = MARIA,
- PARTITION part1 VALUES IN (1) ENGINE = MARIA,
- PARTITION part2 VALUES IN (2) ENGINE = MARIA,
- PARTITION part3 VALUES IN (3) ENGINE = MARIA) */
+(PARTITION part_3 VALUES IN (-3) ENGINE = Aria,
+ PARTITION part_2 VALUES IN (-2) ENGINE = Aria,
+ PARTITION part_1 VALUES IN (-1) ENGINE = Aria,
+ PARTITION part_N VALUES IN (NULL) ENGINE = Aria,
+ PARTITION part0 VALUES IN (0) ENGINE = Aria,
+ PARTITION part1 VALUES IN (1) ENGINE = Aria,
+ PARTITION part2 VALUES IN (2) ENGINE = Aria,
+ PARTITION part3 VALUES IN (3) ENGINE = Aria) */
unified filelist
t1#P#part0.MAD
@@ -34943,14 +34943,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (15) ENGINE = MARIA,
- PARTITION parte VALUES LESS THAN (20) ENGINE = MARIA,
- PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (15) ENGINE = Aria,
+ PARTITION parte VALUES LESS THAN (20) ENGINE = Aria,
+ PARTITION partf VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta.MAD
@@ -35480,14 +35480,14 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY HASH (f_int2)
SUBPARTITIONS 2
-(PARTITION parta VALUES LESS THAN (0) ENGINE = MARIA,
- PARTITION partb VALUES LESS THAN (5) ENGINE = MARIA,
- PARTITION partc VALUES LESS THAN (10) ENGINE = MARIA,
- PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MARIA) */
+(PARTITION parta VALUES LESS THAN (0) ENGINE = Aria,
+ PARTITION partb VALUES LESS THAN (5) ENGINE = Aria,
+ PARTITION partc VALUES LESS THAN (10) ENGINE = Aria,
+ PARTITION partd VALUES LESS THAN (2147483646) ENGINE = Aria) */
unified filelist
t1#P#parta#SP#partasp0.MAD
@@ -36025,21 +36025,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (f_int1)
SUBPARTITION BY KEY (f_int2)
(PARTITION part1 VALUES LESS THAN (0)
- (SUBPARTITION subpart11 ENGINE = MARIA,
- SUBPARTITION subpart12 ENGINE = MARIA),
+ (SUBPARTITION subpart11 ENGINE = Aria,
+ SUBPARTITION subpart12 ENGINE = Aria),
PARTITION part2 VALUES LESS THAN (5)
- (SUBPARTITION subpart21 ENGINE = MARIA,
- SUBPARTITION subpart22 ENGINE = MARIA),
+ (SUBPARTITION subpart21 ENGINE = Aria,
+ SUBPARTITION subpart22 ENGINE = Aria),
PARTITION part3 VALUES LESS THAN (10)
- (SUBPARTITION subpart31 ENGINE = MARIA,
- SUBPARTITION subpart32 ENGINE = MARIA),
+ (SUBPARTITION subpart31 ENGINE = Aria,
+ SUBPARTITION subpart32 ENGINE = Aria),
PARTITION part4 VALUES LESS THAN (2147483646)
- (SUBPARTITION subpart41 ENGINE = MARIA,
- SUBPARTITION subpart42 ENGINE = MARIA)) */
+ (SUBPARTITION subpart41 ENGINE = Aria,
+ SUBPARTITION subpart42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#subpart11.MAD
@@ -36577,21 +36577,21 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
SUBPARTITION BY HASH (f_int2 + 1)
(PARTITION part1 VALUES IN (0)
- (SUBPARTITION sp11 ENGINE = MARIA,
- SUBPARTITION sp12 ENGINE = MARIA),
+ (SUBPARTITION sp11 ENGINE = Aria,
+ SUBPARTITION sp12 ENGINE = Aria),
PARTITION part2 VALUES IN (1)
- (SUBPARTITION sp21 ENGINE = MARIA,
- SUBPARTITION sp22 ENGINE = MARIA),
+ (SUBPARTITION sp21 ENGINE = Aria,
+ SUBPARTITION sp22 ENGINE = Aria),
PARTITION part3 VALUES IN (2)
- (SUBPARTITION sp31 ENGINE = MARIA,
- SUBPARTITION sp32 ENGINE = MARIA),
+ (SUBPARTITION sp31 ENGINE = Aria,
+ SUBPARTITION sp32 ENGINE = Aria),
PARTITION part4 VALUES IN (NULL)
- (SUBPARTITION sp41 ENGINE = MARIA,
- SUBPARTITION sp42 ENGINE = MARIA)) */
+ (SUBPARTITION sp41 ENGINE = Aria,
+ SUBPARTITION sp42 ENGINE = Aria)) */
unified filelist
t1#P#part1#SP#sp11.MAD
@@ -37125,13 +37125,13 @@ t1 CREATE TABLE `t1` (
`f_char2` char(20) DEFAULT NULL,
`f_charbig` varchar(1000) DEFAULT NULL,
UNIQUE KEY `uidx` (`f_int2`,`f_int1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
SUBPARTITION BY KEY (f_int2)
SUBPARTITIONS 3
-(PARTITION part1 VALUES IN (0) ENGINE = MARIA,
- PARTITION part2 VALUES IN (1) ENGINE = MARIA,
- PARTITION part3 VALUES IN (NULL) ENGINE = MARIA) */
+(PARTITION part1 VALUES IN (0) ENGINE = Aria,
+ PARTITION part2 VALUES IN (1) ENGINE = Aria,
+ PARTITION part3 VALUES IN (NULL) ENGINE = Aria) */
unified filelist
t1#P#part1#SP#part1sp0.MAD
diff --git a/mysql-test/suite/parts/r/partition_auto_increment_maria.result b/mysql-test/suite/parts/r/partition_auto_increment_maria.result
index 647c2d3e936..757eaca3a60 100644
--- a/mysql-test/suite/parts/r/partition_auto_increment_maria.result
+++ b/mysql-test/suite/parts/r/partition_auto_increment_maria.result
@@ -3,13 +3,13 @@ DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA';
+ENGINE='Aria';
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test'
AND TABLE_NAME='t1';
AUTO_INCREMENT
@@ -71,20 +71,20 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA';
+ENGINE='Aria';
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
FLUSH TABLE;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
INSERT INTO t1 VALUES (4);
FLUSH TABLE;
SHOW CREATE TABLE t1;
@@ -92,7 +92,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
INSERT INTO t1 VALUES (NULL);
FLUSH TABLE;
SHOW CREATE TABLE t1;
@@ -100,7 +100,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
DELETE FROM t1;
INSERT INTO t1 VALUES (NULL);
SHOW CREATE TABLE t1;
@@ -108,7 +108,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
SELECT * FROM t1 ORDER BY c1;
c1
6
@@ -119,7 +119,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
SELECT * FROM t1 ORDER BY c1;
c1
1
@@ -134,13 +134,13 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=102 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
+) ENGINE=Aria AUTO_INCREMENT=102 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
DROP TABLE t1;
# Simple test with NULL
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
INSERT INTO t1 VALUES (NULL);
@@ -149,7 +149,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1;
@@ -161,7 +161,7 @@ CREATE TABLE t1 (
c1 INT,
c2 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c2))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH(c2)
PARTITIONS 2;
INSERT INTO t1 VALUES (1, NULL);
@@ -179,7 +179,7 @@ CREATE TABLE t1 (
c1 INT,
c2 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c2))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH(c2)
PARTITIONS 2;
INSERT INTO t1 VALUES (1, 0);
@@ -200,7 +200,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
INSERT INTO t1 VALUES (2), (4), (NULL);
@@ -251,7 +251,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
SET @@session.auto_increment_increment = 10;
@@ -299,7 +299,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH (c1)
PARTITIONS 2;
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test'
@@ -373,7 +373,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=27 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=27 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1 ORDER BY c1;
@@ -386,7 +386,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=28 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=28 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1 ORDER BY c1;
@@ -403,14 +403,14 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=102 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=102 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
DROP TABLE t1;
# Test with two threads
# con default
CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (c1))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
INSERT INTO t1 (c1) VALUES (2);
@@ -449,7 +449,7 @@ DROP TABLE t1;
# Test with two threads + start transaction NO PARTITIONING
# con default
CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (c1))
-ENGINE = 'MARIA';
+ENGINE = 'Aria';
START TRANSACTION;
INSERT INTO t1 (c1) VALUES (2);
INSERT INTO t1 (c1) VALUES (4);
@@ -530,7 +530,7 @@ DROP TABLE t1;
# Test with two threads + start transaction
# con default
CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (c1))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
START TRANSACTION;
@@ -612,7 +612,7 @@ CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
c2 INT,
PRIMARY KEY (c1,c2))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
PARTITION BY HASH(c2)
PARTITIONS 2;
INSERT INTO t1 VALUES (1, 0);
@@ -642,7 +642,7 @@ CREATE TABLE t1 (
c1 INT,
c2 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c2))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
PARTITION BY HASH(c2)
PARTITIONS 2;
INSERT INTO t1 VALUES (1, 0);
@@ -670,7 +670,7 @@ CREATE TABLE t1 (
c1 INT,
c2 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1,c2))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
PARTITION BY HASH(c2)
PARTITIONS 2;
INSERT INTO t1 VALUES (1, 0);
@@ -695,7 +695,7 @@ c1 c2
DROP TABLE t1;
# Test AUTO_INCREMENT in CREATE
CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (c1))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
AUTO_INCREMENT = 15
PARTITION BY HASH(c1)
PARTITIONS 2;
@@ -704,7 +704,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=15 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=15 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (4);
@@ -713,7 +713,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=15 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=15 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (0);
@@ -722,7 +722,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=16 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=16 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (NULL);
@@ -731,7 +731,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=17 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1 ORDER BY c1;
@@ -747,7 +747,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=301 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=301 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (0);
@@ -756,7 +756,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=301 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=301 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (NULL);
@@ -765,7 +765,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=302 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=302 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1 ORDER BY c1;
@@ -780,7 +780,7 @@ SET @@session.sql_mode = '';
DROP TABLE t1;
# Test SET INSERT_ID
CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (c1))
-ENGINE = 'MARIA'
+ENGINE = 'Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
SHOW CREATE TABLE t1;
@@ -788,7 +788,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (NULL);
@@ -797,7 +797,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1;
@@ -809,7 +809,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 (c1) VALUES (NULL);
@@ -818,7 +818,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=24 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=24 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SET INSERT_ID = 22;
@@ -835,7 +835,7 @@ DROP TABLE t1;
CREATE TABLE t1 (
c1 INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (c1))
-ENGINE='MARIA'
+ENGINE='Aria'
PARTITION BY HASH(c1)
PARTITIONS 2;
SHOW CREATE TABLE t1;
@@ -843,7 +843,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
FLUSH TABLE;
@@ -852,7 +852,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA DEFAULT CHARSET=latin1
+) ENGINE=Aria DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 VALUES (4);
@@ -862,7 +862,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
INSERT INTO t1 VALUES (NULL);
@@ -872,7 +872,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`c1`)
-) ENGINE=MARIA AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
+) ENGINE=Aria AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (c1)
PARTITIONS 2 */
SELECT * FROM t1 ORDER BY c1;
@@ -886,7 +886,7 @@ DROP TABLE t1;
##############################################################################
# Inserting negative autoincrement values into a partition table (partitions >= 4)
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (-1,-10);
@@ -903,7 +903,7 @@ DROP TABLE t;
# Reading from a partition table (partitions >= 2 ) after inserting a negative
# value into the auto increment column
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 2;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 2;
INSERT INTO t VALUES (-2,-20);
INSERT INTO t(c2) VALUES (30);
SELECT * FROM t ORDER BY c1 ASC;
@@ -914,7 +914,7 @@ DROP TABLE t;
# Inserting negative auto increment value into a partition table (partitions >= 2)
# auto increment value > 2.
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 2;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 2;
INSERT INTO t VALUES (-4,-20);
INSERT INTO t(c2) VALUES (30);
INSERT INTO t(c2) VALUES (40);
@@ -926,7 +926,7 @@ c1 c2
DROP TABLE t;
# Inserting -1 into autoincrement column of a partition table (partition >= 4)
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (-1,-10);
@@ -945,7 +945,7 @@ c1 c2
DROP TABLE t;
# Deleting from an auto increment table after inserting negative values
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (-1,-10);
@@ -970,7 +970,7 @@ DROP TABLE t;
# Inserting a positive value that exceeds maximum allowed value for an
# Auto Increment column (positive maximum)
CREATE TABLE t (c1 TINYINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (126,30);
@@ -989,7 +989,7 @@ DROP TABLE t;
# Inserting a negative value that goes below minimum allowed value for an
# Auto Increment column (negative minimum)
CREATE TABLE t (c1 TINYINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (-127,30);
@@ -1007,7 +1007,7 @@ c1 c2
DROP TABLE t;
# Updating the partition table with a negative Auto Increment value
CREATE TABLE t (c1 INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (-1,-10);
@@ -1040,7 +1040,7 @@ DROP TABLE t;
# Updating the partition table with a value that crosses the upper limits
# on both the positive and the negative side.
CREATE TABLE t (c1 TINYINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(c1),
-c2 INT) ENGINE='MARIA' PARTITION BY HASH(c1) PARTITIONS 4;
+c2 INT) ENGINE='Aria' PARTITION BY HASH(c1) PARTITIONS 4;
INSERT INTO t(c2) VALUES (10);
INSERT INTO t(c2) VALUES (20);
INSERT INTO t VALUES (126,30);
diff --git a/mysql-test/suite/parts/r/partition_debug_sync_innodb.result b/mysql-test/suite/parts/r/partition_debug_sync_innodb.result
new file mode 100644
index 00000000000..41c3d1af174
--- /dev/null
+++ b/mysql-test/suite/parts/r/partition_debug_sync_innodb.result
@@ -0,0 +1,61 @@
+#
+# Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
+# concurrent I_S query
+create table t1 (a int)
+engine = innodb
+partition by range (a)
+(partition p0 values less than MAXVALUE);
+insert into t1 values (1), (11), (21), (33);
+SELECT * FROM t1;
+a
+1
+11
+21
+33
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+t1#P#p0.ibd
+t1.frm
+t1.par
+SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open';
+SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish';
+SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
+SET DEBUG_SYNC = 'now WAIT_FOR parked';
+# When waiting for the name lock in get_all_tables in sql_show.cc
+# this will not be concurrent any more, thus the TIMEOUT
+SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1';
+# Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...'
+SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2';
+ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
+(PARTITION p0 VALUES LESS THAN (10),
+PARTITION p10 VALUES LESS THAN MAXVALUE);
+Warnings:
+Warning 1639 debug sync point wait timed out
+TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME
+NULL test t1 p0 NULL 1 NULL RANGE NULL a NULL 10 1 16384 16384 NULL 0 0 NULL NULL NULL NULL default NULL
+NULL test t1 p10 NULL 2 NULL RANGE NULL a NULL MAXVALUE 3 5461 16384 NULL 0 0 NULL NULL NULL NULL default NULL
+t1#P#p0.ibd
+t1#P#p10.ibd
+t1.frm
+t1.par
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+/*!50100 PARTITION BY RANGE (a)
+(PARTITION p0 VALUES LESS THAN (10) ENGINE = InnoDB,
+ PARTITION p10 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
+SELECT * FROM t1;
+a
+1
+11
+21
+33
+drop table t1;
+SET DEBUG_SYNC = 'RESET';
diff --git a/mysql-test/suite/parts/r/rpl_partition.result b/mysql-test/suite/parts/r/rpl_partition.result
index c2537815631..9c5ac34b1b0 100644
--- a/mysql-test/suite/parts/r/rpl_partition.result
+++ b/mysql-test/suite/parts/r/rpl_partition.result
@@ -138,45 +138,7 @@ SUBPARTITIONS 2
PARTITION pa9 VALUES LESS THAN (90) ENGINE = InnoDB,
PARTITION pa10 VALUES LESS THAN (100) ENGINE = InnoDB,
PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
SELECT count(*) "Slave norm" FROM t1;
Slave norm 500
SELECT count(*) "Slave bykey" FROM t2;
diff --git a/mysql-test/suite/parts/t/optimizer.test b/mysql-test/suite/parts/t/optimizer.test
new file mode 100644
index 00000000000..f93c36823ca
--- /dev/null
+++ b/mysql-test/suite/parts/t/optimizer.test
@@ -0,0 +1,47 @@
+# The server must support partitioning.
+--source include/have_partition.inc
+
+--disable_warnings
+drop table if exists t1,t2;
+--enable_warnings
+
+--echo #
+--echo # Bug#50939: Loose Index Scan unduly relies on engine to remember range
+--echo # endpoints
+--echo #
+CREATE TABLE t1 (
+ a INT,
+ b INT,
+ KEY ( a, b )
+) PARTITION BY HASH (a) PARTITIONS 1;
+
+CREATE TABLE t2 (
+ a INT,
+ b INT,
+ KEY ( a, b )
+);
+
+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
+
+INSERT INTO t1 SELECT a + 5, b + 5 FROM t1;
+INSERT INTO t1 SELECT a + 10, b + 10 FROM t1;
+INSERT INTO t1 SELECT a + 20, b + 20 FROM t1;
+INSERT INTO t1 SELECT a + 40, b + 40 FROM t1;
+
+INSERT INTO t2 SELECT * FROM t1;
+
+--echo # plans should be identical
+EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
+EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
+
+FLUSH status;
+SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a;
+--echo # Should be no more than 4 reads.
+SHOW status LIKE 'handler_read_key';
+
+FLUSH status;
+SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
+--echo # Should be no more than 4 reads.
+SHOW status LIKE 'handler_read_key';
+
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/parts/t/partition_alter2_1_maria.test b/mysql-test/suite/parts/t/partition_alter2_1_maria.test
index 88be2fb785f..47f6c4cb302 100644
--- a/mysql-test/suite/parts/t/partition_alter2_1_maria.test
+++ b/mysql-test/suite/parts/t/partition_alter2_1_maria.test
@@ -3,7 +3,7 @@
# #
# Purpose: #
# Tests around Alter column used in partitioning function #
-# MARIA branch #
+# Aria branch #
# #
#------------------------------------------------------------------------------#
# Original Author: mleich #
@@ -14,7 +14,7 @@
################################################################################
#
-# NOTE: PLEASE DO NOT ADD NOT MARIA SPECIFIC TESTCASES HERE !
+# NOTE: PLEASE DO NOT ADD NOT Aria SPECIFIC TESTCASES HERE !
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
# THE SOURCED FILES ONLY.
#
@@ -54,14 +54,14 @@ let $more_pk_ui_tests= 0;
##### Storage engine to be tested
--source include/have_maria.inc
-let $engine= 'MARIA';
+let $engine= 'Aria';
##### Execute the test of "table" files
-# MARIA has files per PK, UI, ...
+# Aria has files per PK, UI, ...
let $do_file_tests= 1;
##### Execute PRIMARY KEY tests #####
-# AFAIK MARIA treats PRIMARY KEYs like UNIQUE INDEXes
+# AFAIK Aria treats PRIMARY KEYs like UNIQUE INDEXes
let $do_pk_tests= 0;
##### Assign a big number smaller than the maximum value for partitions #####
diff --git a/mysql-test/suite/parts/t/partition_alter2_2_maria.test b/mysql-test/suite/parts/t/partition_alter2_2_maria.test
index 5e8b9b7d9f2..e8172de3fb4 100644
--- a/mysql-test/suite/parts/t/partition_alter2_2_maria.test
+++ b/mysql-test/suite/parts/t/partition_alter2_2_maria.test
@@ -3,7 +3,7 @@
# #
# Purpose: #
# Tests around Alter column used in partitioning function #
-# MARIA branch #
+# Aria branch #
# #
#------------------------------------------------------------------------------#
# Original Author: mleich #
@@ -14,7 +14,7 @@
################################################################################
#
-# NOTE: PLEASE DO NOT ADD NOT MARIA SPECIFIC TESTCASES HERE !
+# NOTE: PLEASE DO NOT ADD NOT Aria SPECIFIC TESTCASES HERE !
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
# THE SOURCED FILES ONLY.
#
@@ -54,14 +54,14 @@ let $more_pk_ui_tests= 0;
##### Storage engine to be tested
--source include/have_maria.inc
-let $engine= 'MARIA';
+let $engine= 'Aria';
##### Execute the test of "table" files
# MAARIA has files per PK, UI, ...
let $do_file_tests= 1;
##### Execute PRIMARY KEY tests #####
-# AFAIK MARIA treats PRIMARY KEYs like UNIQUE INDEXes
+# AFAIK Aria treats PRIMARY KEYs like UNIQUE INDEXes
let $do_pk_tests= 0;
##### Assign a big number smaller than the maximum value for partitions #####
diff --git a/mysql-test/suite/parts/t/partition_auto_increment_maria.test b/mysql-test/suite/parts/t/partition_auto_increment_maria.test
index 5f1515ec929..2a77a9e4b61 100644
--- a/mysql-test/suite/parts/t/partition_auto_increment_maria.test
+++ b/mysql-test/suite/parts/t/partition_auto_increment_maria.test
@@ -27,7 +27,7 @@
##### Storage engine to be tested
--source include/have_maria.inc
-let $engine= 'MARIA';
+let $engine= 'Aria';
#------------------------------------------------------------------------------#
# Execute the tests to be applied to all storage engines
diff --git a/mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt b/mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt
new file mode 100644
index 00000000000..c610ea42924
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt
@@ -0,0 +1 @@
+--loose-innodb_file_per_table=1
diff --git a/mysql-test/suite/parts/t/partition_debug_sync_innodb.test b/mysql-test/suite/parts/t/partition_debug_sync_innodb.test
new file mode 100644
index 00000000000..79ef3d537bf
--- /dev/null
+++ b/mysql-test/suite/parts/t/partition_debug_sync_innodb.test
@@ -0,0 +1,44 @@
+--source include/have_innodb.inc
+--source include/have_partition.inc
+--source include/have_debug_sync.inc
+
+let $MYSQLD_DATADIR=`SELECT @@datadir`;
+
+--echo #
+--echo # Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
+--echo # concurrent I_S query
+create table t1 (a int)
+engine = innodb
+partition by range (a)
+(partition p0 values less than MAXVALUE);
+insert into t1 values (1), (11), (21), (33);
+SELECT * FROM t1;
+SHOW CREATE TABLE t1;
+--list_files $MYSQLD_DATADIR/test
+
+SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open';
+SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish';
+send
+SELECT * FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
+
+connect (con1, localhost, root,,);
+SET DEBUG_SYNC = 'now WAIT_FOR parked';
+--echo # When waiting for the name lock in get_all_tables in sql_show.cc
+--echo # this will not be concurrent any more, thus the TIMEOUT
+SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1';
+--echo # Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...'
+SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2';
+--error 0,ER_TABLE_EXISTS_ERROR
+ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
+(PARTITION p0 VALUES LESS THAN (10),
+ PARTITION p10 VALUES LESS THAN MAXVALUE);
+
+disconnect con1;
+connection default;
+--reap
+--list_files $MYSQLD_DATADIR/test
+SHOW CREATE TABLE t1;
+SELECT * FROM t1;
+drop table t1;
+--list_files $MYSQLD_DATADIR/test
+SET DEBUG_SYNC = 'RESET';
diff --git a/mysql-test/suite/parts/t/partition_special_innodb-master.opt b/mysql-test/suite/parts/t/partition_special_innodb-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/suite/parts/t/partition_special_innodb-master.opt
+++ b/mysql-test/suite/parts/t/partition_special_innodb-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/suite/parts/t/rpl_partition.test b/mysql-test/suite/parts/t/rpl_partition.test
index f7d1c14cf29..4b4915b89ec 100644
--- a/mysql-test/suite/parts/t/rpl_partition.test
+++ b/mysql-test/suite/parts/t/rpl_partition.test
@@ -145,9 +145,7 @@ SELECT count(*) as "Master byrange" FROM t3;
--sync_slave_with_master
connection slave;
show create table t3;
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
-show slave status;
+--source include/check_slave_is_running.inc
SELECT count(*) "Slave norm" FROM t1;
SELECT count(*) "Slave bykey" FROM t2;
SELECT count(*) "Slave byrange" FROM t3;
diff --git a/mysql-test/suite/pbxt/my.cnf b/mysql-test/suite/pbxt/my.cnf
index 46c9bf8da4a..93308e4a1f2 100644
--- a/mysql-test/suite/pbxt/my.cnf
+++ b/mysql-test/suite/pbxt/my.cnf
@@ -2,6 +2,7 @@
!include include/default_mysqld.cnf
[mysqld.1]
+pbxt
default-storage-engine=pbxt
[ENV]
diff --git a/mysql-test/suite/pbxt/r/join_nested.result b/mysql-test/suite/pbxt/r/join_nested.result
index 1b46807a159..2dda77db8c6 100644
--- a/mysql-test/suite/pbxt/r/join_nested.result
+++ b/mysql-test/suite/pbxt/r/join_nested.result
@@ -232,7 +232,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using join buffer
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
+Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and (`test`.`t8`.`b` = `test`.`t7`.`b`))) where 1
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM (t6, t7)
LEFT JOIN
@@ -553,7 +553,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) where ((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t0,t1
@@ -649,7 +649,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
SELECT t9.a,t9.b
FROM t9;
a b
@@ -840,7 +840,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
-Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2)
+Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) where (`test`.`t1`.`a` <= 2)
CREATE INDEX idx_b ON t2(b);
EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
@@ -854,7 +854,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ref idx_b idx_b 5 test.t3.b 1 100.00 Using where
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
Warnings:
-Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and (`test`.`t3`.`b` = `test`.`t2`.`b`) and (`test`.`t2`.`b` = `test`.`t4`.`b`))) where 1
+Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) and (`test`.`t2`.`b` = `test`.`t3`.`b`)))) where 1
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM (t3,t4)
LEFT JOIN
@@ -916,7 +916,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t4(b);
CREATE INDEX idx_b ON t5(b);
EXPLAIN EXTENDED
@@ -958,15 +958,15 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 1 100.00 Using where
1 SIMPLE t5 ALL idx_b NULL NULL NULL 3 100.00 Using where
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer
Warnings:
-Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t8`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` < 10)))) on(((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t6`.`b` >= 2)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and ((`test`.`t5`.`b` = `test`.`t0`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t4`.`b` = `test`.`t3`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
+Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t3`.`a` = 1) and (`test`.`t4`.`b` = `test`.`t2`.`b`))) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t6`.`b` < 10) and ((`test`.`t7`.`b` = `test`.`t5`.`b`) and (`test`.`t8`.`b` = `test`.`t5`.`b`))))) on(((`test`.`t6`.`b` >= 2) and (`test`.`t7`.`b` = `test`.`t5`.`b`)))) on((((`test`.`t3`.`b` = 2) or isnull(`test`.`t3`.`c`)) and ((`test`.`t6`.`b` = 2) or isnull(`test`.`t6`.`c`)) and (((`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t5`.`b` = `test`.`t0`.`b`)) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t6`.`c`) or isnull(`test`.`t8`.`c`)) and (`test`.`t1`.`a` <> 2))) join `test`.`t9` where ((`test`.`t9`.`a` = 1) and (`test`.`t1`.`b` = `test`.`t0`.`b`) and (`test`.`t0`.`a` = 1) and ((`test`.`t2`.`a` >= 4) or isnull(`test`.`t2`.`c`)) and ((`test`.`t3`.`a` < 5) or isnull(`test`.`t3`.`c`)) and ((`test`.`t3`.`b` = `test`.`t4`.`b`) or isnull(`test`.`t3`.`c`) or isnull(`test`.`t4`.`c`)) and ((`test`.`t5`.`a` >= 2) or isnull(`test`.`t5`.`c`)) and ((`test`.`t6`.`a` >= 4) or isnull(`test`.`t6`.`c`)) and ((`test`.`t7`.`a` <= 2) or isnull(`test`.`t7`.`c`)) and ((`test`.`t8`.`a` < 1) or isnull(`test`.`t8`.`c`)) and ((`test`.`t9`.`b` = `test`.`t8`.`b`) or isnull(`test`.`t8`.`c`)))
CREATE INDEX idx_b ON t8(b);
EXPLAIN
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
@@ -1487,7 +1487,7 @@ on (t1.a = t2.a);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 10
1 SIMPLE t2 ref a a 5 test.t1.a 1
-1 SIMPLE t3 ref a a 5 test.t2.a 1
+1 SIMPLE t3 ref a a 5 test.t1.a 1
drop table t1, t2, t3;
CREATE TABLE t1 (id int NOT NULL PRIMARY KEY, type varchar(10));
CREATE TABLE t2 (pid int NOT NULL PRIMARY KEY, type varchar(10));
diff --git a/mysql-test/suite/pbxt/r/mysqlshow.result b/mysql-test/suite/pbxt/r/mysqlshow.result
index 8588b332b00..674ec1a7cda 100644
--- a/mysql-test/suite/pbxt/r/mysqlshow.result
+++ b/mysql-test/suite/pbxt/r/mysqlshow.result
@@ -122,13 +122,14 @@ Database: information_schema
| INNODB_TRX |
| INNODB_SYS_TABLES |
| INNODB_LOCK_WAITS |
-| INNODB_CMPMEM_RESET |
+| INNODB_SYS_STATS |
| INNODB_LOCKS |
| INNODB_CMPMEM |
| INNODB_TABLE_STATS |
| INNODB_SYS_INDEXES |
| INNODB_CMP_RESET |
| INNODB_BUFFER_POOL_PAGES_BLOB |
+| INNODB_CMPMEM_RESET |
| INNODB_INDEX_STATS |
+---------------------------------------+
Database: INFORMATION_SCHEMA
@@ -178,13 +179,14 @@ Database: INFORMATION_SCHEMA
| INNODB_TRX |
| INNODB_SYS_TABLES |
| INNODB_LOCK_WAITS |
-| INNODB_CMPMEM_RESET |
+| INNODB_SYS_STATS |
| INNODB_LOCKS |
| INNODB_CMPMEM |
| INNODB_TABLE_STATS |
| INNODB_SYS_INDEXES |
| INNODB_CMP_RESET |
| INNODB_BUFFER_POOL_PAGES_BLOB |
+| INNODB_CMPMEM_RESET |
| INNODB_INDEX_STATS |
+---------------------------------------+
Wildcard: inf_rmation_schema
diff --git a/mysql-test/suite/pbxt/r/negation_elimination.result b/mysql-test/suite/pbxt/r/negation_elimination.result
index a67c6a7138c..61889824865 100644
--- a/mysql-test/suite/pbxt/r/negation_elimination.result
+++ b/mysql-test/suite/pbxt/r/negation_elimination.result
@@ -388,7 +388,7 @@ Table Op Msg_type Msg_text
test.t1 analyze status OK
explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a));
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t1 index NULL a 5 NULL 21 100.00 Using where; Using index
+1 SIMPLE t1 index NULL a 5 NULL 5 100.00 Using where; Using index
Warnings:
Note 1003 select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like '1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` having `test`.`t1`.`a`
drop table t1;
diff --git a/mysql-test/suite/pbxt/r/pbxt_xa.result b/mysql-test/suite/pbxt/r/pbxt_xa.result
index 084a656a6db..8bcab926998 100644
--- a/mysql-test/suite/pbxt/r/pbxt_xa.result
+++ b/mysql-test/suite/pbxt/r/pbxt_xa.result
@@ -1,5 +1,4 @@
drop table if exists t1, t2;
-CALL mtr.add_suppression("Found wrong usage of mutex 'LOCK_sync' and 'LOCK_active'");
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb;
CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=pbxt;
BEGIN;
diff --git a/mysql-test/suite/pbxt/r/range.result b/mysql-test/suite/pbxt/r/range.result
index 0274298f2b7..0dac5704d45 100644
--- a/mysql-test/suite/pbxt/r/range.result
+++ b/mysql-test/suite/pbxt/r/range.result
@@ -420,22 +420,22 @@ analyze table t1,t2;
Table Op Msg_type Msg_text
test.t1 analyze status OK
test.t2 analyze status OK
-explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range uid_index uid_index 4 NULL 1 Using where
-1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1
-explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0;
+1 SIMPLE t1 range uid_index uid_index 4 NULL # Using where
+1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range uid_index uid_index 4 NULL 1 Using where
-1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1
-explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
+1 SIMPLE t1 range uid_index uid_index 4 NULL # Using where
+1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range uid_index uid_index 4 NULL 2 Using where
-1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1
-explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0;
+1 SIMPLE t1 range uid_index uid_index 4 NULL # Using where
+1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range uid_index uid_index 4 NULL 2 Using where
-1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid 1
+1 SIMPLE t1 range uid_index uid_index 4 NULL # Using where
+1 SIMPLE t2 ref uid_index uid_index 4 test.t1.uid #
select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
id name uid id name uid
1001 A 1 1001 A 1
diff --git a/mysql-test/suite/pbxt/r/renamedb.result b/mysql-test/suite/pbxt/r/renamedb.result
index ff8f89592fc..e77aca0d0b7 100644
--- a/mysql-test/suite/pbxt/r/renamedb.result
+++ b/mysql-test/suite/pbxt/r/renamedb.result
@@ -7,6 +7,6 @@ ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and n
ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME;
ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name
ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME;
-ERROR HY000: Incorrect usage of ALTER DATABASE UPGRADE DATA DIRECTORY NAME and name
+ERROR 42000: Incorrect database name '#mysql50#'
ALTER DATABASE `#mysql50#upgrade-me` UPGRADE DATA DIRECTORY NAME;
ERROR 42000: Unknown database '#mysql50#upgrade-me'
diff --git a/mysql-test/suite/pbxt/r/select.result b/mysql-test/suite/pbxt/r/select.result
index fbb84444bd0..4e50661f9ba 100644
--- a/mysql-test/suite/pbxt/r/select.result
+++ b/mysql-test/suite/pbxt/r/select.result
@@ -1384,52 +1384,53 @@ Table Op Msg_type Msg_text
test.t2 analyze status OK
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 1 test.t2.companynr 1
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr < 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 1 test.t2.companynr 1
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 and t4.companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 1 test.t2.companynr 1
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr < 0 or t4.companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where ifnull(t2.companynr,1)>0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
explain select companynr,companyname from t4 left join t2 using (companynr) where ifnull(companynr,1)>0;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
companynr companynr
37 36
@@ -1437,7 +1438,7 @@ companynr companynr
explain select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t4 index NULL PRIMARY 1 NULL 12 Using index; Using temporary
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where; Using join buffer
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where; Using join buffer
select t2.fld1,t2.companynr,fld3,period from t3,t2 where t2.fld1 = 38208 and t2.fld1=t3.t2nr and period = 1008 or t2.fld1 = 38008 and t2.fld1 =t3.t2nr and period = 1008;
fld1 companynr fld3 period
038008 37 reporters 1008
@@ -1511,7 +1512,7 @@ count(*) min(fld4) max(fld4) sum(fld1) avg(fld1) std(fld1) variance(fld1)
70 absentee vest 17788966 254128.0857 3272.5940 10709871.3069
explain extended select count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 where companynr = 34 and fld4<>"";
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 100.00 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 100.00 Using where
Warnings:
Note 1003 select count(0) AS `count(*)`,min(`test`.`t2`.`fld4`) AS `min(fld4)`,max(`test`.`t2`.`fld4`) AS `max(fld4)`,sum(`test`.`t2`.`fld1`) AS `sum(fld1)`,avg(`test`.`t2`.`fld1`) AS `avg(fld1)`,std(`test`.`t2`.`fld1`) AS `std(fld1)`,variance(`test`.`t2`.`fld1`) AS `variance(fld1)` from `test`.`t2` where ((`test`.`t2`.`companynr` = 34) and (`test`.`t2`.`fld4` <> ''))
select companynr,count(*),min(fld4),max(fld4),sum(fld1),avg(fld1),std(fld1),variance(fld1) from t2 group by companynr limit 3;
@@ -1955,7 +1956,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
explain select fld3 from t2 where fld1=fld1;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 ALL NULL NULL NULL NULL 1200
+1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
select companynr,fld1 from t2 HAVING fld1=250501 or fld1=250502;
companynr fld1
34 250501
@@ -2007,7 +2008,7 @@ count(*)
4181
explain select min(fld1),max(fld1),count(*) from t2;
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t2 index NULL fld1 4 NULL 1200 Using index
+1 SIMPLE t2 index NULL fld1 4 NULL 1199 Using index
select min(fld1),max(fld1),count(*) from t2;
min(fld1) max(fld1) count(*)
0 1232609 1199
@@ -2093,9 +2094,9 @@ show full columns from t2 from test like 's%';
Field Type Collation Null Key Default Extra Privileges Comment
show keys from t2;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
-t2 0 PRIMARY 1 auto A 1200 NULL NULL BTREE
-t2 0 fld1 1 fld1 A 1200 NULL NULL BTREE
-t2 1 fld3 1 fld3 A 1200 NULL NULL BTREE
+t2 0 PRIMARY 1 auto A 1199 NULL NULL BTREE
+t2 0 fld1 1 fld1 A 1199 NULL NULL BTREE
+t2 1 fld3 1 fld3 A 1199 NULL NULL BTREE
drop table t4, t3, t2, t1;
DO 1;
DO benchmark(100,1+1),1,1;
@@ -3453,8 +3454,8 @@ In next EXPLAIN, B.rows must be exactly 10:
explain select * from t2 A, t2 B where A.a=5 and A.b=5 and A.C<5
and B.a=5 and B.b=A.e and (B.b =1 or B.b = 3 or B.b=5);
id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE A range PRIMARY PRIMARY 12 NULL 1 Using where
-1 SIMPLE B ref PRIMARY PRIMARY 8 const,test.A.e 1
+1 SIMPLE A range PRIMARY PRIMARY 12 NULL # Using where
+1 SIMPLE B ref PRIMARY PRIMARY 8 const,test.A.e #
drop table t1, t2;
CREATE TABLE t1 (a int PRIMARY KEY, b int, INDEX(b));
INSERT INTO t1 VALUES (1, 3), (9,4), (7,5), (4,5), (6,2),
diff --git a/mysql-test/suite/pbxt/t/check.test b/mysql-test/suite/pbxt/t/check.test
index e8f355fe266..e25c5217e48 100644
--- a/mysql-test/suite/pbxt/t/check.test
+++ b/mysql-test/suite/pbxt/t/check.test
@@ -9,11 +9,13 @@ drop table if exists t1;
create table t1(n int not null, key(n), key(n), key(n), key(n));
let $1=10000;
disable_query_log;
+begin;
while ($1)
{
eval insert into t1 values ($1);
dec $1;
}
+commit;
enable_query_log;
send check table t1 extended;
connection con2;
diff --git a/mysql-test/suite/pbxt/t/count_distinct2.test b/mysql-test/suite/pbxt/t/count_distinct2.test
index 2f95e000f6c..8e2b33f1704 100644
--- a/mysql-test/suite/pbxt/t/count_distinct2.test
+++ b/mysql-test/suite/pbxt/t/count_distinct2.test
@@ -52,11 +52,13 @@ drop table t1;
create table t1 (n int default NULL);
let $1=5000;
disable_query_log;
+begin;
while ($1)
{
eval insert into t1 values($1);
dec $1;
}
+commit;
enable_query_log;
flush status;
@@ -68,11 +70,13 @@ drop table t1;
create table t1 (s text);
let $1=5000;
disable_query_log;
+begin;
while ($1)
{
eval insert into t1 values('$1');
dec $1;
}
+commit;
enable_query_log;
flush status;
select count(distinct s) from t1;
diff --git a/mysql-test/suite/pbxt/t/derived.test b/mysql-test/suite/pbxt/t/derived.test
index 33ad994278c..a9127b49741 100644
--- a/mysql-test/suite/pbxt/t/derived.test
+++ b/mysql-test/suite/pbxt/t/derived.test
@@ -46,12 +46,14 @@ explain select * from (select t1.*, t2.a as t2a from t1,t2 where t1.a=t2.a) t1;
drop table t1, t2;
create table t1(a int not null, t char(8), index(a));
disable_query_log;
+begin;
let $1 = 10000;
while ($1)
{
eval insert into t1 values ($1,'$1');
dec $1;
}
+commit;
enable_query_log;
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a ASC LIMIT 0,20;
explain select count(*) from t1 as tt1, (select * from t1) as tt2;
diff --git a/mysql-test/suite/pbxt/t/pbxt_xa.test b/mysql-test/suite/pbxt/t/pbxt_xa.test
index dfe4f0b0094..a9d1c5c38e8 100644
--- a/mysql-test/suite/pbxt/t/pbxt_xa.test
+++ b/mysql-test/suite/pbxt/t/pbxt_xa.test
@@ -4,11 +4,6 @@
drop table if exists t1, t2;
--enable_warnings
-# This warning is indication of a real bug, MBug#578117.
-# But it is not a regression, so we suppress it to get a clean test run.
-# This suppression must be removed as part of MBug#578117 fix.
-CALL mtr.add_suppression("Found wrong usage of mutex 'LOCK_sync' and 'LOCK_active'");
-
#
# bug lp:544173, xa crash with two 2pc-capable storage engines without binlog
#
diff --git a/mysql-test/suite/pbxt/t/range.test b/mysql-test/suite/pbxt/t/range.test
index 8615c76888d..8d02089ee1b 100644
--- a/mysql-test/suite/pbxt/t/range.test
+++ b/mysql-test/suite/pbxt/t/range.test
@@ -380,10 +380,18 @@ select count(*) from t2;
analyze table t1,t2;
-explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
-explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0;
-explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
-explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0;
+# This part doesn't make sense for pbxt as the result may vary becasue
+# records_in_range() gives same results for t1 and t2.
+# Added straight_join to get predictable results
+
+--replace_column 9 #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
+--replace_column 9 #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0;
+--replace_column 9 #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
+--replace_column 9 #
+explain select straight_join * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0;
select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
diff --git a/mysql-test/suite/pbxt/t/renamedb.test b/mysql-test/suite/pbxt/t/renamedb.test
index 84315090b7a..71d0c127058 100644
--- a/mysql-test/suite/pbxt/t/renamedb.test
+++ b/mysql-test/suite/pbxt/t/renamedb.test
@@ -44,7 +44,7 @@ ALTER DATABASE `#mysql41#not-supported` UPGRADE DATA DIRECTORY NAME;
--error ER_WRONG_USAGE
ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME;
---error ER_WRONG_USAGE
+--error ER_WRONG_DB_NAME
ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME;
--error ER_BAD_DB_ERROR
diff --git a/mysql-test/suite/pbxt/t/select.test b/mysql-test/suite/pbxt/t/select.test
index 6b2781e6a5b..014f88b0e1b 100644
--- a/mysql-test/suite/pbxt/t/select.test
+++ b/mysql-test/suite/pbxt/t/select.test
@@ -2912,6 +2912,7 @@ insert into t2 select A.a, B.a, C.a, C.a from t1 A, t1 B, t1 C;
analyze table t2;
select 'In next EXPLAIN, B.rows must be exactly 10:' Z;
+--replace_column 9 #
explain select * from t2 A, t2 B where A.a=5 and A.b=5 and A.C<5
and B.a=5 and B.b=A.e and (B.b =1 or B.b = 3 or B.b=5);
drop table t1, t2;
diff --git a/mysql-test/suite/pbxt/t/skip_name_resolve-master.opt b/mysql-test/suite/pbxt/t/skip_name_resolve-master.opt
new file mode 100644
index 00000000000..cef79bc8585
--- /dev/null
+++ b/mysql-test/suite/pbxt/t/skip_name_resolve-master.opt
@@ -0,0 +1 @@
+--force-restart
diff --git a/mysql-test/suite/pbxt/t/suite.opt b/mysql-test/suite/pbxt/t/suite.opt
deleted file mode 100644
index 3036df38940..00000000000
--- a/mysql-test/suite/pbxt/t/suite.opt
+++ /dev/null
@@ -1 +0,0 @@
---default-storage-engine=pbxt
diff --git a/mysql-test/suite/pbxt/t/udf-master.opt b/mysql-test/suite/pbxt/t/udf-master.opt
deleted file mode 100644
index 7d8786c156a..00000000000
--- a/mysql-test/suite/pbxt/t/udf-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$UDF_EXAMPLE_LIB_OPT
diff --git a/mysql-test/suite/pbxt/t/udf.test b/mysql-test/suite/pbxt/t/udf.test
index ab430cc2416..addcdef2103 100644
--- a/mysql-test/suite/pbxt/t/udf.test
+++ b/mysql-test/suite/pbxt/t/udf.test
@@ -14,26 +14,26 @@ drop table if exists t1;
# Create the example functions from udf_example
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
--error ER_CANT_FIND_DL_ENTRY
-eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
eval CREATE FUNCTION reverse_lookup
- RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+ RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
eval CREATE AGGREGATE FUNCTION avgcost
- RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
+ RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
--error ER_CANT_INITIALIZE_UDF
select myfunc_double();
@@ -207,14 +207,14 @@ CREATE FUNCTION metaphon(a int) RETURNS int
return 0;
# this currently passes, and eclipse the stored function
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
DROP FUNCTION metaphon;
DROP FUNCTION metaphon;
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
--error ER_UDF_EXISTS
CREATE FUNCTION metaphon(a int) RETURNS int
@@ -245,8 +245,8 @@ DROP FUNCTION avgcost;
# the UDF
#
select * from mysql.func;
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
select IS_const(3);
@@ -260,8 +260,8 @@ select is_const(3);
#
# Bug#18761: constant expression as UDF parameters not passed in as constant
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
select
is_const(3) as const,
@@ -300,14 +300,14 @@ drop function if exists is_const;
# Bug #25382: Passing NULL to an UDF called from stored procedures
# crashes server
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
delimiter //;
create function f1(p1 varchar(255))
@@ -345,8 +345,8 @@ drop function myfunc_int;
# Bug #28921: Queries containing UDF functions are cached
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
create table t1 (a char);
set GLOBAL query_cache_size=1355776;
@@ -374,8 +374,8 @@ DROP DATABASE IF EXISTS mysqltest;
CREATE DATABASE mysqltest;
USE mysqltest;
DROP DATABASE mysqltest;
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
DROP FUNCTION metaphon;
USE test;
@@ -403,8 +403,8 @@ insert into const_len_bug values(str_const, result, "");
END |
DELIMITER ;|
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_SO";
CALL check_const_len_sp("foo");
@@ -420,8 +420,8 @@ DROP TABLE const_len_bug;
# Bug #30355: Incorrect ordering of UDF results
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT PRIMARY KEY);
INSERT INTO t1 VALUES (4),(3),(2),(1);
diff --git a/mysql-test/suite/percona/disabled.def b/mysql-test/suite/percona/disabled.def
new file mode 100644
index 00000000000..a99b952a5eb
--- /dev/null
+++ b/mysql-test/suite/percona/disabled.def
@@ -0,0 +1,22 @@
+percona_suppress_log_warning_1592: Feature not merged into MariaDB
+percona_log_slow_slave_statements: Feature not merged into MariaDB
+percona_log_slow_slave_statements-and-use_global_long_query_time: Feature not merged into MariaDB
+percona_slow_query_log-control_global_slow: Feature not merged into MariaDB
+percona_slow_query_log-microseconds_in_slow_query_log: Feature not merged into MariaDB
+percona_query_cache_with_comments: Feature not merged into MariaDB
+percona_query_cache_with_comments_prepared_statements: Feature not merged into MariaDB
+percona_show_temp_tables: Feature not merged into MariaDB
+percona_slow_query_log-use_global_long_query_time: Feature not merged into MariaDB
+percona_query_cache_with_comments_disable: Feature not merged into MariaDB
+percona_log_connection_error: Feature not merged into MariaDB
+percona_query_response_time: Feature not merged into MariaDB
+percona_query_response_time-stored: Feature not merged into MariaDB
+percona_sql_no_fcache: Feature not merged into MariaDB
+percona_status_wait_query_cache_mutex: Feature not merged into MariaDB
+percona_slave_innodb_stats: Feature not merged into MariaDB
+percona_query_response_time-replication: Feature not merged into MariaDB
+percona_server_variables: Feature not merged into MariaDB
+
+percona_slow_query_log-log_slow_verbosity: InnoDB filtering information not fully merged into MariaDB
+
+percona_innodb_buffer_pool_shm: Requires big shmmax not default on many systems
diff --git a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt
new file mode 100644
index 00000000000..5974ef6e2be
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm-master.opt
@@ -0,0 +1 @@
+--innodb_buffer_pool_shm_key=123456
diff --git a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result
new file mode 100644
index 00000000000..08ece8fb9a9
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.result
@@ -0,0 +1,6 @@
+show variables like 'innodb_buffer_pool_shm%';
+Variable_name Value
+innodb_buffer_pool_shm_key 123456
+show variables like 'innodb_buffer_pool_shm%';
+Variable_name Value
+innodb_buffer_pool_shm_key 123456
diff --git a/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test
new file mode 100644
index 00000000000..7b81bb8d54b
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_buffer_pool_shm.test
@@ -0,0 +1,18 @@
+--source include/have_innodb.inc
+show variables like 'innodb_buffer_pool_shm%';
+
+#clean shutdown (restart_mysqld.inc is not clean if over 10 sec...)
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+wait
+EOF
+shutdown_server 120;
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+restart
+EOF
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+--disable_reconnect
+
+show variables like 'innodb_buffer_pool_shm%';
+--sleep 1
+--system ipcrm -M 123456
diff --git a/mysql-test/suite/percona/percona_innodb_deadlock_count.result b/mysql-test/suite/percona/percona_innodb_deadlock_count.result
new file mode 100644
index 00000000000..4ad6fd433fe
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_deadlock_count.result
@@ -0,0 +1,28 @@
+# Establish connection con1 (user=root)
+# Establish connection con2 (user=root)
+# Establish connection con3 (user=root)
+# Drop test table
+drop table if exists t;
+# Create test table
+create table t(a INT PRIMARY KEY, b INT) engine=InnoDB;
+# Insert two rows to test table
+insert into t values(2,1);
+insert into t values(1,2);
+# Switch to connection con1
+BEGIN;
+SELECT b FROM t WHERE a=1 FOR UPDATE;
+b
+2
+# Switch to connection con2
+BEGIN;
+SELECT b FROM t WHERE a=2 FOR UPDATE;
+b
+1
+# Switch to connection con1
+SELECT b FROM t WHERE a=2 FOR UPDATE;
+# Switch to connection con2
+SELECT b FROM t WHERE a=1 FOR UPDATE;
+# Switch to connection con3
+1
+# Drop test table
+drop table t;
diff --git a/mysql-test/suite/percona/percona_innodb_deadlock_count.test b/mysql-test/suite/percona/percona_innodb_deadlock_count.test
new file mode 100644
index 00000000000..b0882a18dc1
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_deadlock_count.test
@@ -0,0 +1,49 @@
+--source include/have_innodb.inc
+--echo # Establish connection con1 (user=root)
+connect (con1,localhost,root,,);
+--echo # Establish connection con2 (user=root)
+connect (con2,localhost,root,,);
+--echo # Establish connection con3 (user=root)
+connect (con3,localhost,root,,);
+--echo # Drop test table
+--disable_warnings
+drop table if exists t;
+--enable_warnings
+disable_abort_on_error;
+
+--echo # Create test table
+create table t(a INT PRIMARY KEY, b INT) engine=InnoDB;
+--echo # Insert two rows to test table
+insert into t values(2,1);
+insert into t values(1,2);
+
+#--echo # Save current deadlock count
+let $current = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_deadlocks'`;
+
+--echo # Switch to connection con1
+connection con1;
+BEGIN; SELECT b FROM t WHERE a=1 FOR UPDATE;
+
+#show engine innodb status;
+
+--echo # Switch to connection con2
+connection con2;
+BEGIN; SELECT b FROM t WHERE a=2 FOR UPDATE;
+
+--echo # Switch to connection con1
+connection con1;
+SEND SELECT b FROM t WHERE a=2 FOR UPDATE;
+
+--echo # Switch to connection con2
+connection con2;
+SEND SELECT b FROM t WHERE a=1 FOR UPDATE;
+
+SLEEP 0.2;
+--echo # Switch to connection con3
+connection con3;
+let $result = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_deadlocks'`;
+
+let $diff = `SELECT $result - $current`;
+echo $diff;
+--echo # Drop test table
+drop table t;
diff --git a/mysql-test/suite/percona/percona_innodb_doublewrite_file-master.opt b/mysql-test/suite/percona/percona_innodb_doublewrite_file-master.opt
new file mode 100644
index 00000000000..54f9f550277
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_doublewrite_file-master.opt
@@ -0,0 +1 @@
+--loose-innodb_doublewrite_file=ib_doublewrite
diff --git a/mysql-test/suite/percona/percona_innodb_doublewrite_file.result b/mysql-test/suite/percona/percona_innodb_doublewrite_file.result
new file mode 100644
index 00000000000..4d086cc4498
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_doublewrite_file.result
@@ -0,0 +1,4 @@
+show variables like 'innodb_doublewrite%';
+Variable_name Value
+innodb_doublewrite ON
+innodb_doublewrite_file ib_doublewrite
diff --git a/mysql-test/suite/percona/percona_innodb_doublewrite_file.test b/mysql-test/suite/percona/percona_innodb_doublewrite_file.test
new file mode 100644
index 00000000000..8068d561190
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_doublewrite_file.test
@@ -0,0 +1,2 @@
+--source include/have_innodb.inc
+show variables like 'innodb_doublewrite%';
diff --git a/mysql-test/suite/percona/percona_innodb_use_sys_stats_table-master.opt b/mysql-test/suite/percona/percona_innodb_use_sys_stats_table-master.opt
new file mode 100644
index 00000000000..c6865f5704c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_use_sys_stats_table-master.opt
@@ -0,0 +1 @@
+--innodb_use_sys_stats_table
diff --git a/mysql-test/suite/percona/percona_innodb_use_sys_stats_table.result b/mysql-test/suite/percona/percona_innodb_use_sys_stats_table.result
new file mode 100644
index 00000000000..cb64de41901
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_use_sys_stats_table.result
@@ -0,0 +1,3 @@
+show variables like 'innodb_use_sys_stats%';
+Variable_name Value
+innodb_use_sys_stats_table ON
diff --git a/mysql-test/suite/percona/percona_innodb_use_sys_stats_table.test b/mysql-test/suite/percona/percona_innodb_use_sys_stats_table.test
new file mode 100644
index 00000000000..02791137f08
--- /dev/null
+++ b/mysql-test/suite/percona/percona_innodb_use_sys_stats_table.test
@@ -0,0 +1,2 @@
+--source include/have_innodb.inc
+show variables like 'innodb_use_sys_stats%';
diff --git a/mysql-test/suite/percona/percona_log_connection_error-master.opt b/mysql-test/suite/percona/percona_log_connection_error-master.opt
new file mode 100644
index 00000000000..32a891789f3
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_connection_error-master.opt
@@ -0,0 +1 @@
+--log-error \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_log_connection_error.result b/mysql-test/suite/percona/percona_log_connection_error.result
new file mode 100644
index 00000000000..3c6c67f770c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_connection_error.result
@@ -0,0 +1,15 @@
+SET @old_max_connections = @@max_connections;
+SET @old_log_warnings = @@log_warnings;
+SET GLOBAL max_connections=2;
+SET GLOBAL LOG_WARNINGS = 0;
+connect(localhost,root,,test,port,socket);
+ERROR HY000: Too many connections
+SET GLOBAL LOG_WARNINGS = 1;
+connect(localhost,root,,test,port,socket);
+ERROR HY000: Too many connections
+SET GLOBAL LOG_WARNINGS = 0;
+connect(localhost,root,,test,port,socket);
+ERROR HY000: Too many connections
+SET GLOBAL max_connections = @old_max_connections;
+SET GLOBAL log_warnings = @old_log_warnings;
+1
diff --git a/mysql-test/suite/percona/percona_log_connection_error.test b/mysql-test/suite/percona/percona_log_connection_error.test
new file mode 100644
index 00000000000..57cd652bd24
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_connection_error.test
@@ -0,0 +1,52 @@
+--source include/not_embedded.inc
+
+connect (main,localhost,root,,);
+connection main;
+SET @old_max_connections = @@max_connections;
+SET @old_log_warnings = @@log_warnings;
+SET GLOBAL max_connections=2;
+let $port=`SELECT Variable_value FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE Variable_name LIKE 'port'`;
+let $socket=`SELECT Variable_value FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE Variable_name LIKE 'socket'`;
+
+SET GLOBAL LOG_WARNINGS = 0;
+--connect (conn0,localhost,root,,)
+connection conn0;
+replace_result $port port $socket socket;
+--error 1040
+--connect(conn1,localhost,root,,)
+disconnect conn0;
+SLEEP 0.1; # tsarev: hack, but i don't know (and didn't find) how right
+
+connection main;
+SET GLOBAL LOG_WARNINGS = 1;
+--connect (conn1,localhost,root,,)
+replace_result $port port $socket socket;
+--error 1040
+--connect (conn0,localhost,root,,)
+disconnect conn1;
+SLEEP 0.1; # tsarev: hack, but i don't know (and didn't find) how right
+
+connection main;
+SET GLOBAL LOG_WARNINGS = 0;
+--connect (conn0,localhost,root,,)
+replace_result $port port $socket socket;
+--error 1040
+--connect(conn1,localhost,root,,)
+disconnect conn0;
+SLEEP 0.1; # tsarev: hack, but i don't know (and didn't find) how right
+
+connection main;
+SET GLOBAL max_connections = @old_max_connections;
+SET GLOBAL log_warnings = @old_log_warnings;
+let $log_error_= `SELECT @@GLOBAL.log_error`;
+if(!`select LENGTH('$log_error_')`)
+{
+ # MySQL Server on windows is started with --console and thus
+ # does not know the location of its .err log, use default location
+ let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
+}
+# Assign env variable LOG_ERROR
+let LOG_ERROR=$log_error_;
+
+let cmd=cat $log_error | grep "Too many connections" | wc -l;
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt
new file mode 100644
index 00000000000..d600400af08
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_log_slow_slave_statements-master.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt
new file mode 100644
index 00000000000..c79e637317b
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time-slave.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_log_slow_slave_statements-slave.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.result b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.result
new file mode 100644
index 00000000000..c17e7a3f508
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.result
@@ -0,0 +1,103 @@
+# Activate master-slave replication
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+# Make table t for test
+DROP TABLE IF EXISTS t;
+CREATE TABLE t(id INT);
+# Start slave replication
+START SLAVE;
+INSERT INTO t VALUES (1);
+# Read information about master binlog
+# Sync(1) slave thread
+# Read and change log_slow_slave_statements to ON on slave
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements OFF
+set global log_slow_slave_statements=ON;
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements ON
+INSERT INTO t VALUES (2);
+# Read information about master binlog
+# Sync slave(2) thread
+# Restart slave
+STOP SLAVE;
+START SLAVE;
+INSERT INTO t VALUES (3);
+# Read information about master binlog
+# Sync(3) slave thread
+show variables like 'long_query_time';
+Variable_name Value
+long_query_time 1.000000
+show global variables like 'long_query_time';
+Variable_name Value
+long_query_time 1.000000
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time OFF
+set global long_query_time=0;
+show variables like 'long_query_time';
+Variable_name Value
+long_query_time 1.000000
+show global variables like 'long_query_time';
+Variable_name Value
+long_query_time 0.000000
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time OFF
+INSERT INTO t VALUES (4);
+# Read information about master binlog
+# Sync slave(4) thread
+show variables like 'long_query_time';
+Variable_name Value
+long_query_time 1.000000
+show global variables like 'long_query_time';
+Variable_name Value
+long_query_time 0.000000
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time OFF
+set global use_global_long_query_time=1;
+show variables like 'long_query_time';
+Variable_name Value
+long_query_time 0.000000
+show global variables like 'long_query_time';
+Variable_name Value
+long_query_time 0.000000
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time ON
+INSERT INTO t VALUES (5);
+# Read information about master binlog
+# Sync slave(5) thread
+show variables like 'long_query_time';
+Variable_name Value
+long_query_time 0.000000
+show global variables like 'long_query_time';
+Variable_name Value
+long_query_time 0.000000
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time ON
+set global long_query_time=1;
+set global use_global_long_query_time=0;
+# Analyse master slow_query_log
+0
+0
+0
+0
+0
+# Analyse slave slow_query_log
+0
+0
+0
+0
+1
+set global log_slow_slave_statements=OFF;
+DROP TABLE t;
+# Read information about master binlog
+# Sync slave(6) thread
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test
new file mode 100644
index 00000000000..8d4bb1e091c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-and-use_global_long_query_time.test
@@ -0,0 +1,141 @@
+-- source include/not_windows.inc
+
+-- echo # Activate master-slave replication
+-- source include/master-slave.inc
+
+connection master;
+-- echo # Make table t for test
+-- disable_warnings
+DROP TABLE IF EXISTS t;
+-- enable_warnings
+CREATE TABLE t(id INT);
+
+
+-- echo # Start slave replication
+-- disable_warnings
+connection slave;
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+-- enable_warnings
+
+#-- echo # Make insert(1) on master
+connection master;
+INSERT INTO t VALUES (1);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync(1) slave thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+
+-- echo # Read and change log_slow_slave_statements to ON on slave
+show variables like 'log_slow_slave_statements';
+set global log_slow_slave_statements=ON;
+show variables like 'log_slow_slave_statements';
+
+#-- echo # Make insert(2) on master
+connection master;
+INSERT INTO t VALUES (2);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(2) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+-- echo # Restart slave
+STOP SLAVE;
+-- source include/wait_for_slave_to_stop.inc
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+
+#-- echo # Make insert(3) on master
+connection master;
+INSERT INTO t VALUES (3);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync(3) slave thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+show variables like 'long_query_time';
+show global variables like 'long_query_time';
+show global variables like 'use_global_long_query_time';
+set global long_query_time=0;
+show variables like 'long_query_time';
+show global variables like 'long_query_time';
+show global variables like 'use_global_long_query_time';
+
+#-- echo # Make insert(4) on master
+connection master;
+INSERT INTO t VALUES (4);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(4) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+show variables like 'long_query_time';
+show global variables like 'long_query_time';
+show global variables like 'use_global_long_query_time';
+set global use_global_long_query_time=1;
+show variables like 'long_query_time';
+show global variables like 'long_query_time';
+show global variables like 'use_global_long_query_time';
+
+#-- echo # Make insert(5) on master
+connection master;
+let $MASTER_DATADIR= `select @@datadir`;
+INSERT INTO t VALUES (5);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(5) thread
+connection slave;
+let $SLAVE_DATADIR= `select @@datadir`;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+show variables like 'long_query_time';
+show global variables like 'long_query_time';
+show global variables like 'use_global_long_query_time';
+set global long_query_time=1;
+set global use_global_long_query_time=0;
+
+-- echo # Analyse master slow_query_log
+let $i=5;
+let $k=1;
+let $cmd=cat ./$MASTER_DATADIR/percona_log_slow_slave_statements-master.log | grep;
+while($i)
+{
+ let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l;
+ exec $current_cmd;
+ dec $i;
+ inc $k;
+}
+
+-- echo # Analyse slave slow_query_log
+let $i=5;
+let $k=1;
+let $cmd=cat $SLAVE_DATADIR/percona_log_slow_slave_statements-slave.log | grep;
+while($i)
+{
+ let $current_cmd = $cmd "INSERT INTO t VALUES ($k)" | wc -l;
+ exec $current_cmd;
+ dec $i;
+ inc $k;
+}
+set global log_slow_slave_statements=OFF;
+
+connection master;
+DROP TABLE t;
+
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(6) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-master.opt b/mysql-test/suite/percona/percona_log_slow_slave_statements-master.opt
new file mode 100644
index 00000000000..dd94fd90a57
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_log_slow_slave_statements-master.log --long-query-time=0 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements-slave.opt b/mysql-test/suite/percona/percona_log_slow_slave_statements-slave.opt
new file mode 100644
index 00000000000..e276b0bcfc8
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements-slave.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_log_slow_slave_statements-slave.log --long-query-time=0 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements.result b/mysql-test/suite/percona/percona_log_slow_slave_statements.result
new file mode 100644
index 00000000000..e3bf3e92c94
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements.result
@@ -0,0 +1,86 @@
+# Activate master-slave replication
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+# Make table t for test
+DROP TABLE IF EXISTS t;
+CREATE TABLE t(id INT);
+# Start slave replication
+START SLAVE;
+INSERT INTO t VALUES (1);
+# Read information about master binlog
+# Sync(1) slave thread
+# Read and change log_slow_slave_statements to ON on slave
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements OFF
+set global log_slow_slave_statements=ON;
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements ON
+INSERT INTO t VALUES (2);
+# Read information about master binlog
+# Sync slave(2) thread
+# Restart slave
+STOP SLAVE;
+START SLAVE;
+INSERT INTO t VALUES (3);
+# Read information about master binlog
+# Sync(3) slave thread
+# Read and change log_slow_slave_statements to OFF on slave
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements ON
+set global log_slow_slave_statements=OFF;
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements OFF
+INSERT INTO t VALUES (4);
+# Read information about master binlog
+# Sync slave(4) thread
+# Restart slave
+STOP SLAVE;
+START SLAVE;
+INSERT INTO t VALUES (5);
+# Read information about master binlog
+# Sync slave(5) thread
+# Read and change log_slow_slave_statements to ON on slave
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements OFF
+set global log_slow_slave_statements=ON;
+show variables like 'log_slow_slave_statements';
+Variable_name Value
+log_slow_slave_statements ON
+INSERT INTO t VALUES (6);
+# Read information about master binlog
+# Sync slave(6) thread
+# Restart slave
+STOP SLAVE;
+START SLAVE;
+INSERT INTO t VALUES (7);
+# Read information about master binlog
+# Sync slave(7) thread
+# Analyse master slow_query_log
+1
+1
+1
+1
+1
+1
+1
+# Analyse slave slow_query_log
+0
+0
+1
+0
+0
+0
+1
+set global log_slow_slave_statements=OFF;
+DROP TABLE t;
+# Read information about master binlog
+# Sync slave(8) thread
diff --git a/mysql-test/suite/percona/percona_log_slow_slave_statements.test b/mysql-test/suite/percona/percona_log_slow_slave_statements.test
new file mode 100644
index 00000000000..8c9c594e41c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_log_slow_slave_statements.test
@@ -0,0 +1,162 @@
+-- source include/not_windows.inc
+
+-- echo # Activate master-slave replication
+-- source include/master-slave.inc
+
+connection master;
+-- echo # Make table t for test
+-- disable_warnings
+DROP TABLE IF EXISTS t;
+-- enable_warnings
+CREATE TABLE t(id INT);
+
+
+-- echo # Start slave replication
+-- disable_warnings
+connection slave;
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+-- enable_warnings
+
+#-- echo # Make insert(1) on master
+connection master;
+INSERT INTO t VALUES (1);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync(1) slave thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+
+-- echo # Read and change log_slow_slave_statements to ON on slave
+show variables like 'log_slow_slave_statements';
+set global log_slow_slave_statements=ON;
+show variables like 'log_slow_slave_statements';
+
+#-- echo # Make insert(2) on master
+connection master;
+INSERT INTO t VALUES (2);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(2) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+-- echo # Restart slave
+STOP SLAVE;
+-- source include/wait_for_slave_to_stop.inc
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+
+#-- echo # Make insert(3) on master
+connection master;
+INSERT INTO t VALUES (3);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync(3) slave thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+-- echo # Read and change log_slow_slave_statements to OFF on slave
+show variables like 'log_slow_slave_statements';
+set global log_slow_slave_statements=OFF;
+show variables like 'log_slow_slave_statements';
+
+#-- echo # Make insert(4) on master
+connection master;
+INSERT INTO t VALUES (4);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(4) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+-- echo # Restart slave
+STOP SLAVE;
+-- source include/wait_for_slave_to_stop.inc
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+
+#-- echo # Make insert(5) on master
+connection master;
+INSERT INTO t VALUES (5);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(5) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+-- echo # Read and change log_slow_slave_statements to ON on slave
+show variables like 'log_slow_slave_statements';
+set global log_slow_slave_statements=ON;
+show variables like 'log_slow_slave_statements';
+
+#-- echo # Make insert(6) on master
+connection master;
+INSERT INTO t VALUES (6);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(6) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+-- echo # Restart slave
+STOP SLAVE;
+-- source include/wait_for_slave_to_stop.inc
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+
+#-- echo # Make insert(7) on master
+connection master;
+let $MASTER_DATADIR= `select @@datadir`;
+INSERT INTO t VALUES (7);
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(7) thread
+connection slave;
+let $SLAVE_DATADIR= `select @@datadir`;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
+
+-- echo # Analyse master slow_query_log
+let $i=7;
+let $k=1;
+let $cmd=cat $MASTER_DATADIR/percona_log_slow_slave_statements-master.log | grep -c;
+while($i)
+{
+ let $current_cmd = $cmd "INSERT INTO t VALUES ($k)";
+ exec $current_cmd;
+ dec $i;
+ inc $k;
+}
+
+-- echo # Analyse slave slow_query_log
+let $i=7;
+let $k=1;
+let $cmd=cat $SLAVE_DATADIR/percona_log_slow_slave_statements-slave.log | grep -c;
+while($i)
+{
+ let $current_cmd = $cmd "INSERT INTO t VALUES ($k)";
+ exec $current_cmd;
+ dec $i;
+ inc $k;
+}
+set global log_slow_slave_statements=OFF;
+
+connection master;
+DROP TABLE t;
+
+-- echo # Read information about master binlog
+let $binlog_file = query_get_value(SHOW MASTER STATUS,File,1);
+let $binlog_position = query_get_value(SHOW MASTER STATUS,Position,1);
+
+-- echo # Sync slave(8) thread
+connection slave;
+let $sync_result = `SELECT MASTER_POS_WAIT('$binlog_file',$binlog_position)`;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup b/mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup
new file mode 100644
index 00000000000..4b5b31e9239
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments.inc.backup
@@ -0,0 +1,88 @@
+--source include/percona_query_cache_with_comments_clear.inc
+let $query=/* with comment first */select * from t1;
+eval $query;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=# with comment first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=-- with comment first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=/* with comment first and "quote" */select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=# with comment first and "quote"
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=-- with comment first and "quote"
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=
+ /* with comment and whitespaces first */select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=
+ # with comment and whitespaces first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=
+ -- with comment and whitespaces first
+select * from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $internal=* internal comment *;
+
+let $query=select * /$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $internal=* internal comment with "quote" *;
+
+let $query=select * /$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/ from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+let $query=select */$internal/from t1;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 ;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 ;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+/* comment in the end */;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1
+/* comment in the end */
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 #comment in the end;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 #comment in the end
+;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 -- comment in the end;
+--source include/percona_query_cache_with_comments_eval.inc
+
+let $query=select * from t1 -- comment in the end
+;
+--source include/percona_query_cache_with_comments_eval.inc
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments.result b/mysql-test/suite/percona/percona_query_cache_with_comments.result
new file mode 100644
index 00000000000..169fdf80fef
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments.result
@@ -0,0 +1,866 @@
+set global query_cache_strip_comments=ON;
+set GLOBAL query_cache_size=1355776;
+drop table if exists t1;
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+/* with comment first */select * from t1;
+a
+1
+2
+3
+-----------------------------------------------------
+/* with comment first */select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 0
+/* with comment first */select * from t1;
+a
+1
+2
+3
+/* with comment first */select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+-----------------------------------------------------
+# with comment first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+# with comment first
+select * from t1;
+a
+1
+2
+3
+# with comment first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+-----------------------------------------------------
+-- with comment first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+-- with comment first
+select * from t1;
+a
+1
+2
+3
+-- with comment first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 6
+-----------------------------------------------------
+/* with comment first and "quote" */select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 6
+/* with comment first and "quote" */select * from t1;
+a
+1
+2
+3
+/* with comment first and "quote" */select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 8
+-----------------------------------------------------
+# with comment first and "quote"
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 8
+# with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+# with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 10
+-----------------------------------------------------
+-- with comment first and "quote"
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 10
+-- with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+-- with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 12
+-----------------------------------------------------
+/* with comment and whitespaces first */select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 12
+/* with comment and whitespaces first */select * from t1;
+a
+1
+2
+3
+/* with comment and whitespaces first */select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 14
+-----------------------------------------------------
+# with comment and whitespaces first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 14
+# with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+# with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 16
+-----------------------------------------------------
+-- with comment and whitespaces first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 16
+-- with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+-- with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 18
+-----------------------------------------------------
+select * /* internal comment */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 18
+select * /* internal comment */ from t1;
+a
+1
+2
+3
+select * /* internal comment */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 20
+-----------------------------------------------------
+select */* internal comment */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 20
+select */* internal comment */ from t1;
+a
+1
+2
+3
+select */* internal comment */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 22
+-----------------------------------------------------
+select */* internal comment */from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 22
+select */* internal comment */from t1;
+a
+1
+2
+3
+select */* internal comment */from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 24
+-----------------------------------------------------
+select * /* internal comment with "quote" */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 24
+select * /* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+select * /* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 26
+-----------------------------------------------------
+select */* internal comment with "quote" */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 26
+select */* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+select */* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 28
+-----------------------------------------------------
+select */* internal comment with "quote" */from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 28
+select */* internal comment with "quote" */from t1;
+a
+1
+2
+3
+select */* internal comment with "quote" */from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 30
+-----------------------------------------------------
+select * from t1
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 30
+select * from t1
+;
+a
+1
+2
+3
+select * from t1
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 32
+-----------------------------------------------------
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 32
+select * from t1 ;
+a
+1
+2
+3
+select * from t1 ;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 34
+-----------------------------------------------------
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 34
+select * from t1 ;
+a
+1
+2
+3
+select * from t1 ;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 36
+-----------------------------------------------------
+select * from t1
+/* comment in the end */
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 36
+select * from t1
+/* comment in the end */;
+a
+1
+2
+3
+select * from t1
+/* comment in the end */;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 38
+-----------------------------------------------------
+select * from t1
+/* *\/ */
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 38
+select * from t1
+/* *\/ */;
+a
+1
+2
+3
+select * from t1
+/* *\/ */;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 40
+-----------------------------------------------------
+select * from t1
+/* comment in the end */
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 40
+select * from t1
+/* comment in the end */
+;
+a
+1
+2
+3
+select * from t1
+/* comment in the end */
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 42
+-----------------------------------------------------
+select * from t1 #comment in the end
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 42
+select * from t1 #comment in the end;
+a
+1
+2
+3
+select * from t1 #comment in the end;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 44
+-----------------------------------------------------
+select * from t1 #comment in the end
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 44
+select * from t1 #comment in the end
+;
+a
+1
+2
+3
+select * from t1 #comment in the end
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 46
+-----------------------------------------------------
+select * from t1 -- comment in the end
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 46
+select * from t1 -- comment in the end;
+a
+1
+2
+3
+select * from t1 -- comment in the end;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 48
+-----------------------------------------------------
+select * from t1 -- comment in the end
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 48
+select * from t1 -- comment in the end
+;
+a
+1
+2
+3
+select * from t1 -- comment in the end
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 50
+-----------------------------------------------------
+select ' \' ' from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 50
+select ' \' ' from t1;
+'
+ '
+ '
+ '
+select ' \' ' from t1;
+'
+ '
+ '
+ '
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 2
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 2
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 51
+DROP TABLE t1;
+SET GLOBAL query_cache_size=default;
+set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments.test b/mysql-test/suite/percona/percona_query_cache_with_comments.test
new file mode 100644
index 00000000000..0190f54d104
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments.test
@@ -0,0 +1,4 @@
+set global query_cache_strip_comments=ON;
+-- source include/percona_query_cache_with_comments_begin.inc
+-- source include/percona_query_cache_with_comments.inc
+-- source include/percona_query_cache_with_comments_end.inc
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments_crash.result b/mysql-test/suite/percona/percona_query_cache_with_comments_crash.result
new file mode 100644
index 00000000000..32bd3645ec4
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments_crash.result
@@ -0,0 +1,21 @@
+set GLOBAL query_cache_size=1355776;
+drop table if exists t1;
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+( select * from t1 );
+a
+1
+2
+3
+/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */;
+/* only comment */;
+# only comment
+;
+-- only comment
+;
+DROP TABLE t1;
+SET GLOBAL query_cache_size= default;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments_crash.test b/mysql-test/suite/percona/percona_query_cache_with_comments_crash.test
new file mode 100644
index 00000000000..e125c75c3de
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments_crash.test
@@ -0,0 +1,22 @@
+-- source include/have_query_cache.inc
+set GLOBAL query_cache_size=1355776;
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+flush query cache; # This crashed in some versions
+flush query cache; # This crashed in some versions
+reset query cache;
+flush status;
+( select * from t1 );
+/*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */;
+/* only comment */;
+let query=# only comment
+;
+eval $query;
+let query=-- only comment
+;
+eval $query;
+DROP TABLE t1;
+SET GLOBAL query_cache_size= default;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments_disable.result b/mysql-test/suite/percona/percona_query_cache_with_comments_disable.result
new file mode 100644
index 00000000000..a13a44d9a1c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments_disable.result
@@ -0,0 +1,865 @@
+set GLOBAL query_cache_size=1355776;
+drop table if exists t1;
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+/* with comment first */select * from t1;
+a
+1
+2
+3
+-----------------------------------------------------
+/* with comment first */select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 0
+/* with comment first */select * from t1;
+a
+1
+2
+3
+/* with comment first */select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+-----------------------------------------------------
+# with comment first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+# with comment first
+select * from t1;
+a
+1
+2
+3
+# with comment first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 2
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 2
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+-----------------------------------------------------
+-- with comment first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 2
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 2
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+-- with comment first
+select * from t1;
+a
+1
+2
+3
+-- with comment first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 3
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 3
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+-----------------------------------------------------
+/* with comment first and "quote" */select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 3
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 3
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 2
+/* with comment first and "quote" */select * from t1;
+a
+1
+2
+3
+/* with comment first and "quote" */select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 4
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 4
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 3
+-----------------------------------------------------
+# with comment first and "quote"
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 4
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 4
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 3
+# with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+# with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 5
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 5
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 3
+-----------------------------------------------------
+-- with comment first and "quote"
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 5
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 5
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 3
+-- with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+-- with comment first and "quote"
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 6
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 6
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 3
+-----------------------------------------------------
+/* with comment and whitespaces first */select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 6
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 6
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 3
+/* with comment and whitespaces first */select * from t1;
+a
+1
+2
+3
+/* with comment and whitespaces first */select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 7
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 7
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+-----------------------------------------------------
+# with comment and whitespaces first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 7
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 7
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+# with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+# with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 8
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 8
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+-----------------------------------------------------
+-- with comment and whitespaces first
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 8
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 8
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+-- with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+-- with comment and whitespaces first
+select * from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 9
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 9
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+-----------------------------------------------------
+select * /* internal comment */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 9
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 9
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 4
+select * /* internal comment */ from t1;
+a
+1
+2
+3
+select * /* internal comment */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 10
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 10
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 5
+-----------------------------------------------------
+select */* internal comment */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 10
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 10
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 5
+select */* internal comment */ from t1;
+a
+1
+2
+3
+select */* internal comment */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 11
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 11
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 6
+-----------------------------------------------------
+select */* internal comment */from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 11
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 11
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 6
+select */* internal comment */from t1;
+a
+1
+2
+3
+select */* internal comment */from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 12
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 12
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 7
+-----------------------------------------------------
+select * /* internal comment with "quote" */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 12
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 12
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 7
+select * /* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+select * /* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 13
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 13
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 8
+-----------------------------------------------------
+select */* internal comment with "quote" */ from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 13
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 13
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 8
+select */* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+select */* internal comment with "quote" */ from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 14
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 14
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 9
+-----------------------------------------------------
+select */* internal comment with "quote" */from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 14
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 14
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 9
+select */* internal comment with "quote" */from t1;
+a
+1
+2
+3
+select */* internal comment with "quote" */from t1;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 15
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 15
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 10
+-----------------------------------------------------
+select * from t1
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 15
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 15
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 10
+select * from t1
+;
+a
+1
+2
+3
+select * from t1
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 16
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 16
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 11
+-----------------------------------------------------
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 16
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 16
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 11
+select * from t1 ;
+a
+1
+2
+3
+select * from t1 ;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 16
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 16
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 13
+-----------------------------------------------------
+select * from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 16
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 16
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 13
+select * from t1 ;
+a
+1
+2
+3
+select * from t1 ;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 16
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 16
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 15
+-----------------------------------------------------
+select * from t1
+/* comment in the end */
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 16
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 16
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 15
+select * from t1
+/* comment in the end */;
+a
+1
+2
+3
+select * from t1
+/* comment in the end */;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 17
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 17
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 16
+-----------------------------------------------------
+select * from t1
+/* *\/ */
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 17
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 17
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 16
+select * from t1
+/* *\/ */;
+a
+1
+2
+3
+select * from t1
+/* *\/ */;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 18
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 18
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 17
+-----------------------------------------------------
+select * from t1
+/* comment in the end */
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 18
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 18
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 17
+select * from t1
+/* comment in the end */
+;
+a
+1
+2
+3
+select * from t1
+/* comment in the end */
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 18
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 18
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 19
+-----------------------------------------------------
+select * from t1 #comment in the end
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 18
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 18
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 19
+select * from t1 #comment in the end;
+a
+1
+2
+3
+select * from t1 #comment in the end;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 19
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 19
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 20
+-----------------------------------------------------
+select * from t1 #comment in the end
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 19
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 19
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 20
+select * from t1 #comment in the end
+;
+a
+1
+2
+3
+select * from t1 #comment in the end
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 19
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 19
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 22
+-----------------------------------------------------
+select * from t1 -- comment in the end
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 19
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 19
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 22
+select * from t1 -- comment in the end;
+a
+1
+2
+3
+select * from t1 -- comment in the end;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 20
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 20
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 23
+-----------------------------------------------------
+select * from t1 -- comment in the end
+
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 20
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 20
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 23
+select * from t1 -- comment in the end
+;
+a
+1
+2
+3
+select * from t1 -- comment in the end
+;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 20
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 20
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 25
+-----------------------------------------------------
+select ' \' ' from t1
+-----------------------------------------------------
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 20
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 20
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 25
+select ' \' ' from t1;
+'
+ '
+ '
+ '
+select ' \' ' from t1;
+'
+ '
+ '
+ '
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 21
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 21
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 26
+DROP TABLE t1;
+SET GLOBAL query_cache_size=default;
+set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments_disable.test b/mysql-test/suite/percona/percona_query_cache_with_comments_disable.test
new file mode 100644
index 00000000000..ad59ac3566c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments_disable.test
@@ -0,0 +1,3 @@
+-- source include/percona_query_cache_with_comments_begin.inc
+-- source include/percona_query_cache_with_comments.inc
+-- source include/percona_query_cache_with_comments_end.inc
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.result b/mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.result
new file mode 100644
index 00000000000..9b28b7f0b62
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.result
@@ -0,0 +1,396 @@
+set GLOBAL query_cache_size=1355776;
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+drop table if exists t1;
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+set global query_cache_strip_comments=ON;
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 0
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 0
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 0
+prepare stmt from '/* with comment */ select * from t1';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 0
+execute stmt;
+a
+1
+2
+3
+execute stmt;
+a
+1
+2
+3
+execute stmt;
+a
+1
+2
+3
+execute stmt;
+a
+1
+2
+3
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 5
+prepare stmt from 'select * from t1';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 6
+prepare stmt from 'select * /*internal comment*/from t1';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 7
+prepare stmt from 'select * /*internal comment*/ from t1';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 8
+prepare stmt from 'select * from t1 /* at the end */';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 9
+prepare stmt from 'select * from t1 /* with "quote" */';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 10
+prepare stmt from 'select * from t1 /* with \'quote\' */';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 11
+prepare stmt from 'select * from t1 # 123
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 12
+prepare stmt from 'select * from t1 # 123 with "quote"
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 13
+prepare stmt from 'select * from t1 # 123 with \'quote\'
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 14
+prepare stmt from 'select * from t1
+# 123
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 15
+prepare stmt from '#456
+select * from t1
+# 123
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 16
+prepare stmt from 'select * from t1 -- 123
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 17
+prepare stmt from 'select * from t1
+-- 123
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 18
+prepare stmt from '-- comment in first
+select * from t1
+# 123
+';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 1
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 1
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 19
+prepare stmt from '(#456(
+select * from t1
+# 123(
+)';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 2
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 2
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 19
+prepare stmt from '/*test*/(-- comment in first(
+select * from t1
+-- 123 asdasd
+/* test */)';
+execute stmt;
+a
+1
+2
+3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 2
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 2
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 20
+prepare stmt from 'select "test",a from t1';
+execute stmt;
+test a
+test 1
+test 2
+test 3
+execute stmt;
+test a
+test 1
+test 2
+test 3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 3
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 3
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 21
+prepare stmt from 'select "test /* internal \'comment\' */",a from t1';
+execute stmt;
+test /* internal 'comment' */ a
+test /* internal 'comment' */ 1
+test /* internal 'comment' */ 2
+test /* internal 'comment' */ 3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 4
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 4
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 21
+prepare stmt from 'select "test #internal comment" ,a from t1';
+execute stmt;
+test #internal comment a
+test #internal comment 1
+test #internal comment 2
+test #internal comment 3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 5
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 5
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 21
+prepare stmt from 'select "test #internal comment" #external comment
+,a from t1';
+execute stmt;
+test #internal comment a
+test #internal comment 1
+test #internal comment 2
+test #internal comment 3
+show status like "Qcache_queries_in_cache";
+Variable_name Value
+Qcache_queries_in_cache 5
+show status like "Qcache_inserts";
+Variable_name Value
+Qcache_inserts 5
+show status like "Qcache_hits";
+Variable_name Value
+Qcache_hits 22
+DROP TABLE t1;
+SET GLOBAL query_cache_size= default;
+set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.test b/mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.test
new file mode 100644
index 00000000000..78cb7220aff
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_cache_with_comments_prepared_statements.test
@@ -0,0 +1,208 @@
+-- source include/have_query_cache.inc
+
+set GLOBAL query_cache_size=1355776;
+
+# Reset query cache variables.
+flush query cache; # This crashed in some versions
+flush query cache; # This crashed in some versions
+reset query cache;
+flush status;
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+#
+# First simple test
+#
+
+create table t1 (a int not null);
+insert into t1 values (1),(2),(3);
+
+set global query_cache_strip_comments=ON;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from '/* with comment */ select * from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+execute stmt;
+execute stmt;
+execute stmt;
+execute stmt;
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * /*internal comment*/from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * /*internal comment*/ from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 /* at the end */';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 /* with "quote" */';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 /* with \'quote\' */';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 # 123
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 # 123 with "quote"
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 # 123 with \'quote\'
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1
+# 123
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from '#456
+select * from t1
+# 123
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1 -- 123
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select * from t1
+-- 123
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from '-- comment in first
+select * from t1
+# 123
+';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from '(#456(
+select * from t1
+# 123(
+)';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from '/*test*/(-- comment in first(
+select * from t1
+-- 123 asdasd
+/* test */)';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select "test",a from t1';
+execute stmt;
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select "test /* internal \'comment\' */",a from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select "test #internal comment" ,a from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+prepare stmt from 'select "test #internal comment" #external comment
+,a from t1';
+execute stmt;
+
+show status like "Qcache_queries_in_cache";
+show status like "Qcache_inserts";
+show status like "Qcache_hits";
+
+DROP TABLE t1;
+SET GLOBAL query_cache_size= default;
+set global query_cache_strip_comments=OFF;
diff --git a/mysql-test/suite/percona/percona_query_response_time-replication.result b/mysql-test/suite/percona/percona_query_response_time-replication.result
new file mode 100644
index 00000000000..df5c73812df
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_response_time-replication.result
@@ -0,0 +1,60 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+DROP TABLE IF EXISTS t;
+CREATE TABLE t(id INT);
+SELECT * from t;
+id
+SELECT * from t;
+id
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
+Warnings:
+Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 10
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=ON;
+INSERT INTO t VALUES(0);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+0
+INSERT INTO t VALUES(1);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+0
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+2
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+3
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+FLUSH QUERY_RESPONSE_TIME;
+INSERT INTO t VALUES(0);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+0
+INSERT INTO t VALUES(1);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+0
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+2
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count)
+3
+DROP TABLE IF EXISTS t;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=OFF;
diff --git a/mysql-test/suite/percona/percona_query_response_time-replication.test b/mysql-test/suite/percona/percona_query_response_time-replication.test
new file mode 100644
index 00000000000..4f674c2fd19
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_response_time-replication.test
@@ -0,0 +1,52 @@
+--source include/master-slave.inc
+
+connection master;
+-- disable_warnings
+DROP TABLE IF EXISTS t;
+-- enable_warnings
+CREATE TABLE t(id INT);
+SELECT * from t;
+
+sync_slave_with_master;
+
+connection slave;
+SELECT * from t;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=ON;
+
+connection master;
+INSERT INTO t VALUES(0);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+INSERT INTO t VALUES(1);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+sync_slave_with_master;
+
+connection slave;
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+source include/percona_query_response_time_flush.inc;
+
+connection master;
+INSERT INTO t VALUES(0);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+INSERT INTO t VALUES(1);
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+sync_slave_with_master;
+
+connection slave;
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+SELECT SUM(INFORMATION_SCHEMA.QUERY_RESPONSE_TIME.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+
+connection master;
+DROP TABLE IF EXISTS t;
+sync_slave_with_master;
+connection slave;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=OFF;
diff --git a/mysql-test/suite/percona/percona_query_response_time-stored.result b/mysql-test/suite/percona/percona_query_response_time-stored.result
new file mode 100644
index 00000000000..386180c791a
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_response_time-stored.result
@@ -0,0 +1,310 @@
+CREATE FUNCTION test_f()
+RETURNS CHAR(30) DETERMINISTIC
+BEGIN
+DECLARE first VARCHAR(5);
+DECLARE second VARCHAR(5);
+DECLARE result VARCHAR(20);
+SELECT SLEEP(1.11) INTO first;
+SET first= 'Hello';
+SET second=', ';
+SET result= CONCAT(first,second);
+SET result= CONCAT(result,'world!');
+RETURN result;
+END/
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
+Warnings:
+Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+FLUSH QUERY_RESPONSE_TIME;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+44
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000003
+ 0.000007
+ 0.000015
+ 0.000030
+ 0.000061
+ 0.000122
+ 0.000244
+ 0.000488
+ 0.000976
+ 0.001953
+ 0.003906
+ 0.007812
+ 0.015625
+ 0.031250
+ 0.062500
+ 0.125000
+ 0.250000
+ 0.500000
+ 1.000000
+ 2.000000
+ 4.000000
+ 8.000000
+ 16.000000
+ 32.000000
+ 64.000000
+ 128.000000
+ 256.000000
+ 512.000000
+ 1024.000000
+ 2048.000000
+ 4096.000000
+ 8192.000000
+ 16384.000000
+ 32768.000000
+ 65536.000000
+ 131072.000000
+ 262144.000000
+ 524288.000000
+ 1048576.00000
+ 2097152.00000
+ 4194304.00000
+ 8388608.00000
+TOO LONG QUERY
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+test_f()
+Hello, world!
+SELECT test_f();
+test_f()
+Hello, world!
+SELECT test_f();
+test_f()
+Hello, world!
+SELECT test_f();
+test_f()
+Hello, world!
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 5 2 44
+4 5 2 44
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+44
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000003
+ 0.000007
+ 0.000015
+ 0.000030
+ 0.000061
+ 0.000122
+ 0.000244
+ 0.000488
+ 0.000976
+ 0.001953
+ 0.003906
+ 0.007812
+ 0.015625
+ 0.031250
+ 0.062500
+ 0.125000
+ 0.250000
+ 0.500000
+ 1.000000
+ 2.000000
+ 4.000000
+ 8.000000
+ 16.000000
+ 32.000000
+ 64.000000
+ 128.000000
+ 256.000000
+ 512.000000
+ 1024.000000
+ 2048.000000
+ 4096.000000
+ 8192.000000
+ 16384.000000
+ 32768.000000
+ 65536.000000
+ 131072.000000
+ 262144.000000
+ 524288.000000
+ 1048576.00000
+ 2097152.00000
+ 4194304.00000
+ 8388608.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 10
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+test_f()
+Hello, world!
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 2 2 14
+1 2 2 14
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+14
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000010
+ 0.000100
+ 0.001000
+ 0.010000
+ 0.100000
+ 1.000000
+ 10.000000
+ 100.000000
+ 1000.000000
+ 10000.000000
+ 100000.000000
+ 1000000.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 10
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 7
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+test_f()
+Hello, world!
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 2 2 17
+1 2 2 17
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+17
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000008
+ 0.000059
+ 0.000416
+ 0.002915
+ 0.020408
+ 0.142857
+ 1.000000
+ 7.000000
+ 49.000000
+ 343.000000
+ 2401.000000
+ 16807.000000
+ 117649.000000
+ 823543.000000
+ 5764801.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 7
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 156
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+test_f()
+Hello, world!
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 2 2 7
+1 2 2 7
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+7
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000041
+ 0.006410
+ 1.000000
+ 156.000000
+ 24336.000000
+ 3796416.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 156
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 1000
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+test_f()
+Hello, world!
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 2 2 6
+1 2 2 6
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+6
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.001000
+ 1.000000
+ 1000.000000
+ 1000000.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 1000
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
+Warnings:
+Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 1000
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
+DROP FUNCTION test_f;
diff --git a/mysql-test/suite/percona/percona_query_response_time-stored.test b/mysql-test/suite/percona/percona_query_response_time-stored.test
new file mode 100644
index 00000000000..f761dd7d01c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_response_time-stored.test
@@ -0,0 +1,87 @@
+source include/have_innodb.inc;
+
+delimiter /;
+CREATE FUNCTION test_f()
+RETURNS CHAR(30) DETERMINISTIC
+BEGIN
+ DECLARE first VARCHAR(5);
+ DECLARE second VARCHAR(5);
+ DECLARE result VARCHAR(20);
+ SELECT SLEEP(1.11) INTO first;
+ SET first= 'Hello';
+ SET second=', ';
+ SET result= CONCAT(first,second);
+ SET result= CONCAT(result,'world!');
+ RETURN result;
+END/
+delimiter ;/
+
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+source include/percona_query_response_time_show.inc;
+
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+SELECT test_f();
+SELECT test_f();
+SELECT test_f();
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT test_f();
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
+
+DROP FUNCTION test_f; \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_query_response_time.result b/mysql-test/suite/percona/percona_query_response_time.result
new file mode 100644
index 00000000000..3c12284a525
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_response_time.result
@@ -0,0 +1,564 @@
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
+Warnings:
+Warning 1292 Truncated incorrect query_response_time_range_base value: '1'
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+FLUSH QUERY_RESPONSE_TIME;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+44
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000003
+ 0.000007
+ 0.000015
+ 0.000030
+ 0.000061
+ 0.000122
+ 0.000244
+ 0.000488
+ 0.000976
+ 0.001953
+ 0.003906
+ 0.007812
+ 0.015625
+ 0.031250
+ 0.062500
+ 0.125000
+ 0.250000
+ 0.500000
+ 1.000000
+ 2.000000
+ 4.000000
+ 8.000000
+ 16.000000
+ 32.000000
+ 64.000000
+ 128.000000
+ 256.000000
+ 512.000000
+ 1024.000000
+ 2048.000000
+ 4096.000000
+ 8192.000000
+ 16384.000000
+ 32768.000000
+ 65536.000000
+ 131072.000000
+ 262144.000000
+ 524288.000000
+ 1048576.00000
+ 2097152.00000
+ 4194304.00000
+ 8388608.00000
+TOO LONG QUERY
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT SLEEP(0.31);
+SLEEP(0.31)
+0
+SELECT SLEEP(0.32);
+SLEEP(0.32)
+0
+SELECT SLEEP(0.33);
+SLEEP(0.33)
+0
+SELECT SLEEP(0.34);
+SLEEP(0.34)
+0
+SELECT SLEEP(0.35);
+SLEEP(0.35)
+0
+SELECT SLEEP(0.36);
+SLEEP(0.36)
+0
+SELECT SLEEP(0.37);
+SLEEP(0.37)
+0
+SELECT SLEEP(0.38);
+SLEEP(0.38)
+0
+SELECT SLEEP(0.39);
+SLEEP(0.39)
+0
+SELECT SLEEP(0.40);
+SLEEP(0.40)
+0
+SELECT SLEEP(1.1);
+SLEEP(1.1)
+0
+SELECT SLEEP(1.2);
+SLEEP(1.2)
+0
+SELECT SLEEP(1.3);
+SLEEP(1.3)
+0
+SELECT SLEEP(1.5);
+SLEEP(1.5)
+0
+SELECT SLEEP(1.4);
+SLEEP(1.4)
+0
+SELECT SLEEP(0.5);
+SLEEP(0.5)
+0
+SELECT SLEEP(2.1);
+SLEEP(2.1)
+0
+SELECT SLEEP(2.3);
+SLEEP(2.3)
+0
+SELECT SLEEP(2.5);
+SLEEP(2.5)
+0
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 20 5 44
+10 20 5 44
+1 20 5 44
+5 20 5 44
+3 20 5 44
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+44
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000003
+ 0.000007
+ 0.000015
+ 0.000030
+ 0.000061
+ 0.000122
+ 0.000244
+ 0.000488
+ 0.000976
+ 0.001953
+ 0.003906
+ 0.007812
+ 0.015625
+ 0.031250
+ 0.062500
+ 0.125000
+ 0.250000
+ 0.500000
+ 1.000000
+ 2.000000
+ 4.000000
+ 8.000000
+ 16.000000
+ 32.000000
+ 64.000000
+ 128.000000
+ 256.000000
+ 512.000000
+ 1024.000000
+ 2048.000000
+ 4096.000000
+ 8192.000000
+ 16384.000000
+ 32768.000000
+ 65536.000000
+ 131072.000000
+ 262144.000000
+ 524288.000000
+ 1048576.00000
+ 2097152.00000
+ 4194304.00000
+ 8388608.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 2
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 10
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT SLEEP(0.31);
+SLEEP(0.31)
+0
+SELECT SLEEP(0.32);
+SLEEP(0.32)
+0
+SELECT SLEEP(0.33);
+SLEEP(0.33)
+0
+SELECT SLEEP(0.34);
+SLEEP(0.34)
+0
+SELECT SLEEP(0.35);
+SLEEP(0.35)
+0
+SELECT SLEEP(0.36);
+SLEEP(0.36)
+0
+SELECT SLEEP(0.37);
+SLEEP(0.37)
+0
+SELECT SLEEP(0.38);
+SLEEP(0.38)
+0
+SELECT SLEEP(0.39);
+SLEEP(0.39)
+0
+SELECT SLEEP(0.40);
+SLEEP(0.40)
+0
+SELECT SLEEP(1.1);
+SLEEP(1.1)
+0
+SELECT SLEEP(1.2);
+SLEEP(1.2)
+0
+SELECT SLEEP(1.3);
+SLEEP(1.3)
+0
+SELECT SLEEP(1.5);
+SLEEP(1.5)
+0
+SELECT SLEEP(1.4);
+SLEEP(1.4)
+0
+SELECT SLEEP(0.5);
+SLEEP(0.5)
+0
+SELECT SLEEP(2.1);
+SLEEP(2.1)
+0
+SELECT SLEEP(2.3);
+SLEEP(2.3)
+0
+SELECT SLEEP(2.5);
+SLEEP(2.5)
+0
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 20 3 14
+11 20 3 14
+8 20 3 14
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+14
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000010
+ 0.000100
+ 0.001000
+ 0.010000
+ 0.100000
+ 1.000000
+ 10.000000
+ 100.000000
+ 1000.000000
+ 10000.000000
+ 100000.000000
+ 1000000.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 10
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 7
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT SLEEP(0.31);
+SLEEP(0.31)
+0
+SELECT SLEEP(0.32);
+SLEEP(0.32)
+0
+SELECT SLEEP(0.33);
+SLEEP(0.33)
+0
+SELECT SLEEP(0.34);
+SLEEP(0.34)
+0
+SELECT SLEEP(0.35);
+SLEEP(0.35)
+0
+SELECT SLEEP(0.36);
+SLEEP(0.36)
+0
+SELECT SLEEP(0.37);
+SLEEP(0.37)
+0
+SELECT SLEEP(0.38);
+SLEEP(0.38)
+0
+SELECT SLEEP(0.39);
+SLEEP(0.39)
+0
+SELECT SLEEP(0.40);
+SLEEP(0.40)
+0
+SELECT SLEEP(1.1);
+SLEEP(1.1)
+0
+SELECT SLEEP(1.2);
+SLEEP(1.2)
+0
+SELECT SLEEP(1.3);
+SLEEP(1.3)
+0
+SELECT SLEEP(1.5);
+SLEEP(1.5)
+0
+SELECT SLEEP(1.4);
+SLEEP(1.4)
+0
+SELECT SLEEP(0.5);
+SLEEP(0.5)
+0
+SELECT SLEEP(2.1);
+SLEEP(2.1)
+0
+SELECT SLEEP(2.3);
+SLEEP(2.3)
+0
+SELECT SLEEP(2.5);
+SLEEP(2.5)
+0
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 20 3 17
+11 20 3 17
+8 20 3 17
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+17
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.000008
+ 0.000059
+ 0.000416
+ 0.002915
+ 0.020408
+ 0.142857
+ 1.000000
+ 7.000000
+ 49.000000
+ 343.000000
+ 2401.000000
+ 16807.000000
+ 117649.000000
+ 823543.000000
+ 5764801.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 7
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 156
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT SLEEP(0.31);
+SLEEP(0.31)
+0
+SELECT SLEEP(0.32);
+SLEEP(0.32)
+0
+SELECT SLEEP(0.33);
+SLEEP(0.33)
+0
+SELECT SLEEP(0.34);
+SLEEP(0.34)
+0
+SELECT SLEEP(0.35);
+SLEEP(0.35)
+0
+SELECT SLEEP(0.36);
+SLEEP(0.36)
+0
+SELECT SLEEP(0.37);
+SLEEP(0.37)
+0
+SELECT SLEEP(0.38);
+SLEEP(0.38)
+0
+SELECT SLEEP(0.39);
+SLEEP(0.39)
+0
+SELECT SLEEP(0.40);
+SLEEP(0.40)
+0
+SELECT SLEEP(1.1);
+SLEEP(1.1)
+0
+SELECT SLEEP(1.2);
+SLEEP(1.2)
+0
+SELECT SLEEP(1.3);
+SLEEP(1.3)
+0
+SELECT SLEEP(1.5);
+SLEEP(1.5)
+0
+SELECT SLEEP(1.4);
+SLEEP(1.4)
+0
+SELECT SLEEP(0.5);
+SLEEP(0.5)
+0
+SELECT SLEEP(2.1);
+SLEEP(2.1)
+0
+SELECT SLEEP(2.3);
+SLEEP(2.3)
+0
+SELECT SLEEP(2.5);
+SLEEP(2.5)
+0
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 20 3 7
+11 20 3 7
+8 20 3 7
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+7
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000041
+ 0.006410
+ 1.000000
+ 156.000000
+ 24336.000000
+ 3796416.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 156
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 1000
+FLUSH QUERY_RESPONSE_TIME;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+SELECT SLEEP(0.31);
+SLEEP(0.31)
+0
+SELECT SLEEP(0.32);
+SLEEP(0.32)
+0
+SELECT SLEEP(0.33);
+SLEEP(0.33)
+0
+SELECT SLEEP(0.34);
+SLEEP(0.34)
+0
+SELECT SLEEP(0.35);
+SLEEP(0.35)
+0
+SELECT SLEEP(0.36);
+SLEEP(0.36)
+0
+SELECT SLEEP(0.37);
+SLEEP(0.37)
+0
+SELECT SLEEP(0.38);
+SLEEP(0.38)
+0
+SELECT SLEEP(0.39);
+SLEEP(0.39)
+0
+SELECT SLEEP(0.40);
+SLEEP(0.40)
+0
+SELECT SLEEP(1.1);
+SLEEP(1.1)
+0
+SELECT SLEEP(1.2);
+SLEEP(1.2)
+0
+SELECT SLEEP(1.3);
+SLEEP(1.3)
+0
+SELECT SLEEP(1.5);
+SLEEP(1.5)
+0
+SELECT SLEEP(1.4);
+SLEEP(1.4)
+0
+SELECT SLEEP(0.5);
+SLEEP(0.5)
+0
+SELECT SLEEP(2.1);
+SLEEP(2.1)
+0
+SELECT SLEEP(2.3);
+SLEEP(2.3)
+0
+SELECT SLEEP(2.5);
+SLEEP(2.5)
+0
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SELECT c.count,
+(SELECT SUM(a.count) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as a WHERE a.count != 0) as query_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as b WHERE b.count != 0) as not_zero_region_count,
+(SELECT COUNT(*) FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME) as region_count
+FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME as c WHERE c.count > 0;
+count query_count not_zero_region_count region_count
+1 20 3 6
+11 20 3 6
+8 20 3 6
+SELECT COUNT(*) as region_count FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+region_count
+6
+SELECT time FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+time
+ 0.000001
+ 0.001000
+ 1.000000
+ 1000.000000
+ 1000000.00000
+TOO LONG QUERY
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 1000
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
+Warnings:
+Warning 1292 Truncated incorrect query_response_time_range_base value: '1001'
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+Variable_name Value
+query_response_time_range_base 1000
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
diff --git a/mysql-test/suite/percona/percona_query_response_time.test b/mysql-test/suite/percona/percona_query_response_time.test
new file mode 100644
index 00000000000..a58cafc8d01
--- /dev/null
+++ b/mysql-test/suite/percona/percona_query_response_time.test
@@ -0,0 +1,65 @@
+source include/have_innodb.inc;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 2;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+source include/percona_query_response_time_show.inc;
+
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+source include/percona_query_response_time_sleep.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 10;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+source include/percona_query_response_time_sleep.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 7;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+source include/percona_query_response_time_sleep.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 156;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+source include/percona_query_response_time_sleep.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1000;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+source include/percona_query_response_time_flush.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=1;
+source include/percona_query_response_time_sleep.inc;
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+
+source include/percona_query_response_time_show.inc;
+
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE = 1001;
+SHOW GLOBAL VARIABLES where Variable_name like 'QUERY_RESPONSE_TIME_RANGE_BASE';
+
+SET GLOBAL ENABLE_QUERY_RESPONSE_TIME_STATS=0;
+SET GLOBAL QUERY_RESPONSE_TIME_RANGE_BASE =10;
diff --git a/mysql-test/suite/percona/percona_server_variables.result b/mysql-test/suite/percona/percona_server_variables.result
new file mode 100644
index 00000000000..25f961b201f
--- /dev/null
+++ b/mysql-test/suite/percona/percona_server_variables.result
@@ -0,0 +1,340 @@
+show variables;
+Variable_name Value
+auto_increment_increment Value
+auto_increment_offset Value
+autocommit Value
+automatic_sp_privileges Value
+back_log Value
+basedir Value
+big_tables Value
+binlog_cache_size Value
+binlog_direct_non_transactional_updates Value
+binlog_format Value
+bulk_insert_buffer_size Value
+character_set_client Value
+character_set_connection Value
+character_set_database Value
+character_set_filesystem Value
+character_set_results Value
+character_set_server Value
+character_set_system Value
+character_sets_dir Value
+collation_connection Value
+collation_database Value
+collation_server Value
+completion_type Value
+concurrent_insert Value
+connect_timeout Value
+datadir Value
+date_format Value
+datetime_format Value
+debug Value
+debug_sync Value
+default_week_format Value
+delay_key_write Value
+delayed_insert_limit Value
+delayed_insert_timeout Value
+delayed_queue_size Value
+div_precision_increment Value
+enable_query_response_time_stats Value
+engine_condition_pushdown Value
+error_count Value
+event_scheduler Value
+expire_logs_days Value
+fast_index_creation Value
+flush Value
+flush_time Value
+foreign_key_checks Value
+ft_boolean_syntax Value
+ft_max_word_len Value
+ft_min_word_len Value
+ft_query_expansion_limit Value
+ft_stopword_file Value
+general_log Value
+general_log_file Value
+group_concat_max_len Value
+have_community_features Value
+have_compress Value
+have_crypt Value
+have_csv Value
+have_dynamic_loading Value
+have_geometry Value
+have_innodb Value
+have_ndbcluster Value
+have_openssl Value
+have_partitioning Value
+have_query_cache Value
+have_rtree_keys Value
+have_ssl Value
+have_symlink Value
+hostname Value
+identity Value
+ignore_builtin_innodb Value
+init_connect Value
+init_file Value
+init_slave Value
+innodb_adaptive_checkpoint Value
+innodb_adaptive_flushing Value
+innodb_adaptive_hash_index Value
+innodb_additional_mem_pool_size Value
+innodb_autoextend_increment Value
+innodb_autoinc_lock_mode Value
+innodb_buffer_pool_shm_key Value
+innodb_buffer_pool_size Value
+innodb_change_buffering Value
+innodb_checkpoint_age_target Value
+innodb_checksums Value
+innodb_commit_concurrency Value
+innodb_concurrency_tickets Value
+innodb_data_file_path Value
+innodb_data_home_dir Value
+innodb_dict_size_limit Value
+innodb_doublewrite Value
+innodb_doublewrite_file Value
+innodb_enable_unsafe_group_commit Value
+innodb_expand_import Value
+innodb_extra_rsegments Value
+innodb_extra_undoslots Value
+innodb_fast_checksum Value
+innodb_fast_recovery Value
+innodb_fast_shutdown Value
+innodb_file_format Value
+innodb_file_format_check Value
+innodb_file_per_table Value
+innodb_flush_log_at_trx_commit Value
+innodb_flush_log_at_trx_commit_session Value
+innodb_flush_method Value
+innodb_flush_neighbor_pages Value
+innodb_force_recovery Value
+innodb_ibuf_accel_rate Value
+innodb_ibuf_active_contract Value
+innodb_ibuf_max_size Value
+innodb_io_capacity Value
+innodb_lock_wait_timeout Value
+innodb_locks_unsafe_for_binlog Value
+innodb_log_buffer_size Value
+innodb_log_file_size Value
+innodb_log_files_in_group Value
+innodb_log_group_home_dir Value
+innodb_max_dirty_pages_pct Value
+innodb_max_purge_lag Value
+innodb_mirrored_log_groups Value
+innodb_old_blocks_pct Value
+innodb_old_blocks_time Value
+innodb_open_files Value
+innodb_overwrite_relay_log_info Value
+innodb_page_size Value
+innodb_pass_corrupt_table Value
+innodb_read_ahead Value
+innodb_read_ahead_threshold Value
+innodb_read_io_threads Value
+innodb_recovery_stats Value
+innodb_replication_delay Value
+innodb_rollback_on_timeout Value
+innodb_show_locks_held Value
+innodb_show_verbose_locks Value
+innodb_spin_wait_delay Value
+innodb_stats_auto_update Value
+innodb_stats_method Value
+innodb_stats_on_metadata Value
+innodb_stats_sample_pages Value
+innodb_stats_update_need_lock Value
+innodb_strict_mode Value
+innodb_support_xa Value
+innodb_sync_spin_loops Value
+innodb_table_locks Value
+innodb_thread_concurrency Value
+innodb_thread_concurrency_timer_based Value
+innodb_thread_sleep_delay Value
+innodb_use_purge_thread Value
+innodb_use_sys_malloc Value
+innodb_use_sys_stats_table Value
+innodb_version Value
+innodb_write_io_threads Value
+insert_id Value
+interactive_timeout Value
+join_buffer_size Value
+keep_files_on_create Value
+key_buffer_size Value
+key_cache_age_threshold Value
+key_cache_block_size Value
+key_cache_division_limit Value
+language Value
+large_files_support Value
+large_page_size Value
+large_pages Value
+last_insert_id Value
+lc_time_names Value
+license Value
+local_infile Value
+locked_in_memory Value
+log Value
+log_bin Value
+log_bin_trust_function_creators Value
+log_bin_trust_routine_creators Value
+log_error Value
+log_output Value
+log_queries_not_using_indexes Value
+log_slave_updates Value
+log_slow_filter Value
+log_slow_queries Value
+log_slow_rate_limit Value
+log_slow_slave_statements Value
+log_slow_sp_statements Value
+log_slow_timestamp_every Value
+log_slow_verbosity Value
+log_warnings Value
+long_query_time Value
+low_priority_updates Value
+lower_case_file_system Value
+lower_case_table_names Value
+max_allowed_packet Value
+max_binlog_cache_size Value
+max_binlog_size Value
+max_connect_errors Value
+max_connections Value
+max_delayed_threads Value
+max_error_count Value
+max_heap_table_size Value
+max_insert_delayed_threads Value
+max_join_size Value
+max_length_for_sort_data Value
+max_prepared_stmt_count Value
+max_relay_log_size Value
+max_seeks_for_key Value
+max_sort_length Value
+max_sp_recursion_depth Value
+max_tmp_tables Value
+max_user_connections Value
+max_write_lock_count Value
+min_examined_row_limit Value
+multi_range_count Value
+myisam_data_pointer_size Value
+myisam_max_sort_file_size Value
+myisam_mmap_size Value
+myisam_recover_options Value
+myisam_repair_threads Value
+myisam_sort_buffer_size Value
+myisam_stats_method Value
+myisam_use_mmap Value
+net_buffer_length Value
+net_read_timeout Value
+net_retry_count Value
+net_write_timeout Value
+new Value
+old Value
+old_alter_table Value
+old_passwords Value
+open_files_limit Value
+optimizer_fix Value
+optimizer_prune_level Value
+optimizer_search_depth Value
+optimizer_switch Value
+pid_file Value
+plugin_dir Value
+port Value
+preload_buffer_size Value
+profiling Value
+profiling_history_size Value
+profiling_server Value
+profiling_use_getrusage Value
+protocol_version Value
+pseudo_thread_id Value
+query_alloc_block_size Value
+query_cache_limit Value
+query_cache_min_res_unit Value
+query_cache_size Value
+query_cache_strip_comments Value
+query_cache_type Value
+query_cache_wlock_invalidate Value
+query_prealloc_size Value
+query_response_time_range_base Value
+rand_seed1 Value
+rand_seed2 Value
+range_alloc_block_size Value
+read_buffer_size Value
+read_only Value
+read_rnd_buffer_size Value
+relay_log Value
+relay_log_index Value
+relay_log_info_file Value
+relay_log_purge Value
+relay_log_space_limit Value
+report_host Value
+report_password Value
+report_port Value
+report_user Value
+rpl_recovery_rank Value
+secure_auth Value
+secure_file_priv Value
+server_id Value
+skip_external_locking Value
+skip_name_resolve Value
+skip_networking Value
+skip_show_database Value
+slave_compressed_protocol Value
+slave_exec_mode Value
+slave_load_tmpdir Value
+slave_net_timeout Value
+slave_skip_errors Value
+slave_transaction_retries Value
+slow_launch_time Value
+slow_query_log Value
+slow_query_log_file Value
+slow_query_log_microseconds_timestamp Value
+socket Value
+sort_buffer_size Value
+sql_auto_is_null Value
+sql_big_selects Value
+sql_big_tables Value
+sql_buffer_result Value
+sql_log_bin Value
+sql_log_off Value
+sql_log_update Value
+sql_low_priority_updates Value
+sql_max_join_size Value
+sql_mode Value
+sql_notes Value
+sql_quote_show_create Value
+sql_safe_updates Value
+sql_select_limit Value
+sql_slave_skip_counter Value
+sql_warnings Value
+ssl_ca Value
+ssl_capath Value
+ssl_cert Value
+ssl_cipher Value
+ssl_key Value
+storage_engine Value
+suppress_log_warning_1592 Value
+sync_binlog Value
+sync_frm Value
+system_time_zone Value
+table_definition_cache Value
+table_lock_wait_timeout Value
+table_open_cache Value
+table_type Value
+thread_cache_size Value
+thread_handling Value
+thread_stack Value
+thread_statistics Value
+time_format Value
+time_zone Value
+timed_mutexes Value
+timestamp Value
+tmp_table_size Value
+tmpdir Value
+transaction_alloc_block_size Value
+transaction_prealloc_size Value
+tx_isolation Value
+unique_checks Value
+updatable_views_with_limit Value
+use_global_log_slow_control Value
+use_global_long_query_time Value
+userstat_running Value
+version Value
+version_comment Value
+version_compile_machine Value
+version_compile_os Value
+wait_timeout Value
+warning_count Value
diff --git a/mysql-test/suite/percona/percona_server_variables.test b/mysql-test/suite/percona/percona_server_variables.test
new file mode 100644
index 00000000000..232cbb15e25
--- /dev/null
+++ b/mysql-test/suite/percona/percona_server_variables.test
@@ -0,0 +1,7 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+
+#check the list of variable names
+--replace_column 2 Value
+show variables;
+
diff --git a/mysql-test/suite/percona/percona_show_temp_tables.result b/mysql-test/suite/percona/percona_show_temp_tables.result
new file mode 100644
index 00000000000..cbcb0331896
--- /dev/null
+++ b/mysql-test/suite/percona/percona_show_temp_tables.result
@@ -0,0 +1,58 @@
+drop table if exists t1,t2,t3;
+drop database if exists showtemp;
+create database if not exists showtemp;
+use test;
+create temporary table t1(id int);
+create temporary table t2(id int);
+create temporary table showtemp.t3(id int);
+insert into t1 values(10),(20),(30),(40);
+insert into showtemp.t3 values(999);
+show temporary tables;
+Temp_tables_in_test
+t2
+t1
+show temporary tables from test;
+Temp_tables_in_test
+t2
+t1
+show temporary tables in showtemp;
+Temp_tables_in_showtemp
+t3
+select table_schema, table_name, engine, table_rows from Information_schema.temporary_tables;
+table_schema table_name engine table_rows
+showtemp t3 MyISAM 1
+test t2 MyISAM 0
+test t1 MyISAM 4
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
+table_schema table_name engine table_rows
+showtemp t3 MyISAM 1
+test t2 MyISAM 0
+test t1 MyISAM 4
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='showtemp';
+table_schema table_name engine table_rows
+showtemp t3 MyISAM 1
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='temp';
+table_schema table_name engine table_rows
+drop table if exists showtemp.t2;
+create temporary table t1(id int);
+create temporary table showtemp.t2(id int);
+show temporary tables;
+Temp_tables_in_test
+t1
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
+table_schema table_name engine table_rows
+showtemp t2 MyISAM 0
+test t1 MyISAM 0
+showtemp t3 MyISAM 1
+test t2 MyISAM 0
+test t1 MyISAM 4
+drop table showtemp.t2;
+drop table t1;
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
+table_schema table_name engine table_rows
+showtemp t3 MyISAM 1
+test t2 MyISAM 0
+test t1 MyISAM 4
+drop table t1, t2;
+drop table showtemp.t3;
+drop database showtemp;
diff --git a/mysql-test/suite/percona/percona_show_temp_tables.test b/mysql-test/suite/percona/percona_show_temp_tables.test
new file mode 100644
index 00000000000..8837df199c5
--- /dev/null
+++ b/mysql-test/suite/percona/percona_show_temp_tables.test
@@ -0,0 +1,65 @@
+# Uses GRANT commands that usually disabled in embedded server
+-- source include/not_embedded.inc
+
+# Save the initial number of concurrent sessions
+--source include/count_sessions.inc
+
+#
+# Test of SHOW [GLOBAL] TEMPORARY TABLES [FROM/IN] DB and
+# Information_schema.temporary_tables and global_temporary_tables
+#
+
+connect(stcon1,localhost,root,,test);
+connect(stcon2,localhost,root,,test);
+
+connection stcon1;
+
+--disable_warnings
+drop table if exists t1,t2,t3;
+drop database if exists showtemp;
+create database if not exists showtemp;
+--enable_warnings
+
+use test;
+create temporary table t1(id int);
+create temporary table t2(id int);
+create temporary table showtemp.t3(id int);
+insert into t1 values(10),(20),(30),(40);
+insert into showtemp.t3 values(999);
+
+show temporary tables;
+# "Session" is not same value always. mysql-test cannot test it always.
+#show global temporary tables;
+show temporary tables from test;
+show temporary tables in showtemp;
+select table_schema, table_name, engine, table_rows from Information_schema.temporary_tables;
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='showtemp';
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables where table_schema='temp';
+
+connection stcon2;
+
+--disable_warnings
+drop table if exists showtemp.t2;
+--enable_warnings
+create temporary table t1(id int);
+create temporary table showtemp.t2(id int);
+show temporary tables;
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
+drop table showtemp.t2;
+drop table t1;
+
+disconnect stcon2;
+
+connection stcon1;
+select table_schema, table_name, engine, table_rows from Information_schema.global_temporary_tables;
+
+drop table t1, t2;
+drop table showtemp.t3;
+drop database showtemp;
+
+connection default;
+disconnect stcon1;
+
+# Wait till all disconnects are completed
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/suite/percona/percona_slave_innodb_stats-master.opt b/mysql-test/suite/percona/percona_slave_innodb_stats-master.opt
new file mode 100644
index 00000000000..286a9c4484d
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slave_innodb_stats-master.opt
@@ -0,0 +1 @@
+--long_query_time=0 --log_slow_verbosity=innodb --log_slow_slave_statements
diff --git a/mysql-test/suite/percona/percona_slave_innodb_stats-slave.opt b/mysql-test/suite/percona/percona_slave_innodb_stats-slave.opt
new file mode 100644
index 00000000000..286a9c4484d
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slave_innodb_stats-slave.opt
@@ -0,0 +1 @@
+--long_query_time=0 --log_slow_verbosity=innodb --log_slow_slave_statements
diff --git a/mysql-test/suite/percona/percona_slave_innodb_stats.result b/mysql-test/suite/percona/percona_slave_innodb_stats.result
new file mode 100644
index 00000000000..c2406bdfd85
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slave_innodb_stats.result
@@ -0,0 +1,21 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+DROP TABLE IF EXISTS t;
+CREATE TABLE t(id INT,data CHAR(30)) ENGINE=InnoDB;
+INSERT INTO t VALUES
+(1,"aaaaabbbbbcccccdddddeeeeefffff"),
+(2,"aaaaabbbbbcccccdddddeeeeefffff"),
+(3,"aaaaabbbbbcccccdddddeeeeefffff"),
+(4,"aaaaabbbbbcccccdddddeeeeefffff"),
+(5,"aaaaabbbbbcccccdddddeeeeefffff");
+INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
+INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
+STOP SLAVE;
+START SLAVE;
+INSERT INTO t SELECT t.id,t.data from t;
+DROP TABLE IF EXISTS t;
+4
diff --git a/mysql-test/suite/percona/percona_slave_innodb_stats.test b/mysql-test/suite/percona/percona_slave_innodb_stats.test
new file mode 100644
index 00000000000..defcd1fc406
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slave_innodb_stats.test
@@ -0,0 +1,43 @@
+source include/have_innodb.inc;
+source include/master-slave.inc;
+
+connection master;
+-- disable_warnings
+DROP TABLE IF EXISTS t;
+-- enable_warnings
+CREATE TABLE t(id INT,data CHAR(30)) ENGINE=InnoDB;
+INSERT INTO t VALUES
+(1,"aaaaabbbbbcccccdddddeeeeefffff"),
+(2,"aaaaabbbbbcccccdddddeeeeefffff"),
+(3,"aaaaabbbbbcccccdddddeeeeefffff"),
+(4,"aaaaabbbbbcccccdddddeeeeefffff"),
+(5,"aaaaabbbbbcccccdddddeeeeefffff");
+INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
+INSERT INTO t SELECT t2.id,t2.data from t as t1, t as t2;
+sync_slave_with_master;
+
+connection slave;
+STOP SLAVE;
+-- source include/wait_for_slave_to_stop.inc
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+wait
+EOF
+--shutdown_server 10
+--source include/wait_until_disconnected.inc
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
+restart
+EOF
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+START SLAVE;
+-- source include/wait_for_slave_to_start.inc
+
+connection master;
+INSERT INTO t SELECT t.id,t.data from t;
+sync_slave_with_master;
+
+connection master;
+DROP TABLE IF EXISTS t;
+sync_slave_with_master;
+
+exec cat var/mysqld.2/mysqld-slow.log | grep InnoDB_IO_r_ops | wc -l;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow-master.opt b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow-master.opt
new file mode 100644
index 00000000000..91dd41305cd
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-control_global_slow.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result
new file mode 100644
index 00000000000..bc6ce100b35
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.result
@@ -0,0 +1,12 @@
+SELECT sleep(2);
+sleep(2)
+0
+set global log_slow_verbosity=innodb;
+set global use_global_log_slow_control="log_slow_verbosity,long_query_time";
+SELECT sleep(2);
+sleep(2)
+0
+set global use_global_log_slow_control=none;
+set global log_slow_verbosity=microtime;
+cat MYSQLD_DATADIR/percona_slow_query_log-control_global_slow.log | grep -c "No InnoDB statistics available for this query"
+1
diff --git a/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test
new file mode 100644
index 00000000000..1c3dc937937
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-control_global_slow.test
@@ -0,0 +1,14 @@
+--source include/not_windows.inc
+
+source include/have_innodb.inc;
+SELECT sleep(2);
+set global log_slow_verbosity=innodb;
+set global use_global_log_slow_control="log_slow_verbosity,long_query_time";
+SELECT sleep(2);
+set global use_global_log_slow_control=none;
+set global log_slow_verbosity=microtime;
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-control_global_slow.log | grep -c "No InnoDB statistics available for this query";
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo '$cmd';
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter-master.opt b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter-master.opt
new file mode 100644
index 00000000000..cb93f7abf05
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-log_slow_filter.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result
new file mode 100644
index 00000000000..9c8f69745a7
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.result
@@ -0,0 +1,25 @@
+SET GLOBAL SLOW_QUERY_LOG=OFF;
+drop table if exists t;
+# Create test table
+create table t(id INT PRIMARY KEY) engine=InnoDB;
+# Insert two rows to test table
+insert into t values(1);
+insert into t values(2);
+insert into t values(3);
+SET GLOBAL SLOW_QUERY_LOG=ON;
+SELECT sleep(2);
+sleep(2)
+0
+set log_slow_filter=full_join;
+SELECT sleep(2) union select t2.id from t as t1,t as t2;
+sleep(2)
+0
+1
+2
+3
+SELECT sleep(2);
+sleep(2)
+0
+drop table if exists t;
+cat MYSQLD_DATADIR/percona_slow_query_log-log_slow_filter.log | grep -c Query_time
+2
diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test
new file mode 100644
index 00000000000..44646de530a
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_filter.test
@@ -0,0 +1,35 @@
+-- source include/not_windows.inc
+
+source include/have_innodb.inc;
+
+SET GLOBAL SLOW_QUERY_LOG=OFF;
+
+--disable_warnings
+drop table if exists t;
+--enable_warnings
+
+--echo # Create test table
+create table t(id INT PRIMARY KEY) engine=InnoDB;
+--echo # Insert two rows to test table
+insert into t values(1);
+insert into t values(2);
+insert into t values(3);
+
+SET GLOBAL SLOW_QUERY_LOG=ON;
+
+SELECT sleep(2);
+
+set log_slow_filter=full_join;
+
+SELECT sleep(2) union select t2.id from t as t1,t as t2;
+SELECT sleep(2);
+
+--disable_warnings
+drop table if exists t;
+--enable_warnings
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-log_slow_filter.log | grep -c Query_time;
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo '$cmd';
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity-master.opt b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity-master.opt
new file mode 100644
index 00000000000..8d21f40a34f
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-log_slow_verbosity.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result
new file mode 100644
index 00000000000..ff42937fa4a
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.result
@@ -0,0 +1,9 @@
+SELECT sleep(2);
+sleep(2)
+0
+set log_slow_verbosity=innodb;
+SELECT sleep(2);
+sleep(2)
+0
+cat MYSQLD_DATADIR/percona_slow_query_log-log_slow_verbosity.log | grep -c "No InnoDB statistics available for this query"
+1
diff --git a/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test
new file mode 100644
index 00000000000..d1dc324fced
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-log_slow_verbosity.test
@@ -0,0 +1,15 @@
+-- source include/not_windows.inc
+
+source include/have_innodb.inc;
+
+SELECT sleep(2);
+
+set log_slow_verbosity=innodb;
+
+SELECT sleep(2);
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-log_slow_verbosity.log | grep -c "No InnoDB statistics available for this query";
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo '$cmd';
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt b/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt
new file mode 100644
index 00000000000..5cbb82d1261
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-long_query_time.log --long-query-time=3
diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result
new file mode 100644
index 00000000000..03f8745ca62
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.result
@@ -0,0 +1,21 @@
+SELECT sleep(1);
+sleep(1)
+0
+SELECT sleep(6);
+sleep(6)
+0
+SELECT sleep(10);
+sleep(10)
+0
+set long_query_time=8;
+SELECT sleep(1);
+sleep(1)
+0
+SELECT sleep(6);
+sleep(6)
+0
+SELECT sleep(12);
+sleep(12)
+0
+cat MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep -c Query_time
+3
diff --git a/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test
new file mode 100644
index 00000000000..4161690e2ef
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-long_query_time.test
@@ -0,0 +1,18 @@
+source include/not_windows.inc;
+source include/have_innodb.inc;
+
+SELECT sleep(1);
+SELECT sleep(6);
+SELECT sleep(10);
+
+set long_query_time=8;
+
+SELECT sleep(1);
+SELECT sleep(6);
+SELECT sleep(12);
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-long_query_time.log | grep -c Query_time;
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo '$cmd';
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log-master.opt b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log-master.opt
new file mode 100644
index 00000000000..6433539d3d1
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-microseconds_in_slow_query_log.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result
new file mode 100644
index 00000000000..fbfc954481e
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.result
@@ -0,0 +1,12 @@
+SELECT sleep(2);
+sleep(2)
+0
+set global slow_query_log_microseconds_timestamp=ON;
+SELECT sleep(2);
+sleep(2)
+0
+set global slow_query_log_microseconds_timestamp=OFF;
+cat MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+'
+1
+cat MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+'
+2
diff --git a/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test
new file mode 100644
index 00000000000..bceada68d79
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-microseconds_in_slow_query_log.test
@@ -0,0 +1,21 @@
+source include/not_windows.inc;
+source include/have_innodb.inc;
+
+SELECT sleep(2);
+
+set global slow_query_log_microseconds_timestamp=ON;
+
+SELECT sleep(2);
+
+set global slow_query_log_microseconds_timestamp=OFF;
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+.[0-9]+';
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo "$cmd";
+exec $cmd;
+
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-microseconds_in_slow_query_log.log | grep -E -c '# Time: [0-9]+[ ]+[0-9]+:[0-\9]+:[0-9]+';
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo "$cmd";
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit-master.opt b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit-master.opt
new file mode 100644
index 00000000000..6f82556fb0c
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-min_examined_row_limit.log --long-query-time=1 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result
new file mode 100644
index 00000000000..32698a59837
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.result
@@ -0,0 +1,25 @@
+SET GLOBAL SLOW_QUERY_LOG=OFF;
+drop table if exists t;
+# Create test table
+create table t(id INT PRIMARY KEY) engine=InnoDB;
+# Insert two rows to test table
+insert into t values(1);
+insert into t values(2);
+insert into t values(3);
+SET GLOBAL SLOW_QUERY_LOG=ON;
+SELECT sleep(2);
+sleep(2)
+0
+set min_examined_row_limit=5;
+SELECT sleep(2) union select t2.id from t as t1,t as t2;
+sleep(2)
+0
+1
+2
+3
+SELECT sleep(2);
+sleep(2)
+0
+drop table if exists t;
+cat MYSQLD_DATADIR/percona_slow_query_log-min_examined_row_limit.log | grep -c Query_time
+2
diff --git a/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test
new file mode 100644
index 00000000000..61276423b4d
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-min_examined_row_limit.test
@@ -0,0 +1,34 @@
+source include/not_windows.inc;
+source include/have_innodb.inc;
+
+SET GLOBAL SLOW_QUERY_LOG=OFF;
+
+--disable_warnings
+drop table if exists t;
+--enable_warnings
+
+--echo # Create test table
+create table t(id INT PRIMARY KEY) engine=InnoDB;
+--echo # Insert two rows to test table
+insert into t values(1);
+insert into t values(2);
+insert into t values(3);
+
+SET GLOBAL SLOW_QUERY_LOG=ON;
+
+SELECT sleep(2);
+
+set min_examined_row_limit=5;
+
+SELECT sleep(2) union select t2.id from t as t1,t as t2;
+SELECT sleep(2);
+
+--disable_warnings
+drop table if exists t;
+--enable_warnings
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-min_examined_row_limit.log | grep -c Query_time;
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo '$cmd';
+exec $cmd;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time-master.opt b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time-master.opt
new file mode 100644
index 00000000000..e2f3b6f2041
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time-master.opt
@@ -0,0 +1 @@
+--slow-query-log-file=percona_slow_query_log-use_global_long_query_time.log --long-query-time=2 \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result
new file mode 100644
index 00000000000..e294525fdd2
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.result
@@ -0,0 +1,59 @@
+SELECT sleep(1);
+sleep(1)
+0
+SELECT sleep(3);
+sleep(3)
+0
+SELECT sleep(5);
+sleep(5)
+0
+set global long_query_time=4;
+set global use_global_long_query_time=1;
+SELECT sleep(1);
+sleep(1)
+0
+SELECT sleep(3);
+sleep(3)
+0
+SELECT sleep(5);
+sleep(5)
+0
+set global long_query_time=2;
+set global use_global_long_query_time=0;
+cat MYSQLD_DATADIR/percona_slow_query_log-use_global_long_query_time.log | grep -c Query_time
+3
+show global variables like 'use_global_log_slow_control';
+Variable_name Value
+use_global_log_slow_control none
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time OFF
+set global use_global_log_slow_control = long_query_time;
+show global variables like 'use_global_log_slow_control';
+Variable_name Value
+use_global_log_slow_control long_query_time
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time ON
+set global use_global_log_slow_control = log_slow_filter;
+show global variables like 'use_global_log_slow_control';
+Variable_name Value
+use_global_log_slow_control log_slow_filter
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time OFF
+set global use_global_long_query_time = ON;
+show global variables like 'use_global_log_slow_control';
+Variable_name Value
+use_global_log_slow_control log_slow_filter,long_query_time
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time ON
+set global use_global_long_query_time = OFF;
+show global variables like 'use_global_log_slow_control';
+Variable_name Value
+use_global_log_slow_control log_slow_filter
+show global variables like 'use_global_long_query_time';
+Variable_name Value
+use_global_long_query_time OFF
+set global use_global_log_slow_control = none;
diff --git a/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test
new file mode 100644
index 00000000000..da627ae72b0
--- /dev/null
+++ b/mysql-test/suite/percona/percona_slow_query_log-use_global_long_query_time.test
@@ -0,0 +1,43 @@
+source include/not_windows.inc;
+source include/have_innodb.inc;
+
+SELECT sleep(1);
+SELECT sleep(3);
+SELECT sleep(5);
+
+set global long_query_time=4;
+set global use_global_long_query_time=1;
+
+SELECT sleep(1);
+SELECT sleep(3);
+SELECT sleep(5);
+
+set global long_query_time=2;
+set global use_global_long_query_time=0;
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+let $cmd = cat $MYSQLD_DATADIR/percona_slow_query_log-use_global_long_query_time.log | grep -c Query_time;
+--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
+exec echo '$cmd';
+exec $cmd;
+
+show global variables like 'use_global_log_slow_control';
+show global variables like 'use_global_long_query_time';
+
+set global use_global_log_slow_control = long_query_time;
+show global variables like 'use_global_log_slow_control';
+show global variables like 'use_global_long_query_time';
+
+set global use_global_log_slow_control = log_slow_filter;
+show global variables like 'use_global_log_slow_control';
+show global variables like 'use_global_long_query_time';
+
+set global use_global_long_query_time = ON;
+show global variables like 'use_global_log_slow_control';
+show global variables like 'use_global_long_query_time';
+
+set global use_global_long_query_time = OFF;
+show global variables like 'use_global_log_slow_control';
+show global variables like 'use_global_long_query_time';
+
+set global use_global_log_slow_control = none;
diff --git a/mysql-test/suite/percona/percona_sql_no_fcache.result b/mysql-test/suite/percona/percona_sql_no_fcache.result
new file mode 100644
index 00000000000..bc1413fb96d
--- /dev/null
+++ b/mysql-test/suite/percona/percona_sql_no_fcache.result
@@ -0,0 +1,12 @@
+drop table if exists t1;
+create table t (a int not null);
+insert into t values (1),(2),(3);
+SELECT SQL_NO_FCACHE SLEEP(0);
+SLEEP(0)
+0
+SELECT /*!40001 SQL_NO_CACHE */ /*!50084 SQL_NO_FCACHE */ * FROM t;
+a
+1
+2
+3
+DROP TABLE t;
diff --git a/mysql-test/suite/percona/percona_sql_no_fcache.test b/mysql-test/suite/percona/percona_sql_no_fcache.test
new file mode 100644
index 00000000000..da0c2ecef7d
--- /dev/null
+++ b/mysql-test/suite/percona/percona_sql_no_fcache.test
@@ -0,0 +1,11 @@
+--disable_warnings
+drop table if exists t1;
+--enable_warnings
+
+create table t (a int not null);
+insert into t values (1),(2),(3);
+
+SELECT SQL_NO_FCACHE SLEEP(0);
+SELECT /*!40001 SQL_NO_CACHE */ /*!50084 SQL_NO_FCACHE */ * FROM t;
+
+DROP TABLE t; \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_status_wait_query_cache_mutex.result b/mysql-test/suite/percona/percona_status_wait_query_cache_mutex.result
new file mode 100644
index 00000000000..348dcef4d30
--- /dev/null
+++ b/mysql-test/suite/percona/percona_status_wait_query_cache_mutex.result
@@ -0,0 +1,27 @@
+set GLOBAL query_cache_size=1355776;
+flush query cache;
+flush query cache;
+reset query cache;
+flush status;
+DROP TABLE IF EXISTS t;
+CREATE TABLE t(id INT, number INT);
+INSERT INTO t VALUES (0,1);
+INSERT INTO t VALUES (1,2);
+INSERT INTO t VALUES (2,3);
+SELECT number from t where id > 0;
+number
+2
+3
+SET SESSION debug="+d,status_wait_query_cache_mutex_sleep";
+SELECT number from t where id > 0;
+SET SESSION debug="+d,status_wait_query_cache_mutex_sleep";
+SELECT number from t where id > 0;
+SET SESSION debug="+d,status_wait_query_cache_mutex_sleep";
+SHOW PROCESSLIST;
+Id User Host db Command Time State Info
+Id root localhost test Sleep Time NULL
+Id root localhost test Query Time Waiting on query cache mutex SELECT number from t where id > 0
+Id root localhost test Query Time Waiting on query cache mutex SELECT number from t where id > 0
+Id root localhost test Query Time NULL SHOW PROCESSLIST
+DROP TABLE t;
+set GLOBAL query_cache_size=0;
diff --git a/mysql-test/suite/percona/percona_status_wait_query_cache_mutex.test b/mysql-test/suite/percona/percona_status_wait_query_cache_mutex.test
new file mode 100644
index 00000000000..64a9fe7db71
--- /dev/null
+++ b/mysql-test/suite/percona/percona_status_wait_query_cache_mutex.test
@@ -0,0 +1,37 @@
+--source include/have_query_cache.inc
+--source include/have_debug.inc
+set GLOBAL query_cache_size=1355776;
+--source include/percona_query_cache_with_comments_clear.inc
+
+-- disable_warnings
+DROP TABLE IF EXISTS t;
+-- enable_warnings
+CREATE TABLE t(id INT, number INT);
+INSERT INTO t VALUES (0,1);
+INSERT INTO t VALUES (1,2);
+INSERT INTO t VALUES (2,3);
+SELECT number from t where id > 0;
+--connect (conn0,localhost,root,,)
+--connect (conn1,localhost,root,,)
+--connect (conn2,localhost,root,,)
+
+--connection conn0
+--error 0, ER_UNKNOWN_SYSTEM_VARIABLE
+SET SESSION debug="+d,status_wait_query_cache_mutex_sleep";
+SEND SELECT number from t where id > 0;
+SLEEP 1.0;
+
+--connection conn1
+--error 0, ER_UNKNOWN_SYSTEM_VARIABLE
+SET SESSION debug="+d,status_wait_query_cache_mutex_sleep";
+SEND SELECT number from t where id > 0;
+SLEEP 1.0;
+
+--connection conn2
+--error 0, ER_UNKNOWN_SYSTEM_VARIABLE
+SET SESSION debug="+d,status_wait_query_cache_mutex_sleep";
+--replace_column 1 Id 6 Time
+SHOW PROCESSLIST;
+
+DROP TABLE t;
+set GLOBAL query_cache_size=0; \ No newline at end of file
diff --git a/mysql-test/suite/percona/percona_suppress_log_warning_1592-master.opt b/mysql-test/suite/percona/percona_suppress_log_warning_1592-master.opt
new file mode 100644
index 00000000000..4658d62af60
--- /dev/null
+++ b/mysql-test/suite/percona/percona_suppress_log_warning_1592-master.opt
@@ -0,0 +1 @@
+--log-error
diff --git a/mysql-test/suite/percona/percona_suppress_log_warning_1592.result b/mysql-test/suite/percona/percona_suppress_log_warning_1592.result
new file mode 100644
index 00000000000..4715499b08f
--- /dev/null
+++ b/mysql-test/suite/percona/percona_suppress_log_warning_1592.result
@@ -0,0 +1,28 @@
+SET @old_log_warnings = @@log_warnings;
+SET @old_suppress_log_warning_1592 = @@suppress_log_warning_1592;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20));
+SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 0;
+SET GLOBAL LOG_WARNINGS = 0;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+SET GLOBAL LOG_WARNINGS = 1;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 1;
+SET GLOBAL LOG_WARNINGS = 0;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+SET GLOBAL LOG_WARNINGS = 1;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+DROP TABLE t1;
+SET GLOBAL log_warnings = @old_log_warnings;
+SET GLOBAL suppress_log_warning_1592 = @old_suppress_log_warning_1592;
+# Count the number of times the "Unsafe" message was printed
+# to the error log.
+Occurrences: 1
diff --git a/mysql-test/suite/percona/percona_suppress_log_warning_1592.test b/mysql-test/suite/percona/percona_suppress_log_warning_1592.test
new file mode 100644
index 00000000000..97fe40469fc
--- /dev/null
+++ b/mysql-test/suite/percona/percona_suppress_log_warning_1592.test
@@ -0,0 +1,46 @@
+-- source include/have_log_bin.inc
+-- source include/have_binlog_format_statement.inc
+
+SET @old_log_warnings = @@log_warnings;
+SET @old_suppress_log_warning_1592 = @@suppress_log_warning_1592;
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20));
+SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 0;
+SET GLOBAL LOG_WARNINGS = 0;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+SET GLOBAL LOG_WARNINGS = 1;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+SET GLOBAL SUPPRESS_LOG_WARNING_1592 = 1;
+SET GLOBAL LOG_WARNINGS = 0;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+SET GLOBAL LOG_WARNINGS = 1;
+INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
+DROP TABLE t1;
+
+SET GLOBAL log_warnings = @old_log_warnings;
+SET GLOBAL suppress_log_warning_1592 = @old_suppress_log_warning_1592;
+
+let $log_error_= `SELECT @@GLOBAL.log_error`;
+if(!`select LENGTH('$log_error_')`)
+{
+ # MySQL Server on windows is started with --console and thus
+ # does not know the location of its .err log, use default location
+ let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
+}
+# Assign env variable LOG_ERROR
+let LOG_ERROR=$log_error_;
+
+--echo # Count the number of times the "Unsafe" message was printed
+--echo # to the error log.
+
+perl;
+ use strict;
+ my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set";
+ open(FILE, "$log_error") or die("Unable to open $log_error: $!\n");
+ my $count = () = grep(/suppress_1592/g,<FILE>);
+ print "Occurrences: $count\n";
+ close(FILE);
+EOF
diff --git a/mysql-test/suite/percona/percona_xtradb_admin_command.result b/mysql-test/suite/percona/percona_xtradb_admin_command.result
new file mode 100644
index 00000000000..26ba14f2f3b
--- /dev/null
+++ b/mysql-test/suite/percona/percona_xtradb_admin_command.result
@@ -0,0 +1,6 @@
+select * from information_schema.XTRADB_ADMIN_COMMAND;
+result_message
+No XTRA_* command in the SQL statement. Please add /*!XTRA_xxxx*/ to the SQL.
+select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_HELLO*/;
+result_message
+Hello!
diff --git a/mysql-test/suite/percona/percona_xtradb_admin_command.test b/mysql-test/suite/percona/percona_xtradb_admin_command.test
new file mode 100644
index 00000000000..5dc3fb2b33a
--- /dev/null
+++ b/mysql-test/suite/percona/percona_xtradb_admin_command.test
@@ -0,0 +1,3 @@
+--source include/have_innodb.inc
+select * from information_schema.XTRADB_ADMIN_COMMAND;
+select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_HELLO*/;
diff --git a/mysql-test/suite/percona/percona_xtradb_bug317074.result b/mysql-test/suite/percona/percona_xtradb_bug317074.result
new file mode 100644
index 00000000000..82a98844652
--- /dev/null
+++ b/mysql-test/suite/percona/percona_xtradb_bug317074.result
@@ -0,0 +1,4 @@
+SET @old_innodb_file_format=@@innodb_file_format;
+SET @old_innodb_file_per_table=@@innodb_file_per_table;
+SET GLOBAL innodb_file_format='Barracuda';
+SET GLOBAL innodb_file_per_table=ON;
diff --git a/mysql-test/t/innodb_xtradb_bug317074.test b/mysql-test/suite/percona/percona_xtradb_bug317074.test
index 3b58c34598a..abf5d8ee1f6 100644
--- a/mysql-test/t/innodb_xtradb_bug317074.test
+++ b/mysql-test/suite/percona/percona_xtradb_bug317074.test
@@ -1,4 +1,4 @@
---source include/have_innodb.inc
+-- source include/have_innodb.inc
SET @old_innodb_file_format=@@innodb_file_format;
SET @old_innodb_file_per_table=@@innodb_file_per_table;
@@ -6,9 +6,10 @@ let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
SET GLOBAL innodb_file_format='Barracuda';
SET GLOBAL innodb_file_per_table=ON;
---disable_warnings
+-- disable_query_log
+-- disable_result_log
+
DROP TABLE IF EXISTS `test1`;
---enable_warnings
CREATE TABLE IF NOT EXISTS `test1` (
`a` int primary key auto_increment,
`b` int default 0,
@@ -21,22 +22,21 @@ CREATE PROCEDURE insert_many(p1 int)
BEGIN
SET @x = 0;
SET @y = 0;
+start transaction;
REPEAT
insert into test1 set b=1;
SET @x = @x + 1;
SET @y = @y + 1;
IF @y >= 1000 THEN
commit;
+ start transaction;
SET @y = 0;
END IF;
UNTIL @x >= p1 END REPEAT;
+commit;
END|
delimiter ;|
---disable_query_log
---disable_result_log
call insert_many(100000);
---enable_query_log
---enable_result_log
DROP PROCEDURE insert_many;
# The bug is hangup at the following statement
diff --git a/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc b/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc
index 70e17cef9fe..79825016448 100644
--- a/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc
+++ b/mysql-test/suite/rpl/include/rpl_mixed_ddl.inc
@@ -66,9 +66,7 @@ ALTER TABLE t2 DROP COLUMN d;
--echo
--echo
--echo ******************** SHOW BINLOG EVENTS ********************
---replace_column 2 # 5 #
---replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/
-show binlog events from 1;
+source include/show_binlog_events.inc;
sync_slave_with_master;
# as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql
diff --git a/mysql-test/suite/rpl/include/rpl_mixed_dml.inc b/mysql-test/suite/rpl/include/rpl_mixed_dml.inc
index e9adb805c99..d953397c0cb 100644
--- a/mysql-test/suite/rpl/include/rpl_mixed_dml.inc
+++ b/mysql-test/suite/rpl/include/rpl_mixed_dml.inc
@@ -326,10 +326,7 @@ DROP VIEW v2;
--echo
--echo
--echo ******************** SHOW BINLOG EVENTS ********************
---replace_column 2 # 5 #
---replace_regex /Server ver: .+/Server ver: #/ /table_id: [0-9]+/table_id: #/ /COMMIT.+xid=[0-9]+.+/#/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/
---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
-show binlog events from 1;
+--source include/show_binlog_events.inc
sync_slave_with_master;
# as we're using UUID we don't SELECT but use "diff" like in rpl_row_UUID
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test_rpl > $MYSQLTEST_VARDIR/tmp/rpl_switch_stm_row_mixed_master.sql
diff --git a/mysql-test/suite/rpl/r/rpl_000015.result b/mysql-test/suite/rpl/r/rpl_000015.result
deleted file mode 100644
index 03b96d5870b..00000000000
--- a/mysql-test/suite/rpl/r/rpl_000015.result
+++ /dev/null
@@ -1,141 +0,0 @@
-reset master;
-show master status;
-File Position Binlog_Do_DB Binlog_Ignore_DB
-master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
-reset slave;
-SHOW SLAVE STATUS;
-change master to master_host='127.0.0.1';
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User test
-Master_Port 3306
-Connect_Retry 7
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-change master to master_host='127.0.0.1',master_user='root',
-master_password='',master_port=MASTER_PORT;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 7
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 7
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-drop table if exists t1;
-create table t1 (n int, PRIMARY KEY(n));
-insert into t1 values (10),(45),(90);
-SELECT * FROM t1 ORDER BY n;
-n
-10
-45
-90
-SELECT * FROM t1 ORDER BY n;
-n
-10
-45
-90
-drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_grant.result b/mysql-test/suite/rpl/r/rpl_binlog_grant.result
index 4a789f361c6..7a2e3183d5b 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_grant.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_grant.result
@@ -17,16 +17,6 @@ show grants for x@y;
Grants for x@y
GRANT USAGE ON *.* TO 'x'@'y'
GRANT SELECT ON `d1`.`t` TO 'x'@'y'
-show binlog events;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 193 drop database if exists d1
-master-bin.000001 193 Query 1 272 create database d1
-master-bin.000001 272 Query 1 370 use `d1`; create table t (s1 int) engine=innodb
-master-bin.000001 370 Query 1 436 BEGIN
-master-bin.000001 436 Query 1 521 use `d1`; insert into t values (1)
-master-bin.000001 521 Xid 1 548 COMMIT /* XID */
-master-bin.000001 548 Query 1 633 use `d1`; grant select on t to x@y
start transaction;
insert into t values (2);
revoke select on t from x@y;
@@ -38,19 +28,5 @@ s1
show grants for x@y;
Grants for x@y
GRANT USAGE ON *.* TO 'x'@'y'
-show binlog events;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 193 drop database if exists d1
-master-bin.000001 193 Query 1 272 create database d1
-master-bin.000001 272 Query 1 370 use `d1`; create table t (s1 int) engine=innodb
-master-bin.000001 370 Query 1 436 BEGIN
-master-bin.000001 436 Query 1 521 use `d1`; insert into t values (1)
-master-bin.000001 521 Xid 1 548 COMMIT /* XID */
-master-bin.000001 548 Query 1 633 use `d1`; grant select on t to x@y
-master-bin.000001 633 Query 1 699 BEGIN
-master-bin.000001 699 Query 1 784 use `d1`; insert into t values (2)
-master-bin.000001 784 Xid 1 811 COMMIT /* XID */
-master-bin.000001 811 Query 1 899 use `d1`; revoke select on t from x@y
drop user x@y;
drop database d1;
diff --git a/mysql-test/suite/rpl/r/rpl_bug33931.result b/mysql-test/suite/rpl/r/rpl_bug33931.result
index a17941f6ba9..292922a1afd 100644
--- a/mysql-test/suite/rpl/r/rpl_bug33931.result
+++ b/mysql-test/suite/rpl/r/rpl_bug33931.result
@@ -4,43 +4,5 @@ stop slave;
reset slave;
SET GLOBAL debug="d,simulate_io_slave_error_on_init,simulate_sql_slave_error_on_init";
start slave;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos 4
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno #
-Last_Error Failed during slave thread initialization
-Skip_Counter 0
-Exec_Master_Log_Pos 0
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno #
-Last_SQL_Error Failed during slave thread initialization
+Last_SQL_Error = Failed during slave thread initialization
SET GLOBAL debug="";
diff --git a/mysql-test/suite/rpl/r/rpl_change_master.result b/mysql-test/suite/rpl/r/rpl_change_master.result
index c06c1201e3d..883feb42b3f 100644
--- a/mysql-test/suite/rpl/r/rpl_change_master.result
+++ b/mysql-test/suite/rpl/r/rpl_change_master.result
@@ -10,86 +10,8 @@ n
stop slave sql_thread;
insert into t1 values(1);
insert into t1 values(2);
-stop slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+include/stop_slave.inc
change master to master_user='root';
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
start slave;
select * from t1;
n
diff --git a/mysql-test/suite/rpl/r/rpl_conditional_comments.result b/mysql-test/suite/rpl/r/rpl_conditional_comments.result
new file mode 100644
index 00000000000..105d3bc59f3
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_conditional_comments.result
@@ -0,0 +1,57 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1(c1 INT);
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT)
+
+# Case 1:
+# ------------------------------------------------------------------
+# In a statement, some CCs are applied while others are not. The CCs
+# which are not applied on master will be binlogged as common comments.
+/*!99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /*!99999 ,(11)*/;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; /* 99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /* 99999 ,(11)*/
+Comparing tables master:test.t1 and slave:test.t1
+
+# Case 2:
+# -----------------------------------------------------------------
+# Verify whether it can be binlogged correctly when executing prepared
+# statement.
+PREPARE stmt FROM 'INSERT INTO /*!99999 blabla*/ t1 VALUES(60) /*!99999 ,(61)*/';
+EXECUTE stmt;
+DROP TABLE t1;
+CREATE TABLE t1(c1 INT);
+EXECUTE stmt;
+Comparing tables master:test.t1 and slave:test.t1
+
+SET @value=62;
+PREPARE stmt FROM 'INSERT INTO /*!99999 blabla */ t1 VALUES(?) /*!99999 ,(63)*/';
+EXECUTE stmt USING @value;
+DROP TABLE t1;
+CREATE TABLE t1(c1 INT);
+EXECUTE stmt USING @value;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla*/ t1 VALUES(60) /* 99999 ,(61)*/
+master-bin.000001 # Query # # use `test`; DROP TABLE t1
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT)
+master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla*/ t1 VALUES(60) /* 99999 ,(61)*/
+master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla */ t1 VALUES(62) /* 99999 ,(63)*/
+master-bin.000001 # Query # # use `test`; DROP TABLE t1
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1(c1 INT)
+master-bin.000001 # Query # # use `test`; INSERT INTO /* 99999 blabla */ t1 VALUES(62) /* 99999 ,(63)*/
+Comparing tables master:test.t1 and slave:test.t1
+
+# Case 3:
+# -----------------------------------------------------------------
+# Verify it can restore the '!', if the it is an uncomplete conditional
+# comments
+SELECT c1 FROM /*!99999 t1 WHEREN;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/*!99999 t1 WHEREN' at line 1
+DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_current_user.result b/mysql-test/suite/rpl/r/rpl_current_user.result
new file mode 100644
index 00000000000..85490c2571c
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_current_user.result
@@ -0,0 +1,205 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+
+# On slave2
+# Connect slave2 to slave
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE_MYPORT;,
+MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root';
+START SLAVE;
+
+# [On master]
+DROP VIEW IF EXISTS v_user;
+DROP VIEW IF EXISTS v_tables_priv;
+DROP VIEW IF EXISTS v_procs_priv;
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS my_grant;
+DROP PROCEDURE IF EXISTS my_revoke;
+DROP FUNCTION IF EXISTS my_user;
+DROP EVENT IF EXISTS e1;
+CREATE TABLE t1(c1 char(100));
+CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%';
+CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%';
+CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%';
+CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1';
+CREATE PROCEDURE p1() SELECT 1;
+# bug48321_1-01234 has the max length(16) of user.
+GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION;
+
+# Make sure the max lengths of user and host
+# the user name is too lengh
+GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost';
+ERROR HY000: String '01234567890123456' is too long for user name (should be no longer than 16)
+# the host name is too lengh
+GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890';
+ERROR HY000: String '0123456789012345678901234567890123456789012345678901234567890' is too long for host name (should be no longer than 60)
+
+# User 'bug48321_1-01234' connects to master by conn1
+# [On conn1]
+# Verify 'REVOKE ALL' statement
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER();
+Comparing tables master:test.v_user and slave:test.v_user
+Comparing tables master:test.v_user and slave2:test.v_user
+
+# Verify 'GRANT ... ON TABLE ...' statement
+GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
+Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv
+Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv
+
+# Verify 'GRANT ... ON PROCEDURE...' statement
+GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER();
+Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv
+Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv
+
+# Verify 'GRANT ... ON *.* ...' statement
+GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION;
+Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv
+Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv
+
+# Verify 'REVOKE ... ON TABLE ...' statement
+REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
+Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv
+Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv
+
+# Verify 'REVOKE ... ON PROCEDURE...' statement
+REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER();
+Comparing tables master:test.v_procs_priv and slave:test.v_procs_priv
+Comparing tables master:test.v_procs_priv and slave2:test.v_procs_priv
+
+# Verify 'REVOKE ... ON *.* ...' statement
+REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER();
+Comparing tables master:test.v_user and slave:test.v_user
+Comparing tables master:test.v_user and slave2:test.v_user
+
+# Verify 'GRANT ...' statement in the procedure
+CREATE PROCEDURE my_grant()
+GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
+call my_grant;
+Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv
+Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv
+
+# Verify 'REVOKE ... ON TABLE ...' statement in the procedure
+CREATE PROCEDURE my_revoke()
+REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
+call my_revoke;
+Comparing tables master:test.v_tables_priv and slave:test.v_tables_priv
+Comparing tables master:test.v_tables_priv and slave2:test.v_tables_priv
+
+# Verify 'RENAME USER ...' statement
+RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost';
+Comparing tables master:test.v_user and slave:test.v_user
+Comparing tables master:test.v_user and slave2:test.v_user
+
+# Verify 'DROP USER ...' statement
+GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost';
+DROP USER CURRENT_USER();
+Comparing tables master:test.v_user and slave:test.v_user
+Comparing tables master:test.v_user and slave2:test.v_user
+
+# Verify 'ALTER EVENT...' statement
+CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1;
+# Explicitly assign CURRENT_USER() to definer
+ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE;
+Comparing tables master:test.v_event and slave:test.v_event
+Comparing tables master:test.v_event and slave2:test.v_event
+
+# Session user will be set as definer, if the statement does not assign
+# a definer
+ALTER EVENT e1 ENABLE;
+Comparing tables master:test.v_event and slave:test.v_event
+Comparing tables master:test.v_event and slave2:test.v_event
+
+# Verify that this patch does not affect the calling of CURRENT_USER()
+# in the other statements
+# [On master]
+INSERT INTO t1 VALUES(CURRENT_USER()), ('1234');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+SELECT * FROM t1;
+c1
+root@localhost
+1234
+# [On slave]
+SELECT * FROM t1;
+c1
+@
+1234
+# [On slave2]
+SELECT * FROM t1;
+c1
+@
+1234
+# [On master]
+UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234';
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+SELECT * FROM t1;
+c1
+root@localhost
+root@localhost
+# [On slave]
+SELECT * FROM t1;
+c1
+@
+@
+# [On slave2]
+SELECT * FROM t1;
+c1
+@
+@
+# [On master]
+DELETE FROM t1 WHERE c1=CURRENT_USER();
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+SELECT * FROM t1;
+c1
+# [On slave]
+SELECT * FROM t1;
+c1
+# [On slave2]
+SELECT * FROM t1;
+c1
+# [On master]
+CREATE TABLE t2(c1 char(100));
+CREATE FUNCTION my_user() RETURNS VARCHAR(64)
+SQL SECURITY INVOKER
+BEGIN
+INSERT INTO t2 VALUES(CURRENT_USER());
+RETURN CURRENT_USER();
+END |
+INSERT INTO t1 VALUES(my_user());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+Note 1592 Statement may not be safe to log in statement format.
+SELECT * FROM t1;
+c1
+root@localhost
+SELECT * FROM t2;
+c1
+root@localhost
+# [On slave]
+SELECT * FROM t1;
+c1
+@
+SELECT * FROM t2;
+c1
+@
+# [On slave2]
+SELECT * FROM t1;
+c1
+@
+SELECT * FROM t2;
+c1
+@
+
+# END
+DROP TABLE t1, t2;
+DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event;
+DROP PROCEDURE p1;
+DROP PROCEDURE my_grant;
+DROP PROCEDURE my_revoke;
+DROP FUNCTION my_user;
+DROP EVENT e1;
diff --git a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
index 6c8d35619e5..1485389204b 100644
--- a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
@@ -50,45 +50,7 @@ a
SELECT * FROM t3;
a
3
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
*** Test lock wait timeout ***
include/stop_slave.inc
@@ -112,52 +74,14 @@ SELECT * FROM t3;
a
3
3
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
*** Test lock wait timeout and purged relay logs ***
SET @my_max_relay_log_size= @@global.max_relay_log_size;
SET global max_relay_log_size=0;
include/stop_slave.inc
DELETE FROM t2;
-CHANGE MASTER TO MASTER_LOG_POS=440;
+CHANGE MASTER TO MASTER_LOG_POS=MASTER_POS_BEGIN;
BEGIN;
SELECT * FROM t1 FOR UPDATE;
a
@@ -179,45 +103,7 @@ a
3
3
3
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
*** Clean up ***
DROP TABLE t1,t2,t3;
diff --git a/mysql-test/suite/rpl/r/rpl_do_grant.result b/mysql-test/suite/rpl/r/rpl_do_grant.result
index a87eaa6e537..45c5bcf7ba0 100644
--- a/mysql-test/suite/rpl/r/rpl_do_grant.result
+++ b/mysql-test/suite/rpl/r/rpl_do_grant.result
@@ -89,6 +89,7 @@ show grants for rpl_do_grant2@localhost;
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
show grants for rpl_do_grant2@localhost;
ERROR 42000: There is no such grant defined for user 'rpl_do_grant2' on host 'localhost'
+call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
DROP DATABASE IF EXISTS bug42217_db;
CREATE DATABASE bug42217_db;
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
@@ -165,9 +166,14 @@ USE test;
DROP FUNCTION bug42217_db.upgrade_del_func;
DROP FUNCTION bug42217_db.upgrade_alter_func;
DROP DATABASE bug42217_db;
-call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
stop slave;
DROP USER 'create_rout_db'@'localhost';
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
######## BUG#49119 #######
### i) test case from the 'how to repeat section'
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_drop.result b/mysql-test/suite/rpl/r/rpl_drop.result
index b83594c9bb1..5ebbc4f9ce7 100644
--- a/mysql-test/suite/rpl/r/rpl_drop.result
+++ b/mysql-test/suite/rpl/r/rpl_drop.result
@@ -8,3 +8,27 @@ drop table if exists t1, t2;
create table t1 (a int);
drop table t1, t2;
ERROR 42S02: Unknown table 't2'
+include/stop_slave.inc
+SET @old_binlog_format= @@global.binlog_format;
+SET GLOBAL binlog_format = ROW;
+include/start_slave.inc
+SET @old_binlog_format= @@global.binlog_format;
+SET binlog_format = ROW;
+CREATE TABLE t2(a INT) ENGINE=MYISAM;
+CREATE TABLE t3(a INT) ENGINE=INNODB;
+CREATE FUNCTION f1() RETURNS INT
+BEGIN
+insert into t2 values(1);
+insert into t3 values(1);
+return 1;
+END|
+CREATE TABLE t1(UNIQUE(a)) ENGINE=MYISAM SELECT 1 AS a UNION ALL SELECT f1();
+ERROR 23000: Duplicate entry '1' for key 'a'
+CREATE TABLE t1(UNIQUE(a)) ENGINE=INNODB SELECT 1 AS a UNION ALL SELECT f1();
+ERROR 23000: Duplicate entry '1' for key 'a'
+show binlog events in 'master-bin.000001' from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+DROP FUNCTION f1;
+DROP TABLE t2, t3;
+SET @@global.binlog_format= @old_binlog_format;
+SET @@global.binlog_format= @old_binlog_format;
diff --git a/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result b/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result
index 4c6323a61db..aa1a573d052 100644
--- a/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result
+++ b/mysql-test/suite/rpl/r/rpl_dual_pos_advance.result
@@ -6,9 +6,9 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
reset master;
change master to master_host="127.0.0.1",master_port=SLAVE_PORT,master_user="root";
-start slave;
+include/start_slave.inc
create table t1 (n int);
-stop slave;
+include/stop_slave.inc
create table t2 (n int);
show tables;
Tables_in_test
@@ -22,20 +22,20 @@ insert into t3 values(2);
insert into t3 values(3);
commit;
insert into t3 values(4);
-start slave until master_log_file="slave-bin.000001",master_log_pos=195;
+start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS;
Warnings:
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
show tables;
Tables_in_test
t1
t2
-start slave until master_log_file="slave-bin.000001",master_log_pos=438;
+start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS;
Warnings:
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
select * from t3;
n
1
-start slave until master_log_file="slave-bin.000001",master_log_pos=663;
+start slave until master_log_file="MASTER_LOG_FILE",master_log_pos=MASTER_LOG_POS;
Warnings:
Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mysqld restart
select * from t3;
@@ -43,7 +43,7 @@ n
1
2
3
-start slave;
+include/start_slave.inc
create table t4 (n int);
create table t5 (n int);
create table t6 (n int);
@@ -55,6 +55,6 @@ t3
t4
t5
t6
-stop slave;
+include/stop_slave.inc
reset slave;
drop table t1,t2,t3,t4,t5,t6;
diff --git a/mysql-test/suite/rpl/r/rpl_empty_master_crash.result b/mysql-test/suite/rpl/r/rpl_empty_master_crash.result
index f0d84f85069..f71411c68dd 100644
--- a/mysql-test/suite/rpl/r/rpl_empty_master_crash.result
+++ b/mysql-test/suite/rpl/r/rpl_empty_master_crash.result
@@ -4,7 +4,6 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SHOW SLAVE STATUS;
load table t1 from master;
ERROR 08S01: Error connecting to master: Master is not configured
load table t1 from master;
diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
index 63154383e8c..48fd0366c26 100644
--- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
@@ -54,45 +54,7 @@ a b c
3 4 QA TESTING
*** Start Slave ***
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -119,49 +81,12 @@ set @b1 = 'b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t3 ***
DROP TABLE t3;
*** Create t4 on slave ***
@@ -181,49 +106,12 @@ START SLAVE;
INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
(30000.22,4,'QA TESTING');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t4 ***
DROP TABLE t4;
*** Create t5 on slave ***
@@ -243,49 +131,12 @@ START SLAVE;
INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
(2,'JOE',300.01,0,'b2b2',1.0000009);
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t5 ***
DROP TABLE t5;
*** Create t6 on slave ***
@@ -304,47 +155,9 @@ START SLAVE;
INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
(2,'JOE',300.01,0);
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
+Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
*** Drop t6 ***
DROP TABLE t6;
@@ -440,49 +253,12 @@ set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
*** Create t11 on slave ***
@@ -501,49 +277,12 @@ set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
*** Create t12 on slave ***
@@ -753,47 +492,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
********************************************
*** Expect slave to fail with Error 1060 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1060
-Last_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1060
-Last_SQL_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1;
+include/start_slave.inc
*** Try to insert in master ****
INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2);
SELECT * FROM t15 ORDER BY c1;
@@ -891,48 +593,11 @@ START SLAVE;
*** Master Data Insert ***
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
** DROP table t17 ***
DROP TABLE t17;
diff --git a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
index d80ac5eea2c..80b18ee4bd7 100644
--- a/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extraCol_myisam.result
@@ -54,45 +54,7 @@ a b c
3 4 QA TESTING
*** Start Slave ***
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -119,49 +81,12 @@ set @b1 = 'b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t3 ***
DROP TABLE t3;
*** Create t4 on slave ***
@@ -181,49 +106,12 @@ START SLAVE;
INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
(30000.22,4,'QA TESTING');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t4 ***
DROP TABLE t4;
*** Create t5 on slave ***
@@ -243,49 +131,12 @@ START SLAVE;
INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
(2,'JOE',300.01,0,'b2b2',1.0000009);
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t5 ***
DROP TABLE t5;
*** Create t6 on slave ***
@@ -304,47 +155,9 @@ START SLAVE;
INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
(2,'JOE',300.01,0);
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
+Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
*** Drop t6 ***
DROP TABLE t6;
@@ -440,49 +253,12 @@ set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
*** Create t11 on slave ***
@@ -501,49 +277,12 @@ set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
*** Create t12 on slave ***
@@ -753,47 +492,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
********************************************
*** Expect slave to fail with Error 1060 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1060
-Last_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1060
-Last_SQL_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1;
+include/start_slave.inc
*** Try to insert in master ****
INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2);
SELECT * FROM t15 ORDER BY c1;
@@ -891,48 +593,11 @@ START SLAVE;
*** Master Data Insert ***
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
** DROP table t17 ***
DROP TABLE t17;
diff --git a/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result b/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result
index ad67f96db71..e8535a0bc5e 100644
--- a/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extraColmaster_innodb.result
@@ -91,49 +91,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -465,50 +423,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -541,50 +461,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -616,50 +499,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -770,45 +616,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -856,45 +664,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -942,45 +712,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
@@ -1232,49 +964,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -1606,50 +1296,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -1682,50 +1334,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -1757,50 +1372,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -1911,45 +1489,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -1997,45 +1537,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -2083,45 +1585,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
@@ -2373,49 +1837,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -2747,50 +2169,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -2823,50 +2207,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -2898,50 +2245,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -3052,45 +2362,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -3138,45 +2410,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -3224,45 +2458,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result b/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result
index 8859a8e24e3..f360a8847eb 100644
--- a/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extraColmaster_myisam.result
@@ -91,49 +91,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -465,50 +423,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -541,50 +461,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -616,50 +499,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -770,45 +616,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -856,45 +664,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -942,45 +712,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
@@ -1232,49 +964,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -1606,50 +1296,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -1682,50 +1334,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -1757,50 +1372,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -1911,45 +1489,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -1997,45 +1537,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -2083,45 +1585,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
@@ -2373,49 +1837,7 @@ f1 f2 f3 f4
27 27 27 next
29 29 29 second
30 30 30 next
-
-* Show Slave Status *
-
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-
+Checking that both slave threads are running.
***** Testing Altering table def scenario *****
@@ -2747,50 +2169,12 @@ delete from t2;
delete from t3;
delete from t4;
delete from t31;
+select * from t31;
+f1 f2 f3 f4
** Check slave status **
-select * from t31;
-f1 f2 f3 f4
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
****************************************
* columns in master at middle of table *
@@ -2823,50 +2207,13 @@ INSERT INTO t10 () VALUES(1,@b1,DEFAULT,'Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 5, test.t10 has type 254
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
@@ -2898,50 +2245,13 @@ INSERT INTO t11 () VALUES(1,@b1,'Testing is fun','Kyle',DEFAULT),
(3,@b1,DEFAULT,'QA',DEFAULT);
********************************************
-*** Expect slave to fail with Error 1523 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 252, test.t11 has type 15
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
@@ -3052,45 +2362,7 @@ c1 c3 hex(c4) c5 c6
************
* Bug30415 *
************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1091
-Last_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1091
-Last_SQL_Error Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
+Last_SQL_Error = Error 'Can't DROP 'c7'; check that column/key exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7'
STOP SLAVE;
RESET SLAVE;
@@ -3138,45 +2410,7 @@ c1 hex(c4) c5 c6 c7 c2
*** Expect slave to fail with Error 1054 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1054
-Last_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1054
-Last_SQL_Error Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
+Last_SQL_Error = Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7'
STOP SLAVE;
RESET SLAVE;
@@ -3224,45 +2458,7 @@ c1 hex(c4) c5 c6 c7
*** BUG 30434 ***
*****************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1072
-Last_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1072
-Last_SQL_Error Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
+Last_SQL_Error = Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)'
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result
index 7eddaabc636..5f1f72a9a3a 100644
--- a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result
+++ b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result
@@ -49,82 +49,82 @@ UPDATE t7 LEFT JOIN (t8, t4, t1) ON (t7.id=t8.id and t7.id=t4.id and t7.id=t1.id
UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1;
--source include/wait_for_slave_sql_error_and_skip.inc
Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1'
-set global sql_slave_skip_counter=1;
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
include/start_slave.inc
[on slave]
show tables like 't%';
diff --git a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
index 600ac44fc86..3bb96b669d7 100644
--- a/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
+++ b/mysql-test/suite/rpl/r/rpl_flushlog_loop.result
@@ -19,43 +19,9 @@ stop slave;
change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=SLAVE_PORT;
include/start_slave.inc
+CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM;
+INSERT INTO t1 VALUE(1);
FLUSH LOGS;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port SLAVE_PORT
-Connect_Retry 60
-Master_Log_File slave-bin.000001
-Read_Master_Log_Pos POSITION
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File slave-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos POSITION
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert #
-Last_IO_Errno #
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
+INSERT INTO t1 VALUE(2);
+Checking that both slave threads are running.
+Relay_Log_File relay-log.000003
diff --git a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
index a34c536feb8..432bcfcc94d 100644
--- a/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
+++ b/mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
@@ -14,7 +14,6 @@ slave is going to hang in get_master_version_and_clock
slave is unblocked
SET DEBUG_SYNC='now SIGNAL signal.get_unix_timestamp';
Check network error happened here
-NETWORK ERROR
set @@global.debug = "-d,'debug_lock.before_get_UNIX_TIMESTAMP'";
stop slave;
SET @@global.debug= "+d,'debug_lock.before_get_SERVER_ID'";
@@ -23,7 +22,6 @@ slave is going to hang in get_master_version_and_clock
slave is unblocked
SET DEBUG_SYNC='now SIGNAL signal.get_server_id';
Check network error happened here
-NETWORK ERROR
set @@global.debug = "-d,'debug_lock.before_get_SERVER_ID'";
set global debug= '';
reset master;
@@ -31,6 +29,5 @@ include/stop_slave.inc
change master to master_port=SLAVE_PORT;
start slave;
*** must be having the replicate-same-server-id IO thread error ***
-Slave_IO_Errno= 1593
-Slave_IO_Error= Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
+Last_IO_Error = Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
SET DEBUG_SYNC= 'RESET';
diff --git a/mysql-test/suite/rpl/r/rpl_grant.result b/mysql-test/suite/rpl/r/rpl_grant.result
index 1bed6101e3c..285d52b7678 100644
--- a/mysql-test/suite/rpl/r/rpl_grant.result
+++ b/mysql-test/suite/rpl/r/rpl_grant.result
@@ -41,42 +41,3 @@ user host
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
COUNT(*)
0
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
diff --git a/mysql-test/suite/rpl/r/rpl_incident.result b/mysql-test/suite/rpl/r/rpl_incident.result
index c3baabbdbc3..6c226aaf2f7 100644
--- a/mysql-test/suite/rpl/r/rpl_incident.result
+++ b/mysql-test/suite/rpl/r/rpl_incident.result
@@ -19,51 +19,13 @@ a
2
3
4
+Last_SQL_Error = The incident LOST_EVENTS occured on the master. Message: <none>
**** On Slave ****
SELECT * FROM t1;
a
1
2
3
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File #
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1590
-Last_Error The incident LOST_EVENTS occured on the master. Message: <none>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 1590
-Last_SQL_Error The incident LOST_EVENTS occured on the master. Message: <none>
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
SELECT * FROM t1;
@@ -72,43 +34,5 @@ a
2
3
4
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File #
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000002
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result
index fbb1e2355c3..549842198e8 100644
--- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result
+++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result
@@ -136,25 +136,24 @@ ALTER TABLE t2 DROP COLUMN d;
******************** SHOW BINLOG EVENTS ********************
-show binlog events from 1;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: #
-master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS test_rpl
-master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS test_rpl_1
-master-bin.000001 # Query 1 # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci
-master-bin.000001 # Query 1 # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci
-master-bin.000001 # Query 1 # DROP DATABASE test_rpl_1
-master-bin.000001 # Query 1 # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci
-master-bin.000001 # Query 1 # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=innodb
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254)
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b)
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c
-master-bin.000001 # Query 1 # use `test_rpl`; RENAME TABLE t0 TO t1
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t2 LIKE t1
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE INDEX index2 on t2 (d)
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE INDEX index3 on t2 (a, d)
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d
+master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl
+master-bin.000001 # Query # # DROP DATABASE IF EXISTS test_rpl_1
+master-bin.000001 # Query # # CREATE DATABASE test_rpl_1 CHARACTER SET utf8 COLLATE utf8_general_ci
+master-bin.000001 # Query # # ALTER DATABASE test_rpl_1 CHARACTER SET latin1 COLLATE latin1_general_ci
+master-bin.000001 # Query # # DROP DATABASE test_rpl_1
+master-bin.000001 # Query # # CREATE DATABASE test_rpl CHARACTER SET utf8 COLLATE utf8_general_ci
+master-bin.000001 # Query # # ALTER DATABASE test_rpl CHARACTER SET latin1 COLLATE latin1_swedish_ci
+master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t0 (a int auto_increment not null, c int not null, PRIMARY KEY(a), KEY index2 (c)) ENGINE=innodb
+master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP INDEX index2
+master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD COLUMN b char(254)
+master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 ADD INDEX index1 (b)
+master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t0 DROP COLUMN c
+master-bin.000001 # Query # # use `test_rpl`; RENAME TABLE t0 TO t1
+master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 LIKE t1
+master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 ADD COLUMN d datetime
+master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index2 on t2 (d)
+master-bin.000001 # Query # # use `test_rpl`; CREATE INDEX index3 on t2 (a, d)
+master-bin.000001 # Query # # use `test_rpl`; ALTER TABLE t2 DROP COLUMN d
drop database test_rpl;
diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
index 58b9d445037..35f4cd3ecbb 100644
--- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
+++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
@@ -750,7 +750,7 @@ test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL ENABLED 1 latin1 lat
USE test_rpl;
SHOW EVENTS;
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
-test_rpl e2 @ SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
+test_rpl e2 root@localhost SYSTEM RECURRING NULL 1 # # NULL SLAVESIDE_DISABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
==========MASTER==========
SELECT COUNT(*) FROM t1;
COUNT(*)
@@ -830,278 +830,277 @@ DELETE FROM t2;
******************** SHOW BINLOG EVENTS ********************
-show binlog events from 1;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: #
-master-bin.000001 # Query 1 # CREATE DATABASE test_rpl
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t2)
-master-bin.000001 # Delete_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 SELECT * FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 WHERE a = 2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Begin_load_query 1 # ;file_id=#;block_len=#
-master-bin.000001 # Execute_load_query 1 # use `test_rpl`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data/rpl_mixed.dat' INTO TABLE `t1` FIELDS TERMINATED BY '|' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, `b`) ;file_id=#
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text 3')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
-master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text 33'
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; TRUNCATE t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test'
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (1, 'start')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before savepoint s1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2')
-master-bin.000001 # Query 1 # SAVEPOINT s2
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2')
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 7
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111'
-master-bin.000001 # Query 1 # use `test_rpl`; GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost'
-master-bin.000001 # Query 1 # use `test_rpl`; REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost'
-master-bin.000001 # Query 1 # use `test_rpl`; SET PASSWORD FOR 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000'
-master-bin.000001 # Query 1 # use `test_rpl`; RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost'
-master-bin.000001 # Query 1 # use `test_rpl`; DROP USER 'user_test_rpl_2'@'localhost'
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; ANALYZE TABLE t1
-master-bin.000001 # Query 1 # use `test_rpl`; OPTIMIZE TABLE t1
-master-bin.000001 # Query 1 # use `test_rpl`; REPAIR TABLE t1
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
+master-bin.000001 # Query # # CREATE DATABASE test_rpl
+master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t1 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb
+master-bin.000001 # Query # # use `test_rpl`; CREATE TABLE t2 (a int auto_increment not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t2)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2 WHERE a = 2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
+master-bin.000001 # Execute_load_query # # use `test_rpl`; LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data/rpl_mixed.dat' INTO TABLE `t1` FIELDS TERMINATED BY '|' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (`a`, `b`) ;file_id=#
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text 2')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text 3')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text 11')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t1)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text 33'
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; TRUNCATE t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text 1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated' WHERE a = 1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b = 'test'
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (1, 'start')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (3, 'before savepoint s1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (5, 'before savepoint s2')
+master-bin.000001 # Query # # SAVEPOINT s2
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES (6, 'after savepoint s2')
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 7
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; CREATE USER 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD '*1111111111111111111111111111111111111111'
+master-bin.000001 # Query # # use `test_rpl`; GRANT SELECT ON *.* TO 'user_test_rpl'@'localhost'
+master-bin.000001 # Query # # use `test_rpl`; REVOKE SELECT ON *.* FROM 'user_test_rpl'@'localhost'
+master-bin.000001 # Query # # use `test_rpl`; SET PASSWORD FOR 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000'
+master-bin.000001 # Query # # use `test_rpl`; RENAME USER 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost'
+master-bin.000001 # Query # # use `test_rpl`; DROP USER 'user_test_rpl_2'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; ANALYZE TABLE t1
+master-bin.000001 # Query # # use `test_rpl`; OPTIMIZE TABLE t1
+master-bin.000001 # Query # # use `test_rpl`; REPAIR TABLE t1
+master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
BEGIN
UPDATE t1 SET b = 'test' WHERE a = 201;
END
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`()
+master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`()
BEGIN
UPDATE t1 SET b = UUID() WHERE a = 202;
END
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a = 201
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
-master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 202
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1'
-master-bin.000001 # Query 1 # use `test_rpl`; DROP PROCEDURE p1
-master-bin.000001 # Query 1 # use `test_rpl`; DROP PROCEDURE p2
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test 201')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a = 201
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test 202')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t1)
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1 WHERE a = 202
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1'
+master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p1
+master-bin.000001 # Query # # use `test_rpl`; DROP PROCEDURE p2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` TRIGGER tr1 BEFORE INSERT ON t1
FOR EACH ROW BEGIN
INSERT INTO t2 SET a = NEW.a, b = NEW.b;
END
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
-master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t2)
-master-bin.000001 # Write_rows 1 # table_id: #
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; DROP TRIGGER tr1
-master-bin.000001 # Query 1 # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'localhost'
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2
-master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2')
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1
-master-bin.000001 # Query 1 # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID()
-master-bin.000001 # Query 1 # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2
-master-bin.000001 # Query 1 # use `test_rpl`; DROP VIEW v1
-master-bin.000001 # Query 1 # use `test_rpl`; DROP VIEW v2
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
-master-bin.000001 # Xid 1 # #
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
-master-bin.000001 # Xid 1 # #
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t1)
+master-bin.000001 # Table_map # # table_id: # (test_rpl.t2)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; DROP TRIGGER tr1
+master-bin.000001 # Query # # use `test_rpl`; GRANT EVENT ON *.* TO 'root'@'localhost'
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; CREATE DEFINER=`root`@`localhost` EVENT e1 ON SCHEDULE EVERY '1' SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
+master-bin.000001 # Query # # use `test_rpl`; ALTER EVENT e1 RENAME TO e2
+master-bin.000001 # Query # # use `test_rpl`; DROP EVENT e2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1
+master-bin.000001 # Query # # use `test_rpl`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS SELECT * FROM t1 WHERE b <> UUID()
+master-bin.000001 # Query # # use `test_rpl`; ALTER ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2
+master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v1
+master-bin.000001 # Query # # use `test_rpl`; DROP VIEW v2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test_rpl`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
drop database test_rpl;
diff --git a/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
index 75180334c28..daefee9c669 100644
--- a/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
+++ b/mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
@@ -11,45 +11,7 @@ SELECT * FROM t1;
a b
1 10
2 2
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1105
-Last_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10'
-Skip_Counter 0
-Exec_Master_Log_Pos 246
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 1105
-Last_SQL_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10'
+Last_SQL_Error = Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10'
SELECT * FROM t1;
a b
stop slave;
@@ -94,49 +56,7 @@ id field_1 field_2 field_3
4 4 d 4d
5 5 e 5e
6 6 f 6f
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1105
-Last_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3)
-SELECT t2.field_a, t2.field_b, t2.field_c
-FROM t2
-ON DUPLICATE KEY UPDATE
-t1.field_3 = t2.field_c'
-Skip_Counter 0
-Exec_Master_Log_Pos 1278
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno 0
-Last_IO_Error
-Last_SQL_Errno 1105
-Last_SQL_Error Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3)
+Last_SQL_Error = Error 'master may suffer from http://bugs.mysql.com/bug.php?id=24432 so slave stops; check error log on slave for more info' on query. Default database: 'test'. Query: 'INSERT INTO t1 (field_1, field_2, field_3)
SELECT t2.field_a, t2.field_b, t2.field_c
FROM t2
ON DUPLICATE KEY UPDATE
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
index ba0aa847cf7..9acc1ad93ac 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
@@ -6,85 +6,9 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,10);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 290
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 290
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 560
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1593
-Last_Error Fatal error: Not enough memory
-Skip_Counter 0
-Exec_Master_Log_Pos 325
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1593
-Last_SQL_Error Fatal error: Not enough memory
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Fatal error: Not enough memory
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-START SLAVE;
+include/start_slave.inc
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result
index 85fa4c10eac..3a52029fa4e 100644
--- a/mysql-test/suite/rpl/r/rpl_log_pos.result
+++ b/mysql-test/suite/rpl/r/rpl_log_pos.result
@@ -4,92 +4,18 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+create table if not exists t1 (n int);
+drop table t1;
call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary");
+call mtr.add_suppression ("Error in Log_event::read_log_event");
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
include/stop_slave.inc
-change master to master_log_pos=75;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+change master to master_log_pos=MASTER_LOG_POS;
start slave;
+Last_IO_Error = Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master'
include/stop_slave.inc
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 75
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 75
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
@@ -97,7 +23,7 @@ create table if not exists t1 (n int);
drop table if exists t1;
create table t1 (n int);
insert into t1 values (1),(2),(3);
-change master to master_log_pos=4;
+change master to master_log_pos=MASTER_LOG_POS;
start slave;
select * from t1 ORDER BY n;
n
diff --git a/mysql-test/suite/rpl/r/rpl_packet.result b/mysql-test/suite/rpl/r/rpl_packet.result
index 0a9495751fe..1ec9259a1fb 100644
--- a/mysql-test/suite/rpl/r/rpl_packet.result
+++ b/mysql-test/suite/rpl/r/rpl_packet.result
@@ -49,6 +49,14 @@ Slave_IO_Running = No (expect No)
SELECT "Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master'" AS Last_IO_Error;
Last_IO_Error
Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master'
+STOP SLAVE;
+RESET SLAVE;
+RESET MASTER;
+SET @max_allowed_packet_0= @@session.max_allowed_packet;
+SHOW BINLOG EVENTS;
+SET @max_allowed_packet_1= @@session.max_allowed_packet;
+SHOW BINLOG EVENTS;
+SET @max_allowed_packet_2= @@session.max_allowed_packet;
==== clean up ====
DROP TABLE t1;
SET @@global.max_allowed_packet= 1024;
diff --git a/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result b/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
index 2e707fb62c1..6bb9b139057 100644
--- a/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
+++ b/mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
@@ -14,63 +14,22 @@ MIXED MIXED
CREATE TABLE t1 (a INT, b LONG);
INSERT INTO t1 VALUES (1,1), (2,2);
INSERT INTO t1 VALUES (3,UUID()), (4,UUID());
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (a INT, b LONG)
-master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Query 1 # COMMIT
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
**** On Slave ****
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 594
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 594
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert #
-Last_IO_Errno #
-Last_IO_Error
-Last_SQL_Errno 0
-Last_SQL_Error
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (a INT, b LONG)
-slave-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
-slave-bin.000001 # Query 1 # BEGIN
-slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
+slave-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query # # COMMIT
DROP TABLE IF EXISTS t1;
SET @@global.binlog_format= @old_binlog_format;
diff --git a/mysql-test/suite/rpl/r/rpl_replicate_do.result b/mysql-test/suite/rpl/r/rpl_replicate_do.result
index 33088ee2ec8..637047a883b 100644
--- a/mysql-test/suite/rpl/r/rpl_replicate_do.result
+++ b/mysql-test/suite/rpl/r/rpl_replicate_do.result
@@ -26,45 +26,7 @@ n
select * from t11;
ERROR 42S02: Table 'test.t11' doesn't exist
drop table if exists t1,t2,t11;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
Replicate_Do_Table test.t1
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
create table t1 (ts timestamp);
set one_shot time_zone='met';
insert into t1 values('2005-08-12 00:00:00');
diff --git a/mysql-test/suite/rpl/r/rpl_rotate_logs.result b/mysql-test/suite/rpl/r/rpl_rotate_logs.result
index 013ba87ec0b..b50c7cebcab 100644
--- a/mysql-test/suite/rpl/r/rpl_rotate_logs.result
+++ b/mysql-test/suite/rpl/r/rpl_rotate_logs.result
@@ -14,45 +14,9 @@ create temporary table temp_table (a char(80) not null);
insert into temp_table values ("testing temporary tables");
create table t1 (s text);
insert into t1 values('Could not break slave'),('Tried hard');
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 60
Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
select * from t1;
s
Could not break slave
@@ -93,45 +57,9 @@ show binary logs;
Log_name File_size
master-bin.000003 #
insert into t2 values (65);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 60
Master_Log_File master-bin.000003
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
Relay_Master_Log_File master-bin.000003
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
select * from t2;
m
34
@@ -157,45 +85,9 @@ master-bin.000005 # <Binlog_Do_DB> <Binlog_Ignore_DB>
select * from t4;
a
testing temporary tables part 2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 60
Master_Log_File master-bin.000005
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
Relay_Master_Log_File master-bin.000005
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
lock tables t3 read;
select count(*) from t3 where n >= 4;
count(*)
diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-master.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs-slave.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
index 7920b9a981d..458ae53e79c 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
@@ -56,14 +56,13 @@ DELETE FROM t1;
INSERT INTO t1 VALUES (1),(2);
DELETE FROM t1 WHERE a = 0;
UPDATE t1 SET a=99 WHERE a = 0;
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 192 use `test`; CREATE TABLE t1 (a INT)
-master-bin.000001 192 Query 1 260 BEGIN
-master-bin.000001 260 Table_map 1 301 table_id: # (test.t1)
-master-bin.000001 301 Write_rows 1 340 table_id: # flags: STMT_END_F
-master-bin.000001 340 Query 1 409 COMMIT
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
DROP TABLE t1;
================ Test for BUG#17620 ================
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
index a980092ac37..a247c3a6039 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
@@ -436,8 +436,7 @@ DELETE FROM t1;
SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
COUNT(*) 0
set @@global.slave_exec_mode= default;
-Last_SQL_Error
-
+Checking that both slave threads are running.
SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
COUNT(*) 0
**** Test for BUG#37076 ****
@@ -487,8 +486,7 @@ Comparing tables master:test.t2 and slave:test.t2
[expecting slave to stop]
INSERT INTO t3 VALUES (1, "", 1);
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -500,8 +498,7 @@ Comparing tables master:test.t4 and slave:test.t4
[expecting slave to stop]
INSERT INTO t5 VALUES (1, "", 1);
INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -509,8 +506,7 @@ START SLAVE;
[expecting slave to stop]
INSERT INTO t6 VALUES (1, "", 1);
INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
index ea0c322fe6d..fefe8e969dc 100644
--- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
@@ -436,8 +436,7 @@ DELETE FROM t1;
SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
COUNT(*) 0
set @@global.slave_exec_mode= default;
-Last_SQL_Error
-
+Checking that both slave threads are running.
SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
COUNT(*) 0
**** Test for BUG#37076 ****
@@ -487,8 +486,7 @@ Comparing tables master:test.t2 and slave:test.t2
[expecting slave to stop]
INSERT INTO t3 VALUES (1, "", 1);
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -500,8 +498,7 @@ Comparing tables master:test.t4 and slave:test.t4
[expecting slave to stop]
INSERT INTO t5 VALUES (1, "", 1);
INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -509,8 +506,7 @@ START SLAVE;
[expecting slave to stop]
INSERT INTO t6 VALUES (1, "", 1);
INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl/r/rpl_row_colSize.result b/mysql-test/suite/rpl/r/rpl_row_colSize.result
index 6d002a722f1..417bc65641a 100644
--- a/mysql-test/suite/rpl/r/rpl_row_colSize.result
+++ b/mysql-test/suite/rpl/r/rpl_row_colSize.result
@@ -18,45 +18,7 @@ CREATE TABLE t1 (a DECIMAL(20, 10));
RESET MASTER;
INSERT INTO t1 VALUES (901251.90125);
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -72,45 +34,7 @@ CREATE TABLE t1 (a DECIMAL(27, 18));
RESET MASTER;
INSERT INTO t1 VALUES (901251.90125);
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 12, test.t1 on slave has size 12. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 12, test.t1 on slave has size 12. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 12, test.t1 on slave has size 12. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -126,45 +50,7 @@ CREATE TABLE t1 (a NUMERIC(20, 10));
RESET MASTER;
INSERT INTO t1 VALUES (901251.90125);
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 10, test.t1 on slave has size 3. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -181,45 +67,7 @@ CREATE TABLE t1 (a FLOAT(47));
RESET MASTER;
INSERT INTO t1 VALUES (901251.90125);
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 5, test.t1 has type 4
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 5, test.t1 has type 4
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 5, test.t1 has type 4
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -236,45 +84,7 @@ CREATE TABLE t1 (a BIT(64));
RESET MASTER;
INSERT INTO t1 VALUES (B'10101');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 8, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 8, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 8, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -290,45 +100,7 @@ CREATE TABLE t1 (a BIT(12));
RESET MASTER;
INSERT INTO t1 VALUES (B'10101');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 2. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 2. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 2. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -345,45 +117,7 @@ CREATE TABLE t1 (a SET('1','2','3','4','5','6','7','8','9'));
RESET MASTER;
INSERT INTO t1 VALUES ('4');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -400,45 +134,7 @@ CREATE TABLE t1 (a CHAR(20));
RESET MASTER;
INSERT INTO t1 VALUES ('This is a test.');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, test.t1 on slave has size 11. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, test.t1 on slave has size 11. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 20, test.t1 on slave has size 11. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -486,45 +182,7 @@ CREATE TABLE t1 (a ENUM(
RESET MASTER;
INSERT INTO t1 VALUES ('44');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -541,45 +199,7 @@ CREATE TABLE t1 (a VARCHAR(2000));
RESET MASTER;
INSERT INTO t1 VALUES ('This is a test.');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 100. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 100. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 100. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -595,45 +215,7 @@ CREATE TABLE t1 (a VARCHAR(200));
RESET MASTER;
INSERT INTO t1 VALUES ('This is a test.');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 200, test.t1 on slave has size 10. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 200, test.t1 on slave has size 10. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 200, test.t1 on slave has size 10. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -649,45 +231,7 @@ CREATE TABLE t1 (a VARCHAR(2000));
RESET MASTER;
INSERT INTO t1 VALUES ('This is a test.');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 1000. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 1000. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 2000, test.t1 on slave has size 1000. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
@@ -704,45 +248,7 @@ CREATE TABLE t1 (a LONGBLOB);
RESET MASTER;
INSERT INTO t1 VALUES ('This is a test.');
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 4, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 size mismatch - master has size 4, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 size mismatch - master has size 4, test.t1 on slave has size 1. Master's column size should be <= the slave's column size.
SELECT COUNT(*) FROM t1;
COUNT(*)
0
diff --git a/mysql-test/suite/rpl/r/rpl_row_create_table.result b/mysql-test/suite/rpl/r/rpl_row_create_table.result
index 8a1b7a805aa..e480ff3dfe9 100644
--- a/mysql-test/suite/rpl/r/rpl_row_create_table.result
+++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result
@@ -13,31 +13,12 @@ CREATE TABLE t1 (a INT, b INT);
CREATE TABLE t2 (a INT, b INT) ENGINE=Merge;
CREATE TABLE t3 (a INT, b INT) CHARSET=utf8;
CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8;
-SHOW BINLOG EVENTS FROM 106;
-Log_name #
-Pos 106
-Event_type Query
-Server_id #
-End_log_pos 199
-Info use `test`; CREATE TABLE t1 (a INT, b INT)
-Log_name #
-Pos 199
-Event_type Query
-Server_id #
-End_log_pos 305
-Info use `test`; CREATE TABLE t2 (a INT, b INT) ENGINE=Merge
-Log_name #
-Pos 305
-Event_type Query
-Server_id #
-End_log_pos 411
-Info use `test`; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8
-Log_name #
-Pos 411
-Event_type Query
-Server_id #
-End_log_pos 530
-Info use `test`; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b INT)
+master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a INT, b INT) ENGINE=Merge
+master-bin.000001 # Query # # use `test`; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8
+master-bin.000001 # Query # # use `test`; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8
**** On Master ****
SHOW CREATE TABLE t1;
Table t1
@@ -137,7 +118,7 @@ RESET MASTER;
include/start_slave.inc
CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3;
ERROR 23000: Duplicate entry '2' for key 'b'
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
CREATE TABLE t7 (a INT, b INT UNIQUE);
INSERT INTO t7 SELECT a,b FROM tt3;
@@ -147,13 +128,13 @@ a b
1 2
2 4
3 6
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-# 106 Query # 206 use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE)
-# 206 Query # 274 BEGIN
-# 274 Table_map # 316 table_id: # (test.t7)
-# 316 Write_rows # 372 table_id: # flags: STMT_END_F
-# 372 Query # 443 ROLLBACK
+master-bin.000001 # Query # # use `test`; CREATE TABLE t7 (a INT, b INT UNIQUE)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
SELECT * FROM t7 ORDER BY a,b;
a b
1 2
@@ -171,12 +152,12 @@ INSERT INTO t7 SELECT a,b FROM tt4;
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-# 106 Query # 174 BEGIN
-# 174 Table_map # 216 table_id: # (test.t7)
-# 216 Write_rows # 272 table_id: # flags: STMT_END_F
-# 272 Query # 341 COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
SELECT * FROM t7 ORDER BY a,b;
a b
1 2
@@ -216,10 +197,10 @@ Create Table CREATE TABLE `t9` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-# 106 Query # 192 use `test`; CREATE TABLE t8 LIKE t4
-# 192 Query # 331 use `test`; CREATE TABLE `t9` (
+master-bin.000001 # Query # # use `test`; CREATE TABLE t8 LIKE t4
+master-bin.000001 # Query # # use `test`; CREATE TABLE `t9` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
)
@@ -289,38 +270,38 @@ a
1
2
3
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-# 106 Query # 192 use `test`; CREATE TABLE t1 (a INT)
-# 192 Query # 260 BEGIN
-# 260 Table_map # 301 table_id: # (test.t1)
-# 301 Write_rows # 345 table_id: # flags: STMT_END_F
-# 345 Query # 414 COMMIT
-# 414 Query # 482 BEGIN
-# 482 Query # 607 use `test`; CREATE TABLE `t2` (
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB
-# 607 Table_map # 648 table_id: # (test.t2)
-# 648 Write_rows # 692 table_id: # flags: STMT_END_F
-# 692 Xid # 719 COMMIT /* XID */
-# 719 Query # 787 BEGIN
-# 787 Query # 912 use `test`; CREATE TABLE `t3` (
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `t3` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB
-# 912 Table_map # 953 table_id: # (test.t3)
-# 953 Write_rows # 997 table_id: # flags: STMT_END_F
-# 997 Xid # 1024 COMMIT /* XID */
-# 1024 Query # 1092 BEGIN
-# 1092 Query # 1217 use `test`; CREATE TABLE `t4` (
+master-bin.000001 # Table_map # # table_id: # (test.t3)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; CREATE TABLE `t4` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB
-# 1217 Table_map # 1258 table_id: # (test.t4)
-# 1258 Write_rows # 1302 table_id: # flags: STMT_END_F
-# 1302 Xid # 1329 COMMIT /* XID */
-# 1329 Query # 1397 BEGIN
-# 1397 Table_map # 1438 table_id: # (test.t1)
-# 1438 Write_rows # 1482 table_id: # flags: STMT_END_F
-# 1482 Query # 1551 COMMIT
+master-bin.000001 # Table_map # # table_id: # (test.t4)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
SHOW TABLES;
Tables_in_test
t1
@@ -374,20 +355,20 @@ a
4
6
9
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-# 106 Query # 192 use `test`; CREATE TABLE t1 (a INT)
-# 192 Query # 260 BEGIN
-# 260 Table_map # 301 table_id: # (test.t1)
-# 301 Write_rows # 345 table_id: # flags: STMT_END_F
-# 345 Query # 414 COMMIT
-# 414 Query # 514 use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB
-# 514 Query # 582 BEGIN
-# 582 Table_map # 623 table_id: # (test.t2)
-# 623 Write_rows # 667 table_id: # flags: STMT_END_F
-# 667 Table_map # 708 table_id: # (test.t2)
-# 708 Write_rows # 747 table_id: # flags: STMT_END_F
-# 747 Xid # 774 COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a INT) ENGINE=INNODB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
SELECT * FROM t2 ORDER BY a;
a
1
@@ -413,14 +394,14 @@ Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
SELECT * FROM t2 ORDER BY a;
a
-SHOW BINLOG EVENTS FROM 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-# 106 Query # 174 BEGIN
-# 174 Table_map # 215 table_id: # (test.t2)
-# 215 Write_rows # 259 table_id: # flags: STMT_END_F
-# 259 Table_map # 300 table_id: # (test.t2)
-# 300 Write_rows # 339 table_id: # flags: STMT_END_F
-# 339 Query # 410 ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
SELECT * FROM t2 ORDER BY a;
a
DROP TABLE t1,t2;
diff --git a/mysql-test/suite/rpl/r/rpl_row_drop.result b/mysql-test/suite/rpl/r/rpl_row_drop.result
index 89654ebf165..048e07271b3 100644
--- a/mysql-test/suite/rpl/r/rpl_row_drop.result
+++ b/mysql-test/suite/rpl/r/rpl_row_drop.result
@@ -41,12 +41,11 @@ t1
t2
**** On Master ****
DROP TABLE t1,t2;
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 192 use `test`; CREATE TABLE t1 (a int)
-master-bin.000001 192 Query 1 278 use `test`; CREATE TABLE t2 (a int)
-master-bin.000001 278 Query 1 382 use `test`; DROP TABLE `t1` /* generated by server */
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a int)
+master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int)
+master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
SHOW TABLES;
Tables_in_test
t2
diff --git a/mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result b/mysql-test/suite/rpl/r/rpl_row_find_row.result
index 01e3dfd6508..69516b47b7d 100644
--- a/mysql-test/suite/rpl/r/rpl_row_disabled_slave_key.result
+++ b/mysql-test/suite/rpl/r/rpl_row_find_row.result
@@ -24,3 +24,15 @@ INSERT INTO t VALUES (1,2,4);
INSERT INTO t VALUES (4,3,4);
DELETE FROM t;
DROP TABLE t;
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 INT NOT NULL, c2 INT NOT NULL, c3 INT, UNIQUE KEY(c1,c3), KEY(c2));
+INSERT INTO t1(c1,c2) VALUES(1,1);
+INSERT INTO t1(c1,c2) VALUES(1,2);
+UPDATE t1 SET c1=1000 WHERE c2=2;
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
index 18a5dbfccc1..fe2fb1d9da2 100644
--- a/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
+++ b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
@@ -12,16 +12,12 @@ create table t4 (a int);
insert into t4 select * from t3;
rename table t1 to t5, t2 to t1;
flush no_write_to_binlog tables;
-SHOW BINLOG EVENTS FROM 925 ;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1
+master-bin.000001 # Query # # use `test`; rename table t1 to t5, t2 to t1
select * from t3;
a
flush tables;
-SHOW BINLOG EVENTS FROM 925 ;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1
-master-bin.000001 # Query 1 # use `test`; flush tables
select * from t3;
a
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_row_log.result b/mysql-test/suite/rpl/r/rpl_row_log.result
index 9593b009d1f..0f648539c47 100644
--- a/mysql-test/suite/rpl/r/rpl_row_log.result
+++ b/mysql-test/suite/rpl/r/rpl_row_log.result
@@ -7,7 +7,7 @@ start slave;
include/stop_slave.inc
reset master;
reset slave;
-start slave;
+include/start_slave.inc
create table t1(n int not null auto_increment primary key)ENGINE=MyISAM;
insert into t1 values (NULL);
drop table t1;
@@ -16,30 +16,29 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines;
select count(*) from t1;
count(*)
69
-show binlog events;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Query 1 # COMMIT
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Query 1 # COMMIT
-show binlog events from 106 limit 1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-show binlog events from 106 limit 2;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+show binlog events from <binlog_start> limit 2;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-master-bin.000001 # Query 1 # BEGIN
-show binlog events from 106 limit 2,1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+master-bin.000001 # Query # # BEGIN
+show binlog events from <binlog_start> limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
flush logs;
create table t3 (a int)ENGINE=MyISAM;
select * from t1 order by 1 asc;
@@ -203,15 +202,14 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Rotate # # master-bin.000002;pos=4
-show binlog events in 'master-bin.000002';
+show binlog events in 'master-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM
-master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM
-master-bin.000002 # Query 1 # BEGIN
-master-bin.000002 # Table_map 1 # table_id: # (test.t2)
-master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000002 # Query 1 # COMMIT
+master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM
+master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM
+master-bin.000002 # Query # # BEGIN
+master-bin.000002 # Table_map # # table_id: # (test.t2)
+master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000002 # Query # # COMMIT
show binary logs;
Log_name File_size
master-bin.000001 #
@@ -220,69 +218,29 @@ show binary logs;
Log_name File_size
slave-bin.000001 #
slave-bin.000002 #
-show binlog events in 'slave-bin.000001' from 4;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-slave-bin.000001 # Query 1 # BEGIN
-slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Query 1 # COMMIT
-slave-bin.000001 # Query 1 # use `test`; drop table t1
-slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
-slave-bin.000001 # Query 1 # BEGIN
-slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Query 1 # COMMIT
-slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM
-slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
-show binlog events in 'slave-bin.000002' from 4;
+slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # use `test`; drop table t1
+slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM
+slave-bin.000001 # Rotate # # slave-bin.000002;pos=4
+show binlog events in 'slave-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM
-slave-bin.000002 # Query 1 # BEGIN
-slave-bin.000002 # Table_map 1 # table_id: # (test.t2)
-slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000002 # Query 1 # COMMIT
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000002
-Read_Master_Log_Pos 516
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000002
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 516
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM
+slave-bin.000002 # Query # # BEGIN
+slave-bin.000002 # Table_map # # table_id: # (test.t2)
+slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000002 # Query # # COMMIT
+Checking that both slave threads are running.
show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
index 8526bad558b..ff189e676cc 100644
--- a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
@@ -7,7 +7,7 @@ start slave;
include/stop_slave.inc
reset master;
reset slave;
-start slave;
+include/start_slave.inc
create table t1(n int not null auto_increment primary key)ENGINE=InnoDB;
insert into t1 values (NULL);
drop table t1;
@@ -16,30 +16,29 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines;
select count(*) from t1;
count(*)
69
-show binlog events;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # COMMIT /* XID */
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Xid 1 # COMMIT /* XID */
-show binlog events from 106 limit 1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
-show binlog events from 106 limit 2;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
+show binlog events from <binlog_start> limit 2;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
-master-bin.000001 # Query 1 # BEGIN
-show binlog events from 106 limit 2,1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
+master-bin.000001 # Query # # BEGIN
+show binlog events from <binlog_start> limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
flush logs;
create table t3 (a int)ENGINE=InnoDB;
select * from t1 order by 1 asc;
@@ -203,15 +202,14 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Rotate # # master-bin.000002;pos=4
-show binlog events in 'master-bin.000002';
+show binlog events in 'master-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB
-master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB
-master-bin.000002 # Query 1 # BEGIN
-master-bin.000002 # Table_map 1 # table_id: # (test.t2)
-master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000002 # Xid 1 # COMMIT /* XID */
+master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=InnoDB
+master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=InnoDB
+master-bin.000002 # Query # # BEGIN
+master-bin.000002 # Table_map # # table_id: # (test.t2)
+master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000002 # Xid # # COMMIT /* XID */
show binary logs;
Log_name File_size
master-bin.000001 #
@@ -220,69 +218,29 @@ show binary logs;
Log_name File_size
slave-bin.000001 #
slave-bin.000002 #
-show binlog events in 'slave-bin.000001' from 4;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
-slave-bin.000001 # Query 1 # BEGIN
-slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Xid 1 # COMMIT /* XID */
-slave-bin.000001 # Query 1 # use `test`; drop table t1
-slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
-slave-bin.000001 # Query 1 # BEGIN
-slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Xid 1 # COMMIT /* XID */
-slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB
-slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
-show binlog events in 'slave-bin.000002' from 4;
+slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Xid # # COMMIT /* XID */
+slave-bin.000001 # Query # # use `test`; drop table t1
+slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=InnoDB
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Xid # # COMMIT /* XID */
+slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=InnoDB
+slave-bin.000001 # Rotate # # slave-bin.000002;pos=4
+show binlog events in 'slave-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB
-slave-bin.000002 # Query 1 # BEGIN
-slave-bin.000002 # Table_map 1 # table_id: # (test.t2)
-slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000002 # Xid 1 # COMMIT /* XID */
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000002
-Read_Master_Log_Pos 474
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000002
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 474
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=InnoDB
+slave-bin.000002 # Query # # BEGIN
+slave-bin.000002 # Table_map # # table_id: # (test.t2)
+slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000002 # Xid # # COMMIT /* XID */
+Checking that both slave threads are running.
show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result
index 2215b34814e..db06cb6d3de 100644
--- a/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result
+++ b/mysql-test/suite/rpl/r/rpl_row_max_relay_size.result
@@ -21,45 +21,7 @@ select @@global.max_relay_log_size;
@@global.max_relay_log_size
4096
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 2
#
@@ -69,45 +31,7 @@ set global max_relay_log_size=(5*4096);
select @@global.max_relay_log_size;
@@global.max_relay_log_size 20480
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 3: max_relay_log_size = 0
#
@@ -117,90 +41,13 @@ set global max_relay_log_size=0;
select @@global.max_relay_log_size;
@@global.max_relay_log_size 0
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
#
stop slave;
reset slave;
flush logs;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
#
# Test 5
#
@@ -208,89 +55,13 @@ reset slave;
start slave;
flush logs;
create table t1 (a int);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
#
flush logs;
drop table t1;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
diff --git a/mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result b/mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result
new file mode 100644
index 00000000000..c461cafbd7c
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result
@@ -0,0 +1,46 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+## case #1 - last_null_bit_pos==0 in record_compare without X bit
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 );
+INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 );
+UPDATE t1 SET c5 = 'a';
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
+## case #1.1 - last_null_bit_pos==0 in record_compare with X bit
+## (1 column less and no varchar)
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 );
+INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 );
+UPDATE t1 SET c5 = 'a';
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
+## case #2 - X bit is wrongly set.
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=InnoDB DEFAULT CHARSET= latin1;
+INSERT INTO t1(c1) VALUES (10);
+INSERT INTO t1(c1) VALUES (NULL);
+UPDATE t1 SET c1= 0;
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result b/mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result
new file mode 100644
index 00000000000..38fbe486d2e
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result
@@ -0,0 +1,60 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+## case #1 - last_null_bit_pos==0 in record_compare without X bit
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 varchar(1) DEFAULT '', c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0, c8 bigint(20) DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 );
+INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 );
+UPDATE t1 SET c5 = 'a';
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
+## case #1.1 - last_null_bit_pos==0 in record_compare with X bit
+## (1 column less and no varchar)
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bigint(20) DEFAULT 0, c3 bigint(20) DEFAULT 0, c4 bigint(20) DEFAULT 0, c5 bigint(20) DEFAULT 0, c6 bigint(20) DEFAULT 0, c7 bigint(20) DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+INSERT INTO t1 ( c5, c6 ) VALUES ( 1 , 35 );
+INSERT INTO t1 ( c5, c6 ) VALUES ( NULL, 35 );
+UPDATE t1 SET c5 = 'a';
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
+## case #2 - X bit is wrongly set.
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 int, c2 varchar(1) default '') ENGINE=MyISAM DEFAULT CHARSET= latin1;
+INSERT INTO t1(c1) VALUES (10);
+INSERT INTO t1(c1) VALUES (NULL);
+UPDATE t1 SET c1= 0;
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
+## coverage purposes - Field_bits
+## 1 X bit + 2 Null bits + 5 bits => last_null_bit_pos==0
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bit(5)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+INSERT INTO t1(c1,c2) VALUES (10, b'1');
+INSERT INTO t1(c1,c2) VALUES (NULL, b'1');
+UPDATE t1 SET c1= 0;
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
index fa40d8760a8..7bf09df31ca 100644
--- a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
@@ -4,196 +4,37 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
-change master to master_user='test';
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/stop_slave.inc
+change master to master_user='test';
Master_User test
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-reset slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+reset slave;
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/start_slave.inc
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
+Master_Host 127.0.0.1
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
create temporary table t1 (a int);
-stop slave;
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
Slave_open_temp_tables 0
-stop slave;
+include/stop_slave.inc
reset slave;
-*** errno must be zero: 0 ***
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
change master to master_user='root';
include/start_slave.inc
-*** last errno must be zero: 0 ***
-*** last error must be blank: ***
include/stop_slave.inc
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
reset slave;
-*** io last errno must be zero: 0 ***
-*** io last error must be blank: ***
-*** sql last errno must be zero: 0 ***
-*** sql last error must be blank: ***
diff --git a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
index bb9865ab2d1..2b83bffd85f 100644
--- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
@@ -118,214 +118,27 @@ a b
SELECT * FROM t2;
a
2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 0
-Last_SQL_Error <Last_SQL_Error>
+Checking that both slave threads are running.
INSERT INTO t9 VALUES (4);
INSERT INTO t4 VALUES (4);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 1535
-Last_SQL_Error <Last_SQL_Error>
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
INSERT INTO t9 VALUES (5);
INSERT INTO t5 VALUES (5,10,25);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 1535
-Last_SQL_Error <Last_SQL_Error>
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
INSERT INTO t9 VALUES (6);
INSERT INTO t6 VALUES (6,12,36);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 1535
-Last_SQL_Error <Last_SQL_Error>
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
INSERT INTO t9 VALUES (6);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 0
-Last_SQL_Error <Last_SQL_Error>
+Checking that both slave threads are running.
INSERT INTO t7 VALUES (1),(2),(3);
INSERT INTO t8 VALUES (1),(2),(3);
SELECT * FROM t7 ORDER BY a;
diff --git a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
index f606a28c2d9..a42530c354d 100644
--- a/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
@@ -118,214 +118,27 @@ a b
SELECT * FROM t2;
a
2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 0
-Last_SQL_Error <Last_SQL_Error>
+Checking that both slave threads are running.
INSERT INTO t9 VALUES (4);
INSERT INTO t4 VALUES (4);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 1535
-Last_SQL_Error <Last_SQL_Error>
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 3, test.t4 has type 4
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
INSERT INTO t9 VALUES (5);
INSERT INTO t5 VALUES (5,10,25);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 1535
-Last_SQL_Error <Last_SQL_Error>
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 type mismatch - received type 3, test.t5 has type 4
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
INSERT INTO t9 VALUES (6);
INSERT INTO t6 VALUES (6,12,36);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 1535
-Last_SQL_Error <Last_SQL_Error>
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 3, test.t6 has type 4
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
INSERT INTO t9 VALUES (6);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 0
-Last_SQL_Error <Last_SQL_Error>
+Checking that both slave threads are running.
INSERT INTO t7 VALUES (1),(2),(3);
INSERT INTO t8 VALUES (1),(2),(3);
SELECT * FROM t7 ORDER BY a;
diff --git a/mysql-test/suite/rpl/r/rpl_row_until.result b/mysql-test/suite/rpl/r/rpl_row_until.result
index ad54450af74..81aeb0d645b 100644
--- a/mysql-test/suite/rpl/r/rpl_row_until.result
+++ b/mysql-test/suite/rpl/r/rpl_row_until.result
@@ -20,188 +20,32 @@ n
2
3
4
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos MASTER_POS_DROP_T1
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos MASTER_POS_DROP_T1
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=291;
+START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
SELECT * FROM t1;
n
1
2
3
4
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos MASTER_POS_DROP_T1
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-no-such-bin.000001
-Until_Log_Pos 291
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2
SELECT * FROM t2;
n
1
2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos MASTER_POS_INSERT1_T2
-Relay_Log_Space #
-Until_Condition Relay
-Until_Log_File slave-relay-bin.000002
-Until_Log_Pos RELAY_POS_INSERT1_T2
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
START SLAVE;
include/stop_slave.inc
START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_create_t2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos MASTER_POS_DROP_T2
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos MASTER_POS_CREATE_T2
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=561;
+START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=561, RELAY_LOG_POS=12;
+START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS, RELAY_LOG_POS=RELAY_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000009';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
-START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=561;
+START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE;
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=740;
+START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
Warnings:
Note 1254 Slave is already running
diff --git a/mysql-test/suite/rpl/r/rpl_skip_error.result b/mysql-test/suite/rpl/r/rpl_skip_error.result
index d955859f030..0aa8069a38c 100644
--- a/mysql-test/suite/rpl/r/rpl_skip_error.result
+++ b/mysql-test/suite/rpl/r/rpl_skip_error.result
@@ -31,45 +31,7 @@ n
3
7
8
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
==== Clean Up ====
drop table t1;
create table t1(a int primary key);
@@ -84,45 +46,7 @@ select * from t1;
a
1
2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
==== Clean Up ====
drop table t1;
==== Using Innodb ====
diff --git a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
index e2efcf08d7a..c3c4f7c015a 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
@@ -10,45 +10,6 @@ insert into t1(b) values (1);
insert into t1(b) values (2);
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
commit;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 9
-Last_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 9
-Last_SQL_Error Error in Begin_load_query event: write to '../../tmp/SQL_LOAD.data' failed
drop table t1;
drop table t1;
call mtr.add_suppression("Slave: Error writing file 'UNKNOWN' .Errcode: 9. Error_code: 3");
diff --git a/mysql-test/suite/rpl/r/rpl_slave_skip.result b/mysql-test/suite/rpl/r/rpl_slave_skip.result
index 6148de5d954..a4067fb7983 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_skip.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_skip.result
@@ -42,46 +42,7 @@ c d
2 8
3 18
**** On Slave ****
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=762;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 1115
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 762
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos 762
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
SELECT * FROM t1;
@@ -104,48 +65,9 @@ show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # User var # # @`foo`=12
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(@foo, 2*@foo)
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106;
+START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos 248
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 248
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
**** On Master ****
DROP TABLE t1, t2;
SET SESSION BINLOG_FORMAT=ROW;
diff --git a/mysql-test/suite/rpl/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result
index 631369b2b74..8f06653f8ab 100644
--- a/mysql-test/suite/rpl/r/rpl_sp.result
+++ b/mysql-test/suite/rpl/r/rpl_sp.result
@@ -409,110 +409,110 @@ return 0;
end|
use mysqltest;
set @a:= mysqltest2.f1();
-show binlog events in 'master-bin.000001' from 106;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # drop database if exists mysqltest1
-master-bin.000001 # Query 1 # create database mysqltest1
-master-bin.000001 # Query 1 # use `mysqltest1`; create table t1 (a varchar(100))
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
+master-bin.000001 # Query # # drop database if exists mysqltest1
+master-bin.000001 # Query # # create database mysqltest1
+master-bin.000001 # Query # # use `mysqltest1`; create table t1 (a varchar(100))
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
begin
declare b int;
set b = 8;
insert into t1 values (b);
insert into t1 values (unix_timestamp());
end
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8))
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (unix_timestamp())
-master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`()
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values ( NAME_CONST('b',8))
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (unix_timestamp())
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo2`()
select * from mysqltest1.t1
-master-bin.000001 # Query 1 # use `mysqltest1`; alter procedure foo2 contains sql
-master-bin.000001 # Query 1 # use `mysqltest1`; drop table t1
-master-bin.000001 # Query 1 # use `mysqltest1`; create table t1 (a int)
-master-bin.000001 # Query 1 # use `mysqltest1`; create table t2 like t1
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
+master-bin.000001 # Query # # use `mysqltest1`; alter procedure foo2 contains sql
+master-bin.000001 # Query # # use `mysqltest1`; drop table t1
+master-bin.000001 # Query # # use `mysqltest1`; create table t1 (a int)
+master-bin.000001 # Query # # use `mysqltest1`; create table t2 like t1
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo3`()
DETERMINISTIC
insert into t1 values (15)
-master-bin.000001 # Query 1 # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
-master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
-master-bin.000001 # Query 1 # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
+master-bin.000001 # Query # # use `mysqltest1`; grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1
+master-bin.000001 # Query # # use `mysqltest1`; grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1
+master-bin.000001 # Query # # use `mysqltest1`; grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` PROCEDURE `foo4`()
DETERMINISTIC
begin
insert into t2 values(3);
insert into t1 values (5);
end
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(3)
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (15)
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(3)
-master-bin.000001 # Query 1 # use `mysqltest1`; alter procedure foo4 sql security invoker
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(3)
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (5)
-master-bin.000001 # Query 1 # use `mysqltest1`; delete from t2
-master-bin.000001 # Query 1 # use `mysqltest1`; alter table t2 add unique (a)
-master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo4
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`()
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3)
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (15)
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3)
+master-bin.000001 # Query # # use `mysqltest1`; alter procedure foo4 sql security invoker
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(3)
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (5)
+master-bin.000001 # Query # # use `mysqltest1`; delete from t2
+master-bin.000001 # Query # # use `mysqltest1`; alter table t2 add unique (a)
+master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo4
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo4`()
DETERMINISTIC
begin
insert into t2 values(20),(20);
end
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(20),(20)
-master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo4
-master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo
-master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo2
-master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo3
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(20),(20)
+master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo4
+master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo
+master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo2
+master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo3
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
DETERMINISTIC
begin
insert into t1 values (x);
return x+2;
end
-master-bin.000001 # Query 1 # use `mysqltest1`; delete t1,t2 from t1,t2
-master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(fn1(21))
-master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest1`; delete t1,t2 from t1,t2
+master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
+master-bin.000001 # Query # # use `mysqltest1`; insert into t2 values(fn1(21))
+master-bin.000001 # Query # # use `mysqltest1`; drop function fn1
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`() RETURNS int(11)
NO SQL
begin
return unix_timestamp();
end
-master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values(fn1())
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values(fn1())
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`zedjzlcsjhd`@`127.0.0.1` FUNCTION `fn2`() RETURNS int(11)
NO SQL
begin
return unix_timestamp();
end
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn3`() RETURNS int(11)
READS SQL DATA
begin
return 0;
end
-master-bin.000001 # Query 1 # use `mysqltest1`; delete from t2
-master-bin.000001 # Query 1 # use `mysqltest1`; alter table t2 add unique (a)
-master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest1`; delete from t2
+master-bin.000001 # Query # # use `mysqltest1`; alter table t2 add unique (a)
+master-bin.000001 # Query # # use `mysqltest1`; drop function fn1
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` FUNCTION `fn1`(x int) RETURNS int(11)
begin
insert into t2 values(x),(x);
return 10;
end
-master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100)
-master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
-master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1)
-master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1
-master-bin.000001 # Query 1 # use `mysqltest1`; drop trigger trg
-master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1)
-master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
+master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100)
+master-bin.000001 # Query # # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20)
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (1)
+master-bin.000001 # Query # # use `mysqltest1`; delete from t1
+master-bin.000001 # Query # # use `mysqltest1`; drop trigger trg
+master-bin.000001 # Query # # use `mysqltest1`; insert into t1 values (1)
+master-bin.000001 # Query # # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `foo`()
READS SQL DATA
select * from t1
-master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo
-master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
-master-bin.000001 # Query 1 # drop database mysqltest1
-master-bin.000001 # Query 1 # drop user "zedjzlcsjhd"@127.0.0.1
-master-bin.000001 # Query 1 # use `test`; drop function if exists f1
-master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest1`; drop procedure foo
+master-bin.000001 # Query # # use `mysqltest1`; drop function fn1
+master-bin.000001 # Query # # drop database mysqltest1
+master-bin.000001 # Query # # drop user "zedjzlcsjhd"@127.0.0.1
+master-bin.000001 # Query # # use `test`; drop function if exists f1
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
READS SQL DATA
begin
declare var integer;
@@ -522,41 +522,41 @@ fetch c into var;
close c;
return var;
end
-master-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a
-master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
-master-bin.000001 # Query 1 # use `test`; insert into t1 (a) values (f1())
-master-bin.000001 # Query 1 # use `test`; drop view v1
-master-bin.000001 # Query 1 # use `test`; drop function f1
-master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1
-master-bin.000001 # Query 1 # use `test`; DROP TABLE IF EXISTS t1
-master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(col VARCHAR(10))
-master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
+master-bin.000001 # Query # # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a
+master-bin.000001 # Query # # use `test`; create table t1 (a int)
+master-bin.000001 # Query # # use `test`; insert into t1 (a) values (f1())
+master-bin.000001 # Query # # use `test`; drop view v1
+master-bin.000001 # Query # # use `test`; drop function f1
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS p1
+master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t1
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1(col VARCHAR(10))
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
INSERT INTO t1 VALUES(arg)
-master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
-master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1
-master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1
-master-bin.000001 # Query 1 # use `test`; DROP FUNCTION IF EXISTS f1
-master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE p1
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE IF EXISTS p1
+master-bin.000001 # Query # # use `test`; DROP FUNCTION IF EXISTS f1
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
SET @a = 1
-master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
+master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
RETURN 0
-master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1
-master-bin.000001 # Query 1 # use `test`; DROP FUNCTION f1
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # drop database if exists mysqltest
-master-bin.000001 # Query 1 # drop database if exists mysqltest2
-master-bin.000001 # Query 1 # create database mysqltest
-master-bin.000001 # Query 1 # create database mysqltest2
-master-bin.000001 # Query 1 # use `mysqltest2`; create table t ( t integer )
-master-bin.000001 # Query 1 # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`()
+master-bin.000001 # Query # # use `test`; DROP PROCEDURE p1
+master-bin.000001 # Query # # use `test`; DROP FUNCTION f1
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # drop database if exists mysqltest
+master-bin.000001 # Query # # drop database if exists mysqltest2
+master-bin.000001 # Query # # create database mysqltest
+master-bin.000001 # Query # # create database mysqltest2
+master-bin.000001 # Query # # use `mysqltest2`; create table t ( t integer )
+master-bin.000001 # Query # # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` PROCEDURE `mysqltest`.`test`()
begin end
-master-bin.000001 # Query 1 # use `mysqltest2`; insert into t values ( 1 )
-master-bin.000001 # Query 1 # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
+master-bin.000001 # Query # # use `mysqltest2`; insert into t values ( 1 )
+master-bin.000001 # Query # # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
begin
insert into t values (1);
return 0;
end
-master-bin.000001 # Query 1 # use `mysqltest`; SELECT `mysqltest2`.`f1`()
+master-bin.000001 # Query # # use `mysqltest`; SELECT `mysqltest2`.`f1`()
set @@global.log_bin_trust_routine_creators= @old_log_bin_trust_routine_creators;
Warnings:
Warning 1287 '@@log_bin_trust_routine_creators' is deprecated and will be removed in a future release. Please use '@@log_bin_trust_function_creators' instead
diff --git a/mysql-test/suite/rpl/r/rpl_ssl.result b/mysql-test/suite/rpl/r/rpl_ssl.result
index d188dd353ce..1af4c5e227c 100644
--- a/mysql-test/suite/rpl/r/rpl_ssl.result
+++ b/mysql-test/suite/rpl/r/rpl_ssl.result
@@ -19,89 +19,23 @@ insert into t1 values(1);
select * from t1;
t
1
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User replssl
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
Master_SSL_Allowed Yes
-Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_CA_Path
+Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem
-Master_SSL_Cipher
Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
STOP SLAVE;
select * from t1;
t
1
insert into t1 values (NULL);
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User replssl
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
Master_SSL_Allowed Yes
-Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_CA_Path
+Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem
-Master_SSL_Cipher
Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
drop user replssl@localhost;
drop table t1;
End of 5.0 tests
diff --git a/mysql-test/suite/rpl/r/rpl_ssl1.result b/mysql-test/suite/rpl/r/rpl_ssl1.result
index 74d2550cdaf..5b4aa126c77 100644
--- a/mysql-test/suite/rpl/r/rpl_ssl1.result
+++ b/mysql-test/suite/rpl/r/rpl_ssl1.result
@@ -18,89 +18,23 @@ start slave;
select * from t1;
t
1
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User replssl
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File #
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File #
-Slave_IO_Running #
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
Master_SSL_Allowed Yes
-Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_CA_Path
+Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem
-Master_SSL_Cipher
Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
stop slave;
change master to master_user='root',master_password='', master_ssl=0;
start slave;
drop user replssl@localhost;
drop table t1;
-show slave status;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File #
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File #
-Slave_IO_Running #
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
Master_SSL_Allowed No
-Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_CA_Path
+Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem
-Master_SSL_Cipher
Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
stop slave;
change master to
master_host="localhost",
@@ -116,43 +50,10 @@ on slave
select * from t1;
t
1
-show slave status;
-Slave_IO_State #
-Master_Host localhost
-Master_User root
-Master_Port MASTER_MYPORT
-Connect_Retry 1
-Master_Log_File #
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File #
-Slave_IO_Running #
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
Master_SSL_Allowed Yes
-Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_CA_Path
+Master_SSL_CA_File MYSQL_TEST_DIR/std_data/cacert.pem
Master_SSL_Cert MYSQL_TEST_DIR/std_data/client-cert.pem
-Master_SSL_Cipher
Master_SSL_Key MYSQL_TEST_DIR/std_data/client-key.pem
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert Yes
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
index ea2a9ce9a79..fe2fb1d9da2 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
@@ -12,16 +12,12 @@ create table t4 (a int);
insert into t4 select * from t3;
rename table t1 to t5, t2 to t1;
flush no_write_to_binlog tables;
-SHOW BINLOG EVENTS FROM 684 ;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1
+master-bin.000001 # Query # # use `test`; rename table t1 to t5, t2 to t1
select * from t3;
a
flush tables;
-SHOW BINLOG EVENTS FROM 684 ;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; rename table t1 to t5, t2 to t1
-master-bin.000001 # Query 1 # use `test`; flush tables
select * from t3;
a
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result b/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result
index 70aeb733769..1c24b2ca15b 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result
@@ -52,18 +52,18 @@ CREATE TABLE t1(a int, UNIQUE(a));
INSERT DELAYED IGNORE INTO t1 VALUES(1);
INSERT DELAYED IGNORE INTO t1 VALUES(1);
flush table t1;
-show binlog events in 'master-bin.000002' LIMIT 2,2;
+show binlog events in 'master-bin.000002' from <binlog_start> limit 1,2;
Log_name Pos Event_type Server_id End_log_pos Info
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
+master-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
+master-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
select * from t1;
a
1
On slave
-show binlog events in 'slave-bin.000002' LIMIT 2,2;
+show binlog events in 'slave-bin.000002' from <binlog_start> limit 1,2;
Log_name Pos Event_type Server_id End_log_pos Info
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
+slave-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
+slave-bin.000002 # Query # # use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
select * from t1;
a
1
@@ -112,24 +112,14 @@ id name
USE test;
DROP SCHEMA mysqlslap;
use test;
-FLUSH LOGS;
-FLUSH LOGS;
CREATE TABLE t1(a int, UNIQUE(a));
INSERT DELAYED IGNORE INTO t1 VALUES(1);
INSERT DELAYED IGNORE INTO t1 VALUES(1);
flush table t1;
-show binlog events in 'master-bin.000002' LIMIT 2,2;
-Log_name Pos Event_type Server_id End_log_pos Info
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
select * from t1;
a
1
On slave
-show binlog events in 'slave-bin.000002' LIMIT 2,2;
-Log_name Pos Event_type Server_id End_log_pos Info
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
-x x x x x use `test`; INSERT DELAYED IGNORE INTO t1 VALUES(1)
select * from t1;
a
1
diff --git a/mysql-test/suite/rpl/r/rpl_stm_log.result b/mysql-test/suite/rpl/r/rpl_stm_log.result
index 47556a33e97..d73a689969f 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_log.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_log.result
@@ -7,7 +7,7 @@ start slave;
include/stop_slave.inc
reset master;
reset slave;
-start slave;
+include/start_slave.inc
create table t1(n int not null auto_increment primary key)ENGINE=MyISAM;
insert into t1 values (NULL);
drop table t1;
@@ -16,26 +16,25 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines;
select count(*) from t1;
count(*)
69
-show binlog events;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-master-bin.000001 # Intvar 1 # INSERT_ID=1
-master-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL)
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
-master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581
-master-bin.000001 # Execute_load_query 1 # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=1
-show binlog events from 106 limit 1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+master-bin.000001 # Intvar # # INSERT_ID=1
+master-bin.000001 # Query # # use `test`; insert into t1 values (NULL)
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
+master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
+master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=#
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-show binlog events from 106 limit 2;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+show binlog events from <binlog_start> limit 2;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-master-bin.000001 # Intvar 1 # INSERT_ID=1
-show binlog events from 106 limit 2,1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+master-bin.000001 # Intvar # # INSERT_ID=1
+show binlog events from <binlog_start> limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL)
+master-bin.000001 # Query # # use `test`; insert into t1 values (NULL)
flush logs;
create table t3 (a int)ENGINE=MyISAM;
select * from t1 order by 1 asc;
@@ -195,12 +194,11 @@ master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not nul
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/words.dat' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=#
master-bin.000001 # Rotate # # master-bin.000002;pos=4
-show binlog events in 'master-bin.000002';
+show binlog events in 'master-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM
-master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM
-master-bin.000002 # Query 1 # use `test`; insert into t2 values (1)
+master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM
+master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM
+master-bin.000002 # Query # # use `test`; insert into t2 values (1)
show binary logs;
Log_name File_size
master-bin.000001 #
@@ -209,62 +207,22 @@ show binary logs;
Log_name File_size
slave-bin.000001 #
slave-bin.000002 #
-show binlog events in 'slave-bin.000001' from 4;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
-slave-bin.000001 # Intvar 1 # INSERT_ID=1
-slave-bin.000001 # Query 1 # use `test`; insert into t1 values (NULL)
-slave-bin.000001 # Query 1 # use `test`; drop table t1
-slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
-slave-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581
-slave-bin.000001 # Execute_load_query 1 # use `test`; LOAD DATA INFILE '../../tmp/SQL_LOAD-2-1-1.data' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=1
-slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=MyISAM
-slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
-show binlog events in 'slave-bin.000002' from 4;
+slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM
+slave-bin.000001 # Intvar # # INSERT_ID=1
+slave-bin.000001 # Query # # use `test`; insert into t1 values (NULL)
+slave-bin.000001 # Query # # use `test`; drop table t1
+slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM
+slave-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
+slave-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../tmp/SQL_LOAD-2-1-1.data' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES (`word`) ;file_id=#
+slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=MyISAM
+slave-bin.000001 # Rotate # # slave-bin.000002;pos=4
+show binlog events in 'slave-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=MyISAM
-slave-bin.000002 # Query 1 # use `test`; insert into t2 values (1)
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000002
-Read_Master_Log_Pos 392
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000002
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 392
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=MyISAM
+slave-bin.000002 # Query # # use `test`; insert into t2 values (1)
+Checking that both slave threads are running.
show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result
index 2215b34814e..db06cb6d3de 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result
@@ -21,45 +21,7 @@ select @@global.max_relay_log_size;
@@global.max_relay_log_size
4096
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 2
#
@@ -69,45 +31,7 @@ set global max_relay_log_size=(5*4096);
select @@global.max_relay_log_size;
@@global.max_relay_log_size 20480
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 3: max_relay_log_size = 0
#
@@ -117,90 +41,13 @@ set global max_relay_log_size=0;
select @@global.max_relay_log_size;
@@global.max_relay_log_size 0
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 4: Tests below are mainly to ensure that we have not coded with wrong assumptions
#
stop slave;
reset slave;
flush logs;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
#
# Test 5
#
@@ -208,89 +55,13 @@ reset slave;
start slave;
flush logs;
create table t1 (a int);
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
#
# Test 6: one more rotation, to be sure Relay_Log_Space is correctly updated
#
flush logs;
drop table t1;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
flush logs;
show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB
diff --git a/mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result b/mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
index 03223166f44..2ecaf2c90ae 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
@@ -868,3 +868,24 @@ DROP TABLE nt_4;
DROP PROCEDURE pc_i_tt_3;
DROP FUNCTION f1;
DROP FUNCTION f2;
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+CREATE TABLE `t1` (
+`c1` int(10) unsigned NOT NULL AUTO_INCREMENT,
+`c2` tinyint(1) unsigned DEFAULT NULL,
+`c3` varchar(300) DEFAULT NULL,
+`c4` int(10) unsigned NOT NULL,
+`c5` int(10) unsigned DEFAULT NULL,
+PRIMARY KEY (`c1`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+ALTER TABLE `t1` Engine=InnoDB;
+SET AUTOCOMMIT=0;
+INSERT INTO t1 (c1,c2,c3,c4,c5) VALUES (1, 1, 'X', 1, NULL);
+COMMIT;
+ROLLBACK;
+SET AUTOCOMMIT=1;
+Comparing tables master:test.t1 and slave:test.t1
+DROP TABLE `t1`;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
index 78d9d7c41eb..1fc189975ef 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
@@ -4,196 +4,37 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
-change master to master_user='test';
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/stop_slave.inc
+change master to master_user='test';
Master_User test
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-reset slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+reset slave;
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File
-Slave_IO_Running No
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave;
-SHOW SLAVE STATUS;
-Slave_IO_State #
Master_Host 127.0.0.1
+include/start_slave.inc
Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-stop slave;
+Master_Host 127.0.0.1
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
create temporary table t1 (a int);
-stop slave;
+include/stop_slave.inc
reset slave;
-start slave;
+include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
Slave_open_temp_tables 1
-stop slave;
+include/stop_slave.inc
reset slave;
-*** errno must be zero: 0 ***
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
change master to master_user='root';
include/start_slave.inc
-*** last errno must be zero: 0 ***
-*** last error must be blank: ***
include/stop_slave.inc
change master to master_user='impossible_user_name';
start slave;
-ONE
-1
include/stop_slave.inc
reset slave;
-*** io last errno must be zero: 0 ***
-*** io last error must be blank: ***
-*** sql last errno must be zero: 0 ***
-*** sql last error must be blank: ***
diff --git a/mysql-test/suite/rpl/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result
index 644baba0335..0094c143e38 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_until.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_until.result
@@ -17,199 +17,43 @@ insert into t2 values (3),(4);
drop table t2;
==== Replicate one event at a time on slave ====
[on slave]
-start slave until master_log_file='master-bin.000001', master_log_pos=323;
+start slave until master_log_file='MASTER_LOG_FILE', master_log_pos=MASTER_LOG_POS;
select * from t1;
n
1
2
3
4
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos 323
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
+start slave until master_log_file='master-no-such-bin.000001', master_log_pos=MASTER_LOG_POS;
select * from t1;
n
1
2
3
4
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-no-such-bin.000001
-Until_Log_Pos 291
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
-start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
+start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=RELAY_LOG_POS;
select * from t2;
n
1
2
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Relay
-Until_Log_File slave-relay-bin.000004
-Until_Log_Pos 746
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
start slave;
[on master]
[on slave]
include/stop_slave.inc
-start slave until master_log_file='master-bin.000001', master_log_pos=776;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition Master
-Until_Log_File master-bin.000001
-Until_Log_Pos 776
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+start slave until master_log_file='MASTER_LOG_FILE', master_log_pos=MASTER_LOG_POS;
==== Test various error conditions ====
-start slave until master_log_file='master-bin', master_log_pos=561;
+start slave until master_log_file='master-bin', master_log_pos=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
-start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
+start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS, relay_log_pos=RELAY_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until master_log_file='master-bin.000001';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until relay_log_file='slave-relay-bin.000002';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
-start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
+start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave sql_thread;
-start slave until master_log_file='master-bin.000001', master_log_pos=776;
+start slave until master_log_file='master-bin.000001', master_log_pos=MASTER_LOG_POS;
Warnings:
Note 1254 Slave is already running
include/stop_slave.inc
@@ -230,7 +74,7 @@ insert into t1 set a=null;
select count(*) as two from t1;
two
2
-start slave until master_log_file='master-bin.000001', master_log_pos= UNTIL_POS;;
+start slave until master_log_file='MASTER_LOG_FILE', master_log_pos= UNTIL_POS;;
slave stopped at the prescribed position
select 0 as zero;
zero
@@ -249,8 +93,9 @@ start slave;
drop table if exists t1;
Warnings:
Note 1051 Unknown table 't1'
-flush logs;
stop slave;
+flush logs;
+flush logs;
reset slave;
start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */;
show tables /* t1 must exist */;
diff --git a/mysql-test/suite/rpl/r/rpl_temporary_errors.result b/mysql-test/suite/rpl/r/rpl_temporary_errors.result
index e5d9ea5837c..023f9a850ab 100644
--- a/mysql-test/suite/rpl/r/rpl_temporary_errors.result
+++ b/mysql-test/suite/rpl/r/rpl_temporary_errors.result
@@ -40,46 +40,65 @@ a b
2 2
3 3
4 4
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
DROP TABLE t1;
**** On Master ****
+SET SQL_LOG_BIN= 0;
DROP TABLE t1;
+SET SQL_LOG_BIN= 1;
+SET SESSION BINLOG_FORMAT=MIXED;
+CREATE TABLE t_myisam (id INT, PRIMARY KEY (id)) engine= MyIsam;
+INSERT INTO t_myisam (id) VALUES(1);
+CREATE TABLE t_innodb (id INT) engine= Innodb;
+INSERT INTO t_innodb (id) VALUES(1);
+BEGIN;
+INSERT INTO t_innodb(id) VALUES(2);
+INSERT INTO t_myisam(id) VALUES(3);
+CREATE TEMPORARY TABLE x (id INT);
+INSERT INTO t_myisam(id) VALUES(4),(1);
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+INSERT INTO t_innodb(id) VALUES(5);
+COMMIT;
+SELECT * FROM t_innodb;
+id
+1
+2
+5
+SELECT * FROM t_myisam;
+id
+1
+3
+4
+SELECT * FROM t_innodb;
+id
+1
+2
+5
+SELECT * FROM t_myisam;
+id
+1
+3
+4
+BEGIN;
+CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb;
+INSERT INTO t_innodb(id) VALUES(1);
+INSERT INTO t_innodb(id) VALUES(1);
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(2)
+master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam(id) VALUES(3)
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE x (id INT)
+master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam(id) VALUES(4),(1)
+master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(5)
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(1)
+master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb(id) VALUES(1)
+master-bin.000001 # Query # # ROLLBACK
+DROP TABLE t_myisam, t_innodb;
STOP SLAVE;
diff --git a/mysql-test/suite/rpl/rpl_1slave_base.cnf b/mysql-test/suite/rpl/rpl_1slave_base.cnf
index 23b7ded9a7d..8cdc3a1f6b0 100644
--- a/mysql-test/suite/rpl/rpl_1slave_base.cnf
+++ b/mysql-test/suite/rpl/rpl_1slave_base.cnf
@@ -8,8 +8,6 @@
log-bin= master-bin
-loose-innodb
-
[mysqld.2]
# Run the slave.sh script before starting this process
#!run-slave-sh
@@ -18,7 +16,6 @@ loose-innodb
# starting the mysqld
#!use-slave-opt
-log-bin= slave-bin
relay-log= slave-relay-bin
init-rpl-role= slave
diff --git a/mysql-test/suite/rpl/t/rpl_000015-slave.opt b/mysql-test/suite/rpl/t/rpl_000015-slave.opt
deleted file mode 100644
index 28bc753dd56..00000000000
--- a/mysql-test/suite/rpl/t/rpl_000015-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
---server-id=22 --master-connect-retry=7
diff --git a/mysql-test/suite/rpl/t/rpl_000015.cnf b/mysql-test/suite/rpl/t/rpl_000015.cnf
deleted file mode 100644
index 46f8af242c2..00000000000
--- a/mysql-test/suite/rpl/t/rpl_000015.cnf
+++ /dev/null
@@ -1,2 +0,0 @@
-!include ../rpl_1slave_base.cnf
-
diff --git a/mysql-test/suite/rpl/t/rpl_000015.test b/mysql-test/suite/rpl/t/rpl_000015.test
deleted file mode 100644
index 45a43cd38d0..00000000000
--- a/mysql-test/suite/rpl/t/rpl_000015.test
+++ /dev/null
@@ -1,40 +0,0 @@
--- source include/have_log_bin.inc
-#####################
-# Change Author: JBM
-# Change Date: 2006-01-17
-# Change: added order by in select
-#####################
-
-connect (master,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
-connect (slave,localhost,root,,test,$SLAVE_MYPORT,$SLAVE_MYSOCK);
-connection master;
-reset master;
-source include/show_master_status.inc;
-save_master_pos;
-connection slave;
-reset slave;
-source include/show_slave_status2.inc;
-
-change master to master_host='127.0.0.1';
-# The following needs to be cleaned up when change master is fixed
-source include/show_slave_status2.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
-eval change master to master_host='127.0.0.1',master_user='root',
- master_password='',master_port=$MASTER_MYPORT;
-source include/show_slave_status2.inc;
-start slave;
-sync_with_master;
-source include/show_slave_status2.inc;
-connection master;
---disable_warnings
-drop table if exists t1;
---enable_warnings
-create table t1 (n int, PRIMARY KEY(n));
-insert into t1 values (10),(45),(90);
-sync_slave_with_master;
-connection slave;
-SELECT * FROM t1 ORDER BY n;
-connection master;
-SELECT * FROM t1 ORDER BY n;
-drop table t1;
-sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt
index 9e6e2b7829a..a8de78ed6f5 100644
--- a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-master.opt
@@ -1 +1 @@
---innodb --binlog-ignore-db=db2
+--loose-innodb --binlog-ignore-db=db2
diff --git a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt
index b4abda5893f..264b17285a2 100644
--- a/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_begin_commit_rollback-slave.opt
@@ -1 +1 @@
---innodb --replicate-do-db=db1
+--loose-innodb --replicate-do-db=db1
diff --git a/mysql-test/suite/rpl/t/rpl_binlog_grant.test b/mysql-test/suite/rpl/t/rpl_binlog_grant.test
index 31163927ce2..4c6402359fe 100644
--- a/mysql-test/suite/rpl/t/rpl_binlog_grant.test
+++ b/mysql-test/suite/rpl/t/rpl_binlog_grant.test
@@ -20,26 +20,24 @@ set @@autocommit=0;
start transaction;
insert into t values (1);
grant select on t to x@y;
+let $wait_binlog_event= grant select;
+source include/wait_for_binlog_event.inc;
#
# There is no active transaction here
#
rollback;
show grants for x@y;
---replace_result $VERSION VERSION
---replace_regex /\/\* xid=.* \*\//\/* XID *\//
-show binlog events;
start transaction;
insert into t values (2);
revoke select on t from x@y;
+let $wait_binlog_event= revoke select;
+source include/wait_for_binlog_event.inc;
#
# There is no active transaction here
#
commit;
select * from t;
show grants for x@y;
---replace_result $VERSION VERSION
---replace_regex /\/\* xid=.* \*\//\/* XID *\//
-show binlog events;
drop user x@y;
drop database d1;
--sync_slave_with_master
diff --git a/mysql-test/suite/rpl/t/rpl_bug33931.test b/mysql-test/suite/rpl/t/rpl_bug33931.test
index 1316ddb7401..3327a36622c 100644
--- a/mysql-test/suite/rpl/t/rpl_bug33931.test
+++ b/mysql-test/suite/rpl/t/rpl_bug33931.test
@@ -37,9 +37,10 @@ connection slave;
#
source include/wait_for_slave_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 19 # 23 # 33 # 37 #
-query_vertical show slave status;
+# 1593 = ER_SLAVE_FATAL_ERROR
+--let $slave_sql_errno= 1593
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
#
# Cleanup
diff --git a/mysql-test/suite/rpl/t/rpl_change_master.test b/mysql-test/suite/rpl/t/rpl_change_master.test
index d0cd40e2e11..33bd9d51b11 100644
--- a/mysql-test/suite/rpl/t/rpl_change_master.test
+++ b/mysql-test/suite/rpl/t/rpl_change_master.test
@@ -19,10 +19,26 @@ let $slave_param= Read_Master_Log_Pos;
let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1);
connection slave;
source include/wait_for_slave_param.inc;
-stop slave;
-source include/show_slave_status2.inc;
+source include/stop_slave.inc;
+
+let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1);
+if (`SELECT $read_pos = $exec_pos`)
+{
+ source include/show_rpl_debug_info.inc;
+ echo 'Read_Master_Log_Pos: $read_pos' == 'Exec_Master_Log_Pos: $exec_pos';
+ die Failed because Read_Master_Log_Pos is equal to Exec_Master_Log_Pos;
+}
change master to master_user='root';
-source include/show_slave_status2.inc;
+let $read_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+let $exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1);
+if (`SELECT $read_pos <> $exec_pos`)
+{
+ source include/show_rpl_debug_info.inc;
+ echo 'Read_Master_Log_Pos: $read_pos' <> 'Exec_Master_Log_Pos: $exec_pos';
+ die Failed because Read_Master_Log_Pos is not equal to Exec_Master_Log_Pos;
+}
+
start slave;
sync_with_master;
select * from t1;
diff --git a/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.cnf b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.cnf
index 141aaa7788d..536551ec3dc 100644
--- a/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.cnf
+++ b/mysql-test/suite/rpl/t/rpl_circular_for_4_hosts.cnf
@@ -2,19 +2,19 @@
[mysqld.1]
log-slave-updates
-innodb
+loose-innodb
[mysqld.2]
log-slave-updates
-innodb
+loose-innodb
[mysqld.3]
log-slave-updates
-innodb
+loose-innodb
[mysqld.4]
log-slave-updates
-innodb
+loose-innodb
[ENV]
SLAVE_MYPORT1= @mysqld.3.port
diff --git a/mysql-test/suite/rpl/t/rpl_concurrency_error-master.opt b/mysql-test/suite/rpl/t/rpl_concurrency_error-master.opt
index a6ef074a120..3f82baff598 100644
--- a/mysql-test/suite/rpl/t/rpl_concurrency_error-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_concurrency_error-master.opt
@@ -1 +1 @@
---innodb-lock-wait-timeout=1
+--loose-innodb-lock-wait-timeout=1
diff --git a/mysql-test/suite/rpl/t/rpl_conditional_comments.test b/mysql-test/suite/rpl/t/rpl_conditional_comments.test
new file mode 100644
index 00000000000..14251d5eb37
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_conditional_comments.test
@@ -0,0 +1,74 @@
+###############################################################################
+# After the patch for BUG#49124:
+# - Use ' ' instead of '!' in the conditional comments which are not applied on
+# master. So they become common comments and will not be applied on slave.
+#
+# - Example:
+# 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /*!99999 ,(3)*/
+# will be binlogged as
+# 'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/'.
+###############################################################################
+source include/master-slave.inc;
+source include/have_binlog_format_statement.inc;
+
+CREATE TABLE t1(c1 INT);
+source include/show_binlog_events.inc;
+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
+
+--echo
+--echo # Case 1:
+--echo # ------------------------------------------------------------------
+--echo # In a statement, some CCs are applied while others are not. The CCs
+--echo # which are not applied on master will be binlogged as common comments.
+
+/*!99999 --- */INSERT /*!INTO*/ /*!10000 t1 */ VALUES(10) /*!99999 ,(11)*/;
+
+source include/show_binlog_events.inc;
+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
+sync_slave_with_master;
+let $diff_table_1=master:test.t1;
+let $diff_table_2=slave:test.t1;
+source include/diff_tables.inc;
+
+--echo
+--echo # Case 2:
+--echo # -----------------------------------------------------------------
+--echo # Verify whether it can be binlogged correctly when executing prepared
+--echo # statement.
+PREPARE stmt FROM 'INSERT INTO /*!99999 blabla*/ t1 VALUES(60) /*!99999 ,(61)*/';
+EXECUTE stmt;
+DROP TABLE t1;
+CREATE TABLE t1(c1 INT);
+EXECUTE stmt;
+
+sync_slave_with_master;
+let $diff_table_1=master:test.t1;
+let $diff_table_2=slave:test.t1;
+source include/diff_tables.inc;
+
+--echo
+SET @value=62;
+PREPARE stmt FROM 'INSERT INTO /*!99999 blabla */ t1 VALUES(?) /*!99999 ,(63)*/';
+EXECUTE stmt USING @value;
+DROP TABLE t1;
+CREATE TABLE t1(c1 INT);
+EXECUTE stmt USING @value;
+
+source include/show_binlog_events.inc;
+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
+
+sync_slave_with_master;
+let $diff_table_1=master:test.t1;
+let $diff_table_2=slave:test.t1;
+source include/diff_tables.inc;
+
+--echo
+--echo # Case 3:
+--echo # -----------------------------------------------------------------
+--echo # Verify it can restore the '!', if the it is an uncomplete conditional
+--echo # comments
+--error 1064
+SELECT c1 FROM /*!99999 t1 WHEREN;
+
+DROP TABLE t1;
+source include/master-slave-end.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_critical_errors.test b/mysql-test/suite/rpl/t/rpl_critical_errors.test
index b35cd305f92..aa1f251b738 100644
--- a/mysql-test/suite/rpl/t/rpl_critical_errors.test
+++ b/mysql-test/suite/rpl/t/rpl_critical_errors.test
@@ -53,15 +53,13 @@ KILL QUERY 2;
connection slave;
# Here the slave will only stop if the query above actually started
-# inserting some rows into t2. Otherwise, it will hang forever.
---source include/wait_for_slave_to_stop.inc
+# inserting some rows into t2. Otherwise, it will hang forever. ... and there
+# the error code should be 1317 (ER_QUERY_INTERRUPTED)
+--let $slave_sql_errno= 1317
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
# The following should be 0
SELECT COUNT(*) FROM t2;
-# ... and there the error code should be 1317 (ER_QUERY_INTERRUPTED)
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 7 # 8 # 9 # 20 # 22 # 23 # 33 #
-query_vertical SHOW SLAVE STATUS;
-
enable_parsing;
diff --git a/mysql-test/suite/rpl/t/rpl_current_user.cnf b/mysql-test/suite/rpl/t/rpl_current_user.cnf
new file mode 100644
index 00000000000..999ee727a88
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_current_user.cnf
@@ -0,0 +1,9 @@
+!include ../my.cnf
+
+[mysqld.3]
+server-id=3
+log-bin=slave-bin
+
+[ENV]
+SLAVE_MYPORT1= @mysqld.3.port
+SLAVE_MYSOCK1= @mysqld.3.socket
diff --git a/mysql-test/suite/rpl/t/rpl_current_user.test b/mysql-test/suite/rpl/t/rpl_current_user.test
new file mode 100644
index 00000000000..72581ed7049
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_current_user.test
@@ -0,0 +1,238 @@
+##############################################################################
+# BUG#48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER,
+# REVOKE, GRANT, ALTER EVENT
+#
+# Calling CURRENT_USER() results into inconsistency between slave and master,
+# as the slave SQL thread has different user with common users.
+#
+# After the patch for bug#48321, session's user will be written into query log
+# event if CURRENT_USER() is called in 'DROP/RENAME USER', 'REVOKE', 'GRANT',
+# 'ALTER EVENT'.
+#
+##############################################################################
+source include/master-slave.inc;
+source include/have_binlog_format_statement.inc;
+
+--echo
+--echo # On slave2
+connect (slave2,127.0.0.1,root,,test,$SLAVE_MYPORT1,);
+connection slave2;
+
+--echo # Connect slave2 to slave
+--replace_result $SLAVE_MYPORT SLAVE_MYPORT;
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT,
+ MASTER_LOG_FILE='slave-bin.000001', MASTER_USER='root';
+START SLAVE;
+source include/wait_for_slave_to_start.inc;
+
+--echo
+--echo # [On master]
+connection master;
+--disable_warnings
+DROP VIEW IF EXISTS v_user;
+DROP VIEW IF EXISTS v_tables_priv;
+DROP VIEW IF EXISTS v_procs_priv;
+DROP PROCEDURE IF EXISTS p1;
+DROP PROCEDURE IF EXISTS my_grant;
+DROP PROCEDURE IF EXISTS my_revoke;
+DROP FUNCTION IF EXISTS my_user;
+DROP EVENT IF EXISTS e1;
+--enable_warnings
+CREATE TABLE t1(c1 char(100));
+CREATE VIEW test.v_user AS SELECT * FROM mysql.user WHERE User LIKE 'bug48321%';
+CREATE VIEW test.v_tables_priv AS SELECT * FROM mysql.tables_priv WHERE User LIKE 'bug48321%';
+CREATE VIEW test.v_procs_priv AS SELECT * FROM mysql.procs_priv WHERE User LIKE 'bug48321%';
+CREATE VIEW test.v_event AS SELECT definer FROM mysql.event WHERE name = 'e1';
+CREATE PROCEDURE p1() SELECT 1;
+--echo # bug48321_1-01234 has the max length(16) of user.
+GRANT ALL PRIVILEGES ON *.* TO 'bug48321_1-01234'@'localhost' WITH GRANT OPTION;
+
+--echo
+--echo # Make sure the max lengths of user and host
+--echo # the user name is too lengh
+--error 1470
+GRANT CREATE USER ON *.* TO '01234567890123456'@'fakehost';
+--echo # the host name is too lengh
+--error 1470
+GRANT CREATE USER ON *.* TO 'fakename'@'0123456789012345678901234567890123456789012345678901234567890';
+
+--echo
+--echo # User 'bug48321_1-01234' connects to master by conn1
+connect (conn1, 127.0.0.1, 'bug48321_1-01234'@'localhost',,);
+connection conn1;
+--echo # [On conn1]
+--echo # Verify 'REVOKE ALL' statement
+REVOKE ALL PRIVILEGES, GRANT OPTION FROM CURRENT_USER();
+let $diff_table= test.v_user;
+let $diff_server_list= master, slave, slave2;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'GRANT ... ON TABLE ...' statement
+connection conn1;
+GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
+let $diff_table= test.v_tables_priv;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'GRANT ... ON PROCEDURE...' statement
+connection conn1;
+GRANT ALTER ROUTINE, EXECUTE ON PROCEDURE p1 TO CURRENT_USER();
+let $diff_table= test.v_procs_priv;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'GRANT ... ON *.* ...' statement
+connection conn1;
+GRANT ALL PRIVILEGES ON *.* TO CURRENT_USER() WITH GRANT OPTION;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'REVOKE ... ON TABLE ...' statement
+connection conn1;
+REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
+let $diff_table= test.v_tables_priv;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'REVOKE ... ON PROCEDURE...' statement
+connection conn1;
+REVOKE ALTER ROUTINE, EXECUTE ON PROCEDURE p1 FROM CURRENT_USER();
+let $diff_table= test.v_procs_priv;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'REVOKE ... ON *.* ...' statement
+connection conn1;
+REVOKE ALL PRIVILEGES ON *.* FROM CURRENT_USER();
+let $diff_table= test.v_user;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'GRANT ...' statement in the procedure
+connection conn1;
+CREATE PROCEDURE my_grant()
+ GRANT CREATE, INSERT, SELECT ON TABLE test.t1 TO CURRENT_USER();
+call my_grant;
+let $diff_table= test.v_tables_priv;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'REVOKE ... ON TABLE ...' statement in the procedure
+connection conn1;
+CREATE PROCEDURE my_revoke()
+ REVOKE CREATE, INSERT, SELECT ON TABLE t1 FROM CURRENT_USER();
+call my_revoke;
+let $diff_table= test.v_tables_priv;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'RENAME USER ...' statement
+connection conn1;
+RENAME USER CURRENT_USER TO 'bug48321_2'@'localhost';
+let $diff_table= test.v_user;
+source include/rpl_diff_tables.inc;
+
+disconnect conn1;
+
+--echo
+--echo # Verify 'DROP USER ...' statement
+connection master;
+GRANT CREATE USER ON *.* TO 'bug48321_2'@'localhost';
+connect (conn1, 127.0.0.1, 'bug48321_2'@'localhost',,);
+connection conn1;
+DROP USER CURRENT_USER();
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify 'ALTER EVENT...' statement
+connection master;
+CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT * FROM t1;
+
+--echo # Explicitly assign CURRENT_USER() to definer
+ALTER DEFINER=CURRENT_USER() EVENT e1 ENABLE;
+let $diff_table= test.v_event;
+source include/rpl_diff_tables.inc;
+
+connection master;
+--echo
+--echo # Session user will be set as definer, if the statement does not assign
+--echo # a definer
+ALTER EVENT e1 ENABLE;
+sync_slave_with_master;
+source include/rpl_diff_tables.inc;
+
+--echo
+--echo # Verify that this patch does not affect the calling of CURRENT_USER()
+--echo # in the other statements
+connection master;
+--echo # [On master]
+INSERT INTO t1 VALUES(CURRENT_USER()), ('1234');
+SELECT * FROM t1;
+sync_slave_with_master;
+--echo # [On slave]
+SELECT * FROM t1;
+--echo # [On slave2]
+sync_slave_with_master slave2;
+SELECT * FROM t1;
+
+connection master;
+--echo # [On master]
+UPDATE t1 SET c1=CURRENT_USER() WHERE c1='1234';
+SELECT * FROM t1;
+sync_slave_with_master;
+--echo # [On slave]
+SELECT * FROM t1;
+sync_slave_with_master slave2;
+--echo # [On slave2]
+SELECT * FROM t1;
+
+connection master;
+--echo # [On master]
+DELETE FROM t1 WHERE c1=CURRENT_USER();
+SELECT * FROM t1;
+sync_slave_with_master;
+--echo # [On slave]
+SELECT * FROM t1;
+sync_slave_with_master slave2;
+--echo # [On slave2]
+SELECT * FROM t1;
+
+connection master;
+--echo # [On master]
+CREATE TABLE t2(c1 char(100));
+
+DELIMITER |;
+CREATE FUNCTION my_user() RETURNS VARCHAR(64)
+ SQL SECURITY INVOKER
+BEGIN
+ INSERT INTO t2 VALUES(CURRENT_USER());
+ RETURN CURRENT_USER();
+END |
+DELIMITER ;|
+
+INSERT INTO t1 VALUES(my_user());
+SELECT * FROM t1;
+SELECT * FROM t2;
+sync_slave_with_master;
+--echo # [On slave]
+SELECT * FROM t1;
+SELECT * FROM t2;
+sync_slave_with_master slave2;
+--echo # [On slave2]
+SELECT * FROM t1;
+SELECT * FROM t2;
+
+--echo
+--echo # END
+connection master;
+DROP TABLE t1, t2;
+DROP VIEW v_user, v_tables_priv, v_procs_priv, v_event;
+DROP PROCEDURE p1;
+DROP PROCEDURE my_grant;
+DROP PROCEDURE my_revoke;
+DROP FUNCTION my_user;
+DROP EVENT e1;
+sync_slave_with_master;
+sync_slave_with_master slave2;
+source include/master-slave-end.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_ddl-slave.opt b/mysql-test/suite/rpl/t/rpl_ddl-slave.opt
new file mode 100644
index 00000000000..21356507809
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_ddl-slave.opt
@@ -0,0 +1 @@
+--loose-skip-innodb
diff --git a/mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt b/mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt
index 3819e7c3f7b..f516b1b7003 100644
--- a/mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_deadlock_innodb-slave.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=4 --slave-transaction-retries=2 --max-relay-log-size=4096
+--loose-innodb-lock-wait-timeout=4 --slave-transaction-retries=2 --max-relay-log-size=4096
diff --git a/mysql-test/suite/rpl/t/rpl_do_grant.test b/mysql-test/suite/rpl/t/rpl_do_grant.test
index 24e7bd631a7..457095f8fa6 100644
--- a/mysql-test/suite/rpl/t/rpl_do_grant.test
+++ b/mysql-test/suite/rpl/t/rpl_do_grant.test
@@ -120,6 +120,9 @@ show grants for rpl_do_grant2@localhost;
# BUG42217 mysql.procs_priv does not get replicated
#####################################################
connection master;
+call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
+sync_slave_with_master;
+connection master;
--disable_warnings
DROP DATABASE IF EXISTS bug42217_db;
@@ -129,8 +132,8 @@ CREATE DATABASE bug42217_db;
GRANT CREATE ROUTINE ON bug42217_db.* TO 'create_rout_db'@'localhost'
IDENTIFIED BY 'create_rout_db' WITH GRANT OPTION;
-sync_slave_with_master;
-connection master;
+-- sync_slave_with_master
+-- connection master
connect (create_rout_db_master, localhost, create_rout_db, create_rout_db, bug42217_db,$MASTER_MYPORT,);
connect (create_rout_db_slave, localhost, create_rout_db, create_rout_db, bug42217_db, $SLAVE_MYPORT,);
@@ -210,18 +213,26 @@ DROP FUNCTION bug42217_db.upgrade_del_func;
DROP FUNCTION bug42217_db.upgrade_alter_func;
DROP DATABASE bug42217_db;
-call mtr.add_suppression("Slave: Operation DROP USER failed for 'create_rout_db'@'localhost' Error_code: 1396");
-
-sync_slave_with_master;
-
+-- sync_slave_with_master
# Drop the user that was already dropped on the slave
connection slave;
--disable_warnings
stop slave;
connection master;
+
+# user was already dropped in the slave before
+# so no need to wait for the slave to replicate
+# this statement (if it did and we later synced
+# the slave it would end up in an error anyway)
DROP USER 'create_rout_db'@'localhost';
+
--enable_warnings
+# finish entire clean up (remove binlogs)
+# so that we leave a pristine environment for the
+# following tests
+-- source include/master-slave-reset.inc
+
# BUG#49119: Master crashes when executing 'REVOKE ... ON
# {PROCEDURE|FUNCTION} FROM ...'
#
diff --git a/mysql-test/suite/rpl/t/rpl_drop.test b/mysql-test/suite/rpl/t/rpl_drop.test
index b38007a755f..336edad6fc5 100644
--- a/mysql-test/suite/rpl/t/rpl_drop.test
+++ b/mysql-test/suite/rpl/t/rpl_drop.test
@@ -1,6 +1,7 @@
# Testcase for BUG#4552 (DROP on two tables, one of which does not
# exist, must be binlogged with a non-zero error code)
source include/master-slave.inc;
+source include/have_innodb.inc;
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
@@ -10,7 +11,57 @@ drop table t1, t2;
save_master_pos;
connection slave;
sync_with_master;
-
# End of 4.1 tests
+# BUG#55625 RBR breaks on failing 'CREATE TABLE'
+# A CREATE...SELECT that fails is written to the binary log if a non-transactional
+# statement is updated. If the logging format is ROW, the CREATE statement and the
+# changes are written to the binary log as distinct events and by consequence the
+# created table is not rolled back in the slave.
+# To fix the problem, we do not write a CREATE...SELECT that fails to the binary
+# log. Howerver, the changes to non-transactional tables are not replicated and
+# thus the slave goes out of sync. This should be fixed after BUG#47899.
+#
+# In the test case, we verify if the binary log contains no information for a
+# CREATE...SELECT that fails.
+connection slave;
+
+--source include/stop_slave.inc
+SET @old_binlog_format= @@global.binlog_format;
+SET GLOBAL binlog_format = ROW;
+--source include/start_slave.inc
+
+connection master;
+SET @old_binlog_format= @@global.binlog_format;
+SET binlog_format = ROW;
+
+CREATE TABLE t2(a INT) ENGINE=MYISAM;
+CREATE TABLE t3(a INT) ENGINE=INNODB;
+
+delimiter |;
+CREATE FUNCTION f1() RETURNS INT
+BEGIN
+ insert into t2 values(1);
+ insert into t3 values(1);
+ return 1;
+END|
+delimiter ;|
+
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+let $binlog_file= query_get_value("SHOW MASTER STATUS", File, 1);
+
+--error 1062
+CREATE TABLE t1(UNIQUE(a)) ENGINE=MYISAM SELECT 1 AS a UNION ALL SELECT f1();
+--error 1062
+CREATE TABLE t1(UNIQUE(a)) ENGINE=INNODB SELECT 1 AS a UNION ALL SELECT f1();
+
+--source include/show_binlog_events.inc
+
+DROP FUNCTION f1;
+DROP TABLE t2, t3;
+SET @@global.binlog_format= @old_binlog_format;
+
+--sync_slave_with_master
+SET @@global.binlog_format= @old_binlog_format;
+# End of 5.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test b/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test
index 9efb3d16d2b..ab1de6a2e9f 100644
--- a/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test
+++ b/mysql-test/suite/rpl/t/rpl_dual_pos_advance.test
@@ -21,52 +21,51 @@ connection master;
--replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_host="127.0.0.1",master_port=$SLAVE_MYPORT,master_user="root";
-start slave;
+source include/start_slave.inc;
# now we test it
connection slave;
create table t1 (n int);
+let $master_log_file= query_get_value(SHOW MASTER STATUS, File, 1);
+let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1);
+let $master_log_pos_1= `SELECT $master_log_pos_1 + 3`;
-save_master_pos;
-connection master;
-sync_with_master;
+sync_slave_with_master master;
#
# BUG#13861 - START SLAVE UNTIL may stop 1 evnt too late if
# log-slave-updates and circul repl
#
-stop slave;
+source include/stop_slave.inc;
create table t2 (n int); # create one ignored event
-save_master_pos;
-connection slave;
-sync_with_master;
-
-connection slave;
+sync_slave_with_master;
show tables;
-save_master_pos;
-
create table t3 (n int) engine=innodb;
+let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1);
+let $master_log_pos_2= `SELECT $master_log_pos_2 + 5`;
set @a=1;
insert into t3 values(@a);
+let $master_log_pos_3= query_get_value(SHOW MASTER STATUS, Position, 1);
+let $master_log_pos_3= `SELECT $master_log_pos_3 + 5`;
begin;
insert into t3 values(2);
insert into t3 values(3);
commit;
insert into t3 values(4);
-
connection master;
# bug is that START SLAVE UNTIL may stop too late, we test that by
# asking it to stop before creation of t3.
-start slave until master_log_file="slave-bin.000001",master_log_pos=195;
+--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_1 MASTER_LOG_POS
+eval start slave until master_log_file="$master_log_file",master_log_pos=$master_log_pos_1;
--source include/wait_for_slave_sql_to_stop.inc
# then BUG#13861 causes t3 to show up below (because stopped too
@@ -75,16 +74,18 @@ start slave until master_log_file="slave-bin.000001",master_log_pos=195;
show tables;
# ensure that we do not break set @a=1; insert into t3 values(@a);
-start slave until master_log_file="slave-bin.000001",master_log_pos=438;
+--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_2 MASTER_LOG_POS
+eval start slave until master_log_file="$master_log_file",master_log_pos=$master_log_pos_2;
--source include/wait_for_slave_sql_to_stop.inc
select * from t3;
# ensure that we do not break transaction
-start slave until master_log_file="slave-bin.000001",master_log_pos=663;
+--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_3 MASTER_LOG_POS
+eval start slave until master_log_file="$master_log_file",master_log_pos=$master_log_pos_3;
--source include/wait_for_slave_sql_to_stop.inc
select * from t3;
-start slave;
+source include/start_slave.inc;
# BUG#13023 is that Exec_master_log_pos may stay too low "forever":
@@ -94,31 +95,20 @@ create table t4 (n int); # create 3 ignored events
create table t5 (n int);
create table t6 (n int);
-save_master_pos;
-connection slave;
-sync_with_master;
-
-connection slave;
-
-save_master_pos;
-
-connection master;
+sync_slave_with_master;
+sync_slave_with_master master;
# then BUG#13023 caused hang below ("master" looks behind, while it's
# not in terms of updates done).
-sync_with_master;
-
show tables;
# cleanup
-stop slave;
+source include/stop_slave.inc;
reset slave;
drop table t1,t2,t3,t4,t5,t6;
-save_master_pos;
-connection slave;
-sync_with_master;
+sync_slave_with_master;
# End of 4.1 tests
diff --git a/mysql-test/suite/rpl/t/rpl_empty_master_crash.test b/mysql-test/suite/rpl/t/rpl_empty_master_crash.test
index f8e7870ae3c..863b450a6d9 100644
--- a/mysql-test/suite/rpl/t/rpl_empty_master_crash.test
+++ b/mysql-test/suite/rpl/t/rpl_empty_master_crash.test
@@ -1,7 +1,5 @@
source include/master-slave.inc;
-source include/show_slave_status.inc;
-
#
# Load table should not succeed on the master as this is not a slave
#
diff --git a/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test b/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test
index bf71ffbfd1e..aa2dee0fe57 100644
--- a/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test
+++ b/mysql-test/suite/rpl/t/rpl_filter_tables_not_exist.test
@@ -126,7 +126,7 @@ connection master;
# Parameters for include/wait_for_slave_sql_error_and_skip.inc:
# Ask it to show SQL error message.
-let $show_sql_error= 1;
+let $show_slave_sql_error= 1;
# The expected error will always be 1146 (ER_NO_SUCH_TABLE).
let $slave_sql_errno= 1146;
diff --git a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
index a8befe612c2..487f910ba2b 100644
--- a/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
+++ b/mysql-test/suite/rpl/t/rpl_flushlog_loop.test
@@ -36,7 +36,6 @@ source include/start_slave.inc;
# 2. Insert into t1 on slave (2nd) when the event (1st) for t1 replicated.
# 3. Master waits until the event (2nd) for t1 will be replicated.
---disable_query_log
CREATE TABLE t1 (a INT KEY) ENGINE= MyISAM;
let $wait_binlog_event= CREATE TABLE t1;
--source include/wait_for_binlog_event.inc
@@ -44,31 +43,20 @@ sync_slave_with_master;
connection master;
INSERT INTO t1 VALUE(1);
---enable_query_log
FLUSH LOGS;
-let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1);
-
-connection slave;
-let $slave_param= Exec_Master_Log_Pos;
-source include/wait_for_slave_param.inc;
+sync_slave_with_master;
---disable_query_log
INSERT INTO t1 VALUE(2);
let $slave_param_value= query_get_value(SHOW MASTER STATUS, Position, 1);
---enable_query_log
-
-connection master;
-let $slave_param= Exec_Master_Log_Pos;
-source include/wait_for_slave_param.inc;
-
---enable_query_log
+sync_slave_with_master master;
#
-# Show status of slave
+# Check that the master server's slave threads are still running and show
+# Relay_Log_File
#
---replace_result $SLAVE_MYPORT SLAVE_PORT $slave_param_value POSITION
---replace_column 1 # 8 # 9 # 16 # 23 # 33 # 34 # 35 #
---query_vertical SHOW SLAVE STATUS
+--source include/check_slave_is_running.inc
+--let status_items= Relay_Log_File
+--source include/show_slave_status.inc
--disable_query_log
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test b/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test
index 4a9276d9880..28f13c17042 100644
--- a/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test
+++ b/mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test
@@ -57,14 +57,10 @@ source include/stop_slave.inc;
eval change master to master_port=$SLAVE_MYPORT;
start slave;
-let $slave_param= Last_IO_Errno;
-let $slave_param_value= 1593;
-source include/wait_for_slave_param.inc;
--echo *** must be having the replicate-same-server-id IO thread error ***
-let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1);
-let $last_io_error= query_get_value("show slave status", Last_IO_Error, 1);
-echo Slave_IO_Errno= $last_io_errno;
-echo Slave_IO_Error= $last_io_error;
+let $slave_io_errno= 1593;
+let $show_slave_io_error= 1;
+source include/wait_for_slave_io_error.inc;
# cleanup
diff --git a/mysql-test/suite/rpl/t/rpl_grant.test b/mysql-test/suite/rpl/t/rpl_grant.test
index 50b243eab92..6fbdafc0f9c 100644
--- a/mysql-test/suite/rpl/t/rpl_grant.test
+++ b/mysql-test/suite/rpl/t/rpl_grant.test
@@ -36,5 +36,3 @@ sync_slave_with_master;
--echo **** On Slave ****
SELECT user,host FROM mysql.user WHERE user like 'dummy%';
SELECT COUNT(*) FROM mysql.user WHERE user like 'dummy%';
-
-source include/show_slave_status2.inc;
diff --git a/mysql-test/suite/rpl/t/rpl_incident.test b/mysql-test/suite/rpl/t/rpl_incident.test
index 66893ebb93f..08096d03c11 100644
--- a/mysql-test/suite/rpl/t/rpl_incident.test
+++ b/mysql-test/suite/rpl/t/rpl_incident.test
@@ -16,6 +16,7 @@ SELECT * FROM t1;
connection slave;
# Wait until SQL thread stops with error LOST_EVENT on master
let $slave_sql_errno= 1590;
+let $show_slave_sql_error= 1;
source include/wait_for_slave_sql_error.inc;
# The 4 should not be inserted into the table, since the incident log
@@ -23,10 +24,6 @@ source include/wait_for_slave_sql_error.inc;
--echo **** On Slave ****
SELECT * FROM t1;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 6 # 7 # 8 # 9 # 22 # 23 # 33 #
---query_vertical SHOW SLAVE STATUS
-
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
--sync_with_master
@@ -35,9 +32,7 @@ START SLAVE;
# should be running. We should also have rotated to a new binary log.
SELECT * FROM t1;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 6 # 7 # 8 # 9 # 22 # 23 # 33 #
---query_vertical SHOW SLAVE STATUS
+source include/check_slave_is_running.inc;
connection master;
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/t/rpl_innodb-master.opt b/mysql-test/suite/rpl/t/rpl_innodb-master.opt
index 0eed7aaadad..e27ee9b2c78 100644
--- a/mysql-test/suite/rpl/t/rpl_innodb-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_innodb-master.opt
@@ -1 +1 @@
---innodb_autoinc_lock_mode=0
+--loose-innodb-autoinc-lock-mode=0
diff --git a/mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt b/mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt
index 0eed7aaadad..e27ee9b2c78 100644
--- a/mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt
+++ b/mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt
@@ -1 +1 @@
---innodb_autoinc_lock_mode=0
+--loose-innodb-autoinc-lock-mode=0
diff --git a/mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt b/mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt
index 0eed7aaadad..e27ee9b2c78 100644
--- a/mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt
@@ -1 +1 @@
---innodb_autoinc_lock_mode=0
+--loose-innodb-autoinc-lock-mode=0
diff --git a/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
index b300603f454..5b31b094b62 100644
--- a/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
+++ b/mysql-test/suite/rpl/t/rpl_known_bugs_detection.test
@@ -26,9 +26,11 @@ INSERT INTO t1(b) VALUES(1),(1),(2) ON DUPLICATE KEY UPDATE t1.b=10;
SELECT * FROM t1;
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
-# show the error message
---replace_column 1 # 4 # 7 # 8 # 9 # 23 # 33 #
---query_vertical show slave status;
+# show the error message
+#1105 = ER_UNKNOWN_ERROR
+--let $slave_sql_errno= 1105
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
# show that it was not replicated
SELECT * FROM t1;
@@ -81,8 +83,10 @@ SELECT * FROM t1;
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
# show the error message
---replace_column 1 # 4 # 7 # 8 # 9 # 23 # 33 #
---query_vertical show slave status;
+#1105 = ER_UNKNOWN_ERROR
+--let $slave_sql_errno= 1105
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
# show that it was not replicated
SELECT * FROM t1;
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
index b7d9995c834..e80fc160d8f 100644
--- a/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_fatal.test
@@ -8,7 +8,6 @@ connection master;
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,10);
sync_slave_with_master;
-source include/show_slave_status.inc;
# Now we feed it a load data infile, which should make it stop with a
# fatal error.
@@ -16,12 +15,9 @@ connection master;
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE t1;
connection slave;
-wait_for_slave_to_stop;
-source include/show_slave_status.inc;
-
-connection slave;
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-START SLAVE;
+let $slave_sql_errno= 1593;
+let $show_slave_sql_error= 1;
+source include/wait_for_slave_sql_error_and_skip.inc;
connection master;
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/t/rpl_log_pos.test b/mysql-test/suite/rpl/t/rpl_log_pos.test
index 48effa00b64..daf4b9093fe 100644
--- a/mysql-test/suite/rpl/t/rpl_log_pos.test
+++ b/mysql-test/suite/rpl/t/rpl_log_pos.test
@@ -11,19 +11,31 @@
# Passes with rbr no problem, removed statement include [jbm]
source include/master-slave.inc;
+
+#
+# Add an event to get some information into the log we can try to parse
+#
+let $read_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
+create table if not exists t1 (n int);
+drop table t1;
+
call mtr.add_suppression ("Slave I/O: Got fatal error 1236 from master when reading data from binary");
+call mtr.add_suppression ("Error in Log_event::read_log_event");
source include/show_master_status.inc;
sync_slave_with_master;
source include/stop_slave.inc;
-change master to master_log_pos=75;
-source include/show_slave_status2.inc;
+let $wrong_log_pos= `SELECT $read_pos+2`;
+--replace_result $wrong_log_pos MASTER_LOG_POS
+eval change master to master_log_pos=$wrong_log_pos;
start slave;
-source include/wait_for_slave_sql_to_start.inc;
-source include/wait_for_slave_io_to_stop.inc;
+let $slave_io_errno= 1236;
+let $show_slave_io_error= 1;
+source include/wait_for_slave_io_error.inc;
+--disable_warnings
source include/stop_slave.inc;
+--enable_warnings
-source include/show_slave_status.inc;
connection master;
source include/show_master_status.inc;
create table if not exists t1 (n int);
@@ -32,6 +44,7 @@ create table t1 (n int);
insert into t1 values (1),(2),(3);
save_master_pos;
connection slave;
+--replace_result 4 MASTER_LOG_POS
change master to master_log_pos=4;
start slave;
sync_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_packet.test b/mysql-test/suite/rpl/t/rpl_packet.test
index bfc144c759b..08a533e22ca 100644
--- a/mysql-test/suite/rpl/t/rpl_packet.test
+++ b/mysql-test/suite/rpl/t/rpl_packet.test
@@ -1,7 +1,12 @@
+# ==== Purpose ====
#
# Check replication protocol packet size handling
-# Bug#19402 SQL close to the size of the max_allowed_packet fails on slave
#
+# ==== Related bugs ====
+# Bug#19402 SQL close to the size of the max_allowed_packet fails on slave
+# BUG#23755: Replicated event larger that max_allowed_packet infinitely re-transmits
+# BUG#42914: No LAST_IO_ERROR for max_allowed_packet errors
+# BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET
# max-out size db name
source include/master-slave.inc;
@@ -119,6 +124,38 @@ let $slave_io_running= query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1);
let $last_io_error= query_get_value(SHOW SLAVE STATUS, Last_IO_Error, 1);
eval SELECT "$last_io_error" AS Last_IO_Error;
+# Remove the bad binlog and clear error status on slave.
+STOP SLAVE;
+RESET SLAVE;
+--connection master
+RESET MASTER;
+
+
+#
+# BUG#55322: SHOW BINLOG EVENTS increases @@SESSION.MAX_ALLOWED_PACKET
+#
+# In BUG#55322, @@session.max_allowed_packet increased each time SHOW
+# BINLOG EVENTS was issued. To verify that this bug is fixed, we
+# execute SHOW BINLOG EVENTS twice and check that max_allowed_packet
+# never changes. We turn off the result log because we don't care
+# about the contents of the binlog.
+
+--disable_result_log
+SET @max_allowed_packet_0= @@session.max_allowed_packet;
+SHOW BINLOG EVENTS;
+SET @max_allowed_packet_1= @@session.max_allowed_packet;
+SHOW BINLOG EVENTS;
+SET @max_allowed_packet_2= @@session.max_allowed_packet;
+--enable_result_log
+if (`SELECT NOT(@max_allowed_packet_0 = @max_allowed_packet_1 AND @max_allowed_packet_1 = @max_allowed_packet_2)`)
+{
+ --echo ERROR: max_allowed_packet changed after executing SHOW BINLOG EVENTS
+ --source include/show_rpl_debug_info.inc
+ SELECT @max_allowed_packet_0, @max_allowed_packet_1, @max_allowed_packet_2;
+ --die @max_allowed_packet changed after executing SHOW BINLOG EVENTS
+}
+
+
--echo ==== clean up ====
connection master;
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl/t/rpl_plugin_load-master.opt b/mysql-test/suite/rpl/t/rpl_plugin_load-master.opt
deleted file mode 100644
index 367d5233e0e..00000000000
--- a/mysql-test/suite/rpl/t/rpl_plugin_load-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt b/mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt
deleted file mode 100644
index 367d5233e0e..00000000000
--- a/mysql-test/suite/rpl/t/rpl_plugin_load-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
-$EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test b/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test
index 8863c9d4ac7..ec50311fc7c 100644
--- a/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test
+++ b/mysql-test/suite/rpl/t/rpl_rbr_to_sbr.test
@@ -15,20 +15,10 @@ SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT;
CREATE TABLE t1 (a INT, b LONG);
INSERT INTO t1 VALUES (1,1), (2,2);
INSERT INTO t1 VALUES (3,UUID()), (4,UUID());
-let $VERSION=`select version()`;
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
sync_slave_with_master;
--echo **** On Slave ****
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 # 34 # 35 #
---query_vertical SHOW SLAVE STATUS
---replace_result $VERSION VERSION
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql
diff --git a/mysql-test/suite/rpl/t/rpl_replicate_do.test b/mysql-test/suite/rpl/t/rpl_replicate_do.test
index fea168ee9f1..382e198aaf9 100644
--- a/mysql-test/suite/rpl/t/rpl_replicate_do.test
+++ b/mysql-test/suite/rpl/t/rpl_replicate_do.test
@@ -31,10 +31,8 @@ save_master_pos;
connection slave;
sync_with_master;
# show slave status, just to see of it prints replicate-do-table
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
-
+let $status_items= Replicate_Do_Table;
+source include/show_slave_status.inc;
#
# BUG#12542
# TEST: "SET ONE_SHOT should always be executed on slave"
diff --git a/mysql-test/suite/rpl/t/rpl_rotate_logs.test b/mysql-test/suite/rpl/t/rpl_rotate_logs.test
index f67c880bf26..e8bcc904e4c 100644
--- a/mysql-test/suite/rpl/t/rpl_rotate_logs.test
+++ b/mysql-test/suite/rpl/t/rpl_rotate_logs.test
@@ -66,7 +66,9 @@ insert into temp_table values ("testing temporary tables");
create table t1 (s text);
insert into t1 values('Could not break slave'),('Tried hard');
sync_slave_with_master;
-source include/show_slave_status2.inc;
+let $status_items= Master_Log_File, Relay_Master_Log_File;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
select * from t1;
connection master;
flush logs;
@@ -136,7 +138,8 @@ purge master logs before (@time_for_purge);
source include/show_binary_logs.inc;
insert into t2 values (65);
sync_slave_with_master;
-source include/show_slave_status2.inc;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
select * from t2;
#
@@ -166,7 +169,8 @@ connection slave;
sync_with_master;
select * from t4;
-source include/show_slave_status2.inc;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
# because of concurrent insert, the table may not be up to date
# if we do not lock
lock tables t3 read;
diff --git a/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
index 2ee7c62f282..2bf5a01a71f 100644
--- a/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
+++ b/mysql-test/suite/rpl/t/rpl_row_basic_11bugs.test
@@ -48,9 +48,7 @@ DELETE FROM t1;
INSERT INTO t1 VALUES (1),(2);
DELETE FROM t1 WHERE a = 0;
UPDATE t1 SET a=99 WHERE a = 0;
---replace_result $SERVER_VERSION SERVER_VERSION
---replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
DROP TABLE t1;
--sync_slave_with_master
diff --git a/mysql-test/suite/rpl/t/rpl_row_create_table.test b/mysql-test/suite/rpl/t/rpl_row_create_table.test
index e30982da605..a72ca75e975 100644
--- a/mysql-test/suite/rpl/t/rpl_row_create_table.test
+++ b/mysql-test/suite/rpl/t/rpl_row_create_table.test
@@ -36,9 +36,7 @@ CREATE TABLE t1 (a INT, b INT);
CREATE TABLE t2 (a INT, b INT) ENGINE=Merge;
CREATE TABLE t3 (a INT, b INT) CHARSET=utf8;
CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8;
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
---query_vertical SHOW BINLOG EVENTS FROM 106
+--source include/show_binlog_events.inc
--echo **** On Master ****
--query_vertical SHOW CREATE TABLE t1
--query_vertical SHOW CREATE TABLE t2
@@ -74,9 +72,7 @@ connection master;
--error ER_DUP_ENTRY
CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3;
# Shouldn't be written to the binary log
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+--source include/show_binlog_events.inc
# Test that INSERT-SELECT works the same way as for SBR.
CREATE TABLE t7 (a INT, b INT UNIQUE);
@@ -84,9 +80,7 @@ CREATE TABLE t7 (a INT, b INT UNIQUE);
INSERT INTO t7 SELECT a,b FROM tt3;
SELECT * FROM t7 ORDER BY a,b;
# Should be written to the binary log
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+--source include/show_binlog_events.inc
sync_slave_with_master;
SELECT * FROM t7 ORDER BY a,b;
@@ -98,9 +92,7 @@ INSERT INTO tt4 VALUES (4,8), (5,10), (6,12);
BEGIN;
INSERT INTO t7 SELECT a,b FROM tt4;
ROLLBACK;
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+--source include/show_binlog_events.inc
SELECT * FROM t7 ORDER BY a,b;
sync_slave_with_master;
SELECT * FROM t7 ORDER BY a,b;
@@ -116,9 +108,7 @@ CREATE TEMPORARY TABLE tt7 SELECT 1;
--echo **** On Master ****
--query_vertical SHOW CREATE TABLE t8
--query_vertical SHOW CREATE TABLE t9
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+--source include/show_binlog_events.inc
sync_slave_with_master;
--echo **** On Slave ****
--query_vertical SHOW CREATE TABLE t8
@@ -160,9 +150,7 @@ SELECT * FROM t1 ORDER BY a;
SELECT * FROM t2 ORDER BY a;
SELECT * FROM t3 ORDER BY a;
SELECT * FROM t4 ORDER BY a;
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+--source include/show_binlog_events.inc
sync_slave_with_master;
SHOW TABLES;
SELECT * FROM t1 ORDER BY a;
@@ -202,9 +190,7 @@ INSERT INTO t2 SELECT a+2 FROM tt1;
COMMIT;
SELECT * FROM t2 ORDER BY a;
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+--source include/show_binlog_events.inc
sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
@@ -225,9 +211,7 @@ INSERT INTO t2 SELECT a+2 FROM tt2;
ROLLBACK;
SELECT * FROM t2 ORDER BY a;
---replace_column 1 # 4 #
---replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS FROM 106;
+source include/show_binlog_events.inc;
sync_slave_with_master;
SELECT * FROM t2 ORDER BY a;
diff --git a/mysql-test/suite/rpl/t/rpl_row_drop.test b/mysql-test/suite/rpl/t/rpl_row_drop.test
index 20c217a7c3a..d18ebc2846b 100644
--- a/mysql-test/suite/rpl/t/rpl_row_drop.test
+++ b/mysql-test/suite/rpl/t/rpl_row_drop.test
@@ -30,10 +30,7 @@ connection master;
--echo **** On Master ****
# Should drop the non-temporary table t1 and the temporary table t2
DROP TABLE t1,t2;
-let $VERSION=`select version()`;
---replace_result $VERSION VERSION
---replace_regex /table_id: [0-9]+/table_id: #/
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
SHOW TABLES;
sync_slave_with_master;
--echo **** On Slave ****
diff --git a/mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test b/mysql-test/suite/rpl/t/rpl_row_find_row.test
index 1d7e134f4f4..9163ab54406 100644
--- a/mysql-test/suite/rpl/t/rpl_row_disabled_slave_key.test
+++ b/mysql-test/suite/rpl/t/rpl_row_find_row.test
@@ -71,3 +71,34 @@ DELETE FROM t;
DROP TABLE t;
-- sync_slave_with_master
+
+#
+# BUG#53893: RBR: nullable unique key can lead to out-of-sync slave
+#
+
+#
+# We insert two rows. Both with part of UNIQUE KEY set to null.
+# Then we update the last row inserted. On master the correct
+# row is updated. On the slave the wrong row would be updated
+# because the engine would look it up by the NULL Unique KEY.
+# As a consquence, the wrong row would be updated.
+#
+
+-- connection master
+-- source include/master-slave-reset.inc
+-- connection master
+
+CREATE TABLE t1 (c1 INT NOT NULL, c2 INT NOT NULL, c3 INT, UNIQUE KEY(c1,c3), KEY(c2));
+INSERT INTO t1(c1,c2) VALUES(1,1);
+INSERT INTO t1(c1,c2) VALUES(1,2);
+UPDATE t1 SET c1=1000 WHERE c2=2;
+-- sync_slave_with_master
+
+-- let $diff_table_1=master:test.t1
+-- let $diff_table_2=slave:test.t1
+-- source include/diff_tables.inc
+
+-- connection master
+DROP TABLE t1;
+-- sync_slave_with_master
+
diff --git a/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test b/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test
new file mode 100644
index 00000000000..67e4c4fb14d
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_rec_comp_innodb.test
@@ -0,0 +1,10 @@
+-- source include/have_binlog_format_row.inc
+-- source include/master-slave.inc
+-- source include/have_innodb.inc
+
+#
+# BUG#52868 Wrong handling of NULL value during update, replication out of sync
+#
+
+-- let $engine= InnoDB
+-- source extra/rpl_tests/rpl_record_compare.test
diff --git a/mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test b/mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test
new file mode 100644
index 00000000000..43fa99a51da
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_row_rec_comp_myisam.test
@@ -0,0 +1,31 @@
+-- source include/have_binlog_format_row.inc
+-- source include/master-slave.inc
+
+#
+# BUG#52868 Wrong handling of NULL value during update, replication out of sync
+#
+
+-- let $engine= MyISAM
+-- source extra/rpl_tests/rpl_record_compare.test
+
+-- echo ## coverage purposes - Field_bits
+-- echo ## 1 X bit + 2 Null bits + 5 bits => last_null_bit_pos==0
+## Added here because AFAIK it's only MyISAM and NDB that use Field_bits
+
+-- source include/master-slave-reset.inc
+-- connection master
+
+-- eval CREATE TABLE t1 (c1 bigint(20) DEFAULT 0, c2 bit(5)) ENGINE=$engine DEFAULT CHARSET=latin1
+
+INSERT INTO t1(c1,c2) VALUES (10, b'1');
+INSERT INTO t1(c1,c2) VALUES (NULL, b'1');
+UPDATE t1 SET c1= 0;
+-- sync_slave_with_master
+
+-- let $diff_table_1= master:test.t1
+-- let $diff_table_2= slave:test.t1
+-- source include/diff_tables.inc
+
+-- connection master
+DROP TABLE t1;
+-- sync_slave_with_master
diff --git a/mysql-test/suite/rpl/t/rpl_row_until.test b/mysql-test/suite/rpl/t/rpl_row_until.test
index fe859218ed3..9e3cbbd325a 100644
--- a/mysql-test/suite/rpl/t/rpl_row_until.test
+++ b/mysql-test/suite/rpl/t/rpl_row_until.test
@@ -15,6 +15,7 @@ DROP TABLE t1;
# Save master log postion for query DROP TABLE t1
save_master_pos;
let $master_pos_drop_t1= query_get_value(SHOW BINLOG EVENTS, Pos, 7);
+let $master_log_file= query_get_value(SHOW BINLOG EVENTS, Log_name, 7);
CREATE TABLE t2(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
# Save master log postion for query CREATE TABLE t2
@@ -46,26 +47,28 @@ eval CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='1
# Try to replicate all queries until drop of t1
connection slave;
-echo START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_drop_t1;
+echo START SLAVE UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=master_pos_drop_t1;
--disable_query_log
-eval START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_pos_drop_t1;
+eval START SLAVE UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos_drop_t1;
--enable_query_log
--source include/wait_for_slave_sql_to_stop.inc
# Here table should be still not deleted
SELECT * FROM t1;
---replace_result $master_pos_drop_t1 MASTER_POS_DROP_T1
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_pos_drop_t1
+--source include/check_slave_param.inc
# This should fail right after start
+--replace_result 291 MASTER_LOG_POS
START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=291;
--source include/wait_for_slave_sql_to_stop.inc
# again this table should be still not deleted
SELECT * FROM t1;
---replace_result $master_pos_drop_t1 MASTER_POS_DROP_T1
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_pos_drop_t1
+--source include/check_slave_param.inc
# Try replicate all up to and not including the second insert to t2;
echo START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2;
@@ -74,9 +77,10 @@ eval START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=$r
--enable_query_log
--source include/wait_for_slave_sql_to_stop.inc
SELECT * FROM t2;
---replace_result $relay_pos_insert1_t2 RELAY_POS_INSERT1_T2 $master_pos_insert1_t2 MASTER_POS_INSERT1_T2
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_pos_insert1_t2
+--source include/check_slave_param.inc
# clean up
START SLAVE;
@@ -86,31 +90,34 @@ sync_slave_with_master;
--source include/stop_slave.inc
# This should stop immediately as we are already there
-echo START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_create_t2;
+echo START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=master_pos_create_t2;
--disable_query_log
-eval START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_pos_create_t2;
+eval START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos_create_t2;
--enable_query_log
let $slave_param= Until_Log_Pos;
let $slave_param_value= $master_pos_create_t2;
--source include/wait_for_slave_param.inc
--source include/wait_for_slave_sql_to_stop.inc
# here the sql slave thread should be stopped
---replace_result bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
---replace_result $master_pos_create_t2 MASTER_POS_CREATE_T2 $master_pos_drop_t2 MASTER_POS_DROP_T2
---replace_column 1 # 4 # 7 # 8 # 9 # 16 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_pos_drop_t2
+--source include/check_slave_param.inc
#testing various error conditions
+--replace_result 561 MASTER_LOG_POS
--error 1277
START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=561;
+--replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS
--error 1277
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=561, RELAY_LOG_POS=12;
--error 1277
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001';
--error 1277
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000009';
+--replace_result 561 MASTER_LOG_POS
--error 1277
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=561;
# Warning should be given for second command
START SLAVE;
+--replace_result 740 MASTER_LOG_POS
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=740;
diff --git a/mysql-test/suite/rpl/t/rpl_skip_error.test b/mysql-test/suite/rpl/t/rpl_skip_error.test
index 9c6aa3dcb57..8d176ac0c3b 100644
--- a/mysql-test/suite/rpl/t/rpl_skip_error.test
+++ b/mysql-test/suite/rpl/t/rpl_skip_error.test
@@ -55,7 +55,7 @@ insert into t1 values (7), (8), (9);
--echo [on slave]
sync_slave_with_master;
select * from t1 order by n;
-source include/show_slave_status2.inc;
+source include/check_slave_is_running.inc;
--echo ==== Clean Up ====
connection master;
@@ -78,7 +78,7 @@ insert into t1 values (1), (2), (3);
--echo [on slave]
sync_slave_with_master;
select * from t1;
-source include/show_slave_status2.inc;
+source include/check_slave_is_running.inc;
--echo ==== Clean Up ====
diff --git a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
index 437e1ebb92d..22309c33724 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_load_remove_tmpfile.test
@@ -31,12 +31,9 @@ commit;
# Catch Error
##########################################################################
connection slave;
-source include/wait_for_slave_sql_to_stop.inc;
-
---replace_result $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---replace_regex /SQL_LOAD-[0-9]-[0-9]-[0-9]*/SQL_LOAD/
-query_vertical show slave status;
+# Errno 9 is what we get although it's wrong (see BUG#52768).
+--let $slave_sql_errno= 9
+--source include/wait_for_slave_sql_error.inc
##########################################################################
# Clean up
diff --git a/mysql-test/suite/rpl/t/rpl_slave_skip.test b/mysql-test/suite/rpl/t/rpl_slave_skip.test
index c5ee6793277..4c5930d74fe 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_skip.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_skip.test
@@ -14,6 +14,7 @@ CREATE TABLE t1 (a INT, b INT);
CREATE TABLE t2 (c INT, d INT);
INSERT INTO t1 VALUES (1,1),(2,4),(3,9);
INSERT INTO t2 VALUES (1,1),(2,8),(3,27);
+let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
UPDATE t1,t2 SET b = d, d = b * 2 WHERE a = c;
source include/show_binlog_events.inc;
@@ -21,16 +22,17 @@ source include/show_binlog_events.inc;
SELECT * FROM t1;
SELECT * FROM t2;
save_master_pos;
-
--echo **** On Slave ****
connection slave;
# Stop when reaching the the first table map event.
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=762;
+--replace_result $master_log_pos MASTER_LOG_POS
+eval START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_log_pos;
source include/wait_for_slave_sql_to_stop.inc;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+let $slave_param= Exec_Master_Log_Pos;
+let $slave_param_value= $master_log_pos;
+source include/check_slave_param.inc;
+source include/check_slave_no_error.inc;
# Now we skip *one* table map event. If the execution starts right
# after that table map event, *one* of the involved tables will be
@@ -53,19 +55,18 @@ RESET MASTER;
SET SESSION BINLOG_FORMAT=STATEMENT;
SET @foo = 12;
+let $master_log_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
INSERT INTO t1 VALUES(@foo, 2*@foo);
save_master_pos;
source include/show_binlog_events.inc;
connection slave;
-START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=106;
+--replace_result $master_log_pos MASTER_LOG_POS
+eval START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=$master_log_pos;
source include/wait_for_slave_sql_to_stop.inc;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
sync_with_master;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 8 # 9 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
--echo **** On Master ****
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_sp.test b/mysql-test/suite/rpl/t/rpl_sp.test
index 9be630e9ae8..243136a0d38 100644
--- a/mysql-test/suite/rpl/t/rpl_sp.test
+++ b/mysql-test/suite/rpl/t/rpl_sp.test
@@ -568,9 +568,7 @@ connection master;
# Final inspection which verifies how all statements of this test file
# were written to the binary log.
---replace_column 2 # 5 #
---replace_regex /table_id: [0-9]+/table_id: #/
-show binlog events in 'master-bin.000001' from 106;
+--source include/show_binlog_events.inc
# Restore log_bin_trust_function_creators to its original value.
diff --git a/mysql-test/suite/rpl/t/rpl_ssl.test b/mysql-test/suite/rpl/t/rpl_ssl.test
index 7e256390e25..803b08eeec5 100644
--- a/mysql-test/suite/rpl/t/rpl_ssl.test
+++ b/mysql-test/suite/rpl/t/rpl_ssl.test
@@ -30,9 +30,9 @@ select * from t1;
# The slave is synced and waiting/reading from master
# SHOW SLAVE STATUS will show "Waiting for master to send event"
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
-query_vertical show slave status;
+let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
# Stop the slave, as reported in bug#21871 it would hang
STOP SLAVE;
@@ -70,9 +70,8 @@ let $master_count= `select count(*) from t1`;
sync_slave_with_master;
--source include/wait_for_slave_to_start.inc
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
-query_vertical show slave status;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
let $slave_count= `select count(*) from t1`;
diff --git a/mysql-test/suite/rpl/t/rpl_ssl1.test b/mysql-test/suite/rpl/t/rpl_ssl1.test
index b5355d737d5..eca6a8cf46e 100644
--- a/mysql-test/suite/rpl/t/rpl_ssl1.test
+++ b/mysql-test/suite/rpl/t/rpl_ssl1.test
@@ -45,9 +45,9 @@ sync_with_master;
select * from t1;
#checking show slave status
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 6 # 7 # 8 # 9 # 10 # 11 # 16 # 22 # 23 # 33 # 35 # 36 #
-query_vertical show slave status;
+let $status_items= Master_SSL_Allowed, Master_SSL_CA_Path, Master_SSL_CA_File, Master_SSL_Cert, Master_SSL_Key;
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
#checking if replication works without ssl also performing clean up
stop slave;
@@ -59,10 +59,8 @@ drop table t1;
save_master_pos;
connection slave;
sync_with_master;
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 6 # 7 # 8 # 9 # 10 # 11 # 16 # 22 # 23 # 33 # 35 # 36 #
-query_vertical show slave status;
-
+source include/show_slave_status.inc;
+source include/check_slave_is_running.inc;
# End of 4.1 tests
# Start replication with ssl_verify_server_cert turned on
@@ -89,9 +87,8 @@ echo on slave;
select * from t1;
#checking show slave status
---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MASTER_MYPORT MASTER_MYPORT
---replace_column 1 # 6 # 7 # 8 # 9 # 10 # 11 # 16 # 22 # 23 # 33 # 35 # 36 #
-query_vertical show slave status;
+source include/show_slave_status.inc;
+--source include/check_slave_is_running.inc
connection master;
drop table t1;
diff --git a/mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt b/mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt
index 00ea161cd6e..c7cdc20fe18 100644
--- a/mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=60
+--loose-innodb-lock-wait-timeout=60
diff --git a/mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test b/mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
index 0097fde874a..4086fd03ca1 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_mixing_engines.test
@@ -3,3 +3,41 @@
--source include/have_innodb.inc
--source extra/rpl_tests/rpl_mixing_engines.test
+
+#
+# BUG#49522: Replication problem with mixed MyISAM/InnoDB
+#
+
+-- source include/master-slave-reset.inc
+-- connection master
+
+CREATE TABLE `t1` (
+ `c1` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `c2` tinyint(1) unsigned DEFAULT NULL,
+ `c3` varchar(300) DEFAULT NULL,
+ `c4` int(10) unsigned NOT NULL,
+ `c5` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`c1`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+-- sync_slave_with_master
+ALTER TABLE `t1` Engine=InnoDB;
+
+-- connection master
+SET AUTOCOMMIT=0;
+
+INSERT INTO t1 (c1,c2,c3,c4,c5) VALUES (1, 1, 'X', 1, NULL);
+COMMIT;
+ROLLBACK;
+SET AUTOCOMMIT=1;
+
+-- sync_slave_with_master
+
+-- let $diff_table_1=master:test.t1
+-- let $diff_table_2=slave:test.t1
+-- source include/diff_tables.inc
+
+-- connection master
+DROP TABLE `t1`;
+-- sync_slave_with_master
+
+-- source include/master-slave-end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test
index ae03ebe8b76..f5e57ec2bd6 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_until.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_until.test
@@ -34,9 +34,12 @@ sync_slave_with_master;
connection master;
create table t1(n int not null auto_increment primary key);
insert into t1 values (1),(2),(3),(4);
+let $master_log_pos_1= query_get_value(SHOW MASTER STATUS, Position, 1);
+let $master_log_file= query_get_value(SHOW MASTER STATUS, File, 1);
drop table t1;
create table t2(n int not null auto_increment primary key);
insert into t2 values (1),(2);
+let $master_log_pos_2= query_get_value(SHOW MASTER STATUS, Position, 1);
insert into t2 values (3),(4);
drop table t2;
@@ -45,27 +48,39 @@ drop table t2;
# try to replicate all queries until drop of t1
--echo [on slave]
connection slave;
-start slave until master_log_file='master-bin.000001', master_log_pos=323;
+--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_1 MASTER_LOG_POS
+eval start slave until master_log_file='$master_log_file', master_log_pos=$master_log_pos_1;
--source include/wait_for_slave_io_to_start.inc
--source include/wait_for_slave_sql_to_stop.inc
# here table should be still not deleted
select * from t1;
-source include/show_slave_status2.inc;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_log_pos_1
+--source include/check_slave_param.inc
# this should fail right after start
+--replace_result 291 MASTER_LOG_POS
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
--source include/wait_for_slave_io_to_start.inc
--source include/wait_for_slave_sql_to_stop.inc
# again this table should be still not deleted
select * from t1;
-source include/show_slave_status2.inc;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_log_pos_1
+--source include/check_slave_param.inc
+let $relay_log_file= slave-relay-bin.000004;
+let $master_log_pos= $master_log_pos_2;
+source include/get_relay_log_pos.inc;
# try replicate all up to and not including the second insert to t2;
-start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
+--replace_result $relay_log_pos RELAY_LOG_POS
+eval start slave until relay_log_file='$relay_log_file', relay_log_pos=$relay_log_pos;
--source include/wait_for_slave_io_to_start.inc
--source include/wait_for_slave_sql_to_stop.inc
select * from t2;
-source include/show_slave_status2.inc;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $master_log_pos
+--source include/check_slave_param.inc
# clean up
start slave;
@@ -75,27 +90,34 @@ connection master;
sync_slave_with_master;
--source include/stop_slave.inc
+--let $exec_log_pos_1= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1)
# this should stop immediately as we are already there
-start slave until master_log_file='master-bin.000001', master_log_pos=776;
+--replace_result $master_log_file MASTER_LOG_FILE $master_log_pos_2 MASTER_LOG_POS
+eval start slave until master_log_file='$master_log_file', master_log_pos=$master_log_pos_2;
--source include/wait_for_slave_io_to_start.inc
--source include/wait_for_slave_sql_to_stop.inc
---replace_result bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
-source include/show_slave_status2.inc;
+--let $slave_param= Exec_Master_Log_Pos
+--let $slave_param_value= $exec_log_pos_1
+--source include/check_slave_param.inc
--echo ==== Test various error conditions ====
+--replace_result 561 MASTER_LOG_POS
--error 1277
start slave until master_log_file='master-bin', master_log_pos=561;
+--replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS
--error 1277
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
--error 1277
start slave until master_log_file='master-bin.000001';
--error 1277
start slave until relay_log_file='slave-relay-bin.000002';
+--replace_result 561 MASTER_LOG_POS
--error 1277
start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
# Warning should be given for second command
start slave sql_thread;
+--replace_result 776 MASTER_LOG_POS
start slave until master_log_file='master-bin.000001', master_log_pos=776;
#
@@ -144,8 +166,8 @@ insert into t1 set a=null;
select count(*) as two from t1;
connection slave;
---replace_result $until_pos UNTIL_POS;
-eval start slave until master_log_file='master-bin.000001', master_log_pos= $until_pos;
+--replace_result $master_log_file MASTER_LOG_FILE $until_pos UNTIL_POS;
+eval start slave until master_log_file='$master_log_file', master_log_pos= $until_pos;
source include/wait_for_slave_sql_to_stop.inc;
let $slave_exec_pos= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1);
--echo slave stopped at the prescribed position
@@ -174,13 +196,18 @@ sync_with_master;
connection master;
drop table if exists t1; # there is create table t1 in bug47142_master-bin.000001
+sync_slave_with_master;
+connection slave;
+stop slave;
+connection master;
+
flush logs;
let $MYSQLD_DATADIR= `select @@datadir`;
--remove_file $MYSQLD_DATADIR/master-bin.000001
--copy_file $MYSQL_TEST_DIR/std_data/bug47142_master-bin.000001 $MYSQLD_DATADIR/master-bin.000001
+flush logs;
connection slave;
-stop slave;
reset slave;
start slave until master_log_file='master-bin.000001', master_log_pos=294 /* to stop right before DROP */;
--source include/wait_for_slave_sql_to_stop.inc
diff --git a/mysql-test/suite/rpl/t/rpl_table_options-master.opt b/mysql-test/suite/rpl/t/rpl_table_options-master.opt
deleted file mode 100644
index 367d5233e0e..00000000000
--- a/mysql-test/suite/rpl/t/rpl_table_options-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_table_options.test b/mysql-test/suite/rpl/t/rpl_table_options.test
index aaf5e89fdfd..b3d75bb0f95 100644
--- a/mysql-test/suite/rpl/t/rpl_table_options.test
+++ b/mysql-test/suite/rpl/t/rpl_table_options.test
@@ -3,7 +3,7 @@
--source include/master-slave.inc
--replace_regex /\.dll/.so/
-eval install plugin example soname $HA_EXAMPLE_SO;
+eval install plugin example soname '$HA_EXAMPLE_SO';
set storage_engine=example;
sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/t/rpl_temporary_errors.test b/mysql-test/suite/rpl/t/rpl_temporary_errors.test
index ad0e6174c54..6b1ba558d2d 100644
--- a/mysql-test/suite/rpl/t/rpl_temporary_errors.test
+++ b/mysql-test/suite/rpl/t/rpl_temporary_errors.test
@@ -1,4 +1,5 @@
source include/master-slave.inc;
+source include/have_innodb.inc;
call mtr.add_suppression("Deadlock found");
@@ -25,18 +26,58 @@ sync_slave_with_master;
set @@global.slave_exec_mode= default;
SHOW STATUS LIKE 'Slave_retried_transactions';
SELECT * FROM t1;
-source include/show_slave_status2.inc;
+source include/check_slave_is_running.inc;
DROP TABLE t1;
--echo **** On Master ****
connection master;
+SET SQL_LOG_BIN= 0;
DROP TABLE t1;
+SET SQL_LOG_BIN= 1;
+
+# BUG#Bug #53259 Unsafe statement binlogged in statement format w/MyIsam temp tables
+#
+SET SESSION BINLOG_FORMAT=MIXED;
+CREATE TABLE t_myisam (id INT, PRIMARY KEY (id)) engine= MyIsam;
+INSERT INTO t_myisam (id) VALUES(1);
+CREATE TABLE t_innodb (id INT) engine= Innodb;
+INSERT INTO t_innodb (id) VALUES(1);
+
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+BEGIN;
+INSERT INTO t_innodb(id) VALUES(2);
+INSERT INTO t_myisam(id) VALUES(3);
+CREATE TEMPORARY TABLE x (id INT);
+--error 1062
+INSERT INTO t_myisam(id) VALUES(4),(1);
+INSERT INTO t_innodb(id) VALUES(5);
+COMMIT;
+
+SELECT * FROM t_innodb;
+SELECT * FROM t_myisam;
+
+--sync_slave_with_master
+
+SELECT * FROM t_innodb;
+SELECT * FROM t_myisam;
+
+--connection master
+
+BEGIN;
+CREATE TEMPORARY TABLE tmp2 SELECT * FROM t_innodb;
+INSERT INTO t_innodb(id) VALUES(1);
+INSERT INTO t_innodb(id) VALUES(1);
+ROLLBACK;
+source include/show_binlog_events.inc;
+
+DROP TABLE t_myisam, t_innodb;
# We must wait for the slave to stop.
# Otherwise the warnings in the error log about deadlock may be written to
# the error log only during shutdown, and currently the suppression of
# "Deadlock found" set in this test case is not effective during server
# shutdown.
+--sync_slave_with_master
connection slave;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
diff --git a/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test b/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
index 56924a2efe9..d8c6ae5ade8 100644
--- a/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
+++ b/mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test
@@ -10,4 +10,3 @@ source include/have_binlog_format_row.inc;
LET $ENGINE_TYPE= MyISAM;
source extra/rpl_tests/rpl_tmp_table_and_DDL.test;
-
diff --git a/mysql-test/suite/rpl/t/rpl_trigger.test b/mysql-test/suite/rpl/t/rpl_trigger.test
index e296da01bad..442f18ca61d 100644
--- a/mysql-test/suite/rpl/t/rpl_trigger.test
+++ b/mysql-test/suite/rpl/t/rpl_trigger.test
@@ -4,6 +4,11 @@
# TODO: Remove statement include once 12574 is patched
--source include/have_binlog_format_mixed_or_statement.inc
--source include/master-slave.inc
+--source include/have_innodb.inc
+connection slave;
+--source include/have_innodb.inc
+connection master;
+
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
@@ -506,11 +511,9 @@ sync_slave_with_master;
connection master;
source include/master-slave-reset.inc;
-source include/have_innodb.inc;
connection slave;
-source include/have_innodb.inc;
-
connection master;
+
create table t1 ( f int ) engine = innodb;
create table log ( r int ) engine = myisam;
create trigger tr
diff --git a/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt b/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
index 73ca7001985..48457b17309 100644
--- a/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_typeconv-slave.opt
@@ -1 +1 @@
---innodb \ No newline at end of file
+--loose-innodb
diff --git a/mysql-test/suite/rpl/t/rpl_udf-master.opt b/mysql-test/suite/rpl/t/rpl_udf-master.opt
deleted file mode 100644
index 7d8786c156a..00000000000
--- a/mysql-test/suite/rpl/t/rpl_udf-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$UDF_EXAMPLE_LIB_OPT
diff --git a/mysql-test/suite/rpl/t/rpl_udf-slave.opt b/mysql-test/suite/rpl/t/rpl_udf-slave.opt
deleted file mode 100644
index 7d8786c156a..00000000000
--- a/mysql-test/suite/rpl/t/rpl_udf-slave.opt
+++ /dev/null
@@ -1 +0,0 @@
-$UDF_EXAMPLE_LIB_OPT
diff --git a/mysql-test/suite/rpl_ndb/my.cnf b/mysql-test/suite/rpl_ndb/my.cnf
index 58fec36eedd..426608fc7fa 100644
--- a/mysql-test/suite/rpl_ndb/my.cnf
+++ b/mysql-test/suite/rpl_ndb/my.cnf
@@ -18,6 +18,8 @@ mysqld=
ndbcluster
# Turn on bin logging
log-bin= master-bin
+# Cluster only supports row format
+binlog-format= row
[mysqld.1.1]
@@ -41,6 +43,8 @@ master-connect-retry= 1
log-bin= slave-bin
relay-log= slave-relay-bin
+# Cluster only supports row format
+binlog-format= row
init-rpl-role= slave
log-slave-updates
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result
index b16a63ec5ad..d43165e2b5e 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_basic.result
@@ -140,45 +140,7 @@ set GLOBAL slave_transaction_retries=1;
**** On Master ****
UPDATE t1 SET `nom`="DEAD" WHERE `nid`=1;
**** On Slave ****
-SHOW SLAVE STATUS;;
-Slave_IO_State <Slave_IO_State>
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos <Read_Master_Log_Pos>
-Relay_Log_File <Relay_Log_File>
-Relay_Log_Pos <Relay_Log_Pos>
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table <Replicate_Ignore_Table>
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno <Last_Errno>
-Last_Error <Last_Error>
-Skip_Counter 0
-Exec_Master_Log_Pos <Exec_Master_Log_Pos>
-Relay_Log_Space <Relay_Log_Space>
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master <Seconds_Behind_Master>
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno <Last_SQL_Errno>
-Last_SQL_Error <Last_SQL_Error>
+Last_SQL_Error = Could not execute Write_rows event on table test.t1; Got temporary error 266 'Time-out in NDB, probably caused by deadlock' from NDB, Error_code: 1297; Lock wait timeout exceeded; try restarting transaction, Error_code: 1205; handler error HA_ERR_LOCK_WAIT_TIMEOUT; the event's master log master-bin.000001, end_log_pos 6834
set GLOBAL slave_transaction_retries=10;
include/start_slave.inc
select * from t1 order by nid;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result
index 2daacb351a9..dfbd7a37d8e 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular.result
@@ -17,87 +17,11 @@ SELECT * FROM t1 ORDER BY a;
a b
1 2
2 3
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
SELECT * FROM t1 ORDER BY a;
a b
1 2
2 3
-show slave status;;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 60
-Master_Log_File slave-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File slave-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
STOP SLAVE;
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result
index b6f32668c42..99438d663bb 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_simplex.result
@@ -14,45 +14,7 @@ INSERT INTO t1 VALUES (2,3);
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST="127.0.0.1",MASTER_PORT=SLAVE_PORT,MASTER_USER="root";
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port SLAVE_PORT
-Connect_Retry 60
-Master_Log_File slave-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File slave-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
SELECT * FROM t1 ORDER BY a;
a b
1 2
@@ -63,43 +25,5 @@ SELECT * FROM t1 ORDER BY a;
a b
1 2
2 3
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
index f514bf7a75b..1a79affabe6 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_extraCol.result
@@ -54,45 +54,7 @@ a b c
3 4 QA TESTING
*** Start Slave ***
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 size mismatch - master has size 10, test.t2 on slave has size 6. Master's column size should be <= the slave's column size.
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@@ -119,49 +81,12 @@ set @b1 = 'b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 252, test.t3 has type 3
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t3 ***
DROP TABLE t3;
*** Create t4 on slave ***
@@ -181,49 +106,12 @@ START SLAVE;
INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
(30000.22,4,'QA TESTING');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 246, test.t4 has type 3
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t4 ***
DROP TABLE t4;
*** Create t5 on slave ***
@@ -243,49 +131,12 @@ START SLAVE;
INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
(2,'JOE',300.01,0,'b2b2',1.0000009);
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 5 type mismatch - received type 4, test.t5 has type 246
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t5 ***
DROP TABLE t5;
*** Create t6 on slave ***
@@ -304,47 +155,9 @@ START SLAVE;
INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
(2,'JOE',300.01,0);
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
+Last_SQL_Error = Table definition on master and slave does not match: Column 3 type mismatch - received type 16, test.t6 has type 3
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
*** Drop t6 ***
DROP TABLE t6;
@@ -416,49 +229,12 @@ set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 254, test.t10 has type 5
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t10 ***
DROP TABLE t10;
*** Create t11 on slave ***
@@ -477,49 +253,12 @@ set @b1 = 'b1b1b1b1';
set @b1 = concat(@b1,@b1);
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 2 type mismatch - received type 15, test.t11 has type 252
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
*** Drop t11 ***
DROP TABLE t11;
*** Create t12 on slave ***
@@ -729,47 +468,10 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
********************************************
*** Expect slave to fail with Error 1060 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1060
-Last_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1060
-Last_SQL_Error Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Error 'Duplicate column name 'c6'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5'
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 1;
+include/start_slave.inc
*** Try to insert in master ****
INSERT INTO t15 () VALUES(5,2.00,'Replication Testing',@b1,'Buda',2);
SELECT * FROM t15 ORDER BY c1;
@@ -867,48 +569,11 @@ START SLAVE;
*** Master Data Insert ***
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
********************************************
-*** Expect slave to fail with Error 1522 ***
+*** Expect slave to fail with Error 1535 ***
********************************************
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port #
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos #
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running No
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 1535
-Last_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
-Skip_Counter 0
-Exec_Master_Log_Pos #
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 1535
-Last_SQL_Error Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
-SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
-START SLAVE;
+--source include/wait_for_slave_sql_error_and_skip.inc
+Last_SQL_Error = Table definition on master and slave does not match: Column 0 type mismatch - received type 8, test.t17 has type 2
+SET GLOBAL SQL_SLAVE_SKIP_COUNTER= 2;
+include/start_slave.inc
** DROP table t17 ***
DROP TABLE t17;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result
index e2fee391bab..e2755c04f28 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_idempotent.result
@@ -32,16 +32,11 @@ SELECT * FROM t1 ORDER BY c3;
c1 c2 c3
row3 C 3
row4 D 4
-SHOW SLAVE STATUS;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-<Slave_IO_State> 127.0.0.1 root MASTER_PORT 1 master-bin.000001 <Read_Master_Log_Pos> <Relay_Log_File> <Relay_Log_Pos> master-bin.000001 Yes Yes <Replicate_Ignore_Table> 0 0 <Exec_Master_Log_Pos> <Relay_Log_Space> None 0 No <Seconds_Behind_Master> No <Last_IO_Errno> <Last_IO_Error> 0
+Checking that both slave threads are running.
STOP SLAVE;
CHANGE MASTER TO
master_log_file = 'master-bin.000001',
master_log_pos = <the_pos> ;
-SHOW SLAVE STATUS;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-<Slave_IO_State> 127.0.0.1 root MASTER_PORT 1 master-bin.000001 <Read_Master_Log_Pos> <Relay_Log_File> <Relay_Log_Pos> master-bin.000001 No No <Replicate_Ignore_Table> 0 0 <Exec_Master_Log_Pos> <Relay_Log_Space> None 0 No <Seconds_Behind_Master> No <Last_IO_Errno> <Last_IO_Error> 0
START SLAVE;
SELECT * FROM t1 ORDER BY c3;
c1 c2 c3
@@ -67,7 +62,5 @@ COMMIT;
SELECT * FROM t1;
c1 c2 c3
row2 new on slave 2
-SHOW SLAVE STATUS;
-Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error
-<Slave_IO_State> 127.0.0.1 root MASTER_PORT 1 master-bin.000001 <Read_Master_Log_Pos> <Relay_Log_File> <Relay_Log_Pos> master-bin.000001 Yes Yes <Replicate_Ignore_Table> 0 0 <Exec_Master_Log_Pos> <Relay_Log_Space> None 0 No <Seconds_Behind_Master> <Last_IO_Errno> <Last_IO_Error> 0
+Checking that both slave threads are running.
DROP TABLE IF EXISTS t1;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
index 540c430e757..85ecb13bd66 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result
@@ -7,7 +7,7 @@ start slave;
include/stop_slave.inc
reset master;
reset slave;
-start slave;
+include/start_slave.inc
create table t1(n int not null auto_increment primary key)ENGINE=NDB;
insert into t1 values (NULL);
drop table t1;
@@ -16,34 +16,33 @@ load data infile 'LOAD_FILE' into table t1 ignore 1 lines;
select count(*) from t1;
count(*)
69
-show binlog events;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
-master-bin.000001 # Write_rows 1 # table_id: #
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Query 1 # COMMIT
-master-bin.000001 # Query 1 # use `test`; drop table t1
-master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
-master-bin.000001 # Query 1 # BEGIN
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
-master-bin.000001 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
-master-bin.000001 # Write_rows 1 # table_id: #
-master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000001 # Query 1 # COMMIT
-show binlog events from 106 limit 1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; drop table t1
+master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
-show binlog events from 106 limit 2;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
+show binlog events from <binlog_start> limit 2;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
-master-bin.000001 # Query 1 # BEGIN
-show binlog events from 106 limit 2,1;
+master-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
+master-bin.000001 # Query # # BEGIN
+show binlog events from <binlog_start> limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Table_map 1 # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (test.t1)
flush logs;
create table t3 (a int)ENGINE=NDB;
select * from t1 order by 1 asc;
@@ -211,17 +210,16 @@ master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Rotate # # master-bin.000002;pos=4
-show binlog events in 'master-bin.000002';
+show binlog events in 'master-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
-master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=NDB
-master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=NDB
-master-bin.000002 # Query 1 # BEGIN
-master-bin.000002 # Table_map 1 # table_id: # (test.t2)
-master-bin.000002 # Table_map 1 # table_id: # (mysql.ndb_apply_status)
-master-bin.000002 # Write_rows 1 # table_id: #
-master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
-master-bin.000002 # Query 1 # COMMIT
+master-bin.000002 # Query # # use `test`; create table t3 (a int)ENGINE=NDB
+master-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=NDB
+master-bin.000002 # Query # # BEGIN
+master-bin.000002 # Table_map # # table_id: # (test.t2)
+master-bin.000002 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000002 # Write_rows # # table_id: #
+master-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000002 # Query # # COMMIT
show binary logs;
Log_name File_size
master-bin.000001 #
@@ -230,75 +228,35 @@ show binary logs;
Log_name File_size
slave-bin.000001 #
slave-bin.000002 #
-show binlog events in 'slave-bin.000001' from 4;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
-slave-bin.000001 # Query 2 # BEGIN
-slave-bin.000001 # Table_map 2 # table_id: # (test.t1)
-slave-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
-slave-bin.000001 # Write_rows 2 # table_id: #
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Query 2 # COMMIT
-slave-bin.000001 # Query 1 # use `test`; drop table t1
-slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
-slave-bin.000001 # Query 2 # BEGIN
-slave-bin.000001 # Table_map 2 # table_id: # (test.t1)
-slave-bin.000001 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
-slave-bin.000001 # Write_rows 2 # table_id: #
-slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000001 # Query 2 # COMMIT
-slave-bin.000001 # Query 1 # use `test`; create table t3 (a int)ENGINE=NDB
-slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
-show binlog events in 'slave-bin.000002' from 4;
+slave-bin.000001 # Query # # use `test`; create table t1(n int not null auto_increment primary key)ENGINE=NDB
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+slave-bin.000001 # Write_rows # # table_id: #
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # use `test`; drop table t1
+slave-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=NDB
+slave-bin.000001 # Query # # BEGIN
+slave-bin.000001 # Table_map # # table_id: # (test.t1)
+slave-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+slave-bin.000001 # Write_rows # # table_id: #
+slave-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query # # COMMIT
+slave-bin.000001 # Query # # use `test`; create table t3 (a int)ENGINE=NDB
+slave-bin.000001 # Rotate # # slave-bin.000002;pos=4
+show binlog events in 'slave-bin.000002' from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
-slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=NDB
-slave-bin.000002 # Query 2 # BEGIN
-slave-bin.000002 # Table_map 2 # table_id: # (test.t2)
-slave-bin.000002 # Table_map 2 # table_id: # (mysql.ndb_apply_status)
-slave-bin.000002 # Write_rows 2 # table_id: #
-slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
-slave-bin.000002 # Query 2 # COMMIT
-SHOW SLAVE STATUS;
-Slave_IO_State #
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000002
-Read_Master_Log_Pos 623
-Relay_Log_File #
-Relay_Log_Pos #
-Relay_Master_Log_File master-bin.000002
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table #
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos 623
-Relay_Log_Space #
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master #
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno #
-Last_IO_Error #
-Last_SQL_Errno 0
-Last_SQL_Error
+slave-bin.000002 # Query # # use `test`; create table t2 (n int)ENGINE=NDB
+slave-bin.000002 # Query # # BEGIN
+slave-bin.000002 # Table_map # # table_id: # (test.t2)
+slave-bin.000002 # Table_map # # table_id: # (mysql.ndb_apply_status)
+slave-bin.000002 # Write_rows # # table_id: #
+slave-bin.000002 # Write_rows # # table_id: # flags: STMT_END_F
+slave-bin.000002 # Query # # COMMIT
+Checking that both slave threads are running.
show binlog events in 'slave-bin.000005' from 4;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result
index da60b0bbbbf..7caa88a16a1 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_engines_transactions.result
@@ -341,6 +341,25 @@ ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
SET AUTOCOMMIT = 1;
+---- Mixed statements Innodb ----
+BEGIN;
+INSERT INTO tndb VALUES (147);
+INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+COMMIT;
+INSERT INTO tndb VALUES (148);
+BEGIN;
+INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+INSERT INTO tndb VALUES (149);
+COMMIT;
+BEGIN;
+INSERT INTO tndb VALUES (150);
+INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+COMMIT;
+INSERT INTO tndb VALUES (151);
+BEGIN;
+INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+INSERT INTO tndb VALUES (152);
+COMMIT;
==== Verify the result ====
SELECT * FROM tmyisam ORDER BY a;
a
@@ -393,6 +412,8 @@ a
140
142
146
+150
+151
SELECT * FROM tinnodb ORDER BY a;
a
1
@@ -420,6 +441,8 @@ a
120
125
127
+147
+148
SELECT * FROM tndb ORDER BY a;
a
2
@@ -447,6 +470,12 @@ a
121
123
126
+147
+148
+149
+150
+151
+152
[on slave]
Comparing tables master:test.tmyisam and slave:test.tmyisam
Comparing tables master:test.tinnodb and slave:test.tinnodb
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result
new file mode 100644
index 00000000000..92fda774da5
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result
@@ -0,0 +1,286 @@
+==== Initialization ====
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+---- setup master ----
+CREATE TABLE myisam_innodb (a INT) ENGINE=MYISAM;
+CREATE TABLE innodb_myisam (a INT) ENGINE=INNODB;
+CREATE TABLE myisam_ndb (a INT) ENGINE=MYISAM;
+CREATE TABLE ndb_myisam (a INT) ENGINE=NDB;
+CREATE TABLE innodb_ndb (a INT) ENGINE=INNODB;
+CREATE TABLE ndb_innodb (a INT) ENGINE=NDB;
+SHOW CREATE TABLE myisam_innodb;
+Table Create Table
+myisam_innodb CREATE TABLE `myisam_innodb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SHOW CREATE TABLE innodb_myisam;
+Table Create Table
+innodb_myisam CREATE TABLE `innodb_myisam` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE myisam_ndb;
+Table Create Table
+myisam_ndb CREATE TABLE `myisam_ndb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SHOW CREATE TABLE ndb_myisam;
+Table Create Table
+ndb_myisam CREATE TABLE `ndb_myisam` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+SHOW CREATE TABLE innodb_ndb;
+Table Create Table
+innodb_ndb CREATE TABLE `innodb_ndb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE ndb_innodb;
+Table Create Table
+ndb_innodb CREATE TABLE `ndb_innodb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+---- setup slave with different engines ----
+DROP TABLE myisam_innodb, innodb_myisam;
+DROP TABLE myisam_ndb, ndb_myisam;
+DROP TABLE innodb_ndb, ndb_innodb;
+CREATE TABLE myisam_innodb (a INT) ENGINE=INNODB;
+CREATE TABLE innodb_myisam (a INT) ENGINE=MYISAM;
+CREATE TABLE myisam_ndb (a INT) ENGINE=NDB;
+CREATE TABLE ndb_myisam (a INT) ENGINE=MYISAM;
+CREATE TABLE innodb_ndb (a INT) ENGINE=NDB;
+CREATE TABLE ndb_innodb (a INT) ENGINE=INNODB;
+SHOW CREATE TABLE myisam_innodb;
+Table Create Table
+myisam_innodb CREATE TABLE `myisam_innodb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+SHOW CREATE TABLE innodb_myisam;
+Table Create Table
+innodb_myisam CREATE TABLE `innodb_myisam` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SHOW CREATE TABLE myisam_ndb;
+Table Create Table
+myisam_ndb CREATE TABLE `myisam_ndb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+SHOW CREATE TABLE ndb_myisam;
+Table Create Table
+ndb_myisam CREATE TABLE `ndb_myisam` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+SHOW CREATE TABLE innodb_ndb;
+Table Create Table
+innodb_ndb CREATE TABLE `innodb_ndb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ndbcluster DEFAULT CHARSET=latin1
+SHOW CREATE TABLE ndb_innodb;
+Table Create Table
+ndb_innodb CREATE TABLE `ndb_innodb` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+==== AUTOCOMMIT=0, transactions ====
+---- COMMIT ----
+SET AUTOCOMMIT = 0;
+BEGIN;
+INSERT INTO myisam_innodb VALUES (1);
+INSERT INTO myisam_innodb VALUES (2);
+COMMIT;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (3);
+INSERT INTO innodb_myisam VALUES (4);
+COMMIT;
+BEGIN;
+INSERT INTO myisam_ndb VALUES (5);
+INSERT INTO myisam_ndb VALUES (6);
+COMMIT;
+BEGIN;
+INSERT INTO ndb_myisam VALUES (7);
+INSERT INTO ndb_myisam VALUES (8);
+COMMIT;
+BEGIN;
+INSERT INTO ndb_innodb VALUES (9);
+INSERT INTO ndb_innodb VALUES (10);
+COMMIT;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (11);
+INSERT INTO innodb_ndb VALUES (12);
+COMMIT;
+---- ROLLBACK ----
+BEGIN;
+INSERT INTO myisam_innodb VALUES (13);
+INSERT INTO myisam_innodb VALUES (14);
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO innodb_myisam VALUES (15);
+INSERT INTO innodb_myisam VALUES (16);
+ROLLBACK;
+BEGIN;
+INSERT INTO myisam_ndb VALUES (17);
+INSERT INTO myisam_ndb VALUES (18);
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO ndb_myisam VALUES (19);
+INSERT INTO ndb_myisam VALUES (20);
+ROLLBACK;
+BEGIN;
+INSERT INTO ndb_innodb VALUES (21);
+INSERT INTO ndb_innodb VALUES (22);
+ROLLBACK;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (23);
+INSERT INTO innodb_ndb VALUES (24);
+ROLLBACK;
+==== AUTOCOMMIT=1, transactions ====
+---- COMMIT ----
+SET AUTOCOMMIT = 1;
+BEGIN;
+INSERT INTO myisam_innodb VALUES (25);
+INSERT INTO myisam_innodb VALUES (26);
+COMMIT;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (27);
+INSERT INTO innodb_myisam VALUES (28);
+COMMIT;
+BEGIN;
+INSERT INTO myisam_ndb VALUES (29);
+INSERT INTO myisam_ndb VALUES (30);
+COMMIT;
+BEGIN;
+INSERT INTO ndb_myisam VALUES (31);
+INSERT INTO ndb_myisam VALUES (32);
+COMMIT;
+BEGIN;
+INSERT INTO ndb_innodb VALUES (33);
+INSERT INTO ndb_innodb VALUES (34);
+COMMIT;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (35);
+INSERT INTO innodb_ndb VALUES (36);
+COMMIT;
+---- ROLLBACK ----
+BEGIN;
+INSERT INTO myisam_innodb VALUES (37);
+INSERT INTO myisam_innodb VALUES (38);
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO innodb_myisam VALUES (39);
+INSERT INTO innodb_myisam VALUES (40);
+ROLLBACK;
+BEGIN;
+INSERT INTO myisam_ndb VALUES (41);
+INSERT INTO myisam_ndb VALUES (42);
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO ndb_myisam VALUES (43);
+INSERT INTO ndb_myisam VALUES (44);
+ROLLBACK;
+BEGIN;
+INSERT INTO ndb_innodb VALUES (45);
+INSERT INTO ndb_innodb VALUES (46);
+ROLLBACK;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (47);
+INSERT INTO innodb_ndb VALUES (48);
+ROLLBACK;
+==== AUTOCOMMIT=1, single statements ====
+INSERT INTO myisam_innodb VALUES (49);
+INSERT INTO myisam_innodb VALUES (50);
+INSERT INTO innodb_myisam VALUES (51);
+INSERT INTO innodb_myisam VALUES (52);
+INSERT INTO myisam_ndb VALUES (53);
+INSERT INTO myisam_ndb VALUES (54);
+INSERT INTO ndb_myisam VALUES (55);
+INSERT INTO ndb_myisam VALUES (56);
+INSERT INTO ndb_innodb VALUES (57);
+INSERT INTO ndb_innodb VALUES (58);
+INSERT INTO innodb_ndb VALUES (59);
+INSERT INTO innodb_ndb VALUES (60);
+==== AUTOCOMMIT=0, single statements, myisam on master ====
+SET AUTOCOMMIT = 0;
+INSERT INTO myisam_innodb VALUES (61);
+INSERT INTO myisam_innodb VALUES (62);
+INSERT INTO myisam_ndb VALUES (63);
+INSERT INTO myisam_ndb VALUES (64);
+==== Show results ====
+SELECT * FROM myisam_innodb ORDER BY a;
+a
+1
+2
+13
+14
+25
+26
+37
+38
+49
+50
+61
+62
+SELECT * FROM innodb_myisam ORDER BY a;
+a
+3
+4
+27
+28
+51
+52
+SELECT * FROM myisam_ndb ORDER BY a;
+a
+5
+6
+17
+18
+29
+30
+41
+42
+53
+54
+63
+64
+SELECT * FROM ndb_myisam ORDER BY a;
+a
+7
+8
+31
+32
+55
+56
+SELECT * FROM innodb_ndb ORDER BY a;
+a
+11
+12
+35
+36
+59
+60
+SELECT * FROM ndb_innodb ORDER BY a;
+a
+9
+10
+33
+34
+57
+58
+Comparing tables master:test.myisam_innodb and slave:test.myisam_innodb
+Comparing tables master:test.innodb_myisam and slave:test.innodb_myisam
+Comparing tables master:test.myisam_ndb and slave:test.myisam_ndb
+Comparing tables master:test.ndb_myisam and slave:test.ndb_myisam
+Comparing tables master:test.innodb_ndb and slave:test.innodb_ndb
+Comparing tables master:test.ndb_innodb and slave:test.ndb_innodb
+==== Clean up ====
+drop table myisam_innodb, innodb_myisam;
+drop table myisam_ndb, ndb_myisam;
+drop table innodb_ndb, ndb_innodb;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result
index f8eb5ebdd89..05524ae1ae3 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_multi.result
@@ -29,8 +29,8 @@ FROM mysql.ndb_binlog_index WHERE epoch = <the_epoch> ;
106 master-bin.000001
CHANGE MASTER TO
master_port=<MASTER_PORT1>,
-master_log_file = 'master-bin.000001',
-master_log_pos = 106 ;
+master_log_file = 'MASTER_LOG_FILE',
+master_log_pos = MASTER_LOG_POS ;
start slave;
INSERT INTO t1 VALUES ("row2","will go away",2),("row3","will change",3),("row4","D",4);
DELETE FROM t1 WHERE c3 = 1;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
index 675a69d17a4..367738b21e5 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
@@ -4,6 +4,7 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
+SET binlog_format = STATEMENT;
*** Test 1 ***
@@ -26,21 +27,21 @@ from mysql.ndb_apply_status;
# since insert is done with transactional engine, expect a BEGIN
# at <start_pos>
-show binlog events from <start_pos> limit 1;
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 <start_pos> Query 1 # BEGIN
+master-bin.000001 # Query # # BEGIN
# Now the insert, one step after
-show binlog events from <start_pos> limit 1,1;
+show binlog events from <binlog_start> limit 1,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query 1 # use `test`; insert into t1 values (1,2)
+master-bin.000001 # Query # # use `test`; insert into t1 values (1,2)
# and the COMMIT should be at <end_pos>
-show binlog events from <start_pos> limit 2,1;
+show binlog events from <binlog_start> limit 2,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
+master-bin.000001 # Xid # # COMMIT /* XID */
begin;
insert into t1 values (2,3);
@@ -51,18 +52,18 @@ select @log_name:=log_name, @start_pos:=start_pos, @end_pos:=end_pos
from mysql.ndb_apply_status;
@log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
<log_name> <start_pos> <end_pos>
-show binlog events from <start_pos> limit 1;
+show binlog events from <binlog_start> limit 1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 <start_pos> Query 1 # BEGIN
+master-bin.000001 # Query # # BEGIN
-show binlog events from <start_pos> limit 1,2;
+show binlog events from <binlog_start> limit 1,2;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; insert into t1 values (2,3)
master-bin.000001 # Query # # use `test`; insert into t2 values (3,4)
-show binlog events from <start_pos> limit 3,1;
+show binlog events from <binlog_start> limit 3,1;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Xid 1 <end_pos> COMMIT /* XID */
+master-bin.000001 # Xid # # COMMIT /* XID */
DROP TABLE test.t1, test.t2;
SHOW TABLES;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result
index 3ef5e2b7e53..49d068d5fe4 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_sync.result
@@ -68,45 +68,7 @@ CHANGE MASTER TO
master_log_file = 'master-bin.000001',
master_log_pos = <the_pos> ;
START SLAVE;
-SHOW SLAVE STATUS;
-Slave_IO_State <Slave_IO_State>
-Master_Host 127.0.0.1
-Master_User root
-Master_Port MASTER_PORT
-Connect_Retry 1
-Master_Log_File master-bin.000001
-Read_Master_Log_Pos <Read_Master_Log_Pos>
-Relay_Log_File <Relay_Log_File>
-Relay_Log_Pos <Relay_Log_Pos>
-Relay_Master_Log_File master-bin.000001
-Slave_IO_Running Yes
-Slave_SQL_Running Yes
-Replicate_Do_DB
-Replicate_Ignore_DB
-Replicate_Do_Table
-Replicate_Ignore_Table <Replicate_Ignore_Table>
-Replicate_Wild_Do_Table
-Replicate_Wild_Ignore_Table
-Last_Errno 0
-Last_Error
-Skip_Counter 0
-Exec_Master_Log_Pos <Exec_Master_Log_Pos>
-Relay_Log_Space <Relay_Log_Space>
-Until_Condition None
-Until_Log_File
-Until_Log_Pos 0
-Master_SSL_Allowed No
-Master_SSL_CA_File
-Master_SSL_CA_Path
-Master_SSL_Cert
-Master_SSL_Cipher
-Master_SSL_Key
-Seconds_Behind_Master <Seconds_Behind_Master>
-Master_SSL_Verify_Server_Cert No
-Last_IO_Errno <Last_IO_Errno>
-Last_IO_Error <Last_IO_Error>
-Last_SQL_Errno 0
-Last_SQL_Error
+Checking that both slave threads are running.
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
hex(c1) hex(c2) c3
1 1 row1
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result
index 409397cb3d1..04a75bf3479 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result
@@ -436,8 +436,7 @@ DELETE FROM t1;
SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
COUNT(*) 0
set @@global.slave_exec_mode= default;
-Last_SQL_Error
-
+Checking that both slave threads are running.
SELECT COUNT(*) FROM t1 ORDER BY c1,c2;
COUNT(*) 0
**** Test for BUG#37076 ****
@@ -487,8 +486,7 @@ Comparing tables master:test.t2 and slave:test.t2
[expecting slave to stop]
INSERT INTO t3 VALUES (1, "", 1);
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -500,8 +498,7 @@ Comparing tables master:test.t4 and slave:test.t4
[expecting slave to stop]
INSERT INTO t5 VALUES (1, "", 1);
INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
@@ -509,8 +506,7 @@ START SLAVE;
[expecting slave to stop]
INSERT INTO t6 VALUES (1, "", 1);
INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2);
-Last_SQL_Error
-Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size.
+Last_SQL_Error = Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size.
RESET MASTER;
STOP SLAVE;
RESET SLAVE;
diff --git a/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
index d6c57aed41b..14d3baee1b0 100644
--- a/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
+++ b/mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result
@@ -27,18 +27,17 @@ SELECT * FROM t1 ORDER BY a,b;
a b
**** On Master ****
DROP TABLE t1;
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
-master-bin.000001 223 Query 1 287 BEGIN
-master-bin.000001 287 Table_map 1 330 table_id: # (test.t1)
-master-bin.000001 330 Table_map 1 392 table_id: # (mysql.ndb_apply_status)
-master-bin.000001 392 Write_rows 1 451 table_id: #
-master-bin.000001 451 Write_rows 1 498 table_id: # flags: STMT_END_F
-master-bin.000001 498 Query 1 563 COMMIT
-master-bin.000001 563 Query 1 643 use `test`; TRUNCATE TABLE t1
-master-bin.000001 643 Query 1 719 use `test`; DROP TABLE t1
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
+master-bin.000001 # Query # # use `test`; DROP TABLE t1
**** On Master ****
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
INSERT INTO t1 VALUES (1,1), (2,2);
@@ -63,29 +62,28 @@ a b
3 3
**** On Master ****
DROP TABLE t1;
-SHOW BINLOG EVENTS;
+show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
-master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
-master-bin.000001 223 Query 1 287 BEGIN
-master-bin.000001 287 Table_map 1 330 table_id: # (test.t1)
-master-bin.000001 330 Table_map 1 392 table_id: # (mysql.ndb_apply_status)
-master-bin.000001 392 Write_rows 1 451 table_id: #
-master-bin.000001 451 Write_rows 1 498 table_id: # flags: STMT_END_F
-master-bin.000001 498 Query 1 563 COMMIT
-master-bin.000001 563 Query 1 643 use `test`; TRUNCATE TABLE t1
-master-bin.000001 643 Query 1 719 use `test`; DROP TABLE t1
-master-bin.000001 719 Query 1 836 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
-master-bin.000001 836 Query 1 900 BEGIN
-master-bin.000001 900 Table_map 1 943 table_id: # (test.t1)
-master-bin.000001 943 Table_map 1 1005 table_id: # (mysql.ndb_apply_status)
-master-bin.000001 1005 Write_rows 1 1064 table_id: #
-master-bin.000001 1064 Write_rows 1 1111 table_id: # flags: STMT_END_F
-master-bin.000001 1111 Query 1 1176 COMMIT
-master-bin.000001 1176 Query 1 1240 BEGIN
-master-bin.000001 1240 Table_map 1 1283 table_id: # (test.t1)
-master-bin.000001 1283 Table_map 1 1345 table_id: # (mysql.ndb_apply_status)
-master-bin.000001 1345 Write_rows 1 1404 table_id: #
-master-bin.000001 1404 Delete_rows 1 1443 table_id: # flags: STMT_END_F
-master-bin.000001 1443 Query 1 1508 COMMIT
-master-bin.000001 1508 Query 1 1584 use `test`; DROP TABLE t1
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
+master-bin.000001 # Query # # use `test`; DROP TABLE t1
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE t1
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt
index 0d3f1619f1e..4dda0e45a63 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2innodb-slave.opt
@@ -1 +1 @@
---innodb --default-storage-engine=innodb --ndbcluster=0
+--loose-innodb --default-storage-engine=innodb --ndbcluster=0
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt
index dff423702b4..7dc78d6f05b 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_2other-slave.opt
@@ -1 +1 @@
---innodb --loose-ndbcluster=OFF --log-slave-updates=0
+--loose-innodb --loose-ndbcluster=OFF --log-slave-updates=0
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
index 5903cd223ad..c03738bc48b 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test
@@ -191,10 +191,11 @@ connection slave;
source include/wait_for_slave_sql_to_stop.inc;
# Replication should have stopped, since max retries were not enough.
-# verify with show slave status
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 19 <Last_Errno> 20 <Last_Error> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master> 35 <Last_IO_Errno> 36 <Last_IO_Error> 37 <Last_SQL_Errno> 38 <Last_SQL_Error>
---query_vertical SHOW SLAVE STATUS;
+# verify with show slave status
+# 1205 = ER_LOCK_WAIT_TIMEOUT
+--let $slave_sql_errno= 1205
+--let $show_slave_sql_error= 1
+--source include/wait_for_slave_sql_error.inc
# now set max retries high enough to succeed, and start slave again
set GLOBAL slave_transaction_retries=10;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test
index 7b8497d8dab..e63b7c5e8ff 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test
@@ -16,9 +16,7 @@ START SLAVE;
--connection slave
CREATE TABLE t1 (a int key, b int) ENGINE=ndb;
#CREATE TABLE t2 (a int key, b int) ENGINE=ndb;
---save_master_pos
---connection master
---sync_with_master
+sync_slave_with_master master;
# now we should have a table on the master as well
SHOW TABLES;
@@ -30,25 +28,19 @@ INSERT INTO t1 VALUES (2,3);
# ensure data has propagated both ways
--connection slave
---save_master_pos
---connection master
---sync_with_master
+sync_slave_with_master master;
--sync_slave_with_master
# connect to slave and ensure data it there.
--connection slave
SELECT * FROM t1 ORDER BY a;
#SELECT * FROM t2 ORDER BY a;
-# BUG#34654 Last_IO_Errno is not reset - Mask columns 35 and 36
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical show slave status;
+source include/check_slave_is_running.inc;
# connect to master and ensure data it there.
--connection master
SELECT * FROM t1 ORDER BY a;
#SELECT * FROM t2 ORDER BY a;
-# BUG#34654 Last_IO_Errno is not reset - Mask columns 35 and 36
---replace_column 1 # 4 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
---query_vertical show slave status;
+source include/check_slave_is_running.inc;
# stop replication on "master" as not to replicate
# shutdown circularly, eg drop table
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf
index b1b010ef0f3..64f69427643 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf
@@ -2,15 +2,12 @@
[mysqld.1.1]
server-id= 1
-log-bin
[mysqld.2.1]
server-id= 1
-log-bin
[mysqld.1.slave]
server-id= 2
-log-bin
skip-slave-start
[mysqld.2.slave]
@@ -21,7 +18,6 @@ master-password= @mysqld.2.1.#password
master-user= @mysqld.2.1.#user
master-connect-retry= 1
init-rpl-role= slave
-log-bin
skip-slave-start
ndb_connectstring= @mysql_cluster.slave.ndb_connectstring
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test
index eb04dc2e260..8b0f869c1a3 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test
@@ -38,9 +38,7 @@ eval CHANGE MASTER TO MASTER_HOST="127.0.0.1",MASTER_PORT=$SLAVE_MYPORT,MASTER_U
START SLAVE;
connection slave;
-save_master_pos;
-connection master;
-sync_with_master;
+sync_slave_with_master master;
# The statement is disabled since it cannot reliably show the same
# info all the time. Use it for debug purposes.
@@ -48,9 +46,7 @@ sync_with_master;
#SHOW BINLOG EVENTS;
# Check that there is no error in replication
---replace_result $SLAVE_MYPORT SLAVE_PORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+source include/check_slave_is_running.inc;
# Check that we have the data on the master
SELECT * FROM t1 ORDER BY a;
@@ -75,9 +71,7 @@ sync_with_master;
SELECT * FROM t1 ORDER BY a;
# Check that there is no error in replication
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 35 # 36 #
-query_vertical SHOW SLAVE STATUS;
+source include/check_slave_is_running.inc;
-- connection master
DROP TABLE t1;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test
index 3133ad34f0c..99c9df40094 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test
@@ -39,12 +39,9 @@ SELECT * FROM t1 ORDER BY c3;
# check that we have it on the slave
--sync_slave_with_master
---connection slave
SELECT * FROM t1 ORDER BY c3;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master> 35 <Last_IO_Errno> 36 <Last_IO_Error>
-SHOW SLAVE STATUS;
+source include/check_slave_is_running.inc;
# stop slave and reset position to before the last changes
STOP SLAVE;
@@ -53,9 +50,7 @@ eval CHANGE MASTER TO
master_log_file = '$the_file',
master_log_pos = $the_pos ;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master> 35 <Last_IO_Errno> 36 <Last_IO_Error>
-SHOW SLAVE STATUS;
+source include/check_slave_no_error.inc;
# start the slave again
# -> same events should have been applied again
@@ -67,7 +62,6 @@ START SLAVE;
--connection master
SELECT * FROM t1 ORDER BY c3;
--sync_slave_with_master
---connection slave
SELECT * FROM t1 ORDER BY c3;
STOP SLAVE;
@@ -106,9 +100,7 @@ COMMIT;
--sync_slave_with_master
--connection slave
SELECT * FROM t1;
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master> 34 <Last_IO_Errno> 35 <Last_IO_Error>
-SHOW SLAVE STATUS;
+source include/check_slave_is_running.inc;
connection master;
DROP TABLE IF EXISTS t1;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb2ndb-master.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_innodb_trans-slave.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-master.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-master.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-master.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-slave.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-slave.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions-slave.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test
index 14b76722fa6..22ccabe3745 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_engines_transactions.test
@@ -415,6 +415,29 @@ ROLLBACK;
SET AUTOCOMMIT = 1;
+--echo ---- Mixed statements Innodb ----
+
+BEGIN;
+INSERT INTO tndb VALUES (147);
+INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+COMMIT;
+
+INSERT INTO tndb VALUES (148);
+BEGIN;
+INSERT INTO tinnodb SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+INSERT INTO tndb VALUES (149);
+COMMIT;
+
+BEGIN;
+INSERT INTO tndb VALUES (150);
+INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+COMMIT;
+
+INSERT INTO tndb VALUES (151);
+BEGIN;
+INSERT INTO tmyisam SELECT * FROM tndb ORDER BY a DESC LIMIT 1;
+INSERT INTO tndb VALUES (152);
+COMMIT;
--echo ==== Verify the result ====
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt
new file mode 100644
index 00000000000..0f4722c3fbd
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-master.opt
@@ -0,0 +1 @@
+--loose-innodb --ndbcluster
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt
new file mode 100644
index 00000000000..a8829991a6d
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables-slave.opt
@@ -0,0 +1 @@
+--loose-innodb --ndbcluster --replicate-ignore-table=mysql.ndb_apply_status
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test
new file mode 100644
index 00000000000..7d7cd5770cf
--- /dev/null
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test
@@ -0,0 +1,349 @@
+# ==== Purpose ====
+#
+# Test replication of transactions on tables which have different
+# engines on master and slave. This tests all combinations of innodb,
+# myisam, and ndb.
+#
+# ==== Method ====
+#
+# Set up six tables, each being innodb, myisam, or innodb on master,
+# and another of innodb, myisam, or innodb on slave. For each table,
+# do the following:
+#
+# - committed and rollback'ed transactions, with autocommit on and
+# off
+# - non-transactions with autocommit on
+# - non-transactions with autocommit off, where the master table is
+# myisam.
+#
+# Note: we are running the slave with
+# --replicate-ignore-table=mysql.ndb_apply_status . See BUG#34557 for
+# explanation.
+#
+# ==== Related bugs ====
+#
+# BUG#26395: if crash during autocommit update to transactional table on master, slave fails
+# BUG#29288: myisam transactions replicated to a transactional slave leaves slave unstable
+# BUG#34557: Row-based replication from ndb to non-ndb gives error on slave
+# BUG#34600: Rolled-back punch transactions not replicated correctly
+#
+# ==== Todo ====
+#
+# We should eventually try transactions touching two tables which are
+# of different engines on the same server (so that we try, e.g. punch
+# transactions; cf BUG#34600). However, that will make the test much
+# bigger (9 master-slave engine combinations [myisam->myisam,
+# myisam->ndb, etc]. To try all combinations of one or more such
+# tables means 2^9-1=511 transactions. We need to multiplied by 5
+# since we want to test committed/rollback'ed transactions
+# with/without AUTOCOMMIT, as well as non-transactions with
+# autocommit). We'd have to write a script to produce the test case.
+
+
+--echo ==== Initialization ====
+
+--source include/have_ndb.inc
+--source include/have_innodb.inc
+--source include/ndb_master-slave.inc
+
+--echo ---- setup master ----
+
+CREATE TABLE myisam_innodb (a INT) ENGINE=MYISAM;
+CREATE TABLE innodb_myisam (a INT) ENGINE=INNODB;
+CREATE TABLE myisam_ndb (a INT) ENGINE=MYISAM;
+CREATE TABLE ndb_myisam (a INT) ENGINE=NDB;
+CREATE TABLE innodb_ndb (a INT) ENGINE=INNODB;
+CREATE TABLE ndb_innodb (a INT) ENGINE=NDB;
+
+SHOW CREATE TABLE myisam_innodb;
+SHOW CREATE TABLE innodb_myisam;
+SHOW CREATE TABLE myisam_ndb;
+SHOW CREATE TABLE ndb_myisam;
+SHOW CREATE TABLE innodb_ndb;
+SHOW CREATE TABLE ndb_innodb;
+
+--echo ---- setup slave with different engines ----
+
+sync_slave_with_master;
+
+DROP TABLE myisam_innodb, innodb_myisam;
+DROP TABLE myisam_ndb, ndb_myisam;
+DROP TABLE innodb_ndb, ndb_innodb;
+
+CREATE TABLE myisam_innodb (a INT) ENGINE=INNODB;
+CREATE TABLE innodb_myisam (a INT) ENGINE=MYISAM;
+CREATE TABLE myisam_ndb (a INT) ENGINE=NDB;
+CREATE TABLE ndb_myisam (a INT) ENGINE=MYISAM;
+CREATE TABLE innodb_ndb (a INT) ENGINE=NDB;
+CREATE TABLE ndb_innodb (a INT) ENGINE=INNODB;
+
+SHOW CREATE TABLE myisam_innodb;
+SHOW CREATE TABLE innodb_myisam;
+SHOW CREATE TABLE myisam_ndb;
+SHOW CREATE TABLE ndb_myisam;
+SHOW CREATE TABLE innodb_ndb;
+SHOW CREATE TABLE ndb_innodb;
+
+connection master;
+
+
+--echo ==== AUTOCOMMIT=0, transactions ====
+
+--echo ---- COMMIT ----
+
+SET AUTOCOMMIT = 0;
+
+BEGIN;
+INSERT INTO myisam_innodb VALUES (1);
+INSERT INTO myisam_innodb VALUES (2);
+COMMIT;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (3);
+INSERT INTO innodb_myisam VALUES (4);
+COMMIT;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO myisam_ndb VALUES (5);
+INSERT INTO myisam_ndb VALUES (6);
+COMMIT;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO ndb_myisam VALUES (7);
+INSERT INTO ndb_myisam VALUES (8);
+COMMIT;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO ndb_innodb VALUES (9);
+INSERT INTO ndb_innodb VALUES (10);
+COMMIT;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (11);
+INSERT INTO innodb_ndb VALUES (12);
+COMMIT;
+sync_slave_with_master;
+connection master;
+
+--echo ---- ROLLBACK ----
+
+BEGIN;
+INSERT INTO myisam_innodb VALUES (13);
+INSERT INTO myisam_innodb VALUES (14);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (15);
+INSERT INTO innodb_myisam VALUES (16);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO myisam_ndb VALUES (17);
+INSERT INTO myisam_ndb VALUES (18);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO ndb_myisam VALUES (19);
+INSERT INTO ndb_myisam VALUES (20);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO ndb_innodb VALUES (21);
+INSERT INTO ndb_innodb VALUES (22);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (23);
+INSERT INTO innodb_ndb VALUES (24);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+
+--echo ==== AUTOCOMMIT=1, transactions ====
+
+--echo ---- COMMIT ----
+
+SET AUTOCOMMIT = 1;
+
+BEGIN;
+INSERT INTO myisam_innodb VALUES (25);
+INSERT INTO myisam_innodb VALUES (26);
+COMMIT;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (27);
+INSERT INTO innodb_myisam VALUES (28);
+COMMIT;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO myisam_ndb VALUES (29);
+INSERT INTO myisam_ndb VALUES (30);
+COMMIT;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO ndb_myisam VALUES (31);
+INSERT INTO ndb_myisam VALUES (32);
+COMMIT;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO ndb_innodb VALUES (33);
+INSERT INTO ndb_innodb VALUES (34);
+COMMIT;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (35);
+INSERT INTO innodb_ndb VALUES (36);
+COMMIT;
+sync_slave_with_master;
+connection master;
+
+--echo ---- ROLLBACK ----
+
+BEGIN;
+INSERT INTO myisam_innodb VALUES (37);
+INSERT INTO myisam_innodb VALUES (38);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_myisam VALUES (39);
+INSERT INTO innodb_myisam VALUES (40);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO myisam_ndb VALUES (41);
+INSERT INTO myisam_ndb VALUES (42);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO ndb_myisam VALUES (43);
+INSERT INTO ndb_myisam VALUES (44);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+BEGIN;
+INSERT INTO ndb_innodb VALUES (45);
+INSERT INTO ndb_innodb VALUES (46);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+BEGIN;
+INSERT INTO innodb_ndb VALUES (47);
+INSERT INTO innodb_ndb VALUES (48);
+ROLLBACK;
+sync_slave_with_master;
+connection master;
+
+
+--echo ==== AUTOCOMMIT=1, single statements ====
+
+INSERT INTO myisam_innodb VALUES (49);
+INSERT INTO myisam_innodb VALUES (50);
+sync_slave_with_master;
+connection master;
+INSERT INTO innodb_myisam VALUES (51);
+INSERT INTO innodb_myisam VALUES (52);
+sync_slave_with_master;
+connection master;
+
+INSERT INTO myisam_ndb VALUES (53);
+INSERT INTO myisam_ndb VALUES (54);
+sync_slave_with_master;
+connection master;
+INSERT INTO ndb_myisam VALUES (55);
+INSERT INTO ndb_myisam VALUES (56);
+sync_slave_with_master;
+connection master;
+
+INSERT INTO ndb_innodb VALUES (57);
+INSERT INTO ndb_innodb VALUES (58);
+sync_slave_with_master;
+connection master;
+INSERT INTO innodb_ndb VALUES (59);
+INSERT INTO innodb_ndb VALUES (60);
+sync_slave_with_master;
+connection master;
+
+
+--echo ==== AUTOCOMMIT=0, single statements, myisam on master ====
+
+SET AUTOCOMMIT = 0;
+
+# This tests BUG#29288.
+INSERT INTO myisam_innodb VALUES (61);
+INSERT INTO myisam_innodb VALUES (62);
+sync_slave_with_master;
+connection master;
+
+INSERT INTO myisam_ndb VALUES (63);
+INSERT INTO myisam_ndb VALUES (64);
+sync_slave_with_master;
+connection master;
+
+
+--echo ==== Show results ====
+
+SELECT * FROM myisam_innodb ORDER BY a;
+SELECT * FROM innodb_myisam ORDER BY a;
+SELECT * FROM myisam_ndb ORDER BY a;
+SELECT * FROM ndb_myisam ORDER BY a;
+SELECT * FROM innodb_ndb ORDER BY a;
+SELECT * FROM ndb_innodb ORDER BY a;
+
+let $diff_table_1=master:test.myisam_innodb;
+let $diff_table_2=slave:test.myisam_innodb;
+source include/diff_tables.inc;
+
+let $diff_table_1=master:test.innodb_myisam;
+let $diff_table_2=slave:test.innodb_myisam;
+source include/diff_tables.inc;
+
+let $diff_table_1=master:test.myisam_ndb;
+let $diff_table_2=slave:test.myisam_ndb;
+source include/diff_tables.inc;
+
+let $diff_table_1=master:test.ndb_myisam;
+let $diff_table_2=slave:test.ndb_myisam;
+source include/diff_tables.inc;
+
+let $diff_table_1=master:test.innodb_ndb;
+let $diff_table_2=slave:test.innodb_ndb;
+source include/diff_tables.inc;
+
+let $diff_table_1=master:test.ndb_innodb;
+let $diff_table_2=slave:test.ndb_innodb;
+source include/diff_tables.inc;
+
+
+--echo ==== Clean up ====
+
+drop table myisam_innodb, innodb_myisam;
+drop table myisam_ndb, ndb_myisam;
+drop table innodb_ndb, ndb_innodb;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test
index eb128cfa2ce..e9107fd90bd 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test
@@ -39,7 +39,7 @@ let $the_file= `SELECT @the_file` ;
# now connect the slave to the _other_ "master"
connection slave;
---replace_result $MASTER_MYPORT1 <MASTER_PORT1>
+--replace_result $MASTER_MYPORT1 <MASTER_PORT1> $the_pos MASTER_LOG_POS $the_file MASTER_LOG_FILE
eval CHANGE MASTER TO
master_port=$MASTER_MYPORT1,
master_log_file = '$the_file',
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt
index 3596fc4d3bd..416f8692654 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb-master.opt
@@ -1 +1 @@
---innodb --default-storage-engine=innodb
+--loose-innodb --default-storage-engine=innodb
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test
index bf7f1eed7b2..7c65e04717a 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_stm_innodb.test
@@ -27,9 +27,11 @@
--disable_query_log
--source include/have_ndb.inc
--source include/have_innodb.inc
---source include/have_binlog_format_statement.inc
--source include/ndb_master-slave.inc
--enable_query_log
+
+# statement format is supported because master uses innodb
+SET binlog_format = STATEMENT;
let $off_set = 6;
let $rpl_format = 'SBR';
--source extra/rpl_tests/rpl_ndb_apply_status.test
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test
index 88572c3e9a2..b91ff198c51 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test
@@ -70,10 +70,7 @@ START SLAVE;
#
--connection master
--sync_slave_with_master
---connection slave
---replace_result $MASTER_MYPORT MASTER_PORT
---replace_column 1 <Slave_IO_State> 7 <Read_Master_Log_Pos> 8 <Relay_Log_File> 9 <Relay_Log_Pos> 16 <Replicate_Ignore_Table> 22 <Exec_Master_Log_Pos> 23 <Relay_Log_Space> 33 <Seconds_Behind_Master> 35 <Last_IO_Errno> 36 <Last_IO_Error>
-query_vertical SHOW SLAVE STATUS;
+--source include/check_slave_is_running.inc
SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1;
@@ -85,7 +82,6 @@ SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1;
--connection master
DROP DATABASE ndbsynctest;
--sync_slave_with_master
---connection slave
STOP SLAVE;
#
diff --git a/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test b/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test
index f8933b3744d..898bf310dc5 100644
--- a/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test
+++ b/mysql-test/suite/rpl_ndb/t/rpl_truncate_7ndb.test
@@ -39,10 +39,7 @@ SELECT * FROM t1 ORDER BY a,b;
--echo **** On Master ****
connection master;
DROP TABLE t1;
-let SERVER_VERSION=`select version()`;
---replace_regex /\/\* xid=[0-9]+ \*\//\/* xid= *\// /table_id: [0-9]+/table_id: #/
---replace_result $SERVER_VERSION SERVER_VERSION
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
--echo **** On Master ****
connection master;
@@ -64,8 +61,6 @@ SELECT * FROM t1 ORDER BY a,b;
--echo **** On Master ****
connection master;
DROP TABLE t1;
---replace_regex /table_id: [0-9]+/table_id: #/
---replace_result $SERVER_VERSION SERVER_VERSION
-SHOW BINLOG EVENTS;
+source include/show_binlog_events.inc;
-- source include/master-slave-end.inc
diff --git a/mysql-test/suite/sphinx/my.cnf b/mysql-test/suite/sphinx/my.cnf
new file mode 100644
index 00000000000..ba5dd7578e8
--- /dev/null
+++ b/mysql-test/suite/sphinx/my.cnf
@@ -0,0 +1,30 @@
+!include include/default_my.cnf
+
+[source src1]
+type = xmlpipe2
+xmlpipe_command = cat suite/sphinx/testdata.xml
+
+[index test1]
+source = src1
+docinfo = extern
+charset_type = utf-8
+path = @OPT.vardir/searchd/test1
+
+[indexer]
+mem_limit = 32M
+
+[searchd]
+read_timeout = 5
+max_children = 30
+max_matches = 1000
+seamless_rotate = 1
+preopen_indexes = 0
+unlink_old = 1
+log = @OPT.vardir/searchd/sphinx-searchd.log
+query_log = @OPT.vardir/searchd/sphinx-query.log
+#log-error = @OPT.vardir/searchd/sphinx.log
+pid_file = @OPT.vardir/run/searchd.pid
+port = @ENV.SPHINXSEARCH_PORT
+
+[ENV]
+SPHINXSEARCH_PORT = @OPT.port
diff --git a/mysql-test/suite/sphinx/sphinx.result b/mysql-test/suite/sphinx/sphinx.result
new file mode 100644
index 00000000000..46fefc6f8ae
--- /dev/null
+++ b/mysql-test/suite/sphinx/sphinx.result
@@ -0,0 +1,39 @@
+create table ts ( id bigint unsigned not null, w int not null, q varchar(255) not null, index(q) ) engine=sphinx connection="sphinx://127.0.0.1:SPHINXSEARCH_PORT/*";
+select * from ts where q='test';
+id w q
+1 2 test
+2 2 test
+4 1 test
+drop table ts;
+create table ts ( id bigint unsigned not null, w int not null, q varchar(255) not null, index(q) ) engine=sphinx connection="sphinx://127.0.0.1:SPHINXSEARCH_PORT/*";
+select * from ts where q='test;filter=gid,1;mode=extended';
+id w q
+1 2421 test;filter=gid,1;mode=extended
+2 2421 test;filter=gid,1;mode=extended
+select * from ts where q='test|one;mode=extended';
+id w q
+1 3595 test|one;mode=extended
+2 2460 test|one;mode=extended
+4 1471 test|one;mode=extended
+select * from ts where q='test;offset=1;limit=1';
+id w q
+2 2 test;offset=1;limit=1
+alter table ts connection="sphinx://127.0.0.1:SPHINXSEARCH_PORT/test1";
+select id, w from ts where q='one';
+id w
+1 2
+drop table ts;
+create table ts ( id bigint unsigned not null, w int not null, q varchar(255) not null, gid int not null, _sph_count int not null, index(q) ) engine=sphinx connection="sphinx://127.0.0.1:SPHINXSEARCH_PORT/test1";
+select * from ts;
+id w q gid _sph_count
+select * from ts where q='';
+id w q gid _sph_count
+1 1 1 0
+2 1 1 0
+3 1 2 0
+4 1 2 0
+select * from ts where q=';groupby=attr:gid';
+id w q gid _sph_count
+3 1 ;groupby=attr:gid 2 2
+1 1 ;groupby=attr:gid 1 2
+drop table ts;
diff --git a/mysql-test/suite/sphinx/sphinx.test b/mysql-test/suite/sphinx/sphinx.test
new file mode 100644
index 00000000000..f6d2c7ac709
--- /dev/null
+++ b/mysql-test/suite/sphinx/sphinx.test
@@ -0,0 +1,23 @@
+
+--replace_result $SPHINXSEARCH_PORT SPHINXSEARCH_PORT
+eval create table ts ( id bigint unsigned not null, w int not null, q varchar(255) not null, index(q) ) engine=sphinx connection="sphinx://127.0.0.1:$SPHINXSEARCH_PORT/*";
+select * from ts where q='test';
+drop table ts;
+
+--replace_result $SPHINXSEARCH_PORT SPHINXSEARCH_PORT
+eval create table ts ( id bigint unsigned not null, w int not null, q varchar(255) not null, index(q) ) engine=sphinx connection="sphinx://127.0.0.1:$SPHINXSEARCH_PORT/*";
+select * from ts where q='test;filter=gid,1;mode=extended';
+select * from ts where q='test|one;mode=extended';
+select * from ts where q='test;offset=1;limit=1';
+--replace_result $SPHINXSEARCH_PORT SPHINXSEARCH_PORT
+eval alter table ts connection="sphinx://127.0.0.1:$SPHINXSEARCH_PORT/test1";
+select id, w from ts where q='one';
+drop table ts;
+
+--replace_result $SPHINXSEARCH_PORT SPHINXSEARCH_PORT
+eval create table ts ( id bigint unsigned not null, w int not null, q varchar(255) not null, gid int not null, _sph_count int not null, index(q) ) engine=sphinx connection="sphinx://127.0.0.1:$SPHINXSEARCH_PORT/test1";
+select * from ts;
+select * from ts where q='';
+select * from ts where q=';groupby=attr:gid';
+drop table ts;
+
diff --git a/mysql-test/suite/sphinx/suite.opt b/mysql-test/suite/sphinx/suite.opt
new file mode 100644
index 00000000000..b8964ecd9e9
--- /dev/null
+++ b/mysql-test/suite/sphinx/suite.opt
@@ -0,0 +1 @@
+--plugin-load=$HA_SPHINX_SO
diff --git a/mysql-test/suite/sphinx/suite.pm b/mysql-test/suite/sphinx/suite.pm
new file mode 100644
index 00000000000..199e59e26d7
--- /dev/null
+++ b/mysql-test/suite/sphinx/suite.pm
@@ -0,0 +1,120 @@
+package My::Suite::Sphinx;
+
+use My::SafeProcess;
+use My::File::Path;
+use mtr_report;
+
+@ISA = qw(My::Suite);
+
+use Carp;
+$Carp::Verbose=1;
+
+############# initialization ######################
+sub locate_sphinx_binary {
+ my ($name)= @_;
+ my $res;
+ my @list= map "$_/$name", split /:/, $ENV{PATH};
+ my $env_override= $ENV{"SPHINXSEARCH_\U$name"};
+ @list= ($env_override) if $env_override;
+ for (@list) { return $_ if -x $_; }
+}
+
+# Look for Sphinx binaries.
+my $exe_sphinx_indexer = &locate_sphinx_binary('indexer');
+my $exe_sphinx_searchd = &locate_sphinx_binary('searchd');
+
+return "No Sphinx" unless $exe_sphinx_indexer and $exe_sphinx_searchd;
+return "No SphinxSE" unless $ENV{HA_SPHINX_SO} or
+ $::mysqld_variables{'sphinx'} eq "ON";
+
+{
+ local $_ = `"$exe_sphinx_searchd" --help`;
+ my $ver = sprintf "%04d.%04d.%04d", (/([0-9]+)\.([0-9]+)\.([0-9]+)/);
+ return "Sphinx 0.9.9 or later is needed" unless $ver ge '0000.0009.0009';
+}
+
+############# action methods ######################
+
+sub write_sphinx_conf {
+ my ($config) = @_; # My::Config
+ my $res;
+
+ foreach my $group ($config->groups()) {
+ my $name= $group->{name};
+ # Only the ones relevant to Sphinx search.
+ next unless ($name eq 'indexer' or $name eq 'searchd' or
+ $name =~ /^(source|index) \w+$/);
+ $res .= "$name\n{\n";
+ foreach my $option ($group->options()) {
+ $res .= $option->name();
+ my $value= $option->value();
+ if (defined $value) {
+ $res .= "=$value";
+ }
+ $res .= "\n";
+ }
+ $res .= "}\n\n";
+ }
+ $res;
+}
+
+sub searchd_start {
+ my ($sphinx, $test) = @_; # My::Config::Group, My::Test
+
+ return unless $exe_sphinx_indexer and $exe_sphinx_searchd;
+
+ # First we must run the indexer to create the data.
+ my $sphinx_data_dir= "$::opt_vardir/" . $sphinx->name();
+ mkpath($sphinx_data_dir);
+ my $sphinx_log= $sphinx->value('#log-error');
+ my $sphinx_config= "$::opt_vardir/my_sphinx.conf";
+ my $cmd= "\"$exe_sphinx_indexer\" --config \"$sphinx_config\" test1 > \"$sphinx_log\" 2>&1";
+ &::mtr_verbose("cmd: $cmd");
+ system $cmd;
+
+ # Then start the searchd daemon.
+ my $args;
+ &::mtr_init_args(\$args);
+ &::mtr_add_arg($args, "--config");
+ &::mtr_add_arg($args, $sphinx_config);
+ &::mtr_add_arg($args, "--console");
+ &::mtr_add_arg($args, "--pidfile");
+
+ $sphinx->{'proc'}= My::SafeProcess->new
+ (
+ name => 'sphinx-' . $sphinx->name(),
+ path => $exe_sphinx_searchd,
+ args => \$args,
+ output => $sphinx_log,
+ error => $sphinx_log,
+ append => 1,
+ nocore => 1,
+ );
+ &::mtr_verbose("Started $sphinx->{proc}");
+}
+
+sub searchd_wait {
+ my ($sphinx) = @_; # My::Config::Group
+
+ return not &::sleep_until_file_created($sphinx->value('pid_file'), 20,
+ $sphinx->{'proc'})
+}
+
+############# declaration methods ######################
+
+sub config_files() {
+ ( 'my_sphinx.conf' => \&write_sphinx_conf )
+}
+
+sub servers {
+ ( qr/^searchd$/ => {
+ SORT => 400,
+ START => \&searchd_start,
+ WAIT => \&searchd_wait,
+ }
+ )
+}
+
+############# return an object ######################
+bless { };
+
diff --git a/mysql-test/suite/sphinx/testdata.xml b/mysql-test/suite/sphinx/testdata.xml
new file mode 100644
index 00000000000..e0d7394190f
--- /dev/null
+++ b/mysql-test/suite/sphinx/testdata.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<sphinx:docset>
+
+<sphinx:schema>
+<sphinx:field name="title"/>
+<sphinx:field name="content"/>
+<sphinx:attr name="gid" type="int"/>
+</sphinx:schema>
+
+<sphinx:document id="1">
+<title>test one</title>
+<content>this is my test document number one. also checking search within phrases.</content>
+<gid>1</gid>
+</sphinx:document>
+
+<sphinx:document id="2">
+<title>test two</title>
+<content>this is my test document number two</content>
+<gid>1</gid>
+</sphinx:document>
+
+<sphinx:document id="3">
+<title>another doc</title>
+<content>this is another group</content>
+<gid>2</gid>
+</sphinx:document>
+
+<sphinx:document id="4">
+<title>doc number four</title>
+<content>this is to test groups</content>
+<gid>2</gid>
+</sphinx:document>
+
+</sphinx:docset>
+
diff --git a/mysql-test/suite/sys_vars/r/slow_query_log_func.result b/mysql-test/suite/sys_vars/r/slow_query_log_func.result
index eb7efe4a004..fb650399597 100644
--- a/mysql-test/suite/sys_vars/r/slow_query_log_func.result
+++ b/mysql-test/suite/sys_vars/r/slow_query_log_func.result
@@ -36,5 +36,78 @@ SELECT count(*) > 0 FROM mysql.slow_log;
count(*) > 0
1
DROP PROCEDURE p_test;
+Bug53191 Lock_time in slow log is negative when logging stored routines
+TRUNCATE mysql.slow_log;
+CREATE TABLE t1 (c0 INT PRIMARY KEY AUTO_INCREMENT, c1 TIMESTAMP, c2 TIMESTAMP);
+CREATE FUNCTION f_slow_now() RETURNS TIMESTAMP
+BEGIN
+DO SLEEP(2);
+RETURN NOW();
+END//
+CREATE FUNCTION f_slow_current_time() RETURNS TIME
+BEGIN
+DO SLEEP(2);
+RETURN CURRENT_TIME();
+END
+//
+INSERT INTO t1 (c1,c2) VALUES (now(), f_slow_now())//
+CREATE TRIGGER tf_before BEFORE INSERT ON t1
+FOR EACH ROW BEGIN
+SET new.c2 = f_slow_now();
+END//
+CREATE PROCEDURE p1()
+BEGIN
+INSERT INTO t1 (c1,c2) values (now(),now());
+DO SLEEP(2);
+INSERT INTO t1 (c1,c2) values (now(),now());
+end//
+INSERT INTO t1 (c1,c2) VALUES (now(), now());
+CALL p1();
+SELECT c1-c2 FROM t1;
+c1-c2
+0
+0
+0
+0
+*** There shouldn't less than 1 s difference between each row
+SELECT t1.c1-self.c1 > 1 FROM t1, t1 as self WHERE t1.c0=self.c0+1 ORDER BY t1.c0;
+t1.c1-self.c1 > 1
+1
+1
+1
+DROP TRIGGER tf_before;
+DROP FUNCTION f_slow_now;
+DROP FUNCTION f_slow_current_time;
+DROP TABLE t1;
+DROP TABLE IF EXISTS t1;
+Warnings:
+Note 1051 Unknown table 't1'
+CREATE TABLE t1(c1 INT) ENGINE=MyISAM;
+DROP PROCEDURE IF EXISTS p1;
+CREATE PROCEDURE p1()
+BEGIN
+INSERT INTO t1 VALUES (1);
+SELECT COUNT(*) FROM t1 WHERE c1= 1;
+UPDATE t1 SET c1=c1*2;
+END|
+Connection 2
+LOCK TABLE t1 WRITE;
+Back to default connection
+CALL p1();
+Wait three seconds and unlock the table
+UNLOCK TABLES;
+COUNT(*)
+1
+Slow log:
+**** 1 == we have slow log entries
+SELECT count(*) > 0 FROM mysql.slow_log;
+count(*) > 0
+1
+**** 0 == None of the entries have a lock time greater than 10 s
+SELECT count(*) FROM mysql.slow_log WHERE lock_time > 10;
+count(*)
+0
+DROP TABLE t1;
+DROP PROCEDURE p1;
SET @@global.log_output = @global_log_output;
SET @global.slow_query_log = @global_slow_query_log;
diff --git a/mysql-test/suite/sys_vars/r/tx_isolation_func.result b/mysql-test/suite/sys_vars/r/tx_isolation_func.result
index 2242525f14b..6b4c990c71c 100644
--- a/mysql-test/suite/sys_vars/r/tx_isolation_func.result
+++ b/mysql-test/suite/sys_vars/r/tx_isolation_func.result
@@ -95,10 +95,7 @@ a b
22 10
24 10
INSERT INTO t1 VALUES(23, 23);
-ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES(25, 25);
-ERROR HY000: Lock wait timeout exceeded; try restarting transaction
-Bug: Only even rows are being locked, error 1205 should'nt have occured
SELECT * FROM t1;
a b
2 10
@@ -109,7 +106,9 @@ a b
18 10
20 10
22 10
+23 23
24 10
+25 25
COMMIT;
** Connection con0 **
COMMIT;
@@ -144,7 +143,9 @@ a b
18 10
20 10
22 10
+23 23
24 10
+25 25
INSERT INTO t1 VALUES(5, 5);
INSERT INTO t1 VALUES(7, 7);
SELECT * FROM t1;
@@ -159,7 +160,9 @@ a b
18 10
20 10
22 10
+23 23
24 10
+25 25
COMMIT;
** Connection con0 **
COMMIT;
@@ -196,7 +199,9 @@ a b
18 11
20 11
22 11
+23 23
24 11
+25 25
INSERT INTO t1 VALUES(9, 9);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES(13, 13);
@@ -214,7 +219,9 @@ a b
18 11
20 11
22 11
+23 23
24 11
+25 25
COMMIT;
** Connection con0 **
COMMIT;
@@ -225,6 +232,8 @@ SELECT * FROM t1 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0 FOR UPDATE;
a b
5 5
7 7
+23 23
+25 25
UPDATE t1 SET b = 13 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0;
** Connection con1 **
START TRANSACTION;
@@ -240,7 +249,9 @@ a b
18 12
20 12
22 12
+23 23
24 12
+25 25
INSERT INTO t1 VALUES(9, 9);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES(13, 13);
@@ -258,7 +269,9 @@ a b
18 12
20 12
22 12
+23 23
24 12
+25 25
COMMIT;
** Connection con0 **
COMMIT;
@@ -273,7 +286,9 @@ a b
18 12
20 12
22 12
+23 13
24 12
+25 13
UPDATE t1 SET b = 14 WHERE a IN (2,4,6,8) = 0;
** Connection con1 **
START TRANSACTION;
@@ -289,7 +304,9 @@ a b
18 12
20 12
22 12
+23 13
24 12
+25 13
INSERT INTO t1 VALUES(9, 9);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
INSERT INTO t1 VALUES(13, 13);
@@ -307,7 +324,9 @@ a b
18 12
20 12
22 12
+23 13
24 12
+25 13
COMMIT;
** Connection con0 **
COMMIT;
diff --git a/mysql-test/suite/sys_vars/t/autocommit_func-master.opt b/mysql-test/suite/sys_vars/t/autocommit_func-master.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/sys_vars/t/autocommit_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/autocommit_func-master.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/character_set_filesystem_func-master.opt b/mysql-test/suite/sys_vars/t/character_set_filesystem_func-master.opt
index 52a49182a53..303377e796b 100644
--- a/mysql-test/suite/sys_vars/t/character_set_filesystem_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/character_set_filesystem_func-master.opt
@@ -1 +1 @@
---secure-file-priv=$MYSQL_TEST_DIR --innodb
+--secure-file-priv=$MYSQL_TEST_DIR --loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/identity_func-master.opt b/mysql-test/suite/sys_vars/t/identity_func-master.opt
index 66f581b56d0..03f5ae2d108 100644
--- a/mysql-test/suite/sys_vars/t/identity_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/identity_func-master.opt
@@ -1,2 +1,2 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/innodb_autoinc_lock_mode_func-master.opt b/mysql-test/suite/sys_vars/t/innodb_autoinc_lock_mode_func-master.opt
index ab9fcb75678..f0b6727d6d8 100644
--- a/mysql-test/suite/sys_vars/t/innodb_autoinc_lock_mode_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/innodb_autoinc_lock_mode_func-master.opt
@@ -1,2 +1,2 @@
---innodb-autoinc-lock-mode=1
+--loose-innodb-autoinc-lock-mode=1
diff --git a/mysql-test/suite/sys_vars/t/last_insert_id_func-master.opt b/mysql-test/suite/sys_vars/t/last_insert_id_func-master.opt
index 66f581b56d0..03f5ae2d108 100644
--- a/mysql-test/suite/sys_vars/t/last_insert_id_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/last_insert_id_func-master.opt
@@ -1,2 +1,2 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_func-master.opt b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_func-master.opt
index 6e00d7157d6..2cadd0c7b3f 100644
--- a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_func-master.opt
@@ -1,2 +1,2 @@
--log-bin
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/slow_query_log_func.test b/mysql-test/suite/sys_vars/t/slow_query_log_func.test
index 250d5210c46..dd202ec20ff 100644
--- a/mysql-test/suite/sys_vars/t/slow_query_log_func.test
+++ b/mysql-test/suite/sys_vars/t/slow_query_log_func.test
@@ -51,8 +51,93 @@ CALL p_test();
SELECT count(*) > 0 FROM mysql.slow_log;
DROP PROCEDURE p_test;
+#==============================================================================
+--echo Bug53191 Lock_time in slow log is negative when logging stored routines
+#==============================================================================
+TRUNCATE mysql.slow_log;
+connect (con2,localhost,root,,);
+connection default;
+
+CREATE TABLE t1 (c0 INT PRIMARY KEY AUTO_INCREMENT, c1 TIMESTAMP, c2 TIMESTAMP);
+delimiter //;
+CREATE FUNCTION f_slow_now() RETURNS TIMESTAMP
+BEGIN
+ DO SLEEP(2);
+ RETURN NOW();
+END//
+
+CREATE FUNCTION f_slow_current_time() RETURNS TIME
+BEGIN
+ DO SLEEP(2);
+ RETURN CURRENT_TIME();
+END
+//
+
+INSERT INTO t1 (c1,c2) VALUES (now(), f_slow_now())//
+
+CREATE TRIGGER tf_before BEFORE INSERT ON t1
+FOR EACH ROW BEGIN
+ SET new.c2 = f_slow_now();
+END//
+
+CREATE PROCEDURE p1()
+BEGIN
+ INSERT INTO t1 (c1,c2) values (now(),now());
+ DO SLEEP(2);
+ INSERT INTO t1 (c1,c2) values (now(),now());
+end//
+
+delimiter ;//
+
+INSERT INTO t1 (c1,c2) VALUES (now(), now());
+CALL p1();
+
+SELECT c1-c2 FROM t1;
+--echo *** There shouldn't less than 1 s difference between each row
+SELECT t1.c1-self.c1 > 1 FROM t1, t1 as self WHERE t1.c0=self.c0+1 ORDER BY t1.c0;
+
+DROP TRIGGER tf_before;
+DROP FUNCTION f_slow_now;
+DROP FUNCTION f_slow_current_time;
+DROP TABLE t1;
+
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1(c1 INT) ENGINE=MyISAM;
+DROP PROCEDURE IF EXISTS p1;
+delimiter |;
+CREATE PROCEDURE p1()
+BEGIN
+ INSERT INTO t1 VALUES (1);
+ SELECT COUNT(*) FROM t1 WHERE c1= 1;
+ UPDATE t1 SET c1=c1*2;
+END|
+delimiter ;|
+
+--echo Connection 2
+connection con2;
+LOCK TABLE t1 WRITE;
+
+--echo Back to default connection
+connection default;
+send CALL p1();
+
+--echo Wait three seconds and unlock the table
+connection con2;
+sleep 3;
+UNLOCK TABLES;
+connection default;
+reap;
+--echo Slow log:
+--echo **** 1 == we have slow log entries
+SELECT count(*) > 0 FROM mysql.slow_log;
+--echo **** 0 == None of the entries have a lock time greater than 10 s
+SELECT count(*) FROM mysql.slow_log WHERE lock_time > 10;
+disconnect con2;
+DROP TABLE t1;
+DROP PROCEDURE p1;
+
-#restore
+#================================================================== Restore
SET @@global.log_output = @global_log_output;
SET @global.slow_query_log = @global_slow_query_log;
diff --git a/mysql-test/suite/sys_vars/t/storage_engine_basic-master.opt b/mysql-test/suite/sys_vars/t/storage_engine_basic-master.opt
index 627becdbfb5..48457b17309 100644
--- a/mysql-test/suite/sys_vars/t/storage_engine_basic-master.opt
+++ b/mysql-test/suite/sys_vars/t/storage_engine_basic-master.opt
@@ -1 +1 @@
---innodb
+--loose-innodb
diff --git a/mysql-test/suite/sys_vars/t/tx_isolation_func-master.opt b/mysql-test/suite/sys_vars/t/tx_isolation_func-master.opt
index c15943a7544..67166a46cd1 100644
--- a/mysql-test/suite/sys_vars/t/tx_isolation_func-master.opt
+++ b/mysql-test/suite/sys_vars/t/tx_isolation_func-master.opt
@@ -1,3 +1,3 @@
---innodb
---innodb_lock_wait_timeout=2
+--loose-innodb
+--loose-innodb_lock_wait_timeout=2
--binlog-format=row \ No newline at end of file
diff --git a/mysql-test/suite/sys_vars/t/tx_isolation_func.test b/mysql-test/suite/sys_vars/t/tx_isolation_func.test
index 1fd2e323db8..7072de6b086 100644
--- a/mysql-test/suite/sys_vars/t/tx_isolation_func.test
+++ b/mysql-test/suite/sys_vars/t/tx_isolation_func.test
@@ -134,12 +134,9 @@ START TRANSACTION;
SELECT * FROM t1;
---error ER_LOCK_WAIT_TIMEOUT
INSERT INTO t1 VALUES(23, 23);
---error ER_LOCK_WAIT_TIMEOUT
INSERT INTO t1 VALUES(25, 25);
---echo Bug: Only even rows are being locked, error 1205 should'nt have occured
SELECT * FROM t1;
diff --git a/mysql-test/suite/vcol/r/vcol_archive.result b/mysql-test/suite/vcol/r/vcol_archive.result
index 1a046dc1fe2..83fb78a5592 100644
--- a/mysql-test/suite/vcol/r/vcol_archive.result
+++ b/mysql-test/suite/vcol/r/vcol_archive.result
@@ -1,7 +1,7 @@
SET @@session.storage_engine = 'archive';
create table t1 (a int, b int as (a+1));
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
create table t1 (a int);
alter table t1 add column b int as (a+1);
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
drop table t1;
diff --git a/mysql-test/suite/vcol/r/vcol_blackhole.result b/mysql-test/suite/vcol/r/vcol_blackhole.result
index 3ee9f626aa9..15e7505aebb 100644
--- a/mysql-test/suite/vcol/r/vcol_blackhole.result
+++ b/mysql-test/suite/vcol/r/vcol_blackhole.result
@@ -1,7 +1,7 @@
SET @@session.storage_engine = 'blackhole';
create table t1 (a int, b int as (a+1));
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
create table t1 (a int);
alter table t1 add column b int as (a+1);
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
drop table t1;
diff --git a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result
index 97991264066..a4099dff381 100644
--- a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result
+++ b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_innodb.result
@@ -1,131 +1,131 @@
SET @@session.storage_engine = 'InnoDB';
# RAND()
create table t1 (b double as (rand()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# LOAD_FILE()
create table t1 (a varchar(64), b varchar(1024) as (load_file(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# CURDATE()
create table t1 (a datetime as (curdate()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_DATE(), CURRENT_DATE
create table t1 (a datetime as (current_date));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a datetime as (current_date()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_TIME(), CURRENT_TIME
create table t1 (a datetime as (current_time));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a datetime as (current_time()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP
create table t1 (a datetime as (current_timestamp()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a datetime as (current_timestamp));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURTIME()
create table t1 (a datetime as (curtime()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# LOCALTIME(), LOCALTIME
create table t1 (a datetime, b varchar(10) as (localtime()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
create table t1 (a datetime, b varchar(10) as (localtime));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# LOCALTIMESTAMP, LOCALTIMESTAMP()(v4.0.6)
create table t1 (a datetime, b varchar(10) as (localtimestamp()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
create table t1 (a datetime, b varchar(10) as (localtimestamp));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# NOW()
create table t1 (a datetime, b varchar(10) as (now()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# SYSDATE()
create table t1 (a int, b varchar(10) as (sysdate()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UNIX_TIMESTAMP()
create table t1 (a datetime, b datetime as (unix_timestamp()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UTC_DATE()
create table t1 (a datetime, b datetime as (utc_date()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UTC_TIME()
create table t1 (a datetime, b datetime as (utc_time()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UTC_TIMESTAMP()
create table t1 (a datetime, b datetime as (utc_timestamp()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# MATCH()
# BENCHMARK()
create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# CONNECTION_ID()
create table t1 (a int as (connection_id()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_USER(), CURRENT_USER
create table t1 (a varchar(32) as (current_user()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a varchar(32) as (current_user));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# DATABASE()
create table t1 (a varchar(1024), b varchar(1024) as (database()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# FOUND_ROWS()
create table t1 (a varchar(1024), b varchar(1024) as (found_rows()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# GET_LOCK()
create table t1 (a varchar(1024), b varchar(1024) as (get_lock(a,10)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# IS_FREE_LOCK()
create table t1 (a varchar(1024), b varchar(1024) as (is_free_lock(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# IS_USED_LOCK()
create table t1 (a varchar(1024), b varchar(1024) as (is_used_lock(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# LAST_INSERT_ID()
create table t1 (a int as (last_insert_id()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# MASTER_POS_WAIT()
create table t1 (a varchar(32), b int as (master_pos_wait(a,0,2)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# NAME_CONST()
create table t1 (a varchar(32) as (name_const('test',1)));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# RELEASE_LOCK()
create table t1 (a varchar(32), b int as (release_lock(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# ROW_COUNT()
create table t1 (a int as (row_count()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# SCHEMA()
create table t1 (a varchar(32) as (schema()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# SESSION_USER()
create table t1 (a varchar(32) as (session_user()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# SLEEP()
create table t1 (a int, b int as (sleep(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# SYSTEM_USER()
create table t1 (a varchar(32) as (system_user()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# USER()
create table t1 (a varchar(1024), b varchar(1024) as (user()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UUID_SHORT()
create table t1 (a varchar(1024) as (uuid_short()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# UUID()
create table t1 (a varchar(1024) as (uuid()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# VALUES()
create table t1 (a varchar(1024), b varchar(1024) as (values(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VERSION()
create table t1 (a varchar(1024), b varchar(1024) as (version()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# ENCRYPT()
create table t1 (a varchar(1024), b varchar(1024) as (encrypt(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# Stored procedures
create procedure p1()
begin
@@ -137,77 +137,77 @@ begin
return 1;
end //
create table t1 (a int as (p1()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a int as (f1()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
drop procedure p1;
drop function f1;
# Unknown functions
create table t1 (a int as (f1()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
#
# GROUP BY FUNCTIONS
#
# AVG()
create table t1 (a int, b int as (avg(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BIT_AND()
create table t1 (a int, b int as (bit_and(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BIT_OR()
create table t1 (a int, b int as (bit_or(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BIT_XOR()
create table t1 (a int, b int as (bit_xor(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# COUNT(DISTINCT)
create table t1 (a int, b int as (count(distinct a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# COUNT()
create table t1 (a int, b int as (count(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# GROUP_CONCAT()
create table t1 (a varchar(32), b int as (group_concat(a,'')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# MAX()
create table t1 (a int, b int as (max(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# MIN()
create table t1 (a int, b int as (min(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STD()
create table t1 (a int, b int as (std(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STDDEV_POP()
create table t1 (a int, b int as (stddev_pop(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STDDEV_SAMP()
create table t1 (a int, b int as (stddev_samp(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STDDEV()
create table t1 (a int, b int as (stddev(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# SUM()
create table t1 (a int, b int as (sum(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VAR_POP()
create table t1 (a int, b int as (var_pop(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VAR_SAMP()
create table t1 (a int, b int as (var_samp(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VARIANCE()
create table t1 (a int, b int as (variance(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
#
# XML FUNCTIONS
#
# ExtractValue()
create table t1 (a varchar(1024), b varchar(1024) as (ExtractValue(a,'//b[$@j]')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UpdateXML()
create table t1 (a varchar(1024), b varchar(1024) as (UpdateXML(a,'/a','<e>fff</e>')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
#
# Sub-selects
#
@@ -216,9 +216,9 @@ create table t2 (a int, b int as (select count(*) from t1));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from t1))' at line 1
drop table t1;
create table t1 (a int, b int as ((select 1)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
create table t1 (a int, b int as (a+(select 1)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
#
# SP functions
#
@@ -229,7 +229,7 @@ select sub1(1);
sub1(1)
2
create table t1 (a int, b int as (a+sub3(1)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
drop function sub1;
#
# Long expression
@@ -240,4 +240,4 @@ ERROR HY000: String 'concat(a,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
#
# Constant expression
create table t1 (a int as (PI()));
-ERROR HY000: Constant expression in computed column function is not allowed.
+ERROR HY000: Constant expression in computed column function is not allowed
diff --git a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result
index c3815e991e7..dda222f5e8a 100644
--- a/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result
+++ b/mysql-test/suite/vcol/r/vcol_blocked_sql_funcs_myisam.result
@@ -1,133 +1,133 @@
SET @@session.storage_engine = 'MyISAM';
# RAND()
create table t1 (b double as (rand()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# LOAD_FILE()
create table t1 (a varchar(64), b varchar(1024) as (load_file(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# CURDATE()
create table t1 (a datetime as (curdate()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_DATE(), CURRENT_DATE
create table t1 (a datetime as (current_date));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a datetime as (current_date()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_TIME(), CURRENT_TIME
create table t1 (a datetime as (current_time));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a datetime as (current_time()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP
create table t1 (a datetime as (current_timestamp()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a datetime as (current_timestamp));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURTIME()
create table t1 (a datetime as (curtime()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# LOCALTIME(), LOCALTIME
create table t1 (a datetime, b varchar(10) as (localtime()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
create table t1 (a datetime, b varchar(10) as (localtime));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# LOCALTIMESTAMP, LOCALTIMESTAMP()(v4.0.6)
create table t1 (a datetime, b varchar(10) as (localtimestamp()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
create table t1 (a datetime, b varchar(10) as (localtimestamp));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# NOW()
create table t1 (a datetime, b varchar(10) as (now()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# SYSDATE()
create table t1 (a int, b varchar(10) as (sysdate()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UNIX_TIMESTAMP()
create table t1 (a datetime, b datetime as (unix_timestamp()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UTC_DATE()
create table t1 (a datetime, b datetime as (utc_date()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UTC_TIME()
create table t1 (a datetime, b datetime as (utc_time()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UTC_TIMESTAMP()
create table t1 (a datetime, b datetime as (utc_timestamp()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# MATCH()
create table t1 (a varchar(32), b bool as (match a against ('sample text')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BENCHMARK()
create table t1 (a varchar(1024), b varchar(1024) as (benchmark(a,3)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# CONNECTION_ID()
create table t1 (a int as (connection_id()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# CURRENT_USER(), CURRENT_USER
create table t1 (a varchar(32) as (current_user()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a varchar(32) as (current_user));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# DATABASE()
create table t1 (a varchar(1024), b varchar(1024) as (database()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# FOUND_ROWS()
create table t1 (a varchar(1024), b varchar(1024) as (found_rows()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# GET_LOCK()
create table t1 (a varchar(1024), b varchar(1024) as (get_lock(a,10)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# IS_FREE_LOCK()
create table t1 (a varchar(1024), b varchar(1024) as (is_free_lock(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# IS_USED_LOCK()
create table t1 (a varchar(1024), b varchar(1024) as (is_used_lock(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# LAST_INSERT_ID()
create table t1 (a int as (last_insert_id()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# MASTER_POS_WAIT()
create table t1 (a varchar(32), b int as (master_pos_wait(a,0,2)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# NAME_CONST()
create table t1 (a varchar(32) as (name_const('test',1)));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# RELEASE_LOCK()
create table t1 (a varchar(32), b int as (release_lock(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# ROW_COUNT()
create table t1 (a int as (row_count()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# SCHEMA()
create table t1 (a varchar(32) as (schema()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# SESSION_USER()
create table t1 (a varchar(32) as (session_user()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# SLEEP()
create table t1 (a int, b int as (sleep(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# SYSTEM_USER()
create table t1 (a varchar(32) as (system_user()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# USER()
create table t1 (a varchar(1024), b varchar(1024) as (user()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UUID_SHORT()
create table t1 (a varchar(1024) as (uuid_short()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# UUID()
create table t1 (a varchar(1024) as (uuid()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
# VALUES()
create table t1 (a varchar(1024), b varchar(1024) as (values(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VERSION()
create table t1 (a varchar(1024), b varchar(1024) as (version()));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# ENCRYPT()
create table t1 (a varchar(1024), b varchar(1024) as (encrypt(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# Stored procedures
create procedure p1()
begin
@@ -139,77 +139,77 @@ begin
return 1;
end //
create table t1 (a int as (p1()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
create table t1 (a int as (f1()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
drop procedure p1;
drop function f1;
# Unknown functions
create table t1 (a int as (f1()));
-ERROR HY000: Function or expression is not allowed for column 'a'.
+ERROR HY000: Function or expression is not allowed for column 'a'
#
# GROUP BY FUNCTIONS
#
# AVG()
create table t1 (a int, b int as (avg(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BIT_AND()
create table t1 (a int, b int as (bit_and(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BIT_OR()
create table t1 (a int, b int as (bit_or(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# BIT_XOR()
create table t1 (a int, b int as (bit_xor(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# COUNT(DISTINCT)
create table t1 (a int, b int as (count(distinct a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# COUNT()
create table t1 (a int, b int as (count(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# GROUP_CONCAT()
create table t1 (a varchar(32), b int as (group_concat(a,'')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# MAX()
create table t1 (a int, b int as (max(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# MIN()
create table t1 (a int, b int as (min(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STD()
create table t1 (a int, b int as (std(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STDDEV_POP()
create table t1 (a int, b int as (stddev_pop(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STDDEV_SAMP()
create table t1 (a int, b int as (stddev_samp(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# STDDEV()
create table t1 (a int, b int as (stddev(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# SUM()
create table t1 (a int, b int as (sum(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VAR_POP()
create table t1 (a int, b int as (var_pop(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VAR_SAMP()
create table t1 (a int, b int as (var_samp(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# VARIANCE()
create table t1 (a int, b int as (variance(a)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
#
# XML FUNCTIONS
#
# ExtractValue()
create table t1 (a varchar(1024), b varchar(1024) as (ExtractValue(a,'//b[$@j]')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
# UpdateXML()
create table t1 (a varchar(1024), b varchar(1024) as (UpdateXML(a,'/a','<e>fff</e>')));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
#
# Sub-selects
#
@@ -218,9 +218,9 @@ create table t2 (a int, b int as (select count(*) from t1));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from t1))' at line 1
drop table t1;
create table t1 (a int, b int as ((select 1)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
create table t1 (a int, b int as (a+(select 1)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
#
# SP functions
#
@@ -231,7 +231,7 @@ select sub1(1);
sub1(1)
2
create table t1 (a int, b int as (a+sub3(1)));
-ERROR HY000: Function or expression is not allowed for column 'b'.
+ERROR HY000: Function or expression is not allowed for column 'b'
drop function sub1;
#
# Long expression
@@ -242,4 +242,4 @@ ERROR HY000: String 'concat(a,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
#
# Constant expression
create table t1 (a int as (PI()));
-ERROR HY000: Constant expression in computed column function is not allowed.
+ERROR HY000: Constant expression in computed column function is not allowed
diff --git a/mysql-test/suite/vcol/r/vcol_csv.result b/mysql-test/suite/vcol/r/vcol_csv.result
index 79c1bd2d6f4..97977505696 100644
--- a/mysql-test/suite/vcol/r/vcol_csv.result
+++ b/mysql-test/suite/vcol/r/vcol_csv.result
@@ -1,7 +1,7 @@
SET @@session.storage_engine = 'CSV';
create table t1 (a int, b int as (a+1));
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
create table t1 (a int not null);
alter table t1 add column b int as (a+1);
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
drop table t1;
diff --git a/mysql-test/suite/vcol/r/vcol_handler_maria.result b/mysql-test/suite/vcol/r/vcol_handler_maria.result
new file mode 100644
index 00000000000..df36d0fbbf3
--- /dev/null
+++ b/mysql-test/suite/vcol/r/vcol_handler_maria.result
@@ -0,0 +1,76 @@
+SET @@session.storage_engine = 'maria';
+create table t1 (a int,
+b int as (-a),
+c int as (-a) persistent,
+d char(1),
+index (a),
+index (c));
+insert into t1 (a,d) values (4,'a'), (2,'b'), (1,'c'), (3,'d');
+select * from t1;
+a b c d
+4 -4 -4 a
+2 -2 -2 b
+1 -1 -1 c
+3 -3 -3 d
+# HANDLER tbl_name OPEN
+handler t1 open;
+# HANDLER tbl_name READ non-vcol_index_name > (value1,value2,...)
+handler t1 read a > (2);
+a b c d
+3 -3 -3 d
+# HANDLER tbl_name READ non-vcol_index_name > (value1,value2,...) WHERE non-vcol_field=expr
+handler t1 read a > (2) where d='c';
+a b c d
+# HANDLER tbl_name READ vcol_index_name = (value1,value2,...)
+handler t1 read c = (-2);
+a b c d
+2 -2 -2 b
+# HANDLER tbl_name READ vcol_index_name = (value1,value2,...) WHERE non-vcol_field=expr
+handler t1 read c = (-2) where d='c';
+a b c d
+# HANDLER tbl_name READ non-vcol_index_name > (value1,value2,...) WHERE vcol_field=expr
+handler t1 read a > (2) where b=-3 && c=-3;
+a b c d
+3 -3 -3 d
+# HANDLER tbl_name READ vcol_index_name <= (value1,value2,...)
+handler t1 read c <= (-2);
+a b c d
+2 -2 -2 b
+# HANDLER tbl_name READ vcol_index_name > (value1,value2,...) WHERE vcol_field=expr
+handler t1 read c <= (-2) where b=-3;
+a b c d
+3 -3 -3 d
+# HANDLER tbl_name READ vcol_index_name FIRST
+handler t1 read c first;
+a b c d
+4 -4 -4 a
+# HANDLER tbl_name READ vcol_index_name NEXT
+handler t1 read c next;
+a b c d
+3 -3 -3 d
+# HANDLER tbl_name READ vcol_index_name PREV
+handler t1 read c prev;
+a b c d
+4 -4 -4 a
+# HANDLER tbl_name READ vcol_index_name LAST
+handler t1 read c last;
+a b c d
+1 -1 -1 c
+# HANDLER tbl_name READ FIRST where non-vcol=expr
+handler t1 read FIRST where a >= 2;
+a b c d
+4 -4 -4 a
+# HANDLER tbl_name READ FIRST where vcol=expr
+handler t1 read FIRST where b >= -2;
+a b c d
+2 -2 -2 b
+# HANDLER tbl_name READ NEXT where non-vcol=expr
+handler t1 read NEXT where d='c';
+a b c d
+1 -1 -1 c
+# HANDLER tbl_name READ NEXT where vcol=expr
+handler t1 read NEXT where b<=-4;
+a b c d
+# HANDLER tbl_name CLOSE
+handler t1 close;
+drop table t1;
diff --git a/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result b/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result
index 6d1fb0d3526..a2ebc7a8cd8 100644
--- a/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result
+++ b/mysql-test/suite/vcol/r/vcol_ins_upd_innodb.result
@@ -25,8 +25,8 @@ a b c
# INSERT INTO tbl_name VALUES... a non-NULL value is specified against vcols
insert into t1 values (1,2,3);
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't1' ignored.
-Warning 1645 The value specified for computed column 'c' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't1' ignored
+Warning 1647 The value specified for computed column 'c' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
@@ -65,8 +65,8 @@ a b c
# against vcols
insert into t1 (a,b) values (1,3), (2,4);
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't1' ignored.
-Warning 1645 The value specified for computed column 'b' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't1' ignored
+Warning 1647 The value specified for computed column 'b' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
@@ -107,8 +107,8 @@ a b c
create table t2 like t1;
insert into t2 select * from t1;
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't2' ignored.
-Warning 1645 The value specified for computed column 'c' in table 't2' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't2' ignored
+Warning 1647 The value specified for computed column 'c' in table 't2' ignored
select * from t1;
a b c
2 -2 -2
@@ -123,8 +123,8 @@ a b c
create table t2 like t1;
insert into t2 (a,b) select a,b from t1;
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't2' ignored.
-Warning 1645 The value specified for computed column 'b' in table 't2' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't2' ignored
+Warning 1647 The value specified for computed column 'b' in table 't2' ignored
select * from t2;
a b c
2 -2 -2
@@ -159,7 +159,7 @@ a b c
2 -2 -2
update t1 set c=3 where a=2;
Warnings:
-Warning 1645 The value specified for computed column 'c' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'c' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
@@ -189,7 +189,7 @@ a b c
2 -2 -2
update t1 set c=3 where b=-2;
Warnings:
-Warning 1645 The value specified for computed column 'c' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'c' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
diff --git a/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result b/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result
index 9aac0086b4a..161a82171ce 100644
--- a/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result
+++ b/mysql-test/suite/vcol/r/vcol_ins_upd_myisam.result
@@ -25,8 +25,8 @@ a b c
# INSERT INTO tbl_name VALUES... a non-NULL value is specified against vcols
insert into t1 values (1,2,3);
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't1' ignored.
-Warning 1645 The value specified for computed column 'c' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't1' ignored
+Warning 1647 The value specified for computed column 'c' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
@@ -65,8 +65,8 @@ a b c
# against vcols
insert into t1 (a,b) values (1,3), (2,4);
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't1' ignored.
-Warning 1645 The value specified for computed column 'b' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't1' ignored
+Warning 1647 The value specified for computed column 'b' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
@@ -107,8 +107,8 @@ a b c
create table t2 like t1;
insert into t2 select * from t1;
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't2' ignored.
-Warning 1645 The value specified for computed column 'c' in table 't2' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't2' ignored
+Warning 1647 The value specified for computed column 'c' in table 't2' ignored
select * from t1;
a b c
2 -2 -2
@@ -123,8 +123,8 @@ a b c
create table t2 like t1;
insert into t2 (a,b) select a,b from t1;
Warnings:
-Warning 1645 The value specified for computed column 'b' in table 't2' ignored.
-Warning 1645 The value specified for computed column 'b' in table 't2' ignored.
+Warning 1647 The value specified for computed column 'b' in table 't2' ignored
+Warning 1647 The value specified for computed column 'b' in table 't2' ignored
select * from t2;
a b c
2 -2 -2
@@ -159,7 +159,7 @@ a b c
2 -2 -2
update t1 set c=3 where a=2;
Warnings:
-Warning 1645 The value specified for computed column 'c' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'c' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
@@ -189,7 +189,7 @@ a b c
2 -2 -2
update t1 set c=3 where b=-2;
Warnings:
-Warning 1645 The value specified for computed column 'c' in table 't1' ignored.
+Warning 1647 The value specified for computed column 'c' in table 't1' ignored
select * from t1;
a b c
1 -1 -1
diff --git a/mysql-test/suite/vcol/r/vcol_keys_innodb.result b/mysql-test/suite/vcol/r/vcol_keys_innodb.result
index ee272fb7db8..857dcb8423f 100644
--- a/mysql-test/suite/vcol/r/vcol_keys_innodb.result
+++ b/mysql-test/suite/vcol/r/vcol_keys_innodb.result
@@ -7,7 +7,7 @@ SET @@session.storage_engine = 'InnoDB';
# - CHECK (allowed but not used)
# UNIQUE
create table t1 (a int, b int as (a*2) unique);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2) persistent unique);
show create table t1;
Table Create Table
@@ -22,7 +22,7 @@ a int(11) YES NULL
b int(11) YES UNI NULL VIRTUAL
drop table t1;
create table t1 (a int, b int as (a*2), unique key (b));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2) persistent, unique (b));
show create table t1;
Table Create Table
@@ -38,7 +38,7 @@ b int(11) YES UNI NULL VIRTUAL
drop table t1;
create table t1 (a int, b int as (a*2));
alter table t1 add unique key (b);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
drop table t1;
create table t1 (a int, b int as (a*2) persistent);
alter table t1 add unique key (b);
@@ -50,9 +50,9 @@ drop table t1;
#
# INDEX
create table t1 (a int, b int as (a*2), index (b));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2), index (a,b));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2) persistent, index (b));
show create table t1;
Table Create Table
@@ -81,9 +81,9 @@ b int(11) YES NULL VIRTUAL
drop table t1;
create table t1 (a int, b int as (a*2));
alter table t1 add index (b);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
alter table t1 add index (a,b);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
drop table t1;
create table t1 (a int, b int as (a*2) persistent);
alter table t1 add index (b);
@@ -103,27 +103,27 @@ drop table t1;
# Rejected FK options.
create table t1 (a int, b int as (a+1) persistent,
foreign key (b) references t2(a) on update set null);
-ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column
create table t1 (a int, b int as (a+1) persistent,
foreign key (b) references t2(a) on update cascade);
-ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column
create table t1 (a int, b int as (a+1) persistent,
foreign key (b) references t2(a) on delete set null);
-ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column
create table t1 (a int, b int as (a+1) persistent);
alter table t1 add foreign key (b) references t2(a) on update set null;
-ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column
alter table t1 add foreign key (b) references t2(a) on update cascade;
-ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column
alter table t1 add foreign key (b) references t2(a) on delete set null;
-ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column
drop table t1;
create table t1 (a int, b int as (a+1),
foreign key (b) references t2(a));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a+1));
alter table t1 add foreign key (b) references t2(a);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
drop table t1;
# Allowed FK options.
create table t2 (a int primary key, b char(5));
diff --git a/mysql-test/suite/vcol/r/vcol_keys_myisam.result b/mysql-test/suite/vcol/r/vcol_keys_myisam.result
index 8a11e44f201..af0935affbc 100644
--- a/mysql-test/suite/vcol/r/vcol_keys_myisam.result
+++ b/mysql-test/suite/vcol/r/vcol_keys_myisam.result
@@ -7,7 +7,7 @@ SET @@session.storage_engine = 'MyISAM';
# - CHECK (allowed but not used)
# UNIQUE
create table t1 (a int, b int as (a*2) unique);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2) persistent unique);
show create table t1;
Table Create Table
@@ -22,7 +22,7 @@ a int(11) YES NULL
b int(11) YES UNI NULL VIRTUAL
drop table t1;
create table t1 (a int, b int as (a*2), unique key (b));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2) persistent, unique (b));
show create table t1;
Table Create Table
@@ -38,7 +38,7 @@ b int(11) YES UNI NULL VIRTUAL
drop table t1;
create table t1 (a int, b int as (a*2));
alter table t1 add unique key (b);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
drop table t1;
create table t1 (a int, b int as (a*2) persistent);
alter table t1 add unique key (b);
@@ -50,9 +50,9 @@ drop table t1;
#
# INDEX
create table t1 (a int, b int as (a*2), index (b));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2), index (a,b));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a*2) persistent, index (b));
show create table t1;
Table Create Table
@@ -81,9 +81,9 @@ b int(11) YES NULL VIRTUAL
drop table t1;
create table t1 (a int, b int as (a*2));
alter table t1 add index (b);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
alter table t1 add index (a,b);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
drop table t1;
create table t1 (a int, b int as (a*2) persistent);
alter table t1 add index (b);
@@ -110,27 +110,27 @@ drop table t1;
# Rejected FK options.
create table t1 (a int, b int as (a+1) persistent,
foreign key (b) references t2(a) on update set null);
-ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column
create table t1 (a int, b int as (a+1) persistent,
foreign key (b) references t2(a) on update cascade);
-ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column
create table t1 (a int, b int as (a+1) persistent,
foreign key (b) references t2(a) on delete set null);
-ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column
create table t1 (a int, b int as (a+1) persistent);
alter table t1 add foreign key (b) references t2(a) on update set null;
-ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE SET NULL clause on a computed column
alter table t1 add foreign key (b) references t2(a) on update cascade;
-ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON UPDATE CASCADE clause on a computed column
alter table t1 add foreign key (b) references t2(a) on delete set null;
-ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column.
+ERROR HY000: Cannot define foreign key with ON DELETE SET NULL clause on a computed column
drop table t1;
create table t1 (a int, b int as (a+1),
foreign key (b) references t2(a));
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
create table t1 (a int, b int as (a+1));
alter table t1 add foreign key (b) references t2(a);
-ERROR HY000: Key/Index cannot be defined on a non-stored computed column.
+ERROR HY000: Key/Index cannot be defined on a non-stored computed column
drop table t1;
# Allowed FK options.
create table t2 (a int primary key, b char(5));
diff --git a/mysql-test/suite/vcol/r/vcol_memory.result b/mysql-test/suite/vcol/r/vcol_memory.result
index 37154df61e7..30b6bd4a4bf 100644
--- a/mysql-test/suite/vcol/r/vcol_memory.result
+++ b/mysql-test/suite/vcol/r/vcol_memory.result
@@ -1,7 +1,7 @@
SET @@session.storage_engine = 'memory';
create table t1 (a int, b int as (a+1));
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
create table t1 (a int);
alter table t1 add column b int as (a+1);
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
drop table t1;
diff --git a/mysql-test/suite/vcol/r/vcol_merge.result b/mysql-test/suite/vcol/r/vcol_merge.result
index 32f3268329f..03a1e151c2e 100644
--- a/mysql-test/suite/vcol/r/vcol_merge.result
+++ b/mysql-test/suite/vcol/r/vcol_merge.result
@@ -4,5 +4,5 @@ create table t2 (a int, b int as (a % 10));
insert into t1 values (1,default);
insert into t2 values (2,default);
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
-ERROR HY000: 'Specified storage engine' is not yet supported for computed columns.
+ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
drop table t1,t2;
diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result
index 57460b1d669..a460b8da709 100644
--- a/mysql-test/suite/vcol/r/vcol_misc.result
+++ b/mysql-test/suite/vcol/r/vcol_misc.result
@@ -1,4 +1,138 @@
drop table if exists t1,t2;
+create table t1 (a int, b int, v int as (a+1), index idx(b));
+insert into t1(a, b) values
+(4, 40), (3, 30), (5, 50), (7, 70), (8, 80), (2, 20), (1, 10);
+select * from t1 order by b;
+a b v
+1 10 2
+2 20 3
+3 30 4
+4 40 5
+5 50 6
+7 70 8
+8 80 9
+delete from t1 where v > 6 order by b limit 1;
+select * from t1 order by b;
+a b v
+1 10 2
+2 20 3
+3 30 4
+4 40 5
+5 50 6
+8 80 9
+update t1 set a=v order by b limit 1;
+select * from t1 order by b;
+a b v
+2 10 3
+2 20 3
+3 30 4
+4 40 5
+5 50 6
+8 80 9
+drop table t1;
+CREATE TABLE t1 (
+a int NOT NULL DEFAULT '0',
+v double AS ((1, a)) VIRTUAL
+);
+ERROR HY000: Expression for computed column cannot return a row
+CREATE TABLE t1 (
+a CHAR(255) BINARY NOT NULL DEFAULT 0,
+b CHAR(255) BINARY NOT NULL DEFAULT 0,
+v CHAR(255) BINARY AS (CONCAT(a,b)) VIRTUAL );
+INSERT INTO t1(a,b) VALUES ('4','7'), ('4','6');
+SELECT 1 AS C FROM t1 ORDER BY v;
+C
+1
+1
+DROP TABLE t1;
+CREATE TABLE t1(a int, b int DEFAULT 0, v INT AS (b+10) PERSISTENT);
+INSERT INTO t1(a) VALUES (1);
+SELECT b, v FROM t1;
+b v
+0 10
+DROP TABLE t1;
+CREATE TABLE t1(a int DEFAULT 100, v int AS (a+1) PERSISTENT);
+INSERT INTO t1 () VALUES ();
+CREATE TABLE t2(a int DEFAULT 100 , v int AS (a+1));
+INSERT INTO t2 () VALUES ();
+SELECT a, v FROM t1;
+a v
+100 101
+SELECT a, v FROM t2;
+a v
+100 101
+DROP TABLE t1,t2;
+CREATE TABLE t1 (
+a datetime NOT NULL DEFAULT '2000-01-01',
+v boolean AS (a < '2001-01-01')
+);
+INSERT INTO t1(a) VALUES ('2002-02-15');
+INSERT INTO t1(a) VALUES ('2000-10-15');
+SELECT a, v FROM t1;
+a v
+2002-02-15 00:00:00 0
+2000-10-15 00:00:00 1
+SELECT a, v FROM t1;
+a v
+2002-02-15 00:00:00 0
+2000-10-15 00:00:00 1
+CREATE TABLE t2 (
+a datetime NOT NULL DEFAULT '2000-01-01',
+v boolean AS (a < '2001-01-01') PERSISTENT
+);
+INSERT INTO t2(a) VALUES ('2002-02-15');
+INSERT INTO t2(a) VALUES ('2000-10-15');
+SELECT * FROM t2;
+a v
+2002-02-15 00:00:00 0
+2000-10-15 00:00:00 1
+DROP TABLE t1, t2;
+CREATE TABLE t1 (
+a char(255), b char(255), c char(255), d char(255),
+v char(255) AS (CONCAT(c,d) ) VIRTUAL
+);
+INSERT INTO t1(a,b,c,d) VALUES ('w','x','y','z'), ('W','X','Y','Z');
+SELECT v FROM t1 ORDER BY CONCAT(a,b);
+v
+yz
+YZ
+DROP TABLE t1;
+CREATE TABLE t1 (f1 INTEGER, v1 INTEGER AS (f1) VIRTUAL);
+CREATE TABLE t2 AS SELECT v1 FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `v1` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t1,t2;
+CREATE TABLE t1 (p int, a double NOT NULL, v double AS (ROUND(a,p)) VIRTUAL);
+INSERT INTO t1 VALUES (0,1,0);
+Warnings:
+Warning 1647 The value specified for computed column 'v' in table 't1' ignored
+INSERT INTO t1 VALUES (NULL,0,0);
+Warnings:
+Warning 1647 The value specified for computed column 'v' in table 't1' ignored
+SELECT a, p, v, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+a p v ROUND(a,p) ROUND(a,p+NULL)
+1 0 1 1 NULL
+0 NULL NULL NULL NULL
+DROP TABLE t1;
+CREATE TABLE t1 (p int, a double NOT NULL);
+INSERT INTO t1(p,a) VALUES (0,1);
+INSERT INTO t1(p,a) VALUES (NULL,0);
+SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+a p ROUND(a,p) ROUND(a,p+NULL)
+1 0 1 NULL
+0 NULL NULL NULL
+DROP TABLE t1;
+CREATE TABLE t1 (a char(32), v char(32) CHARACTER SET ucs2 AS (a) VIRTUAL);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(32) DEFAULT NULL,
+ `v` char(32) CHARACTER SET ucs2 AS (a) VIRTUAL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t1;
create table t1 (a int, b int);
insert into t1 values (3, 30), (4, 20), (1, 20);
create table t2 (c int, d int, v int as (d+1), index idx(c));
diff --git a/mysql-test/suite/vcol/r/vcol_misc.result.moved b/mysql-test/suite/vcol/r/vcol_misc.result.moved
new file mode 100644
index 00000000000..57460b1d669
--- /dev/null
+++ b/mysql-test/suite/vcol/r/vcol_misc.result.moved
@@ -0,0 +1,20 @@
+drop table if exists t1,t2;
+create table t1 (a int, b int);
+insert into t1 values (3, 30), (4, 20), (1, 20);
+create table t2 (c int, d int, v int as (d+1), index idx(c));
+insert into t2(c,d) values
+(20, 100), (20, 300), (30, 100), (30, 200), (40, 500),
+(70, 100), (40, 300), (60, 100), (40, 100), (70, 100);
+set join_cache_level=6;
+explain
+select * from t1,t2 where t1.b=t2.c and d <= 100;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3
+1 SIMPLE t2 ref idx idx 5 test.t1.b 2 Using where; Using join buffer
+select * from t1,t2 where t1.b=t2.c and d <= 100;
+a b c d v
+4 20 20 100 101
+1 20 20 100 101
+3 30 30 100 101
+set join_cache_level=default;
+drop table t1, t2;
diff --git a/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result b/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result
index 0f46abf0054..c638ced4f41 100644
--- a/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result
+++ b/mysql-test/suite/vcol/r/vcol_non_stored_columns_innodb.result
@@ -76,7 +76,7 @@ drop table t1;
# Case 7. ALTER. Modify virtual stored -> virtual non-stored
create table t1 (a int, b int as (a % 2) persistent);
alter table t1 modify b int as (a % 2);
-ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns.
+ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -87,7 +87,7 @@ drop table t1;
# Case 8. ALTER. Modify virtual non-stored -> virtual stored
create table t1 (a int, b int as (a % 2));
alter table t1 modify b int as (a % 2) persistent;
-ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns.
+ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result b/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result
index 3c7d29ef6fe..be42b8b76c4 100644
--- a/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result
+++ b/mysql-test/suite/vcol/r/vcol_non_stored_columns_myisam.result
@@ -76,7 +76,7 @@ drop table t1;
# Case 7. ALTER. Modify virtual stored -> virtual non-stored
create table t1 (a int, b int as (a % 2) persistent);
alter table t1 modify b int as (a % 2);
-ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns.
+ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -87,7 +87,7 @@ drop table t1;
# Case 8. ALTER. Modify virtual non-stored -> virtual stored
create table t1 (a int, b int as (a % 2));
alter table t1 modify b int as (a % 2) persistent;
-ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns.
+ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/suite/vcol/t/vcol_handler_maria.test b/mysql-test/suite/vcol/t/vcol_handler_maria.test
new file mode 100644
index 00000000000..9b69e600767
--- /dev/null
+++ b/mysql-test/suite/vcol/t/vcol_handler_maria.test
@@ -0,0 +1,52 @@
+################################################################################
+# t/vcol_handler_maria.test #
+# #
+# Purpose: #
+# Testing HANDLER.
+# #
+# Maria branch #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: Andrey Zhakov #
+# Original Date: 2008-09-04 #
+# Change Author: #
+# Change Date: #
+# Change: #
+################################################################################
+
+--source include/have_maria.inc
+
+#
+# NOTE: PLEASE DO NOT ADD NOT MARIA SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#
+
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+--source suite/vcol/inc/vcol_init_vars.pre
+
+#------------------------------------------------------------------------------#
+# Cleanup
+--source suite/vcol/inc/vcol_cleanup.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+##### Storage engine to be tested
+# Set the session storage engine
+eval SET @@session.storage_engine = 'maria';
+
+##### Workarounds for known open engine specific bugs
+# none
+
+#------------------------------------------------------------------------------#
+# Execute the tests to be applied to all storage engines
+--source suite/vcol/inc/vcol_handler.inc
+
+#------------------------------------------------------------------------------#
+# Execute storage engine specific tests
+
+#------------------------------------------------------------------------------#
+# Cleanup
+--source suite/vcol/inc/vcol_cleanup.inc
diff --git a/mysql-test/suite/vcol/t/vcol_misc.test b/mysql-test/suite/vcol/t/vcol_misc.test
index afe6f838268..1bd7c0c50a1 100644
--- a/mysql-test/suite/vcol/t/vcol_misc.test
+++ b/mysql-test/suite/vcol/t/vcol_misc.test
@@ -1,8 +1,147 @@
+--source include/have_ucs2.inc
+
--disable_warnings
drop table if exists t1,t2;
--enable_warnings
#
+# Bug#601164: DELETE/UPDATE with ORDER BY index and LIMIT
+#
+
+create table t1 (a int, b int, v int as (a+1), index idx(b));
+insert into t1(a, b) values
+ (4, 40), (3, 30), (5, 50), (7, 70), (8, 80), (2, 20), (1, 10);
+
+select * from t1 order by b;
+
+delete from t1 where v > 6 order by b limit 1;
+select * from t1 order by b;
+
+update t1 set a=v order by b limit 1;
+select * from t1 order by b;
+
+drop table t1;
+
+#
+# Bug#604549: Expression for virtual column returns row
+#
+
+-- error ER_ROW_EXPR_FOR_VCOL
+CREATE TABLE t1 (
+ a int NOT NULL DEFAULT '0',
+ v double AS ((1, a)) VIRTUAL
+);
+
+#
+# Bug#603654: Virtual column in ORDER BY, no other references of table columns
+#
+
+CREATE TABLE t1 (
+ a CHAR(255) BINARY NOT NULL DEFAULT 0,
+ b CHAR(255) BINARY NOT NULL DEFAULT 0,
+ v CHAR(255) BINARY AS (CONCAT(a,b)) VIRTUAL );
+INSERT INTO t1(a,b) VALUES ('4','7'), ('4','6');
+SELECT 1 AS C FROM t1 ORDER BY v;
+
+DROP TABLE t1;
+
+#
+# Bug#603186: Insert into a table with stored vurtual columns
+#
+
+CREATE TABLE t1(a int, b int DEFAULT 0, v INT AS (b+10) PERSISTENT);
+INSERT INTO t1(a) VALUES (1);
+SELECT b, v FROM t1;
+
+DROP TABLE t1;
+
+CREATE TABLE t1(a int DEFAULT 100, v int AS (a+1) PERSISTENT);
+INSERT INTO t1 () VALUES ();
+CREATE TABLE t2(a int DEFAULT 100 , v int AS (a+1));
+INSERT INTO t2 () VALUES ();
+
+SELECT a, v FROM t1;
+SELECT a, v FROM t2;
+
+DROP TABLE t1,t2;
+
+#
+# Bug#604503: Virtual column expression with datetime comparison
+#
+
+CREATE TABLE t1 (
+ a datetime NOT NULL DEFAULT '2000-01-01',
+ v boolean AS (a < '2001-01-01')
+);
+INSERT INTO t1(a) VALUES ('2002-02-15');
+INSERT INTO t1(a) VALUES ('2000-10-15');
+
+SELECT a, v FROM t1;
+SELECT a, v FROM t1;
+
+CREATE TABLE t2 (
+ a datetime NOT NULL DEFAULT '2000-01-01',
+ v boolean AS (a < '2001-01-01') PERSISTENT
+);
+INSERT INTO t2(a) VALUES ('2002-02-15');
+INSERT INTO t2(a) VALUES ('2000-10-15');
+
+SELECT * FROM t2;
+
+DROP TABLE t1, t2;
+
+#
+# Bug#607566: Virtual column in the select list of SELECT with ORDER BY
+#
+
+CREATE TABLE t1 (
+ a char(255), b char(255), c char(255), d char(255),
+ v char(255) AS (CONCAT(c,d) ) VIRTUAL
+);
+
+INSERT INTO t1(a,b,c,d) VALUES ('w','x','y','z'), ('W','X','Y','Z');
+
+SELECT v FROM t1 ORDER BY CONCAT(a,b);
+
+DROP TABLE t1;
+
+#
+# Bug#607168: CREATE TABLE AS SELECT that returns virtual columns
+#
+
+CREATE TABLE t1 (f1 INTEGER, v1 INTEGER AS (f1) VIRTUAL);
+CREATE TABLE t2 AS SELECT v1 FROM t1;
+SHOW CREATE TABLE t2;
+
+DROP TABLE t1,t2;
+
+#
+# Bug#607177: ROUND function in the expression for a virtual function
+#
+
+CREATE TABLE t1 (p int, a double NOT NULL, v double AS (ROUND(a,p)) VIRTUAL);
+INSERT INTO t1 VALUES (0,1,0);
+INSERT INTO t1 VALUES (NULL,0,0);
+SELECT a, p, v, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (p int, a double NOT NULL);
+INSERT INTO t1(p,a) VALUES (0,1);
+INSERT INTO t1(p,a) VALUES (NULL,0);
+SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+DROP TABLE t1;
+
+#
+# Bug#610890: SHOW CREATE TABLE with a virtual column
+#
+
+CREATE TABLE t1 (a char(32), v char(32) CHARACTER SET ucs2 AS (a) VIRTUAL);
+
+SHOW CREATE TABLE t1;
+
+DROP TABLE t1;
+
+#
# SELECT that uses a virtual column and executed with BKA
#
@@ -20,4 +159,23 @@ select * from t1,t2 where t1.b=t2.c and d <= 100;
select * from t1,t2 where t1.b=t2.c and d <= 100;
set join_cache_level=default;
-drop table t1, t2; \ No newline at end of file
+drop table t1, t2;
+create table t1 (a int, b int);
+insert into t1 values (3, 30), (4, 20), (1, 20);
+create table t2 (c int, d int, v int as (d+1), index idx(c));
+insert into t2(c,d) values
+(20, 100), (20, 300), (30, 100), (30, 200), (40, 500),
+(70, 100), (40, 300), (60, 100), (40, 100), (70, 100);
+set join_cache_level=6;
+explain
+select * from t1,t2 where t1.b=t2.c and d <= 100;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 3
+1 SIMPLE t2 ref idx idx 5 test.t1.b 2 Using where; Using join buffer
+select * from t1,t2 where t1.b=t2.c and d <= 100;
+a b c d v
+4 20 20 100 101
+1 20 20 100 101
+3 30 30 100 101
+set join_cache_level=default;
+drop table t1, t2;
diff --git a/mysql-test/suite/vcol/t/vcol_misc.test.moved b/mysql-test/suite/vcol/t/vcol_misc.test.moved
new file mode 100644
index 00000000000..afe6f838268
--- /dev/null
+++ b/mysql-test/suite/vcol/t/vcol_misc.test.moved
@@ -0,0 +1,23 @@
+--disable_warnings
+drop table if exists t1,t2;
+--enable_warnings
+
+#
+# SELECT that uses a virtual column and executed with BKA
+#
+
+create table t1 (a int, b int);
+insert into t1 values (3, 30), (4, 20), (1, 20);
+create table t2 (c int, d int, v int as (d+1), index idx(c));
+insert into t2(c,d) values
+ (20, 100), (20, 300), (30, 100), (30, 200), (40, 500),
+ (70, 100), (40, 300), (60, 100), (40, 100), (70, 100);
+
+set join_cache_level=6;
+explain
+select * from t1,t2 where t1.b=t2.c and d <= 100;
+
+select * from t1,t2 where t1.b=t2.c and d <= 100;
+set join_cache_level=default;
+
+drop table t1, t2; \ No newline at end of file
diff --git a/mysql-test/t/alter_table-big.test b/mysql-test/t/alter_table-big.test
index 1dcc1f1c9bd..e007a3a55e0 100644
--- a/mysql-test/t/alter_table-big.test
+++ b/mysql-test/t/alter_table-big.test
@@ -31,7 +31,9 @@ create table t2 (i int);
# statement execution, so we don't need many rows in 't1' to make
# this test repeatable.
alter table t1 disable keys;
+--disable_warnings
insert into t1 values (RAND()*1000, RAND()*1000, RAND()*1000);
+--enable_warnings
# Later we use binlog to check the order in which statements are
# executed so let us reset it first.
@@ -50,8 +52,7 @@ connection default;
--reap
set session debug="-d,sleep_alter_enable_indexes";
# Check that statements were executed/binlogged in correct order.
---replace_column 2 # 5 #
-show binlog events in 'master-bin.000001' from 106;
+source include/show_binlog_events.inc;
# Clean up
drop tables t1, t2;
@@ -111,8 +112,7 @@ drop table t3;
set session debug="-d,sleep_alter_before_main_binlog";
# Check that all statements were logged in correct order
---replace_column 2 # 5 #
-show binlog events in 'master-bin.000001' from 106;
+source include/show_binlog_events.inc;
--echo End of 5.1 tests
diff --git a/mysql-test/t/alter_table_trans.test b/mysql-test/t/alter_table_trans.test
new file mode 100644
index 00000000000..9096a392af4
--- /dev/null
+++ b/mysql-test/t/alter_table_trans.test
@@ -0,0 +1,15 @@
+#
+# Test of alter table with transactional tables
+#
+
+--source include/have_innodb.inc
+--disable_warnings
+drop table if exists t1,t2;
+--enable_warnings
+
+#
+# This test caused a crash in wait_if_global_read_lock()
+#
+CREATE TABLE t1 (a INT, INDEX(a)) engine=innodb;
+ALTER TABLE t1 RENAME TO t2, DISABLE KEYS;
+DROP TABLE t2;
diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test
index 6704257f9af..7478c7dcdce 100644
--- a/mysql-test/t/archive.test
+++ b/mysql-test/t/archive.test
@@ -1680,3 +1680,16 @@ SELECT * FROM t1;
REPAIR TABLE t1 EXTENDED;
SELECT * FROM t1;
DROP TABLE t1;
+
+#
+# Bug #47012 archive tables are not upgradeable, and server crashes on
+# any access
+#
+copy_file std_data/archive_5_0.frm $MYSQLD_DATADIR/test/t1.frm;
+copy_file std_data/archive_5_0.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
+copy_file std_data/archive_5_0.ARM $MYSQLD_DATADIR/test/t1.ARM;
+--error ER_TABLE_NEEDS_UPGRADE
+select * from t1;
+repair table t1;
+select sum(length(a)),sum(b) from t1;
+drop table t1;
diff --git a/mysql-test/t/bug39022.test b/mysql-test/t/bug39022.test
index 268b207e0e5..6056dbf0e7b 100644
--- a/mysql-test/t/bug39022.test
+++ b/mysql-test/t/bug39022.test
@@ -24,7 +24,7 @@ START TRANSACTION;
connection thread2;
--echo # in thread2
REPLACE INTO t2 VALUES (-17);
-SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d);
+SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE;
connection thread1;
--echo # in thread1
@@ -37,14 +37,14 @@ START TRANSACTION;
REPLACE INTO t1(a,b) VALUES (65,-50);
REPLACE INTO t2 VALUES (-91);
send;
-SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); #waits
+SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; #waits
connection thread1;
--echo # in thread1
--echo # should not crash
--error ER_LOCK_DEADLOCK
-SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d); #crashes
+SELECT d FROM t2,t1 WHERE d=(SELECT MAX(a) FROM t1 WHERE t1.a > t2.d) LOCK IN SHARE MODE; #crashes
connection thread2;
--echo # in thread2
diff --git a/mysql-test/t/bug46080-master.opt b/mysql-test/t/bug46080-master.opt
index dacdab53a4b..b1c244a121c 100644
--- a/mysql-test/t/bug46080-master.opt
+++ b/mysql-test/t/bug46080-master.opt
@@ -1 +1 @@
---skip-grant-tables --skip-name-resolve --safemalloc-mem-limit=20000000
+--skip-grant-tables --skip-name-resolve --safemalloc-mem-limit=20000000 --loose-aria-pagecache-buffer-size=1M
diff --git a/mysql-test/t/bug46261-master.opt b/mysql-test/t/bug46261-master.opt
index 6be4269e809..5699a3387b8 100644
--- a/mysql-test/t/bug46261-master.opt
+++ b/mysql-test/t/bug46261-master.opt
@@ -1 +1 @@
---skip-grant-tables $EXAMPLE_PLUGIN_OPT
+--skip-grant-tables
diff --git a/mysql-test/t/bug46261.test b/mysql-test/t/bug46261.test
index 67bdc995850..9d8eecf3d52 100644
--- a/mysql-test/t/bug46261.test
+++ b/mysql-test/t/bug46261.test
@@ -7,7 +7,7 @@
--replace_regex /\.dll/.so/
--error ER_OPTION_PREVENTS_STATEMENT
-eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
--replace_regex /\.dll/.so/
--error ER_OPTION_PREVENTS_STATEMENT
diff --git a/mysql-test/t/bug46760-master.opt b/mysql-test/t/bug46760-master.opt
index f830d135149..2d7be7fb9b1 100644
--- a/mysql-test/t/bug46760-master.opt
+++ b/mysql-test/t/bug46760-master.opt
@@ -1,2 +1,2 @@
---innodb-lock-wait-timeout=2
---innodb-file-per-table
+--loose-innodb-lock-wait-timeout=2
+--loose-innodb-file-per-table
diff --git a/mysql-test/t/concurrent_innodb_safelog-master.opt b/mysql-test/t/concurrent_innodb_safelog-master.opt
index 462f8fbe828..82dec8b25fd 100644
--- a/mysql-test/t/concurrent_innodb_safelog-master.opt
+++ b/mysql-test/t/concurrent_innodb_safelog-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=1
+--loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/t/concurrent_innodb_unsafelog-master.opt b/mysql-test/t/concurrent_innodb_unsafelog-master.opt
index 210212a40bc..ea9c1b860e9 100644
--- a/mysql-test/t/concurrent_innodb_unsafelog-master.opt
+++ b/mysql-test/t/concurrent_innodb_unsafelog-master.opt
@@ -1,2 +1,2 @@
---innodb_locks_unsafe_for_binlog
---innodb_lock_wait_timeout=1
+--loose-innodb_locks_unsafe_for_binlog
+--loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/t/connect.cnf b/mysql-test/t/connect.cnf
index 6c52a4b144d..caf51ee2085 100644
--- a/mysql-test/t/connect.cnf
+++ b/mysql-test/t/connect.cnf
@@ -5,4 +5,4 @@ extra-port= @mysqld.1.#extra-port
extra-max-connections=1
[ENV]
-MASTER_EXTRA_PORT= @mysqld.1.extra-port
+MASTER_EXTRA_PORT= @mysqld.1.#extra-port
diff --git a/mysql-test/t/create-big.test b/mysql-test/t/create-big.test
index 6cd6326cdb8..e1dfbbd4ac4 100644
--- a/mysql-test/t/create-big.test
+++ b/mysql-test/t/create-big.test
@@ -305,8 +305,7 @@ connection default;
show create table t2;
drop table t2;
# Let us check that statements were executed/binlogged in correct order
---replace_column 2 # 5 #
-show binlog events in 'master-bin.000001' from 106;
+source include/show_binlog_events.inc;
# Now let us check the gap between check for target table
# existance and copying of .frm file.
@@ -330,8 +329,7 @@ drop table t1;
connection default;
--reap
drop table t2;
---replace_column 2 # 5 #
-show binlog events in 'master-bin.000001' from 106;
+source include/show_binlog_events.inc;
# And now he gap between copying of .frm file and ha_create_table() call.
create table t1 (i int);
@@ -359,8 +357,7 @@ drop table t1;
connection default;
--reap
drop table t2;
---replace_column 2 # 5 #
-show binlog events in 'master-bin.000001' from 106;
+source include/show_binlog_events.inc;
# Finally we check the gap between ha_create_table() and binlogging
create table t1 (i int);
@@ -386,7 +383,6 @@ drop table t1;
connection default;
--reap
drop table t2;
---replace_column 2 # 5 #
-show binlog events in 'master-bin.000001' from 106;
+source include/show_binlog_events.inc;
set session debug="-d,sleep_create_like_before_binlogging";
diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test
index f3cd48af543..b59fa9edb9f 100644
--- a/mysql-test/t/create.test
+++ b/mysql-test/t/create.test
@@ -1384,11 +1384,11 @@ drop function f1;
# Bug#25629 CREATE TABLE LIKE does not work with INFORMATION_SCHEMA
#
create table t1 like information_schema.processlist;
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
show create table t1;
drop table t1;
create temporary table t1 like information_schema.processlist;
---replace_result ENGINE=MyISAM "" ENGINE=MARIA "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
+--replace_result ENGINE=MyISAM "" ENGINE=Aria "" " PAGE_CHECKSUM=1" "" " PAGE_CHECKSUM=0" ""
show create table t1;
drop table t1;
create table t1 like information_schema.character_sets;
diff --git a/mysql-test/t/ctype_cp932_binlog_stm.test b/mysql-test/t/ctype_cp932_binlog_stm.test
index 89df33a6df5..f3038ccfa61 100644
--- a/mysql-test/t/ctype_cp932_binlog_stm.test
+++ b/mysql-test/t/ctype_cp932_binlog_stm.test
@@ -7,6 +7,7 @@
#
# Bug#18293: Values in stored procedure written to binlog unescaped
#
+let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
delimiter |;
CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
@@ -22,7 +23,7 @@ CALL bug18293("Foo's a Bar", _cp932 0xED40ED41ED42, 47.93)|
SELECT HEX(s1),HEX(s2),d FROM t4|
DROP PROCEDURE bug18293|
DROP TABLE t4|
-SHOW BINLOG EVENTS FROM 370|
+source include/show_binlog_events.inc|
delimiter ;|
--echo End of 5.0 tests
diff --git a/mysql-test/t/ctype_filesystem.test b/mysql-test/t/ctype_filesystem.test
index 2b993c2b924..42f1ef06478 100644
--- a/mysql-test/t/ctype_filesystem.test
+++ b/mysql-test/t/ctype_filesystem.test
@@ -1,3 +1,5 @@
+--source include/not_windows.inc
+
SET CHARACTER SET utf8;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
SHOW VARIABLES like 'character_sets_dir';
diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test
index 7bbc470137a..5a0e86568f3 100644
--- a/mysql-test/t/delete.test
+++ b/mysql-test/t/delete.test
@@ -374,5 +374,17 @@ DELETE IGNORE FROM t1;
DROP TABLE t1;
+--echo #
+--echo # Bug #53450: Crash/assertion
+--echo # "virtual int ha_myisam::index_first(uchar*)") at assert.c:81
+--echo #
+
+CREATE TABLE t1 (a INT, b INT, c INT,
+ INDEX(a), INDEX(b), INDEX(c));
+INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
+
+DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
+
+DROP TABLE t1;
--echo End of 5.1 tests
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index a07aa95aec8..1de9d1c9847 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -11,6 +11,7 @@
##############################################################################
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
-subselect_notembedded : MariaDB LPBUG#545137: crashes on some platforms
-# partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings
-# ps_3innodb : Bug#53309 2010-04-30 VasilDimov valgrind warnings
+partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings
+main.mysqlhotcopy_myisam : bug#54129 2010-06-04 Horst
+main.mysqlhotcopy_archive: bug#54129 2010-06-04 Horst
+main.events_time_zone : Test is not predictable as it depends on precise timing.
diff --git a/mysql-test/t/drop.test b/mysql-test/t/drop.test
index bb4dd3e11f9..66fe3bb03b2 100644
--- a/mysql-test/t/drop.test
+++ b/mysql-test/t/drop.test
@@ -195,9 +195,10 @@ create table `#mysql50#abc``def` ( id int );
--error ER_WRONG_TABLE_NAME
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
-create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
+create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1234` (a int);
--error ER_WRONG_TABLE_NAME
-create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
+create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12345` (a int);
+show tables;
use test;
drop database mysqltestbug26703;
diff --git a/mysql-test/t/error_simulation.test b/mysql-test/t/error_simulation.test
index 7cd16a6bc5a..f6edacfaa29 100644
--- a/mysql-test/t/error_simulation.test
+++ b/mysql-test/t/error_simulation.test
@@ -45,6 +45,49 @@ SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
+--echo #
+--echo # Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string
+--echo #
+
+CREATE TABLE t1(a BLOB);
+
+SET SESSION debug="+d,bug42064_simulate_oom";
+# May fail with either ER_OUT_OF_RESOURCES or EE_OUTOFMEMORY
+--error ER_OUT_OF_RESOURCES, 5
+INSERT INTO t1 VALUES("");
+SET SESSION debug=DEFAULT;
+
+DROP TABLE t1;
+
+-- echo #
+-- echo # Bug#41660: Sort-index_merge for non-first join table may require
+-- echo # O(#scans) memory
+-- echo #
+
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
+
+CREATE TABLE t2 (a INT, b INT, filler CHAR(100), KEY(a), KEY(b));
+INSERT INTO t2 SELECT 1000, 1000, 'filler' FROM t1 A, t1 B, t1 C;
+INSERT INTO t2 VALUES (1, 1, 'data');
+
+--echo # the example query uses LEFT JOIN only for the sake of being able to
+--echo # demonstrate the issue with a very small dataset. (left outer join
+--echo # disables the use of join buffering, so we get the second table
+--echo # re-scanned for every record in the outer table. if we used inner join,
+--echo # we would need to have thousands of records and/or more columns in both
+--echo # tables so that the join buffer is filled and re-scans are triggered).
+
+SET SESSION debug = '+d,only_one_Unique_may_be_created';
+
+--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
+EXPLAIN
+SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 );
+SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 );
+
+SET SESSION debug = DEFAULT;
+
+DROP TABLE t1, t2;
--echo #
--echo # End of 5.1 tests
diff --git a/mysql-test/t/events_scheduling.test b/mysql-test/t/events_scheduling.test
index 041a2def490..5f16f8bea6a 100644
--- a/mysql-test/t/events_scheduling.test
+++ b/mysql-test/t/events_scheduling.test
@@ -108,6 +108,32 @@ DROP TABLE table_1;
DROP TABLE table_2;
DROP TABLE table_3;
DROP TABLE table_4;
+
+-- echo
+-- echo Bug #50087 Interval arithmetic for Event_queue_element is not portable.
+-- echo
+
+CREATE TABLE t1(a int);
+
+CREATE EVENT e1 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW() - INTERVAL 1 MONTH
+ENDS NOW() + INTERVAL 2 MONTH
+ON COMPLETION PRESERVE
+DO
+ INSERT INTO t1 VALUES (1);
+
+CREATE EVENT e2 ON SCHEDULE EVERY 1 MONTH
+STARTS NOW()
+ENDS NOW() + INTERVAL 11 MONTH
+ON COMPLETION PRESERVE
+DO
+ INSERT INTO t1 VALUES (1);
+
+DROP TABLE t1;
+DROP EVENT e1;
+DROP EVENT e2;
+
+
DROP DATABASE events_test;
SET GLOBAL event_scheduler=@event_scheduler;
diff --git a/mysql-test/t/events_time_zone.test b/mysql-test/t/events_time_zone.test
index 17260eb0038..5291eb96e6b 100644
--- a/mysql-test/t/events_time_zone.test
+++ b/mysql-test/t/events_time_zone.test
@@ -5,7 +5,7 @@
# to wait for operation to complete. Should be positive. Test runs
# about 25*N seconds (it sleeps most of the time, so CPU speed is not
# relevant).
-let $N = 5;
+let $N = 6;
#
# 2. Some subtests
# - create a new time zone
@@ -174,13 +174,13 @@ CREATE EVENT e2 ON SCHEDULE EVERY @step SECOND
# We want to start at the beginning of the DST cycle, so we wait
# untill current time divides by @step6.
-let $wait_timeout= `SELECT @step6 + 1`;
+let $wait_timeout= `SELECT @step6*2 + 1`;
let $wait_condition= SELECT UNIX_TIMESTAMP() % @step6 = @step6 - 1;
--source include/wait_condition.inc
# The second wait is needed because after the first wait we may end up
# on the ending edge of a second. Second wait will bring us to the
# beginning edge.
-let $wait_timeout= `SELECT @step + 1`;
+let $wait_timeout= `SELECT @step*2 + 1`;
let $wait_condition= SELECT UNIX_TIMESTAMP() % @step6 = 0;
--source include/wait_condition.inc
diff --git a/mysql-test/t/exampledb.test b/mysql-test/t/exampledb.test
deleted file mode 100644
index fbb2a18f344..00000000000
--- a/mysql-test/t/exampledb.test
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Simple test for the example storage engine
-# Taken fromm the select test
-#
--- source include/have_exampledb.inc
-
---disable_warnings
-# Clean up if event's test fails
-drop database if exists events_test;
-drop database if exists events_test2;
-
-drop table if exists t1;
---enable_warnings
-
-CREATE TABLE t1 (
- Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
- Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
-) ENGINE=example;
-
-drop table t1;
-
-# End of 4.1 tests
diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test
index ba6be72dbdc..b635a1b2968 100644
--- a/mysql-test/t/explain.test
+++ b/mysql-test/t/explain.test
@@ -213,4 +213,19 @@ EXPLAIN SELECT 1 FROM t1 WHERE a = (SELECT 1 FROM t1 t JOIN t2 WHERE b <= 1 AND
DROP TABLE t1, t2;
+--echo #
+--echo # Bug #48573: difference of index selection between rpm binary and
+--echo # .tar.gz, windows vs linux..
+--echo #
+
+CREATE TABLE t1(c1 INT, c2 INT, c4 INT, c5 INT, KEY(c2, c5), KEY(c2, c4, c5));
+INSERT INTO t1 VALUES(4, 1, 1, 1);
+INSERT INTO t1 VALUES(3, 1, 1, 1);
+INSERT INTO t1 VALUES(2, 1, 1, 1);
+INSERT INTO t1 VALUES(1, 1, 1, 1);
+
+EXPLAIN SELECT c1 FROM t1 WHERE c2 = 1 AND c4 = 1 AND c5 = 1;
+
+DROP TABLE t1;
+
--echo End of 5.1 tests.
diff --git a/mysql-test/t/flush_block_commit_notembedded.test b/mysql-test/t/flush_block_commit_notembedded.test
index aea38250218..b774d7ec069 100644
--- a/mysql-test/t/flush_block_commit_notembedded.test
+++ b/mysql-test/t/flush_block_commit_notembedded.test
@@ -28,14 +28,14 @@ INSERT t1 VALUES (1);
--echo # Switch to connection con2
connection con2;
FLUSH TABLES WITH READ LOCK;
-SHOW MASTER STATUS;
+--source include/show_binlog_events.inc
--echo # Switch to connection con1
connection con1;
send COMMIT;
--echo # Switch to connection con2
connection con2;
sleep 1;
-SHOW MASTER STATUS;
+--source include/show_binlog_events.inc
UNLOCK TABLES;
--echo # Switch to connection con1
connection con1;
diff --git a/mysql-test/t/fulltext_plugin-master.opt b/mysql-test/t/fulltext_plugin-master.opt
deleted file mode 100644
index a2554caa20b..00000000000
--- a/mysql-test/t/fulltext_plugin-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$SIMPLE_PARSER_OPT
diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test
index e832ea316eb..926c1f92855 100644
--- a/mysql-test/t/func_gconcat.test
+++ b/mysql-test/t/func_gconcat.test
@@ -708,6 +708,7 @@ SELECT 1 FROM
DROP TABLE t1;
+--echo End of 5.0 tests
--echo #
--echo # Bug #52397: another crash with explain extended and group_concat
@@ -719,5 +720,18 @@ EXPLAIN EXTENDED SELECT 1 FROM
t1 t2, t1 GROUP BY t1.a) AS d;
DROP TABLE t1;
+--echo #
+--echo # Bug #54476: crash when group_concat and 'with rollup' in prepared statements
+--echo #
---echo End of 5.0 tests
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1), (2);
+
+PREPARE stmt FROM "SELECT GROUP_CONCAT(t1.a ORDER BY t1.a) FROM t1 JOIN t1 t2 GROUP BY t1.a WITH ROLLUP";
+EXECUTE stmt;
+EXECUTE stmt;
+
+DEALLOCATE PREPARE stmt;
+DROP TABLE t1;
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/func_in.test b/mysql-test/t/func_in.test
index 61ae812d874..6efeb2866e6 100644
--- a/mysql-test/t/func_in.test
+++ b/mysql-test/t/func_in.test
@@ -540,5 +540,20 @@ EXPLAIN SELECT * FROM t1 WHERE c_char IN (NULL, NULL);
DROP TABLE t1;
--echo #
+--echo # Bug#54477: Crash on IN / CASE with NULL arguments
+--echo #
+
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1), (2);
+
+SELECT 1 IN (NULL, a) FROM t1;
+
+SELECT a IN (a, a) FROM t1 GROUP BY a WITH ROLLUP;
+
+SELECT CASE a WHEN a THEN a END FROM t1 GROUP BY a WITH ROLLUP;
+
+DROP TABLE t1;
+
+--echo #
--echo End of 5.1 tests
diff --git a/mysql-test/t/func_isnull.test b/mysql-test/t/func_isnull.test
index 6218efb882f..d3ad4614998 100644
--- a/mysql-test/t/func_isnull.test
+++ b/mysql-test/t/func_isnull.test
@@ -13,3 +13,18 @@ select * from t1 where isnull(to_days(mydate));
drop table t1;
# End of 4.1 tests
+
+--echo #
+--echo # Bug#53933 crash when using uncacheable subquery in the having clause of outer query
+--echo #
+
+CREATE TABLE t1 (f1 INT);
+INSERT INTO t1 VALUES (0),(0);
+
+SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2
+FROM t1 GROUP BY f1 HAVING f2 = f2;
+SELECT RELEASE_LOCK('Bug#53933');
+
+DROP TABLE t1;
+
+--echo End of 5.0 tests
diff --git a/mysql-test/t/func_like.test b/mysql-test/t/func_like.test
index 741ea5533da..1204d04d9a0 100644
--- a/mysql-test/t/func_like.test
+++ b/mysql-test/t/func_like.test
@@ -112,5 +112,19 @@ select 'andre%' like 'andreÊ%' escape 'Ê';
#
select _cp1251'andre%' like convert('andreÊ%' using cp1251) escape 'Ê';
-#
-# End of 4.1 tests
+
+--echo End of 4.1 tests
+
+
+--echo #
+--echo # Bug #54575: crash when joining tables with unique set column
+--echo #
+CREATE TABLE t1(a SET('a') NOT NULL, UNIQUE KEY(a));
+CREATE TABLE t2(b INT PRIMARY KEY);
+INSERT INTO t1 VALUES ();
+INSERT INTO t2 VALUES (1), (2), (3);
+SELECT 1 FROM t2 JOIN t1 ON 1 LIKE a GROUP BY a;
+DROP TABLE t1, t2;
+
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/func_misc.test b/mysql-test/t/func_misc.test
index afce01cac5c..363221f38d8 100644
--- a/mysql-test/t/func_misc.test
+++ b/mysql-test/t/func_misc.test
@@ -279,4 +279,16 @@ select NAME_CONST('_id',1234) as id;
select connection_id() > 0;
+--echo #
+--echo # Bug #54461: crash with longblob and union or update with subquery
+--echo #
+
+CREATE TABLE t1 (a INT, b LONGBLOB);
+INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2');
+
+SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
+SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
+
+DROP TABLE t1;
+
--echo End of tests
diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test
index 5bdb3ebe9bf..65e987dfa24 100644
--- a/mysql-test/t/grant.test
+++ b/mysql-test/t/grant.test
@@ -1541,7 +1541,7 @@ connect (con1,localhost,testbug,,db1);
SELECT * FROM `../db2/tb2`;
--error ER_TABLEACCESS_DENIED_ERROR
SELECT * FROM `../db2`.tb2;
---error ER_NO_SUCH_TABLE
+--error ER_WRONG_TABLE_NAME
SELECT * FROM `#mysql50#/../db2/tb2`;
connection default;
disconnect con1;
diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test
index e6ea5ecc7f6..bfef611d686 100644
--- a/mysql-test/t/group_by.test
+++ b/mysql-test/t/group_by.test
@@ -1205,6 +1205,52 @@ SELECT (SELECT t2.a FROM t2 WHERE t2.a = t1.a) aa, b, COUNT( b)
DROP TABLE t1, t2;
+
+--echo #
+--echo # Bug#52051: Aggregate functions incorrectly returns NULL from outer
+--echo # join query
+--echo #
+CREATE TABLE t1 (a INT PRIMARY KEY);
+CREATE TABLE t2 (a INT PRIMARY KEY);
+INSERT INTO t2 VALUES (1), (2);
+EXPLAIN SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+SELECT MIN(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+EXPLAIN SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+SELECT MAX(t2.a) FROM t2 LEFT JOIN t1 ON t2.a = t1.a;
+DROP TABLE t1, t2;
+
+#
+# min() returns wrong value when used in expression when there is no matching
+# rows
+#
+
+CREATE TABLE t1 (a int(11) NOT NULL);
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2 (
+ key_col int(11) NOT NULL,
+ KEY (key_col)
+);
+INSERT INTO t2 VALUES (1),(2);
+
+select min(t2.key_col) from t1,t2 where t1.a=1;
+select min(t2.key_col) from t1,t2 where t1.a > 1000;
+select min(t2.key_col)+1 from t1,t2 where t1.a> 1000;
+drop table t1,t2;
+
+--echo #
+--echo # Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results
--echo #
+CREATE TABLE t1 (a text, b varchar(10));
+INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two');
+
+query_vertical EXPLAIN
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
+query_vertical EXPLAIN
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
+DROP TABLE t1;
+
+
--echo # End of 5.1 tests
diff --git a/mysql-test/t/group_min_max.test b/mysql-test/t/group_min_max.test
index b06f0c09fc5..8ab7e1c9cb4 100644
--- a/mysql-test/t/group_min_max.test
+++ b/mysql-test/t/group_min_max.test
@@ -1085,4 +1085,19 @@ INSERT INTO t1 VALUES (1), (2), (3);
--source include/min_null_cond.inc
DROP TABLE t1;
+--echo #
+--echo # Bug#53859: Valgrind: opt_sum_query(TABLE_LIST*, List<Item>&, Item*) at
+--echo # opt_sum.cc:305
+--echo #
+CREATE TABLE t1 ( a INT, KEY (a) );
+INSERT INTO t1 VALUES (1), (2), (3);
+
+SELECT MIN( a ) AS min_a
+FROM t1
+WHERE a > 1 AND a IS NULL
+ORDER BY min_a;
+
+DROP TABLE t1;
+
+
--echo End of 5.1 tests
diff --git a/mysql-test/t/handler_myisam.test b/mysql-test/t/handler_myisam.test
index 868ba14480a..e78072ef8a0 100644
--- a/mysql-test/t/handler_myisam.test
+++ b/mysql-test/t/handler_myisam.test
@@ -48,4 +48,53 @@ HANDLER t1 READ a NEXT;
HANDLER t1 CLOSE;
DROP TABLE t1;
+
+--echo #
+--echo # Bug #54007: assert in ha_myisam::index_next , HANDLER
+--echo #
+CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
+
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+HANDLER t1 READ `PRIMARY` NEXT;
+HANDLER t1 READ ab NEXT;
+HANDLER t1 READ b NEXT;
+HANDLER t1 READ NEXT;
+HANDLER t1 CLOSE;
+
+INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+HANDLER t1 READ NEXT;
+HANDLER t1 READ `PRIMARY` NEXT;
+HANDLER t1 READ `PRIMARY` NEXT;
+HANDLER t1 READ ab NEXT;
+HANDLER t1 READ ab NEXT;
+HANDLER t1 READ b NEXT;
+HANDLER t1 READ b NEXT;
+HANDLER t1 READ b NEXT;
+HANDLER t1 READ b NEXT;
+HANDLER t1 READ b NEXT;
+HANDLER t1 READ NEXT;
+HANDLER t1 READ NEXT;
+HANDLER t1 READ NEXT;
+HANDLER t1 CLOSE;
+
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+HANDLER t1 READ `PRIMARY` PREV;
+HANDLER t1 READ `PRIMARY` PREV;
+HANDLER t1 READ b PREV;
+HANDLER t1 READ b PREV;
+HANDLER t1 CLOSE;
+
+HANDLER t1 OPEN;
+HANDLER t1 READ FIRST;
+HANDLER t1 READ `PRIMARY` PREV LIMIT 3;
+HANDLER t1 READ b NEXT LIMIT 5;
+HANDLER t1 CLOSE;
+
+DROP TABLE t1;
+
+
--echo End of 5.1 tests
diff --git a/mysql-test/t/having.test b/mysql-test/t/having.test
index 65bf9518a5c..c808e747523 100644
--- a/mysql-test/t/having.test
+++ b/mysql-test/t/having.test
@@ -544,3 +544,24 @@ ORDER BY t1.f2;
DROP TABLE t1,t2;
--echo End of 5.0 tests
+
+--echo #
+--echo # Bug#54416 MAX from JOIN with HAVING returning NULL with 5.1 and Empty set
+--echo #
+
+CREATE TABLE t1 (f1 INT(11), f2 VARCHAR(1), PRIMARY KEY (f1));
+INSERT INTO t1 VALUES (1,'f');
+
+CREATE TABLE t2 (f1 INT(11), f2 VARCHAR(1));
+INSERT INTO t2 VALUES (2,'m');
+INSERT INTO t2 VALUES (3,'m');
+INSERT INTO t2 VALUES (11,NULL);
+INSERT INTO t2 VALUES (12,'k');
+
+SELECT MAX(t1.f1) field1
+FROM t1 JOIN t2 ON t2.f2 LIKE 'x'
+HAVING field1 < 7;
+
+DROP TABLE t1,t2;
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/index_merge_innodb.test b/mysql-test/t/index_merge_innodb.test
index 7d4a27d9204..e68f414e0bc 100644
--- a/mysql-test/t/index_merge_innodb.test
+++ b/mysql-test/t/index_merge_innodb.test
@@ -29,3 +29,56 @@ let $merge_table_support= 0;
--source include/index_merge2.inc
--source include/index_merge_2sweeps.inc
--source include/index_merge_ror_cpk.inc
+
+--echo #
+--echo # BUG#56862/640419: Wrong result with sort_union index merge when one
+--echo # of the merged index scans is the primary key scan
+--echo #
+
+CREATE TABLE t1 (
+ pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ a int,
+ b int,
+ INDEX idx(a))
+ENGINE=INNODB;
+
+INSERT INTO t1(a,b) VALUES
+ (11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
+ (3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
+ (6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
+ (13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
+INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
+INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
+INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t1 VALUES (1000000, 0, 0);
+
+SET SESSION sort_buffer_size = 1024*36;
+
+EXPLAIN
+SELECT COUNT(*) FROM
+ (SELECT * FROM t1
+ WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+SELECT COUNT(*) FROM
+ (SELECT * FROM t1
+ WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+
+--replace_column 9 #
+EXPLAIN
+SELECT COUNT(*) FROM
+ (SELECT * FROM t1 IGNORE INDEX(idx)
+ WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+SELECT COUNT(*) FROM
+ (SELECT * FROM t1 IGNORE INDEX(idx)
+ WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
+
+DROP TABLE t1;
diff --git a/mysql-test/t/information_schema.test b/mysql-test/t/information_schema.test
index f791f0ed738..e78b180caf7 100644
--- a/mysql-test/t/information_schema.test
+++ b/mysql-test/t/information_schema.test
@@ -531,6 +531,7 @@ drop table t1;
grant select on test.* to mysqltest_4@localhost;
connect (user10261,localhost,mysqltest_4,,);
connection user10261;
+--sorted_result
SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGES FROM INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME='TABLE_NAME';
connection default;
@@ -1412,6 +1413,31 @@ DROP USER nonpriv;
DROP TABLE db1.t1;
DROP DATABASE db1;
+--echo
+--echo Bug#54422 query with = 'variables'
+--echo
+
+CREATE TABLE variables(f1 INT);
+SELECT COLUMN_DEFAULT, TABLE_NAME
+FROM INFORMATION_SCHEMA.COLUMNS
+WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'variables';
+DROP TABLE variables;
+
+--echo #
+--echo # Bug #53814: NUMERIC_PRECISION for unsigned bigint field is 19,
+--echo # should be 20
+--echo #
+
+CREATE TABLE ubig (a BIGINT, b BIGINT UNSIGNED);
+
+SELECT TABLE_NAME, COLUMN_NAME, NUMERIC_PRECISION
+ FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='ubig';
+
+INSERT INTO ubig VALUES (0xFFFFFFFFFFFFFFFF,0xFFFFFFFFFFFFFFFF);
+SELECT length(CAST(b AS CHAR)) FROM ubig;
+
+DROP TABLE ubig;
+
--echo End of 5.1 tests.
diff --git a/mysql-test/t/information_schema_all_engines-master.opt b/mysql-test/t/information_schema_all_engines-master.opt
new file mode 100644
index 00000000000..959cf74c816
--- /dev/null
+++ b/mysql-test/t/information_schema_all_engines-master.opt
@@ -0,0 +1 @@
+--skip-safemalloc
diff --git a/mysql-test/t/information_schema_all_engines.test b/mysql-test/t/information_schema_all_engines.test
index b3b1d2d2f6b..b20ce60985c 100644
--- a/mysql-test/t/information_schema_all_engines.test
+++ b/mysql-test/t/information_schema_all_engines.test
@@ -12,7 +12,7 @@ use INFORMATION_SCHEMA;
show tables;
#
-# Bug#18925: subqueries with MIN/MAX functions on INFORMARTION_SCHEMA
+# Bug#18925: subqueries with MIN/MAX functions on INFORMATION_SCHEMA
#
SELECT t.table_name, c1.column_name
diff --git a/mysql-test/t/innodb-index.test b/mysql-test/t/innodb-index.test
deleted file mode 100644
index 38e5036b8be..00000000000
--- a/mysql-test/t/innodb-index.test
+++ /dev/null
@@ -1,550 +0,0 @@
--- source include/have_innodb.inc
-
-let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
-
-create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
-insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
-commit;
---error ER_DUP_KEYNAME
-alter table t1 add index b (b), add index b (b);
---error ER_DUP_FIELDNAME
-alter table t1 add index (b,b);
-alter table t1 add index d2 (d);
-show create table t1;
-explain select * from t1 force index(d2) order by d;
-select * from t1 force index (d2) order by d;
---error ER_DUP_ENTRY
-alter table t1 add unique index (b);
-show create table t1;
-alter table t1 add index (b);
-show create table t1;
-
-# Check how existing tables interfere with temporary tables.
-CREATE TABLE `t1#1`(a INT PRIMARY KEY) ENGINE=InnoDB;
-
-call mtr.add_suppression(" table `test`\\.`t1#[12]` already exists in InnoDB internal");
-
---error 156
-alter table t1 add unique index (c), add index (d);
-rename table `t1#1` to `t1#2`;
---error 156
-alter table t1 add unique index (c), add index (d);
-drop table `t1#2`;
-
-alter table t1 add unique index (c), add index (d);
-show create table t1;
-explain select * from t1 force index(c) order by c;
-alter table t1 add primary key (a), drop index c;
-show create table t1;
---error ER_MULTIPLE_PRI_KEY
-alter table t1 add primary key (c);
---error ER_DUP_ENTRY
-alter table t1 drop primary key, add primary key (b);
-create unique index c on t1 (c);
-show create table t1;
-explain select * from t1 force index(c) order by c;
-select * from t1 force index(c) order by c;
-alter table t1 drop index b, add index (b);
-show create table t1;
-insert into t1 values(6,1,'ggg','ggg');
-select * from t1;
-select * from t1 force index(b) order by b;
-select * from t1 force index(c) order by c;
-select * from t1 force index(d) order by d;
-explain select * from t1 force index(b) order by b;
-explain select * from t1 force index(c) order by c;
-explain select * from t1 force index(d) order by d;
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ad','ad'),(4,4,'afe','afe');
-commit;
-alter table t1 add index (c(2));
-show create table t1;
-alter table t1 add unique index (d(10));
-show create table t1;
-insert into t1 values(5,1,'ggg','ggg');
-select * from t1;
-select * from t1 force index(c) order by c;
-select * from t1 force index(d) order by d;
-explain select * from t1 order by b;
-explain select * from t1 force index(c) order by c;
-explain select * from t1 force index(d) order by d;
-show create table t1;
-alter table t1 drop index d;
-insert into t1 values(8,9,'fff','fff');
-select * from t1;
-select * from t1 force index(c) order by c;
-explain select * from t1 order by b;
-explain select * from t1 force index(c) order by c;
-explain select * from t1 order by d;
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,2,'ad','ad'),(4,4,'afe','afe');
-commit;
-alter table t1 add unique index (b,c);
-insert into t1 values(8,9,'fff','fff');
-select * from t1;
-select * from t1 force index(b) order by b;
-explain select * from t1 force index(b) order by b;
-show create table t1;
-alter table t1 add index (b,c);
-insert into t1 values(11,11,'kkk','kkk');
-select * from t1;
-select * from t1 force index(b) order by b;
-explain select * from t1 force index(b) order by b;
-show create table t1;
-alter table t1 add unique index (c,d);
-insert into t1 values(13,13,'yyy','aaa');
-select * from t1;
-select * from t1 force index(b) order by b;
-select * from t1 force index(c) order by c;
-explain select * from t1 force index(b) order by b;
-explain select * from t1 force index(c) order by c;
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, b int not null, c int, primary key (a), key (b)) engine = innodb;
-create table t3(a int not null, c int not null, d int, primary key (a), key (c)) engine = innodb;
-create table t4(a int not null, d int not null, e int, primary key (a), key (d)) engine = innodb;
-create table t2(a int not null, b int not null, c int not null, d int not null, e int,
-foreign key (b) references t1(b) on delete cascade,
-foreign key (c) references t3(c), foreign key (d) references t4(d))
-engine = innodb;
---error ER_DROP_INDEX_FK
-alter table t1 drop index b;
---error ER_DROP_INDEX_FK
-alter table t3 drop index c;
---error ER_DROP_INDEX_FK
-alter table t4 drop index d;
---error ER_DROP_INDEX_FK
-alter table t2 drop index b;
---error ER_DROP_INDEX_FK
-alter table t2 drop index b, drop index c, drop index d;
-# Apparently, the following makes mysql_alter_table() drop index d.
-create unique index dc on t2 (d,c);
-create index dc on t1 (b,c);
-# This should preserve the foreign key constraints.
-alter table t2 add primary key (a);
-insert into t1 values (1,1,1);
-insert into t3 values (1,1,1);
-insert into t4 values (1,1,1);
-insert into t2 values (1,1,1,1,1);
-commit;
-alter table t4 add constraint dc foreign key (a) references t1(a);
-show create table t4;
---replace_regex /'test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
-# a foreign key 'test/dc' already exists
---error ER_CANT_CREATE_TABLE
-alter table t3 add constraint dc foreign key (a) references t1(a);
-show create table t3;
-alter table t2 drop index b, add index (b);
-show create table t2;
---error ER_ROW_IS_REFERENCED_2
-delete from t1;
---error ER_CANT_DROP_FIELD_OR_KEY
-drop index dc on t4;
-# there is no foreign key dc on t3
-# Embedded server doesn't chdir to data directory
---replace_result $MYSQLTEST_VARDIR . mysqld.1/data/ ''
---replace_regex /\/test\/#sql2-[0-9a-f-]*'/\/#sql2-temporary'/
---error ER_ERROR_ON_RENAME
-alter table t3 drop foreign key dc;
-alter table t4 drop foreign key dc;
-select * from t2;
-delete from t1;
-select * from t2;
-
-drop table t2,t4,t3,t1;
-
--- let charset = utf8
--- source include/innodb-index.inc
-
-create table t1(a int not null, b int) engine = innodb;
-insert into t1 values (1,1),(1,1),(1,1),(1,1);
---error ER_DUP_ENTRY
-alter table t1 add unique index (a);
---error ER_DUP_ENTRY
-alter table t1 add unique index (b);
---error ER_DUP_ENTRY
-alter table t1 add unique index (a), add unique index(b);
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, c int not null,b int, primary key(a), unique key(c), key(b)) engine = innodb;
-alter table t1 drop index c, drop index b;
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, b int, primary key(a)) engine = innodb;
-alter table t1 add index (b);
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, b int, c char(10), d varchar(20), primary key (a)) engine = innodb;
-insert into t1 values (1,1,'ab','ab'),(2,2,'ac','ac'),(3,3,'ac','ac'),(4,4,'afe','afe'),(5,4,'affe','affe');
---error ER_DUP_ENTRY
-alter table t1 add unique index (b), add unique index (c), add unique index (d);
---error ER_DUP_ENTRY
-alter table t1 add unique index (c), add unique index (b), add index (d);
-show create table t1;
-drop table t1;
-
-create table t1(a int not null, b int not null, c int, primary key (a), key(c)) engine=innodb;
-insert into t1 values (5,1,5),(4,2,4),(3,3,3),(2,4,2),(1,5,1);
-alter table t1 add unique index (b);
-insert into t1 values (10,20,20),(11,19,19),(12,18,18),(13,17,17);
-show create table t1;
-check table t1;
-explain select * from t1 force index(c) order by c;
-explain select * from t1 order by a;
-explain select * from t1 force index(b) order by b;
-select * from t1 order by a;
-select * from t1 force index(b) order by b;
-select * from t1 force index(c) order by c;
-drop table t1;
-
-create table t1(a int not null, b int not null) engine=innodb;
-insert into t1 values (1,1);
-alter table t1 add primary key(b);
-insert into t1 values (2,2);
-show create table t1;
-check table t1;
-select * from t1;
-explain select * from t1;
-explain select * from t1 order by a;
-explain select * from t1 order by b;
-checksum table t1;
-drop table t1;
-
-create table t1(a int not null) engine=innodb;
-insert into t1 values (1);
-alter table t1 add primary key(a);
-insert into t1 values (2);
-show create table t1;
-check table t1;
-commit;
-select * from t1;
-explain select * from t1;
-explain select * from t1 order by a;
-drop table t1;
-
-create table t2(d varchar(17) primary key) engine=innodb default charset=utf8;
-create table t3(a int primary key) engine=innodb;
-
-insert into t3 values(22),(44),(33),(55),(66);
-
-insert into t2 values ('jejdkrun87'),('adfd72nh9k'),
-('adfdpplkeock'),('adfdijnmnb78k'),('adfdijn0loKNHJik');
-
-create table t1(a int, b blob, c text, d text not null)
-engine=innodb default charset = utf8;
-
-# r2667 The following test is disabled because MySQL behavior changed.
-# r2667 The test was added with this comment:
-# r2667
-# r2667 ------------------------------------------------------------------------
-# r2667 r1699 | marko | 2007-08-10 19:53:19 +0300 (Fri, 10 Aug 2007) | 5 lines
-# r2667
-# r2667 branches/zip: Add changes that accidentally omitted from r1698:
-# r2667
-# r2667 innodb-index.test, innodb-index.result: Add a test for creating
-# r2667 a PRIMARY KEY on a column that contains a NULL value.
-# r2667 ------------------------------------------------------------------------
-# r2667
-# r2667 but in BZR-r2667:
-# r2667 http://bazaar.launchpad.net/~mysql/mysql-server/mysql-5.1/revision/davi%40mysql.com-20080617141221-8yre8ys9j4uw3xx5?start_revid=joerg%40mysql.com-20080630105418-7qoe5ehomgrcdb89
-# r2667 MySQL changed the behavior to do full table copy when creating PRIMARY INDEX
-# r2667 on a non-NULL column instead of calling ::add_index() which would fail (and
-# r2667 this is what we were testing here). Before r2667 the code execution path was
-# r2667 like this (when adding PRIMARY INDEX on a non-NULL column with ALTER TABLE):
-# r2667
-# r2667 mysql_alter_table()
-# r2667 compare_tables() // would return ALTER_TABLE_INDEX_CHANGED
-# r2667 ::add_index() // would fail with "primary index cannot contain NULL"
-# r2667
-# r2667 after r2667 the code execution path is the following:
-# r2667
-# r2667 mysql_alter_table()
-# r2667 compare_tables() // returns ALTER_TABLE_DATA_CHANGED
-# r2667 full copy is done, without calling ::add_index()
-# r2667
-# r2667 To enable, remove "# r2667: " below.
-# r2667
-# r2667: insert into t1 values (null,null,null,'null');
-insert into t1
-select a,left(repeat(d,100*a),65535),repeat(d,20*a),d from t2,t3;
-drop table t2, t3;
-select count(*) from t1 where a=44;
-select a,
-length(b),b=left(repeat(d,100*a),65535),length(c),c=repeat(d,20*a),d from t1;
-# r2667: --error ER_PRIMARY_CANT_HAVE_NULL
-# r2667: alter table t1 add primary key (a), add key (b(20));
-# r2667: delete from t1 where d='null';
---error ER_DUP_ENTRY
-alter table t1 add primary key (a), add key (b(20));
-delete from t1 where a%2;
-check table t1;
-alter table t1 add primary key (a,b(255),c(255)), add key (b(767));
-select count(*) from t1 where a=44;
-select a,
-length(b),b=left(repeat(d,100*a),65535),length(c),c=repeat(d,20*a),d from t1;
-show create table t1;
-check table t1;
-explain select * from t1 where b like 'adfd%';
-
-#
-# Test locking
-#
-
-create table t2(a int, b varchar(255), primary key(a,b)) engine=innodb;
-insert into t2 select a,left(b,255) from t1;
-drop table t1;
-rename table t2 to t1;
-
-connect (a,localhost,root,,);
-connect (b,localhost,root,,);
-connection a;
-set innodb_lock_wait_timeout=1;
-begin;
-# Obtain an IX lock on the table
-select a from t1 limit 1 for update;
-connection b;
-set innodb_lock_wait_timeout=1;
-# This would require an S lock on the table, conflicting with the IX lock.
---error ER_LOCK_WAIT_TIMEOUT
-create index t1ba on t1 (b,a);
-connection a;
-commit;
-begin;
-# Obtain an IS lock on the table
-select a from t1 limit 1 lock in share mode;
-connection b;
-# This will require an S lock on the table. No conflict with the IS lock.
-create index t1ba on t1 (b,a);
-# This would require an X lock on the table, conflicting with the IS lock.
---error ER_LOCK_WAIT_TIMEOUT
-drop index t1ba on t1;
-connection a;
-commit;
-explain select a from t1 order by b;
---send
-select a,sleep(2+a/100) from t1 order by b limit 3;
-
-# The following DROP INDEX will succeed, altough the SELECT above has
-# opened a read view. However, during the execution of the SELECT,
-# MySQL should hold a table lock that should block the execution
-# of the DROP INDEX below.
-
-connection b;
-select sleep(1);
-drop index t1ba on t1;
-
-# After the index was dropped, subsequent SELECTs will use the same
-# read view, but they should not be accessing the dropped index any more.
-
-connection a;
-reap;
-explain select a from t1 order by b;
-select a from t1 order by b limit 3;
-commit;
-
-connection default;
-disconnect a;
-disconnect b;
-
-drop table t1;
-
-let $per_table=`select @@innodb_file_per_table`;
-let $format=`select @@innodb_file_format`;
-set global innodb_file_per_table=on;
-set global innodb_file_format='Barracuda';
-# Test creating a table that could lead to undo log overflow.
-# In the undo log, we write a 768-byte prefix (REC_MAX_INDEX_COL_LEN)
-# of each externally stored column that appears as a column prefix in an index.
-# For this test case, it would suffice to write 1 byte, though.
-create table t1(a blob,b blob,c blob,d blob,e blob,f blob,g blob,h blob,
- i blob,j blob,k blob,l blob,m blob,n blob,o blob,p blob,
- q blob,r blob,s blob,t blob,u blob)
- engine=innodb row_format=dynamic;
-create index t1a on t1 (a(1));
-create index t1b on t1 (b(1));
-create index t1c on t1 (c(1));
-create index t1d on t1 (d(1));
-create index t1e on t1 (e(1));
-create index t1f on t1 (f(1));
-create index t1g on t1 (g(1));
-create index t1h on t1 (h(1));
-create index t1i on t1 (i(1));
-create index t1j on t1 (j(1));
-create index t1k on t1 (k(1));
-create index t1l on t1 (l(1));
-create index t1m on t1 (m(1));
-create index t1n on t1 (n(1));
-create index t1o on t1 (o(1));
-create index t1p on t1 (p(1));
-create index t1q on t1 (q(1));
-create index t1r on t1 (r(1));
-create index t1s on t1 (s(1));
-create index t1t on t1 (t(1));
---error 139
-create index t1u on t1 (u(1));
---error 139
-create index t1ut on t1 (u(1), t(1));
-create index t1st on t1 (s(1), t(1));
-show create table t1;
---error 139
-create index t1u on t1 (u(1));
-alter table t1 row_format=compact;
-create index t1u on t1 (u(1));
-
-drop table t1;
-eval set global innodb_file_per_table=$per_table;
-eval set global innodb_file_format=$format;
-eval set global innodb_file_format_check=$format;
-
-#
-# Test to check whether CREATE INDEX handles implicit foreign key
-# constraint modifications (Issue #70, Bug #38786)
-#
-SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
-SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
-
-CREATE TABLE t1(
- c1 BIGINT(12) NOT NULL,
- PRIMARY KEY (c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE t2(
- c1 BIGINT(16) NOT NULL,
- c2 BIGINT(12) NOT NULL,
- c3 BIGINT(12) NOT NULL,
- PRIMARY KEY (c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3) REFERENCES t1(c1);
-
-SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
-SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-
-SHOW CREATE TABLE t2;
-
-CREATE INDEX i_t2_c3_c2 ON t2(c3, c2);
-
-SHOW CREATE TABLE t2;
-
-SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
-SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-
---error ER_NO_REFERENCED_ROW_2
-INSERT INTO t2 VALUES(0,0,0);
-INSERT INTO t1 VALUES(0);
-INSERT INTO t2 VALUES(0,0,0);
-
-DROP TABLE t2;
-
-CREATE TABLE t2(
- c1 BIGINT(16) NOT NULL,
- c2 BIGINT(12) NOT NULL,
- c3 BIGINT(12) NOT NULL,
- PRIMARY KEY (c1,c2,c3)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3) REFERENCES t1(c1);
-
-SHOW CREATE TABLE t2;
-
-CREATE INDEX i_t2_c3_c2 ON t2(c3, c2);
-
-SHOW CREATE TABLE t2;
---error ER_NO_REFERENCED_ROW_2
-INSERT INTO t2 VALUES(0,0,1);
-INSERT INTO t2 VALUES(0,0,0);
---error ER_ROW_IS_REFERENCED_2
-DELETE FROM t1;
-DELETE FROM t2;
-
-DROP TABLE t2;
-DROP TABLE t1;
-
-CREATE TABLE t1(
- c1 BIGINT(12) NOT NULL,
- c2 INT(4) NOT NULL,
- PRIMARY KEY (c2,c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE t2(
- c1 BIGINT(16) NOT NULL,
- c2 BIGINT(12) NOT NULL,
- c3 BIGINT(12) NOT NULL,
- PRIMARY KEY (c1)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
---replace_regex /'test\.#sql-[0-9_a-f-]*'/'#sql-temporary'/
---error ER_CANT_CREATE_TABLE
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3,c2) REFERENCES t1(c1,c1);
---replace_regex /'test\.#sql-[0-9_a-f-]*'/'#sql-temporary'/
---error ER_CANT_CREATE_TABLE
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2);
---replace_regex /'test\.#sql-[0-9_a-f-]*'/'#sql-temporary'/
---error ER_CANT_CREATE_TABLE
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3,c2) REFERENCES t1(c2,c1);
-ALTER TABLE t1 MODIFY COLUMN c2 BIGINT(12) NOT NULL;
---replace_regex /'test\.#sql-[0-9_a-f-]*'/'#sql-temporary'/
---error ER_CANT_CREATE_TABLE
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3,c2) REFERENCES t1(c1,c2);
-
-ALTER TABLE t2 ADD CONSTRAINT fk_t2_ca
- FOREIGN KEY (c3,c2) REFERENCES t1(c2,c1);
-SHOW CREATE TABLE t1;
-SHOW CREATE TABLE t2;
-CREATE INDEX i_t2_c2_c1 ON t2(c2, c1);
-SHOW CREATE TABLE t2;
-CREATE INDEX i_t2_c3_c1_c2 ON t2(c3, c1, c2);
-SHOW CREATE TABLE t2;
-CREATE INDEX i_t2_c3_c2 ON t2(c3, c2);
-SHOW CREATE TABLE t2;
-
-DROP TABLE t2;
-DROP TABLE t1;
-
-call mtr.add_suppression("InnoDB: insufficient history for index");
-
-connect (a,localhost,root,,);
-connect (b,localhost,root,,);
-connection a;
-CREATE TABLE t1 (a INT, b CHAR(1)) ENGINE=InnoDB;
-INSERT INTO t1 VALUES (3,'a'),(3,'b'),(1,'c'),(0,'d'),(1,'e');
-connection b;
-BEGIN;
-SELECT * FROM t1;
-connection a;
-CREATE INDEX t1a ON t1(a);
-connection b;
-SELECT * FROM t1;
---error ER_TABLE_DEF_CHANGED
-SELECT * FROM t1 FORCE INDEX(t1a) ORDER BY a;
-SELECT * FROM t1;
-COMMIT;
-SELECT * FROM t1 FORCE INDEX(t1a) ORDER BY a;
-connection default;
-disconnect a;
-disconnect b;
-
-DROP TABLE t1;
-
-#
-# restore environment to the state it was before this test execution
-#
-
--- disable_query_log
-eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
diff --git a/mysql-test/t/innodb-use-sys-malloc-master.opt b/mysql-test/t/innodb-use-sys-malloc-master.opt
deleted file mode 100644
index fc8582b5887..00000000000
--- a/mysql-test/t/innodb-use-sys-malloc-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb-use-sys-malloc=true
diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test
index 19e5180dc8b..2c9f84e823a 100644
--- a/mysql-test/t/innodb.test
+++ b/mysql-test/t/innodb.test
@@ -425,11 +425,13 @@ INSERT INTO t1 ( sca_code, cat_code, sca_desc, lan_code, sca_pic, sca_sdesc, sca
select count(*) from t1 where sca_code = 'PD';
select count(*) from t1 where sca_code <= 'PD';
select count(*) from t1 where sca_pic is null;
-alter table t1 drop index sca_pic, add index sca_pic (cat_code, sca_pic);
+alter table t1 drop index sca_pic;
+alter table t1 add index sca_pic (cat_code, sca_pic);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
select count(*) from t1 where cat_code='E';
-alter table t1 drop index sca_pic, add index (sca_pic, cat_code);
+alter table t1 drop index sca_pic;
+alter table t1 add index (sca_pic, cat_code);
select count(*) from t1 where sca_code='PD' and sca_pic is null;
select count(*) from t1 where sca_pic >= 'n';
select sca_pic from t1 where sca_pic is null;
@@ -1149,7 +1151,7 @@ show create table t2;
create index id2 on t2 (id);
show create table t2;
drop index id2 on t2;
---error ER_DROP_INDEX_FK,ER_DROP_INDEX_FK
+--error ER_DROP_INDEX_FK
drop index id on t2;
show create table t2;
drop table t2;
diff --git a/mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt b/mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt
deleted file mode 100644
index fad0da2ac2e..00000000000
--- a/mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb-autoinc-lock-mode=0
diff --git a/mysql-test/t/innodb_bug30919-master.opt b/mysql-test/t/innodb_bug30919-master.opt
deleted file mode 100644
index 8636d2d8734..00000000000
--- a/mysql-test/t/innodb_bug30919-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb --innodb_autoinc_lock_mode=0
diff --git a/mysql-test/t/innodb_ignore_builtin.test b/mysql-test/t/innodb_ignore_builtin.test
index 6f987bcf891..66f7e47b703 100644
--- a/mysql-test/t/innodb_ignore_builtin.test
+++ b/mysql-test/t/innodb_ignore_builtin.test
@@ -3,6 +3,4 @@
#
show variables like 'ignore_builtin_innodb';
select PLUGIN_NAME from information_schema.plugins
-where PLUGIN_NAME = "InnoDb";
-select ENGINE from information_schema.engines
-where ENGINE = "InnoDB";
+where PLUGIN_NAME = "InnoDb" and PLUGIN_LIBRARY IS NULL;
diff --git a/mysql-test/t/innodb_lock_wait_timeout_1-master.opt b/mysql-test/t/innodb_lock_wait_timeout_1-master.opt
deleted file mode 100644
index 462f8fbe828..00000000000
--- a/mysql-test/t/innodb_lock_wait_timeout_1-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb_lock_wait_timeout=1
diff --git a/mysql-test/t/innodb_mysql-master.opt b/mysql-test/t/innodb_mysql-master.opt
deleted file mode 100644
index 205c733455d..00000000000
--- a/mysql-test/t/innodb_mysql-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb-lock-wait-timeout=2
diff --git a/mysql-test/t/innodb_mysql_lock2.test b/mysql-test/t/innodb_mysql_lock2.test
new file mode 100644
index 00000000000..79698bcd898
--- /dev/null
+++ b/mysql-test/t/innodb_mysql_lock2.test
@@ -0,0 +1,803 @@
+# This test covers behavior for InnoDB tables.
+--source include/have_innodb.inc
+# This test requires statement/mixed mode binary logging.
+# Row-based mode puts weaker serializability requirements
+# so weaker locks are acquired for it.
+--source include/have_binlog_format_mixed_or_statement.inc
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
+
+--echo #
+--echo # Test how do we handle locking in various cases when
+--echo # we read data from InnoDB tables.
+--echo #
+--echo # In fact by performing this test we check two things:
+--echo # 1) That SQL-layer correctly determine type of thr_lock.c
+--echo # lock to be acquired/passed to InnoDB engine.
+--echo # 2) That InnoDB engine correctly interprets this lock
+--echo # type and takes necessary row locks or does not
+--echo # take them if they are not necessary.
+--echo #
+
+--echo # This test makes sense only in REPEATABLE-READ mode as
+--echo # in SERIALIZABLE mode all statements that read data take
+--echo # shared lock on them to enforce its semantics.
+select @@session.tx_isolation;
+
+--echo # Prepare playground by creating tables, views,
+--echo # routines and triggers used in tests.
+connect (con1, localhost, root,,);
+connection default;
+--disable_warnings
+drop table if exists t0, t1, t2, t3, t4, t5, te;
+drop view if exists v1, v2;
+drop procedure if exists p1;
+drop procedure if exists p2;
+drop function if exists f1;
+drop function if exists f2;
+drop function if exists f3;
+drop function if exists f4;
+drop function if exists f5;
+drop function if exists f6;
+drop function if exists f7;
+drop function if exists f8;
+drop function if exists f9;
+drop function if exists f10;
+drop function if exists f11;
+drop function if exists f12;
+drop function if exists f13;
+drop function if exists f14;
+drop function if exists f15;
+--enable_warnings
+create table t1 (i int primary key) engine=innodb;
+insert into t1 values (1), (2), (3), (4), (5);
+create table t2 (j int primary key) engine=innodb;
+insert into t2 values (1), (2), (3), (4), (5);
+create table t3 (k int primary key) engine=innodb;
+insert into t3 values (1), (2), (3);
+create table t4 (l int primary key) engine=innodb;
+insert into t4 values (1);
+create table t5 (l int primary key) engine=innodb;
+insert into t5 values (1);
+create table te(e int primary key);
+insert into te values (1);
+create view v1 as select i from t1;
+create view v2 as select j from t2 where j in (select i from t1);
+create procedure p1(k int) insert into t2 values (k);
+delimiter |;
+create function f1() returns int
+begin
+ declare j int;
+ select i from t1 where i = 1 into j;
+ return j;
+end|
+create function f2() returns int
+begin
+ declare k int;
+ select i from t1 where i = 1 into k;
+ insert into t2 values (k + 5);
+ return 0;
+end|
+create function f3() returns int
+begin
+ return (select i from t1 where i = 3);
+end|
+create function f4() returns int
+begin
+ if (select i from t1 where i = 3) then
+ return 1;
+ else
+ return 0;
+ end if;
+end|
+create function f5() returns int
+begin
+ insert into t2 values ((select i from t1 where i = 1) + 5);
+ return 0;
+end|
+create function f6() returns int
+begin
+ declare k int;
+ select i from v1 where i = 1 into k;
+ return k;
+end|
+create function f7() returns int
+begin
+ declare k int;
+ select j from v2 where j = 1 into k;
+ return k;
+end|
+create function f8() returns int
+begin
+ declare k int;
+ select i from v1 where i = 1 into k;
+ insert into t2 values (k+5);
+ return k;
+end|
+create function f9() returns int
+begin
+ update v2 set j=j+10 where j=1;
+ return 1;
+end|
+create function f10() returns int
+begin
+ return f1();
+end|
+create function f11() returns int
+begin
+ declare k int;
+ set k= f1();
+ insert into t2 values (k+5);
+ return k;
+end|
+create function f12(p int) returns int
+begin
+ insert into t2 values (p);
+ return p;
+end|
+create function f13(p int) returns int
+begin
+ return p;
+end|
+create procedure p2(inout p int)
+begin
+ select i from t1 where i = 1 into p;
+end|
+create function f14() returns int
+begin
+ declare k int;
+ call p2(k);
+ insert into t2 values (k+5);
+ return k;
+end|
+create function f15() returns int
+begin
+ declare k int;
+ call p2(k);
+ return k;
+end|
+create trigger t4_bi before insert on t4 for each row
+begin
+ declare k int;
+ select i from t1 where i=1 into k;
+ set new.l= k+1;
+end|
+create trigger t4_bu before update on t4 for each row
+begin
+ if (select i from t1 where i=1) then
+ set new.l= 2;
+ end if;
+end|
+--echo # Trigger below uses insertion of duplicate key in 'te'
+--echo # table as a way to abort delete operation.
+create trigger t4_bd before delete on t4 for each row
+begin
+ if !(select i from v1 where i=1) then
+ insert into te values (1);
+ end if;
+end|
+create trigger t5_bi before insert on t5 for each row
+begin
+ set new.l= f1()+1;
+end|
+create trigger t5_bu before update on t5 for each row
+begin
+ declare j int;
+ call p2(j);
+ set new.l= j + 1;
+end|
+delimiter ;|
+
+--echo #
+--echo # Set common variables to be used by scripts called below.
+--echo #
+let $con_aux= con1;
+let $table= t1;
+
+
+--echo #
+--echo # 1. Statements that read tables and do not use subqueries.
+--echo #
+
+--echo #
+--echo # 1.1 Simple SELECT statement.
+--echo #
+--echo # No locks are necessary as this statement won't be written
+--echo # to the binary log and InnoDB supports snapshots.
+let $statement= select * from t1;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 1.2 Multi-UPDATE statement.
+--echo #
+--echo # Has to take shared locks on rows in the table being read as this
+--echo # statement will be written to the binary log and therefore should
+--echo # be serialized with concurrent statements.
+let $statement= update t2, t1 set j= j - 1 where i = j;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 1.3 Multi-DELETE statement.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= delete t2 from t1, t2 where i = j;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 1.4 DESCRIBE statement.
+--echo #
+--echo # This statement does not really read data from the
+--echo # target table and thus does not take any lock on it.
+--echo # We check this for completeness of coverage.
+let $statement= describe t1;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 1.5 SHOW statements.
+--echo #
+--echo # The above is true for SHOW statements as well.
+let $statement= show create table t1;
+--source include/check_no_row_lock.inc
+let $statement= show keys from t1;
+--source include/check_no_row_lock.inc
+
+
+--echo #
+--echo # 2. Statements which read tables through subqueries.
+--echo #
+
+--echo #
+--echo # 2.1 CALL with a subquery.
+--echo #
+--echo # A strong lock is not necessary as this statement is not
+--echo # written to the binary log as a whole (it is written
+--echo # statement-by-statement) and thanks to MVCC we can always get
+--echo # versions of rows prior to the update that has locked them.
+--echo # But in practice InnoDB does locking reads for all statements
+--echo # other than SELECT (unless it is a READ-COMITTED mode or
+--echo # innodb_locks_unsafe_for_binlog is ON).
+let $statement= call p1((select i + 5 from t1 where i = 1));
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.2 CREATE TABLE with a subquery.
+--echo #
+--echo # Has to take shared locks on rows in the table being read as
+--echo # this statement is written to the binary log and therefore
+--echo # should be serialized with concurrent statements.
+let $statement= create table t0 engine=innodb select * from t1;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+drop table t0;
+let $statement= create table t0 engine=innodb select j from t2 where j in (select i from t1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+drop table t0;
+
+--echo #
+--echo # 2.3 DELETE with a subquery.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= delete from t2 where j in (select i from t1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.4 MULTI-DELETE with a subquery.
+--echo #
+--echo # Same is true for this statement as well.
+let $statement= delete t2 from t3, t2 where k = j and j in (select i from t1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.5 DO with a subquery.
+--echo #
+--echo # In theory should not take row locks as it is not logged.
+--echo # In practice InnoDB takes shared row locks.
+let $statement= do (select i from t1 where i = 1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.6 INSERT with a subquery.
+--echo #
+--echo # Has to take shared locks on rows in the table being read as
+--echo # this statement is written to the binary log and therefore
+--echo # should be serialized with concurrent statements.
+let $statement= insert into t2 select i+5 from t1;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= insert into t2 values ((select i+5 from t1 where i = 4));
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.7 LOAD DATA with a subquery.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.8 REPLACE with a subquery.
+--echo #
+--echo # Same is true for this statement as well.
+let $statement= replace into t2 select i+5 from t1;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= replace into t2 values ((select i+5 from t1 where i = 4));
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.9 SELECT with a subquery.
+--echo #
+--echo # Locks are not necessary as this statement is not written
+--echo # to the binary log and thanks to MVCC we can always get
+--echo # versions of rows prior to the update that has locked them.
+--echo #
+--echo # Also serves as a test case for bug #46947 "Embedded SELECT
+--echo # without FOR UPDATE is causing a lock".
+let $statement= select * from t2 where j in (select i from t1);
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 2.10 SET with a subquery.
+--echo #
+--echo # In theory should not require locking as it is not written
+--echo # to the binary log. In practice InnoDB acquires shared row
+--echo # locks.
+let $statement= set @a:= (select i from t1 where i = 1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.11 SHOW with a subquery.
+--echo #
+--echo # Similarly to the previous case, in theory should not require locking
+--echo # as it is not written to the binary log. In practice InnoDB
+--echo # acquires shared row locks.
+let $statement= show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= show columns from t2 where (select i from t1 where i = 1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.12 UPDATE with a subquery.
+--echo #
+--echo # Has to take shared locks on rows in the table being read as
+--echo # this statement is written to the binary log and therefore
+--echo # should be serialized with concurrent statements.
+let $statement= update t2 set j= j-10 where j in (select i from t1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 2.13 MULTI-UPDATE with a subquery.
+--echo #
+--echo # Same is true for this statement as well.
+let $statement= update t2, t3 set j= j -10 where j=k and j in (select i from t1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+
+--echo #
+--echo # 3. Statements which read tables through a view.
+--echo #
+
+--echo #
+--echo # 3.1 SELECT statement which uses some table through a view.
+--echo #
+--echo # Since this statement is not written to the binary log
+--echo # and old version of rows are accessible thanks to MVCC,
+--echo # no locking is necessary.
+let $statement= select * from v1;
+--source include/check_no_row_lock.inc
+let $statement= select * from v2;
+--source include/check_no_row_lock.inc
+let $statement= select * from t2 where j in (select i from v1);
+--source include/check_no_row_lock.inc
+let $statement= select * from t3 where k in (select j from v2);
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 3.2 Statements which modify a table and use views.
+--echo #
+--echo # Since such statements are going to be written to the binary
+--echo # log they need to be serialized against concurrent statements
+--echo # and therefore should take shared row locks on data read.
+let $statement= update t2 set j= j-10 where j in (select i from v1);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= update t3 set k= k-10 where k in (select j from v2);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= update t2, v1 set j= j-10 where j = i;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= update v2 set j= j-10 where j = 3;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+
+--echo #
+--echo # 4. Statements which read tables through stored functions.
+--echo #
+
+--echo #
+--echo # 4.1 SELECT/SET with a stored function which does not
+--echo # modify data and uses SELECT in its turn.
+--echo #
+--echo # Calls to such functions won't get into the binary log and
+--echo # thus don't need to acquire strong locks.
+--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+--echo # used stored functions may lead to broken SBR" strong locks
+--echo # are taken (we accepted it as a trade-off for this fix).
+let $statement= select f1();
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+let $statement= set @a:= f1();
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 4.2 INSERT (or other statement which modifies data) with
+--echo # a stored function which does not modify data and uses
+--echo # SELECT.
+--echo #
+--echo # Since such statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting the data
+--echo # it uses. Therefore it should take row locks on the data
+--echo # it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= insert into t2 values (f1() + 5);
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 4.3 SELECT/SET with a stored function which
+--echo # reads and modifies data.
+--echo #
+--echo # Since a call to such function is written to the binary log,
+--echo # it should be serialized with concurrent statements affecting
+--echo # the data it uses. Hence, row locks on the data read
+--echo # should be taken.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= select f2();
+let $wait_statement= select i from t1 where i = 1 into k;
+--source include/check_no_row_lock.inc
+let $statement= set @a:= f2();
+let $wait_statement= select i from t1 where i = 1 into k;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 4.4. SELECT/SET with a stored function which does not
+--echo # modify data and reads a table through subselect
+--echo # in a control construct.
+--echo #
+--echo # Again, in theory a call to this function won't get to the
+--echo # binary log and thus no locking is needed. But in practice
+--echo # we don't detect this fact early enough (get_lock_type_for_table())
+--echo # to avoid taking row locks.
+let $statement= select f3();
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= set @a:= f3();
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= select f4();
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= set @a:= f4();
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 4.5. INSERT (or other statement which modifies data) with
+--echo # a stored function which does not modify data and reads
+--echo # the table through a subselect in one of its control
+--echo # constructs.
+--echo #
+--echo # Since such statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting data it
+--echo # uses. Therefore it should take row locks on the data
+--echo # it reads.
+let $statement= insert into t2 values (f3() + 5);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+let $statement= insert into t2 values (f4() + 6);
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 4.6 SELECT/SET which uses a stored function with
+--echo # DML which reads a table via a subquery.
+--echo #
+--echo # Since call to such function is written to the binary log
+--echo # it should be serialized with concurrent statements.
+--echo # Hence reads should take row locks.
+let $statement= select f5();
+let $wait_statement= insert into t2 values ((select i from t1 where i = 1) + 5);
+--source include/check_shared_row_lock.inc
+let $statement= set @a:= f5();
+let $wait_statement= insert into t2 values ((select i from t1 where i = 1) + 5);
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 4.7 SELECT/SET which uses a stored function which
+--echo # doesn't modify data and reads tables through
+--echo # a view.
+--echo #
+--echo # Once again, in theory, calls to such functions won't
+--echo # get into the binary log and thus don't need row
+--echo # locks. In practice this fact is discovered
+--echo # too late to have any effect.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken
+--echo # in case of simple SELECT.
+let $statement= select f6();
+let $wait_statement= select i from v1 where i = 1 into k;
+--source include/check_no_row_lock.inc
+let $statement= set @a:= f6();
+let $wait_statement= select i from v1 where i = 1 into k;
+--source include/check_no_row_lock.inc
+let $statement= select f7();
+let $wait_statement= select j from v2 where j = 1 into k;
+--source include/check_shared_row_lock.inc
+let $statement= set @a:= f7();
+let $wait_statement= select j from v2 where j = 1 into k;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 4.8 INSERT which uses stored function which
+--echo # doesn't modify data and reads a table
+--echo # through a view.
+--echo #
+--echo # Since such statement is written to the binary log and
+--echo # should be serialized with concurrent statements affecting
+--echo # the data it uses. Therefore it should take row locks on
+--echo # the rows it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken
+--echo # in case of simple SELECT.
+let $statement= insert into t3 values (f6() + 5);
+let $wait_statement= select i from v1 where i = 1 into k;
+--source include/check_no_row_lock.inc
+let $statement= insert into t3 values (f7() + 5);
+let $wait_statement= select j from v2 where j = 1 into k;
+--source include/check_shared_row_lock.inc
+
+
+--echo #
+--echo # 4.9 SELECT which uses a stored function which
+--echo # modifies data and reads tables through a view.
+--echo #
+--echo # Since a call to such function is written to the binary log
+--echo # it should be serialized with concurrent statements.
+--echo # Hence, reads should take row locks.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken
+--echo # in case of simple SELECT.
+let $statement= select f8();
+let $wait_statement= select i from v1 where i = 1 into k;
+--source include/check_no_row_lock.inc
+let $statement= select f9();
+let $wait_statement= update v2 set j=j+10 where j=1;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 4.10 SELECT which uses stored function which doesn't modify
+--echo # data and reads a table indirectly, by calling another
+--echo # function.
+--echo #
+--echo # Calls to such functions won't get into the binary log and
+--echo # thus don't need to acquire strong locks.
+--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+--echo # used stored functions may lead to broken SBR" strong locks
+--echo # are taken (we accepted it as a trade-off for this fix).
+let $statement= select f10();
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 4.11 INSERT which uses a stored function which doesn't modify
+--echo # data and reads a table indirectly, by calling another
+--echo # function.
+--echo #
+--echo # Since such statement is written to the binary log, it should
+--echo # be serialized with concurrent statements affecting the data it
+--echo # uses. Therefore it should take row locks on data it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= insert into t2 values (f10() + 5);
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 4.12 SELECT which uses a stored function which modifies
+--echo # data and reads a table indirectly, by calling another
+--echo # function.
+--echo #
+--echo # Since a call to such function is written to the binary log
+--echo # it should be serialized from concurrent statements.
+--echo # Hence, reads should take row locks.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= select f11();
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 4.13 SELECT that reads a table through a subquery passed
+--echo # as a parameter to a stored function which modifies
+--echo # data.
+--echo #
+--echo # Even though a call to this function is written to the
+--echo # binary log, values of its parameters are written as literals.
+--echo # So there is no need to acquire row locks on rows used in
+--echo # the subquery.
+--echo # But due to the fact that in 5.1 for prelocked statements
+--echo # THD::in_lock_tables is set to TRUE we acquire strong locks
+--echo # (see also bug#44613 "SELECT statement inside FUNCTION takes
+--echo # a shared lock" [sic!!!]).
+let $statement= select f12((select i+10 from t1 where i=1));
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 4.14 INSERT that reads a table via a subquery passed
+--echo # as a parameter to a stored function which doesn't
+--echo # modify data.
+--echo #
+--echo # Since this statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting the data it
+--echo # uses. Therefore it should take row locks on the data it reads.
+let $statement= insert into t2 values (f13((select i+10 from t1 where i=1)));
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+
+--echo #
+--echo # 5. Statements that read tables through stored procedures.
+--echo #
+
+--echo #
+--echo # 5.1 CALL statement which reads a table via SELECT.
+--echo #
+--echo # Since neither this statement nor its components are
+--echo # written to the binary log, there is no need to take
+--echo # row locks on the data it reads.
+let $statement= call p2(@a);
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 5.2 Function that modifies data and uses CALL,
+--echo # which reads a table through SELECT.
+--echo #
+--echo # Since a call to such function is written to the binary
+--echo # log, it should be serialized with concurrent statements.
+--echo # Hence, in this case reads should take row locks on data.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= select f14();
+let $wait_statement= select i from t1 where i = 1 into p;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 5.3 SELECT that calls a function that doesn't modify data and
+--echo # uses a CALL statement that reads a table via SELECT.
+--echo #
+--echo # Calls to such functions won't get into the binary log and
+--echo # thus don't need to acquire strong locks.
+--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+--echo # used stored functions may lead to broken SBR" strong locks
+--echo # are taken (we accepted it as a trade-off for this fix).
+let $statement= select f15();
+let $wait_statement= select i from t1 where i = 1 into p;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 5.4 INSERT which calls function which doesn't modify data and
+--echo # uses CALL statement which reads table through SELECT.
+--echo #
+--echo # Since such statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting data it
+--echo # uses. Therefore it should take row locks on data it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= insert into t2 values (f15()+5);
+let $wait_statement= select i from t1 where i = 1 into p;
+--source include/check_no_row_lock.inc
+
+
+--echo #
+--echo # 6. Statements that use triggers.
+--echo #
+
+--echo #
+--echo # 6.1 Statement invoking a trigger that reads table via SELECT.
+--echo #
+--echo # Since this statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting the data
+--echo # it uses. Therefore, it should take row locks on the data
+--echo # it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= insert into t4 values (2);
+let $wait_statement= select i from t1 where i=1 into k;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 6.2 Statement invoking a trigger that reads table through
+--echo # a subquery in a control construct.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= update t4 set l= 2 where l = 1;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 6.3 Statement invoking a trigger that reads a table through
+--echo # a view.
+--echo #
+--echo # And for this statement.
+let $statement= delete from t4 where l = 1;
+let $wait_statement= $statement;
+--source include/check_shared_row_lock.inc
+
+--echo #
+--echo # 6.4 Statement invoking a trigger that reads a table through
+--echo # a stored function.
+--echo #
+--echo # And for this statement.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= insert into t5 values (2);
+let $wait_statement= select i from t1 where i = 1 into j;
+--source include/check_no_row_lock.inc
+
+--echo #
+--echo # 6.5 Statement invoking a trigger that reads a table through
+--echo # stored procedure.
+--echo #
+--echo # And for this statement.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" no lock is taken.
+let $statement= update t5 set l= 2 where l = 1;
+let $wait_statement= select i from t1 where i = 1 into p;
+--source include/check_no_row_lock.inc
+
+--echo # Clean-up.
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+drop function f7;
+drop function f8;
+drop function f9;
+drop function f10;
+drop function f11;
+drop function f12;
+drop function f13;
+drop function f14;
+drop function f15;
+drop view v1, v2;
+drop procedure p1;
+drop procedure p2;
+drop table t1, t2, t3, t4, t5, te;
+disconnect con1;
+
+# Check that all connections opened by test cases in this file are really
+# gone so execution of other tests won't be affected by their presence.
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/innodb_mysql_rbk-master.opt b/mysql-test/t/innodb_mysql_rbk-master.opt
deleted file mode 100644
index 0e400f9c36b..00000000000
--- a/mysql-test/t/innodb_mysql_rbk-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb_lock_wait_timeout=1 --innodb_rollback_on_timeout=1
diff --git a/mysql-test/t/innodb_timeout_rollback-master.opt b/mysql-test/t/innodb_timeout_rollback-master.opt
deleted file mode 100644
index 50921bb4df0..00000000000
--- a/mysql-test/t/innodb_timeout_rollback-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---innodb_lock_wait_timeout=2 --innodb_rollback_on_timeout
diff --git a/mysql-test/t/join_nested.test b/mysql-test/t/join_nested.test
index 5b07d8966f1..6ae7fb6dfee 100644
--- a/mysql-test/t/join_nested.test
+++ b/mysql-test/t/join_nested.test
@@ -1196,5 +1196,45 @@ SELECT COUNT(*)
DROP TABLE t1,t2,t3,t4,t5;
+#
+# BUG#49322: Nested left joins + not-exist optimization
+#
+
+CREATE TABLE t1 (
+ pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ a int DEFAULT NULL,
+ KEY idx(a)
+);
+CREATE TABLE t2 (
+ pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ a int DEFAULT NULL,
+ KEY idx(a)
+);
+CREATE TABLE t3 (
+ pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ a int DEFAULT NULL,
+ KEY idx(a)
+);
+
+INSERT INTO t1 VALUES
+ (1,2), (2,7), (3,5), (4,7), (5,5), (6,NULL), (7,NULL), (8,9);
+INSERT INTO t2 VALUES
+ (1,NULL), (4,2), (5,2), (3,4), (2,8);
+INSERT INTO t3 VALUES
+ (1,9), (2,2), (3,5), (4,2), (5,7), (6,0), (7,5);
+
+SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
+ FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a;
+
+SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
+ FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a
+ WHERE t2.pk IS NULL;
+
+SELECT t1.pk, t1.a, t2.pk, t2.a,t3.pk, t3.a
+ FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t3.a=t2.a) ON t2.a=t1.a
+ WHERE t3.pk IS NULL;
+
+DROP TABLE t1, t2, t3;
+
--echo End of 5.0 tests
diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test
index 2c243aabeb6..aed1450e607 100644
--- a/mysql-test/t/join_outer.test
+++ b/mysql-test/t/join_outer.test
@@ -914,4 +914,164 @@ WHERE (COALESCE(t1.f1, t2.f1), f3) IN ((1, 3), (2, 2));
DROP TABLE t1, t2;
+--echo #
+--echo # Bug#52357: Assertion failed: join->best_read in greedy_search
+--echo # optimizer_search_depth=0
+--echo #
+CREATE TABLE t1( a INT );
+
+INSERT INTO t1 VALUES (1),(2);
+SET optimizer_search_depth = 0;
+
+--echo # Should not core dump on query preparation
+EXPLAIN
+SELECT 1
+FROM t1 tt3 LEFT OUTER JOIN t1 tt4 ON 1
+ LEFT OUTER JOIN t1 tt5 ON 1
+ LEFT OUTER JOIN t1 tt6 ON 1
+ LEFT OUTER JOIN t1 tt7 ON 1
+ LEFT OUTER JOIN t1 tt8 ON 1
+ RIGHT OUTER JOIN t1 tt2 ON 1
+ RIGHT OUTER JOIN t1 tt1 ON 1
+ STRAIGHT_JOIN t1 tt9 ON 1;
+
+SET optimizer_search_depth = DEFAULT;
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#46091 STRAIGHT_JOIN + RIGHT JOIN returns different result
+--echo #
+CREATE TABLE t1 (f1 INT NOT NULL);
+INSERT INTO t1 VALUES (9),(0);
+
+CREATE TABLE t2 (f1 INT NOT NULL);
+INSERT INTO t2 VALUES
+(5),(3),(0),(3),(1),(0),(1),(7),(1),(0),(0),(8),(4),(9),(0),(2),(0),(8),(5),(1);
+
+SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1
+RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1;
+
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t1 TA1
+RIGHT JOIN t2 TA2 JOIN t2 TA3 ON TA2.f1 ON TA3.f1;
+
+DROP TABLE t1, t2;
+
+--echo #
+--echo # Bug#48971 Segfault in add_found_match_trig_cond () at sql_select.cc:5990
+--echo #
+CREATE TABLE t1(f1 INT, PRIMARY KEY (f1));
+INSERT INTO t1 VALUES (1),(2);
+
+EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
+ LEFT JOIN t1 AS jt2
+ RIGHT JOIN t1 AS jt3
+ JOIN t1 AS jt4 ON 1
+ LEFT JOIN t1 AS jt5 ON 1
+ ON 1
+ RIGHT JOIN t1 AS jt6 ON jt6.f1
+ ON 1;
+
+EXPLAIN EXTENDED SELECT STRAIGHT_JOIN jt1.f1 FROM t1 AS jt1
+ RIGHT JOIN t1 AS jt2
+ RIGHT JOIN t1 AS jt3
+ JOIN t1 AS jt4 ON 1
+ LEFT JOIN t1 AS jt5 ON 1
+ ON 1
+ RIGHT JOIN t1 AS jt6 ON jt6.f1
+ ON 1;
+
+DROP TABLE t1;
+
+--echo #
+--echo # Bug#49600: outer join of two single-row tables with joining attributes
+--echo # evaluated to nulls
+
+create table t1 (a int, b int);
+create table t2 (a int, b int);
+insert into t1 values (1, NULL);
+insert into t2 values (2, NULL);
+
+select * from t1 left join t2 on t1.b=t2.b;
+
+select * from t1 left join t2 on t1.b=t2.b where 1=1;
+
+drop table t1,t2;
+
+--echo #
+--echo # Bug#53161: outer join in the derived table is erroneously converted
+--echo # into an inner join for a query with a group by clause
+--echo #
+
+create table t1 (pk int not null primary key, a int not null);
+create table t2 like t1;
+create table t3 like t1;
+create table t4 (pk int not null primary key);
+insert into t1 values (1000, 1), (1001, 1);
+insert into t2 values (2000, 2), (2001, 2);
+insert into t3 values (3000, 3), (3001, 2);
+insert into t4 values (4000), (4001);
+
+explain extended
+select t2.pk,
+ (select t3.pk+if(isnull(t4.pk),0,t4.pk)
+ from t3 left join t4 on t4.pk=t3.pk
+ where t3.pk=t2.pk+1000 limit 1 ) as t
+ from t1,t2
+ where t2.pk=t1.pk+1000 and t1.pk>1000
+ group by t2.pk;
+
+select t2.pk,
+ (select t3.pk+if(isnull(t4.pk),0,t4.pk)
+ from t3 left join t4 on t4.pk=t3.pk
+ where t3.pk=t2.pk+1000 limit 1 ) as t
+ from t1,t2
+ where t2.pk=t1.pk+1000 and t1.pk>1000
+ group by t2.pk;
+
+drop table t1,t2,t3,t4;
+
+--echo #
+--echo # Bug#57024: Poor performance when conjunctive condition over the outer
+--echo # table is used in the on condition of an outer join
+--echo #
+
+create table t1 (a int);
+insert into t1 values (NULL), (NULL), (NULL), (NULL);
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 select * from t1;
+insert into t1 values (4), (2), (1), (3);
+
+create table t2 like t1;
+insert into t2 select if(t1.a is null, 10, t1.a) from t1;
+
+create table t3 (a int, b int, index idx(a));
+insert into t3 values (1, 100), (3, 301), (4, 402), (1, 102), (1, 101);
+
+analyze table t1,t2,t3;
+
+flush status;
+select sum(t3.b) from t1 left join t3 on t3.a=t1.a and t1.a is not null;
+show status like "handler_read%";
+flush status;
+select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
+show status like "handler_read%";
+
+drop table t1,t2,t3;
+
--echo End of 5.1 tests
diff --git a/mysql-test/t/loaddata.test b/mysql-test/t/loaddata.test
index 126bd5c8838..53eae4fdfaa 100644
--- a/mysql-test/t/loaddata.test
+++ b/mysql-test/t/loaddata.test
@@ -2,6 +2,8 @@
# Some simple test of load data
#
+-- source include/have_ucs2.inc
+
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
@@ -560,4 +562,56 @@ let $MYSQLD_DATADIR= `select @@datadir`;
remove_file $MYSQLD_DATADIR/test/t1.txt;
+--echo #
+--echo # Bug #52512 : Assertion `! is_set()' in
+--echo # Diagnostics_area::set_ok_status on LOAD DATA
+--echo #
+
+connect (con1,localhost,root,,test);
+
+CREATE TABLE t1 (id INT NOT NULL);
+--send LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1
+# please keep this is a spearate test file : it's important to have no
+# commands after this one
+
+connection default;
+dirty_close con1;
+
+connect (con1,localhost,root,,test);
+DROP TABLE t1;
+connection default;
+disconnect con1;
+
+
+--echo #
+--echo # Bug #51876 : crash/memory underrun when loading data with ucs2
+--echo # and reverse() function
+--echo #
+
+--echo # Problem # 1 (original report): wrong parsing of ucs2 data
+SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
+CREATE TABLE t1(a INT);
+LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
+(@b) SET a=REVERSE(@b);
+--echo # should return 2 zeroes (as the value is truncated)
+SELECT * FROM t1;
+
+DROP TABLE t1;
+let $MYSQLD_DATADIR= `select @@datadir`;
+remove_file $MYSQLD_DATADIR/test/tmpp.txt;
+
+
+--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost
+SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
+CREATE TABLE t1(a INT);
+LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
+(@b) SET a=REVERSE(@b);
+--echo # should return 0 and 1 (10 reversed)
+SELECT * FROM t1;
+
+DROP TABLE t1;
+let $MYSQLD_DATADIR= `select @@datadir`;
+remove_file $MYSQLD_DATADIR/test/tmpp2.txt;
+
+
--echo End of 5.1 tests
diff --git a/mysql-test/t/lock_sync.test b/mysql-test/t/lock_sync.test
new file mode 100644
index 00000000000..17f8abb75f3
--- /dev/null
+++ b/mysql-test/t/lock_sync.test
@@ -0,0 +1,867 @@
+#
+# Locking related tests which use DEBUG_SYNC facility.
+#
+--source include/have_debug_sync.inc
+# This test requires statement/mixed mode binary logging.
+# Row-based mode puts weaker serializability requirements
+# so weaker locks are acquired for it.
+--source include/have_binlog_format_mixed_or_statement.inc
+
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
+
+
+--echo #
+--echo # Test how we handle locking in various cases when
+--echo # we read data from MyISAM tables.
+--echo #
+--echo # In this test we mostly check that the SQL-layer correctly
+--echo # determines the type of thr_lock.c lock for a table being
+--echo # read.
+--echo # I.e. that it disallows concurrent inserts when the statement
+--echo # is going to be written to the binary log and therefore
+--echo # should be serialized, and allows concurrent inserts when
+--echo # such serialization is not necessary (e.g. when
+--echo # the statement is not written to binary log).
+--echo #
+
+--echo # Force concurrent inserts to be performed even if the table
+--echo # has gaps. This allows to simplify clean up in scripts
+--echo # used below (instead of backing up table being inserted
+--echo # into and then restoring it from backup at the end of the
+--echo # script we can simply delete rows which were inserted).
+set @old_concurrent_insert= @@global.concurrent_insert;
+set @@global.concurrent_insert= 2;
+select @@global.concurrent_insert;
+
+--echo # Prepare playground by creating tables, views,
+--echo # routines and triggers used in tests.
+connect (con1, localhost, root,,);
+connect (con2, localhost, root,,);
+connection default;
+--disable_warnings
+drop table if exists t0, t1, t2, t3, t4, t5, te;
+drop view if exists v1, v2;
+drop procedure if exists p1;
+drop procedure if exists p2;
+drop function if exists f1;
+drop function if exists f2;
+drop function if exists f3;
+drop function if exists f4;
+drop function if exists f5;
+drop function if exists f6;
+drop function if exists f7;
+drop function if exists f8;
+drop function if exists f9;
+drop function if exists f10;
+drop function if exists f11;
+drop function if exists f12;
+drop function if exists f13;
+drop function if exists f14;
+drop function if exists f15;
+--enable_warnings
+create table t1 (i int primary key);
+insert into t1 values (1), (2), (3), (4), (5);
+create table t2 (j int primary key);
+insert into t2 values (1), (2), (3), (4), (5);
+create table t3 (k int primary key);
+insert into t3 values (1), (2), (3);
+create table t4 (l int primary key);
+insert into t4 values (1);
+create table t5 (l int primary key);
+insert into t5 values (1);
+create table te(e int primary key);
+insert into te values (1);
+create view v1 as select i from t1;
+create view v2 as select j from t2 where j in (select i from t1);
+create procedure p1(k int) insert into t2 values (k);
+delimiter |;
+create function f1() returns int
+begin
+ declare j int;
+ select i from t1 where i = 1 into j;
+ return j;
+end|
+create function f2() returns int
+begin
+ declare k int;
+ select i from t1 where i = 1 into k;
+ insert into t2 values (k + 5);
+ return 0;
+end|
+create function f3() returns int
+begin
+ return (select i from t1 where i = 3);
+end|
+create function f4() returns int
+begin
+ if (select i from t1 where i = 3) then
+ return 1;
+ else
+ return 0;
+ end if;
+end|
+create function f5() returns int
+begin
+ insert into t2 values ((select i from t1 where i = 1) + 5);
+ return 0;
+end|
+create function f6() returns int
+begin
+ declare k int;
+ select i from v1 where i = 1 into k;
+ return k;
+end|
+create function f7() returns int
+begin
+ declare k int;
+ select j from v2 where j = 1 into k;
+ return k;
+end|
+create function f8() returns int
+begin
+ declare k int;
+ select i from v1 where i = 1 into k;
+ insert into t2 values (k+5);
+ return k;
+end|
+create function f9() returns int
+begin
+ update v2 set j=j+10 where j=1;
+ return 1;
+end|
+create function f10() returns int
+begin
+ return f1();
+end|
+create function f11() returns int
+begin
+ declare k int;
+ set k= f1();
+ insert into t2 values (k+5);
+ return k;
+end|
+create function f12(p int) returns int
+begin
+ insert into t2 values (p);
+ return p;
+end|
+create function f13(p int) returns int
+begin
+ return p;
+end|
+create procedure p2(inout p int)
+begin
+ select i from t1 where i = 1 into p;
+end|
+create function f14() returns int
+begin
+ declare k int;
+ call p2(k);
+ insert into t2 values (k+5);
+ return k;
+end|
+create function f15() returns int
+begin
+ declare k int;
+ call p2(k);
+ return k;
+end|
+create trigger t4_bi before insert on t4 for each row
+begin
+ declare k int;
+ select i from t1 where i=1 into k;
+ set new.l= k+1;
+end|
+create trigger t4_bu before update on t4 for each row
+begin
+ if (select i from t1 where i=1) then
+ set new.l= 2;
+ end if;
+end|
+--echo # Trigger below uses insertion of duplicate key in 'te'
+--echo # table as a way to abort delete operation.
+create trigger t4_bd before delete on t4 for each row
+begin
+ if !(select i from v1 where i=1) then
+ insert into te values (1);
+ end if;
+end|
+create trigger t5_bi before insert on t5 for each row
+begin
+ set new.l= f1()+1;
+end|
+create trigger t5_bu before update on t5 for each row
+begin
+ declare j int;
+ call p2(j);
+ set new.l= j + 1;
+end|
+delimiter ;|
+
+--echo #
+--echo # Set common variables to be used by the scripts
+--echo # called below.
+--echo #
+let $con_aux1= con1;
+let $con_aux2= con2;
+let $table= t1;
+
+--echo # Switch to connection 'con1'.
+connection con1;
+--echo # Cache all functions used in the tests below so statements
+--echo # calling them won't need to open and lock mysql.proc table
+--echo # and we can assume that each statement locks its tables
+--echo # once during its execution.
+--disable_result_log
+show create procedure p1;
+show create procedure p2;
+show create function f1;
+show create function f2;
+show create function f3;
+show create function f4;
+show create function f5;
+show create function f6;
+show create function f7;
+show create function f8;
+show create function f9;
+show create function f10;
+show create function f11;
+show create function f12;
+show create function f13;
+show create function f14;
+show create function f15;
+--enable_result_log
+--echo # Switch back to connection 'default'.
+connection default;
+
+--echo #
+--echo # 1. Statements that read tables and do not use subqueries.
+--echo #
+
+--echo #
+--echo # 1.1 Simple SELECT statement.
+--echo #
+--echo # No locks are necessary as this statement won't be written
+--echo # to the binary log and thanks to how MyISAM works SELECT
+--echo # will see version of the table prior to concurrent insert.
+let $statement= select * from t1;
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 1.2 Multi-UPDATE statement.
+--echo #
+--echo # Has to take shared locks on rows in the table being read as this
+--echo # statement will be written to the binary log and therefore should
+--echo # be serialized with concurrent statements.
+let $statement= update t2, t1 set j= j - 1 where i = j;
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 1.3 Multi-DELETE statement.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= delete t2 from t1, t2 where i = j;
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 1.4 DESCRIBE statement.
+--echo #
+--echo # This statement does not really read data from the
+--echo # target table and thus does not take any lock on it.
+--echo # We check this for completeness of coverage.
+lock table t1 write;
+--echo # Switching to connection 'con1'.
+connection con1;
+--echo # This statement should not be blocked.
+--disable_result_log
+describe t1;
+--enable_result_log
+--echo # Switching to connection 'default'.
+connection default;
+unlock tables;
+
+--echo #
+--echo # 1.5 SHOW statements.
+--echo #
+--echo # The above is true for SHOW statements as well.
+lock table t1 write;
+--echo # Switching to connection 'con1'.
+connection con1;
+--echo # These statements should not be blocked.
+# The below test for SHOW CREATE TABLE is disabled until bug 52593
+# "SHOW CREATE TABLE is blocked if table is locked for write by another
+# connection" is fixed.
+--disable_parsing
+show create table t1;
+--enable_parsing
+--disable_result_log
+show keys from t1;
+--enable_result_log
+--echo # Switching to connection 'default'.
+connection default;
+unlock tables;
+
+
+--echo #
+--echo # 2. Statements which read tables through subqueries.
+--echo #
+
+--echo #
+--echo # 2.1 CALL with a subquery.
+--echo #
+--echo # In theory strong lock is not necessary as this statement
+--echo # is not written to the binary log as a whole (it is written
+--echo # statement-by-statement). But in practice in 5.1 for
+--echo # almost everything except SELECT we take strong lock.
+let $statement= call p1((select i + 5 from t1 where i = 1));
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.2 CREATE TABLE with a subquery.
+--echo #
+--echo # Has to take a strong lock on the table being read as
+--echo # this statement is written to the binary log and therefore
+--echo # should be serialized with concurrent statements.
+let $statement= create table t0 select * from t1;
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+drop table t0;
+let $statement= create table t0 select j from t2 where j in (select i from t1);
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+drop table t0;
+
+--echo #
+--echo # 2.3 DELETE with a subquery.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= delete from t2 where j in (select i from t1);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.4 MULTI-DELETE with a subquery.
+--echo #
+--echo # Same is true for this statement as well.
+let $statement= delete t2 from t3, t2 where k = j and j in (select i from t1);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+
+--echo #
+--echo # 2.5 DO with a subquery.
+--echo #
+--echo # In theory strong lock is not necessary as it is not logged.
+--echo # But in practice in 5.1 for almost everything except SELECT
+--echo # we take strong lock.
+let $statement= do (select i from t1 where i = 1);
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.6 INSERT with a subquery.
+--echo #
+--echo # Has to take a strong lock on the table being read as
+--echo # this statement is written to the binary log and therefore
+--echo # should be serialized with concurrent inserts.
+let $statement= insert into t2 select i+5 from t1;
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= insert into t2 values ((select i+5 from t1 where i = 4));
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.7 LOAD DATA with a subquery.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= load data infile '../../std_data/rpl_loaddata.dat' into table t2 (@a, @b) set j= @b + (select i from t1 where i = 1);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.8 REPLACE with a subquery.
+--echo #
+--echo # Same is true for this statement as well.
+let $statement= replace into t2 select i+5 from t1;
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= replace into t2 values ((select i+5 from t1 where i = 4));
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.9 SELECT with a subquery.
+--echo #
+--echo # Strong locks are not necessary as this statement is not written
+--echo # to the binary log and thanks to how MyISAM works this statement
+--echo # sees a version of the table prior to the concurrent insert.
+let $statement= select * from t2 where j in (select i from t1);
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 2.10 SET with a subquery.
+--echo #
+--echo # In theory the same is true for this statement as well.
+--echo # But in practice in 5.1 we acquire strong lock in this
+--echo # case as well.
+let $statement= set @a:= (select i from t1 where i = 1);
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.11 SHOW with a subquery.
+--echo #
+--echo # The same is true for this statement too.
+let $statement= show tables from test where Tables_in_test = 't2' and (select i from t1 where i = 1);
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+let $statement= show columns from t2 where (select i from t1 where i = 1);
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.12 UPDATE with a subquery.
+--echo #
+--echo # Has to take a strong lock on the table being read as
+--echo # this statement is written to the binary log and therefore
+--echo # should be serialized with concurrent inserts.
+let $statement= update t2 set j= j-10 where j in (select i from t1);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 2.13 MULTI-UPDATE with a subquery.
+--echo #
+--echo # Same is true for this statement as well.
+let $statement= update t2, t3 set j= j -10 where j=k and j in (select i from t1);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+
+--echo #
+--echo # 3. Statements which read tables through a view.
+--echo #
+
+--echo #
+--echo # 3.1 SELECT statement which uses some table through a view.
+--echo #
+--echo # Since this statement is not written to the binary log and
+--echo # an old version of the table is accessible thanks to how MyISAM
+--echo # handles concurrent insert, no locking is necessary.
+let $statement= select * from v1;
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+let $statement= select * from v2;
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+let $statement= select * from t2 where j in (select i from v1);
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+let $statement= select * from t3 where k in (select j from v2);
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 3.2 Statements which modify a table and use views.
+--echo #
+--echo # Since such statements are going to be written to the binary
+--echo # log they need to be serialized against concurrent statements
+--echo # and therefore should take strong locks on the data read.
+let $statement= update t2 set j= j-10 where j in (select i from v1);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= update t3 set k= k-10 where k in (select j from v2);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= update t2, v1 set j= j-10 where j = i;
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= update v2 set j= j-10 where j = 3;
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+
+--echo #
+--echo # 4. Statements which read tables through stored functions.
+--echo #
+
+--echo #
+--echo # 4.1 SELECT/SET with a stored function which does not
+--echo # modify data and uses SELECT in its turn.
+--echo #
+--echo # Calls to such functions won't get into the binary log and
+--echo # thus don't need to acquire strong locks.
+--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+--echo # used stored functions may lead to broken SBR" strong locks
+--echo # are taken (we accepted it as a trade-off for this fix).
+let $statement= select f1();
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+let $statement= set @a:= f1();
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.2 INSERT (or other statement which modifies data) with
+--echo # a stored function which does not modify data and uses
+--echo # SELECT.
+--echo #
+--echo # Since such statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting the data
+--echo # it uses. Therefore it should take strong lock on the data
+--echo # it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= insert into t2 values (f1() + 5);
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.3 SELECT/SET with a stored function which
+--echo # reads and modifies data.
+--echo #
+--echo # Since a call to such function is written to the binary log,
+--echo # it should be serialized with concurrent statements affecting
+--echo # the data it uses. Hence, a strong lock on the data read
+--echo # should be taken.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= select f2();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+let $statement= set @a:= f2();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.4. SELECT/SET with a stored function which does not
+--echo # modify data and reads a table through subselect
+--echo # in a control construct.
+--echo #
+--echo # Again, in theory a call to this function won't get to the
+--echo # binary log and thus no strong lock is needed. But in practice
+--echo # we don't detect this fact early enough (get_lock_type_for_table())
+--echo # to avoid taking a strong lock.
+let $statement= select f3();
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+let $statement= set @a:= f3();
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+let $statement= select f4();
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+let $statement= set @a:= f4();
+let $restore_table= ;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 4.5. INSERT (or other statement which modifies data) with
+--echo # a stored function which does not modify data and reads
+--echo # the table through a subselect in one of its control
+--echo # constructs.
+--echo #
+--echo # Since such statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting data it
+--echo # uses. Therefore it should take a strong lock on the data
+--echo # it reads.
+let $statement= insert into t2 values (f3() + 5);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= insert into t2 values (f4() + 6);
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 4.6 SELECT/SET which uses a stored function with
+--echo # DML which reads a table via a subquery.
+--echo #
+--echo # Since call to such function is written to the binary log
+--echo # it should be serialized with concurrent statements.
+--echo # Hence reads should take a strong lock.
+let $statement= select f5();
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= set @a:= f5();
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 4.7 SELECT/SET which uses a stored function which
+--echo # doesn't modify data and reads tables through
+--echo # a view.
+--echo #
+--echo # Once again, in theory, calls to such functions won't
+--echo # get into the binary log and thus don't need strong
+--echo # locks. In practice this fact is discovered
+--echo # too late to have any effect.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken
+--echo # in case when simple SELECT is used.
+let $statement= select f6();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+let $statement= set @a:= f6();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+let $statement= select f7();
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+let $statement= set @a:= f7();
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 4.8 INSERT which uses stored function which
+--echo # doesn't modify data and reads a table
+--echo # through a view.
+--echo #
+--echo # Since such statement is written to the binary log and
+--echo # should be serialized with concurrent statements affecting
+--echo # the data it uses. Therefore it should take a strong lock on
+--echo # the table it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken
+--echo # in case when simple SELECT is used.
+let $statement= insert into t3 values (f6() + 5);
+let $restore_table= t3;
+--source include/check_concurrent_insert.inc
+let $statement= insert into t3 values (f7() + 5);
+let $restore_table= t3;
+--source include/check_no_concurrent_insert.inc
+
+
+--echo #
+--echo # 4.9 SELECT which uses a stored function which
+--echo # modifies data and reads tables through a view.
+--echo #
+--echo # Since a call to such function is written to the binary log
+--echo # it should be serialized with concurrent statements.
+--echo # Hence, reads should take strong locks.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken
+--echo # in case when simple SELECT is used.
+let $statement= select f8();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+let $statement= select f9();
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 4.10 SELECT which uses a stored function which doesn't modify
+--echo # data and reads a table indirectly, by calling another
+--echo # function.
+--echo #
+--echo # Calls to such functions won't get into the binary log and
+--echo # thus don't need to acquire strong locks.
+--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+--echo # used stored functions may lead to broken SBR" strong locks
+--echo # are taken (we accepted it as a trade-off for this fix).
+let $statement= select f10();
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.11 INSERT which uses a stored function which doesn't modify
+--echo # data and reads a table indirectly, by calling another
+--echo # function.
+--echo #
+--echo # Since such statement is written to the binary log, it should
+--echo # be serialized with concurrent statements affecting the data it
+--echo # uses. Therefore it should take strong locks on data it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= insert into t2 values (f10() + 5);
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.12 SELECT which uses a stored function which modifies
+--echo # data and reads a table indirectly, by calling another
+--echo # function.
+--echo #
+--echo # Since a call to such function is written to the binary log
+--echo # it should be serialized from concurrent statements.
+--echo # Hence, read should take a strong lock.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= select f11();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.13 SELECT that reads a table through a subquery passed
+--echo # as a parameter to a stored function which modifies
+--echo # data.
+--echo #
+--echo # Even though a call to this function is written to the
+--echo # binary log, values of its parameters are written as literals.
+--echo # So there is no need to acquire strong locks for tables used in
+--echo # the subquery.
+let $statement= select f12((select i+10 from t1 where i=1));
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 4.14 INSERT that reads a table via a subquery passed
+--echo # as a parameter to a stored function which doesn't
+--echo # modify data.
+--echo #
+--echo # Since this statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting the data it
+--echo # uses. Therefore it should take strong locks on the data it reads.
+let $statement= insert into t2 values (f13((select i+10 from t1 where i=1)));
+let $restore_table= t2;
+--source include/check_no_concurrent_insert.inc
+
+
+--echo #
+--echo # 5. Statements that read tables through stored procedures.
+--echo #
+
+--echo #
+--echo # 5.1 CALL statement which reads a table via SELECT.
+--echo #
+--echo # Since neither this statement nor its components are
+--echo # written to the binary log, there is no need to take
+--echo # strong locks on the data it reads.
+let $statement= call p2(@a);
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 5.2 Function that modifies data and uses CALL,
+--echo # which reads a table through SELECT.
+--echo #
+--echo # Since a call to such function is written to the binary
+--echo # log, it should be serialized with concurrent statements.
+--echo # Hence, in this case reads should take strong locks on data.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= select f14();
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 5.3 SELECT that calls a function that doesn't modify data and
+--echo # uses a CALL statement that reads a table via SELECT.
+--echo #
+--echo # Calls to such functions won't get into the binary log and
+--echo # thus don't need to acquire strong locks.
+--echo # In 5.5 due to fix for bug #53921 "Wrong locks for SELECTs
+--echo # used stored functions may lead to broken SBR" strong locks
+--echo # are taken (we accepted it as a trade-off for this fix).
+let $statement= select f15();
+let $restore_table= ;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 5.4 INSERT which calls function which doesn't modify data and
+--echo # uses CALL statement which reads table through SELECT.
+--echo #
+--echo # Since such statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting data it
+--echo # uses. Therefore it should take strong locks on data it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= insert into t2 values (f15()+5);
+let $restore_table= t2;
+--source include/check_concurrent_insert.inc
+
+
+--echo #
+--echo # 6. Statements that use triggers.
+--echo #
+
+--echo #
+--echo # 6.1 Statement invoking a trigger that reads table via SELECT.
+--echo #
+--echo # Since this statement is written to the binary log it should
+--echo # be serialized with concurrent statements affecting the data
+--echo # it uses. Therefore, it should take strong locks on the data
+--echo # it reads.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= insert into t4 values (2);
+let $restore_table= t4;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 6.2 Statement invoking a trigger that reads table through
+--echo # a subquery in a control construct.
+--echo #
+--echo # The above is true for this statement as well.
+let $statement= update t4 set l= 2 where l = 1;
+let $restore_table= t4;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 6.3 Statement invoking a trigger that reads a table through
+--echo # a view.
+--echo #
+--echo # And for this statement.
+let $statement= delete from t4 where l = 1;
+let $restore_table= t4;
+--source include/check_no_concurrent_insert.inc
+
+--echo #
+--echo # 6.4 Statement invoking a trigger that reads a table through
+--echo # a stored function.
+--echo #
+--echo # And for this statement.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= insert into t5 values (2);
+let $restore_table= t5;
+--source include/check_concurrent_insert.inc
+
+--echo #
+--echo # 6.5 Statement invoking a trigger that reads a table through
+--echo # stored procedure.
+--echo #
+--echo # And for this statement.
+--echo # But due to bug #53921 "Wrong locks for SELECTs used stored
+--echo # functions may lead to broken SBR" weak locks are taken.
+let $statement= update t5 set l= 2 where l = 1;
+let $restore_table= t5;
+--source include/check_concurrent_insert.inc
+
+
+--echo # Clean-up.
+drop function f1;
+drop function f2;
+drop function f3;
+drop function f4;
+drop function f5;
+drop function f6;
+drop function f7;
+drop function f8;
+drop function f9;
+drop function f10;
+drop function f11;
+drop function f12;
+drop function f13;
+drop function f14;
+drop function f15;
+drop view v1, v2;
+drop procedure p1;
+drop procedure p2;
+drop table t1, t2, t3, t4, t5, te;
+
+disconnect con1;
+disconnect con2;
+
+set @@global.concurrent_insert= @old_concurrent_insert;
+
+
+# Check that all connections opened by test cases in this file are really
+# gone so execution of other tests won't be affected by their presence.
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test
index e40dd1e3491..05e17dc9fa7 100644
--- a/mysql-test/t/log_state.test
+++ b/mysql-test/t/log_state.test
@@ -362,6 +362,42 @@ if(!$fixed_bug38124)
}
+###########################################################################
+
+--echo #
+--echo # Bug #49756 Rows_examined is always 0 in the slow query log
+--echo # for update statements
+--echo #
+
+SET @old_log_output = @@global.log_output;
+SET GLOBAL log_output = "TABLE";
+SET GLOBAL slow_query_log = ON;
+SET GLOBAL long_query_time = 0.001;
+
+# clear slow_log of any residual slow queries
+TRUNCATE TABLE mysql.slow_log;
+CREATE TABLE t1 (a INT);
+CREATE TABLE t2 (b INT, PRIMARY KEY (b));
+INSERT INTO t2 VALUES (3),(4);
+
+connect (con2,localhost,root,,);
+INSERT INTO t1 VALUES (1+sleep(.01)),(2);
+INSERT INTO t1 SELECT b+sleep(.01) from t2;
+UPDATE t1 SET a=a+sleep(.01) WHERE a>2;
+UPDATE t1 SET a=a+sleep(.01) ORDER BY a DESC;
+UPDATE t2 set b=b+sleep(.01) limit 1;
+UPDATE t1 SET a=a+sleep(.01) WHERE a in (SELECT b from t2);
+DELETE FROM t1 WHERE a=a+sleep(.01) ORDER BY a LIMIT 2;
+
+SELECT rows_examined,sql_text FROM mysql.slow_log;
+disconnect con2;
+connection default;
+DROP TABLE t1,t2;
+TRUNCATE TABLE mysql.slow_log;
+
+--echo # end of bug#49756
+
+
--echo End of 5.1 tests
--enable_ps_protocol
@@ -376,6 +412,8 @@ disconnect con1;
connection default;
# Reset global system variables to initial values if forgotten somewhere above.
+SET GLOBAL long_query_time = DEFAULT;
+SET GLOBAL log_output = @old_log_output;
SET global general_log = @old_general_log;
SET global general_log_file = @old_general_log_file;
SET global slow_query_log = @old_slow_query_log;
diff --git a/mysql-test/t/log_tables_upgrade.test b/mysql-test/t/log_tables_upgrade.test
index 5d1b2b5aed6..a638a27c9d1 100644
--- a/mysql-test/t/log_tables_upgrade.test
+++ b/mysql-test/t/log_tables_upgrade.test
@@ -25,7 +25,7 @@ FLUSH TABLES;
REPAIR TABLE test.bug49823;
RENAME TABLE general_log TO renamed_general_log;
RENAME TABLE test.bug49823 TO general_log;
---exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
+--exec $MYSQL_UPGRADE --force 2>&1
DROP TABLE general_log;
RENAME TABLE renamed_general_log TO general_log;
SET GLOBAL general_log = @saved_general_log;
diff --git a/mysql-test/t/lowercase_view.test b/mysql-test/t/lowercase_view.test
index d6612b3e6b9..52be911cde0 100644
--- a/mysql-test/t/lowercase_view.test
+++ b/mysql-test/t/lowercase_view.test
@@ -160,4 +160,26 @@ SELECT * FROM v1;
DROP VIEW v1;
DROP TABLE t1;
+
+--echo End of 5.0 tests.
+
+
+--echo #
+--echo # Bug #53095: SELECT column_name FROM INFORMATION_SCHEMA.STATISTICS
+--echo # returns nothing
+--echo #
+
+CREATE TABLE `ttt` (
+ `f1` char(3) NOT NULL,
+ PRIMARY KEY (`f1`)
+) ENGINE=myisam DEFAULT CHARSET=latin1;
+
+SELECT count(COLUMN_NAME) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME =
+'TTT';
+SELECT count(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'TTT';
+
+DROP TABLE `ttt`;
+
+
--echo End of 5.0 tests.
+
diff --git a/mysql-test/t/multi_update.test b/mysql-test/t/multi_update.test
index b32a329f827..87e952dd069 100644
--- a/mysql-test/t/multi_update.test
+++ b/mysql-test/t/multi_update.test
@@ -589,7 +589,8 @@ reset master;
UPDATE t2,t1 SET t2.a=t1.a+2;
# check
select * from t2 /* must be (3,1), (4,4) */;
-show master status /* there must be the UPDATE query event */;
+let wait_binlog_event= UPDATE;
+source include/wait_for_binlog_event.inc;
# B. testing multi_update::send_error() ineffective update
# (as there is a policy described at mysql_update() still go to binlog)
@@ -600,7 +601,8 @@ insert into t2 values (1,2),(3,4),(4,4);
reset master;
--error ER_DUP_ENTRY
UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
-show master status /* there must be the UPDATE query event */;
+let wait_binlog_event= UPDATE;
+source include/wait_for_binlog_event.inc;
# cleanup
drop table t1, t2;
diff --git a/mysql-test/t/mysql_client_test.test b/mysql-test/t/mysql_client_test.test
index 15c0cd4ac84..41670117c7c 100644
--- a/mysql-test/t/mysql_client_test.test
+++ b/mysql-test/t/mysql_client_test.test
@@ -2,6 +2,7 @@
-- source include/not_embedded.inc
SET @old_general_log= @@global.general_log;
+SET @old_slow_query_log= @@global.slow_query_log;
# We run with different binaries for normal and --embedded-server
#
@@ -17,3 +18,4 @@ SET @old_general_log= @@global.general_log;
echo ok;
SET @@global.general_log= @old_general_log;
+SET @@global.slow_query_log= @old_slow_query_log;
diff --git a/mysql-test/t/mysql_upgrade.test b/mysql-test/t/mysql_upgrade.test
index 485302600c1..ea127fbcc6d 100644
--- a/mysql-test/t/mysql_upgrade.test
+++ b/mysql-test/t/mysql_upgrade.test
@@ -33,7 +33,7 @@ if (`SELECT $VALGRIND_TEST`)
# expected binaries it uses.
#
--echo Run mysql_upgrade once
---exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
+--exec $MYSQL_UPGRADE --force 2>&1
# It should have created a file in the MySQL Servers datadir
let $MYSQLD_DATADIR= `select @@datadir`;
@@ -42,13 +42,13 @@ file_exists $MYSQLD_DATADIR/mysql_upgrade_info;
--echo Run it again - should say already completed
--replace_result $MYSQL_SERVER_VERSION VERSION
--error 1
---exec $MYSQL_UPGRADE --skip-verbose 2>&1
+--exec $MYSQL_UPGRADE 2>&1
# It should have created a file in the MySQL Servers datadir
file_exists $MYSQLD_DATADIR/mysql_upgrade_info;
--echo Force should run it regardless of wether it's been run before
---exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
+--exec $MYSQL_UPGRADE --force 2>&1
# It should have created a file in the MySQL Servers datadir
file_exists $MYSQLD_DATADIR/mysql_upgrade_info;
@@ -63,7 +63,7 @@ file_exists $MYSQLD_DATADIR/mysql_upgrade_info;
CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila';
GRANT ALL ON *.* TO mysqltest1@'%';
--echo Run mysql_upgrade with password protected account
---exec $MYSQL_UPGRADE --skip-verbose --force --user=mysqltest1 --password=sakila 2>&1
+--exec $MYSQL_UPGRADE --force --user=mysqltest1 --password=sakila 2>&1
DROP USER mysqltest1@'%';
@@ -76,7 +76,7 @@ DROP USER mysqltest1@'%';
--replace_result $MYSQLTEST_VARDIR var
--replace_regex /.*mysqlcheck.*: Got/mysqlcheck: Got/ /\([0-9]*\)/(errno)/
--error 1
---exec $MYSQL_UPGRADE --skip-verbose --force --host=not_existing_host 2>&1
+--exec $MYSQL_UPGRADE --force --host=not_existing_host 2>&1
#
# Bug #28401 mysql_upgrade Failed with STRICT_ALL_TABLES, ANSI_QUOTES and NO_ZERO_DATE
@@ -88,7 +88,7 @@ DROP USER mysqltest1@'%';
# Test by setting sql_mode before running mysql_upgrade
set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
---exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
+--exec $MYSQL_UPGRADE --force 2>&1
eval set GLOBAL sql_mode=default;
@@ -104,8 +104,24 @@ CREATE PROCEDURE testproc() BEGIN END;
UPDATE mysql.proc SET character_set_client = NULL WHERE name LIKE 'testproc';
UPDATE mysql.proc SET collation_connection = NULL WHERE name LIKE 'testproc';
UPDATE mysql.proc SET db_collation = NULL WHERE name LIKE 'testproc';
---exec $MYSQL_UPGRADE --skip-verbose --force 2> $MYSQLTEST_VARDIR/tmp/41569.txt
+--exec $MYSQL_UPGRADE --force 2> $MYSQLTEST_VARDIR/tmp/41569.txt
CALL testproc();
DROP PROCEDURE testproc;
--cat_file $MYSQLTEST_VARDIR/tmp/41569.txt
--remove_file $MYSQLTEST_VARDIR/tmp/41569.txt
+
+
+--echo #
+--echo # Bug #53613: mysql_upgrade incorrectly revokes
+--echo # TRIGGER privilege on given table
+--echo #
+
+GRANT USAGE ON *.* TO 'user3'@'%';
+GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%';
+--echo Run mysql_upgrade with all privileges on a user
+--exec $MYSQL_UPGRADE --force 2>&1
+SHOW GRANTS FOR 'user3'@'%';
+
+DROP USER 'user3'@'%';
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/mysqld_option_err.test b/mysql-test/t/mysqld_option_err.test
index 6e4183a6f8c..9c02dec51e6 100644
--- a/mysql-test/t/mysqld_option_err.test
+++ b/mysql-test/t/mysqld_option_err.test
@@ -44,7 +44,7 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_option_err;
# See also Bug#32034.
--echo Test that bad value for plugin enum option is rejected correctly.
--error 7
---exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables $EXAMPLE_PLUGIN_OPT --plugin-load=EXAMPLE=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
+--exec $MYSQLD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --plugin-dir=$MYSQLTEST_VARDIR/plugins --plugin-load=example=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
#
# Test that an wrong option with --help --verbose gives an error
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index 02923bd6e6f..eaf9d168da0 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -1,3 +1,5 @@
+call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
+
# Embedded server doesn't support external clients
--source include/not_embedded.inc
@@ -2134,6 +2136,35 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c;
SET NAMES default;
DROP TABLE t1, t2;
+###########################################################################
+
+--echo #
+--echo # Bug #53088: mysqldump with -T & --default-character-set set
+--echo # truncates text/blob to 766 chars
+--echo #
+--echo # Also see outfile_loaddata.test
+--echo #
+
+CREATE TABLE t1 (a BLOB) CHARSET latin1;
+CREATE TABLE t2 LIKE t1;
+
+let $table= t1;
+let $dir= $MYSQLTEST_VARDIR/tmp;
+let $file= $dir/$table.txt;
+let $length= 800;
+
+--eval INSERT INTO t1 VALUES (REPEAT('.', $length))
+
+--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --default-character-set=latin1 --tab=$dir/ test $table
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+
+--eval LOAD DATA INFILE '$file' INTO TABLE t2 CHARACTER SET latin1
+--remove_file $file
+
+--echo # should be $length
+SELECT LENGTH(a) FROM t2;
+
+DROP TABLE t1, t2;
###########################################################################
--echo #
diff --git a/mysql-test/t/mysqlhotcopy_archive.test b/mysql-test/t/mysqlhotcopy_archive.test
new file mode 100644
index 00000000000..4bfad3ce138
--- /dev/null
+++ b/mysql-test/t/mysqlhotcopy_archive.test
@@ -0,0 +1,8 @@
+# Test of mysqlhotcopy (perl script)
+# Author: Horst Hunger
+# Created: 2010-05-10
+
+--source include/have_archive.inc
+let $engine= archive;
+--source include/mysqlhotcopy.inc
+--exit
diff --git a/mysql-test/t/mysqlhotcopy_myisam.test b/mysql-test/t/mysqlhotcopy_myisam.test
new file mode 100644
index 00000000000..adf26e42245
--- /dev/null
+++ b/mysql-test/t/mysqlhotcopy_myisam.test
@@ -0,0 +1,7 @@
+# Test of mysqlhotcopy (perl script)
+# Author: Horst Hunger
+# Created: 2010-05-10
+
+let $engine= MyISAM;
+--source include/mysqlhotcopy.inc
+--exit
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index b103140190f..edc4da4e37f 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -106,7 +106,7 @@ select otto from (select 1 as otto) as t1;
# expecting a SQL-state for a command that can't give one should fail
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error 1
---exec echo "error S00000; remove_file $MYSQLTEST_VARDIR/tmp/test_nonexistent.tmp;" | $MYSQL_TEST 2>&1
+--exec echo "disable_warnings ; error S00000; remove_file $MYSQLTEST_VARDIR/tmp/test_nonexistent.tmp;" | $MYSQL_TEST 2>&1
# ----------------------------------------------------------------------------
@@ -1551,12 +1551,14 @@ select "this will be executed";
--exec $MYSQL_TEST -x $MYSQLTEST_VARDIR/tmp/query.sql -R $MYSQLTEST_VARDIR/tmp/zero_length_file.result > /dev/null 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.result;
+--disable_warnings
--error 0,1
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.reject;
--error 0,1
remove_file $MYSQLTEST_VARDIR/tmp/zero_length_file.log;
--error 0,1
remove_file $MYSQL_TEST_DIR/r/zero_length_file.reject;
+--enable_warnings
#
# Test that a test file that does not generate any output fails.
@@ -1741,11 +1743,13 @@ drop table t1;
# test for remove_file
# ----------------------------------------------------------------------------
+--disable_warnings
--error 1
--exec echo "remove_file ;" | $MYSQL_TEST 2>&1
--error 1
remove_file non_existing_file;
+--enable_warnings
# ----------------------------------------------------------------------------
# test for remove_files_wildcard
@@ -1785,7 +1789,7 @@ Content for test_file1 contains EOF
END_DELIMITER
file_exists $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
-# write to already exisiting file
+# write to already existing file
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error 1
--exec echo "write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;" | $MYSQL_TEST 2>&1
@@ -1901,8 +1905,10 @@ EOF
--error 1
--exec echo "file_exists ;" | $MYSQL_TEST 2>&1
+--disable_warnings
--error 0,1
remove_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
+--enable_warnings
--error 1
file_exists $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
write_file $MYSQLTEST_VARDIR/tmp/test_file1.tmp;
@@ -1939,6 +1945,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/file2.tmp;
# - Check that if source file does not exist, nothing will be created.
+--disable_warnings
--error 1
file_exists $MYSQLTEST_VARDIR/tmp/file1.tmp;
--error 1
@@ -1949,6 +1956,7 @@ move_file $MYSQLTEST_VARDIR/tmp/file1.tmp $MYSQLTEST_VARDIR/tmp/file2.tmp;
file_exists $MYSQLTEST_VARDIR/tmp/file1.tmp;
--error 1
file_exists $MYSQLTEST_VARDIR/tmp/file2.tmp;
+--enable_warnings
# - Check that if source file exists, everything works properly.
diff --git a/mysql-test/t/mysqltest_ps.test b/mysql-test/t/mysqltest_ps.test
index c91f6dcb409..c5a332f691f 100644
--- a/mysql-test/t/mysqltest_ps.test
+++ b/mysql-test/t/mysqltest_ps.test
@@ -4,7 +4,7 @@
if (`SELECT $PS_PROTOCOL = 0`)
{
- --skip Need prepared statement protocol
+ --skip Need ps-protocol
}
#
diff --git a/mysql-test/t/outfile_loaddata.test b/mysql-test/t/outfile_loaddata.test
index 3f62acbd214..26760f9a1b2 100644
--- a/mysql-test/t/outfile_loaddata.test
+++ b/mysql-test/t/outfile_loaddata.test
@@ -251,6 +251,40 @@ SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a, b, c;
SET NAMES default;
DROP TABLE t1, t2;
+###########################################################################
+
+--echo #
+--echo # Bug #53088: mysqldump with -T & --default-character-set set
+--echo # truncates text/blob to 766 chars
+--echo #
+--echo # Also see mysqldump.test
+--echo #
+
+CREATE TABLE t1 (a BLOB) CHARSET latin1;
+CREATE TABLE t2 LIKE t1;
+
+let $file= '$MYSQLTEST_VARDIR/tmp/bug53088.txt';
+let $length= 800;
+
+--eval INSERT INTO t1 VALUES (REPEAT('.', $length))
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval SELECT * INTO OUTFILE $file CHARACTER SET latin1 FROM t1
+
+--echo # should be greater than $length
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval SELECT LENGTH(LOAD_FILE($file))
+
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+--eval LOAD DATA INFILE $file INTO TABLE t2
+
+--remove_file $MYSQLTEST_VARDIR/tmp/bug53088.txt
+
+--echo # should be $length
+SELECT LENGTH(a) FROM t2;
+
+DROP TABLE t1, t2;
+
###########################################################################
--echo # End of 5.1 tests.
diff --git a/mysql-test/t/partition_error.test b/mysql-test/t/partition_error.test
index 8da8f54b774..434392c2e28 100644
--- a/mysql-test/t/partition_error.test
+++ b/mysql-test/t/partition_error.test
@@ -7,7 +7,36 @@
--disable_warnings
drop table if exists t1;
--enable_warnings
-
+
+let $MYSQLD_DATADIR= `SELECT @@datadir`;
+
+--echo #
+--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
+--echo #
+CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
+FLUSH TABLES;
+--remove_file $MYSQLD_DATADIR/test/t1.par
+--replace_result $MYSQLD_DATADIR ./
+CHECK TABLE t1;
+--error ER_UNKNOWN_ERROR
+SELECT * FROM t1;
+--echo # Note that it is currently impossible to drop a partitioned table
+--echo # without the .par file
+--error ER_BAD_TABLE_ERROR
+DROP TABLE t1;
+--remove_file $MYSQLD_DATADIR/test/t1.frm
+--remove_file $MYSQLD_DATADIR/test/t1#P#p0.MYI
+--remove_file $MYSQLD_DATADIR/test/t1#P#p0.MYD
+
+--echo #
+--echo # Bug#49477: Assertion `0' failed in ha_partition.cc:5530
+--echo # with temporary table and partitions
+--echo #
+CREATE TABLE t1 (a INT) PARTITION BY HASH(a);
+--error ER_PARTITION_NO_TEMPORARY
+CREATE TEMPORARY TABLE tmp_t1 LIKE t1;
+DROP TABLE t1;
+
--echo #
--echo # Bug#50392: insert_id is not reset for partitioned tables
--echo # auto_increment on duplicate entry
@@ -158,7 +187,6 @@ partitions 3
partition x2 tablespace ts2,
partition x3 tablespace ts3);
-let $MYSQLD_DATADIR= `select @@datadir`;
select load_file('$MYSQLD_DATADIR/test/t1.par');
#
# Partition by hash, invalid field in function
diff --git a/mysql-test/t/partition_example-master.opt b/mysql-test/t/partition_example-master.opt
deleted file mode 100644
index 367d5233e0e..00000000000
--- a/mysql-test/t/partition_example-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/t/partition_example.test b/mysql-test/t/partition_example.test
index e6ac1bd222a..8c1b92b2e33 100644
--- a/mysql-test/t/partition_example.test
+++ b/mysql-test/t/partition_example.test
@@ -3,7 +3,7 @@
--source include/have_partition.inc
--replace_regex /\.dll/.so/
-eval install plugin example soname $HA_EXAMPLE_SO;
+eval install plugin example soname '$HA_EXAMPLE_SO';
create table t1 (a int not null)
engine=example
diff --git a/mysql-test/t/partition_innodb-master.opt b/mysql-test/t/partition_innodb-master.opt
index 462f8fbe828..82dec8b25fd 100644
--- a/mysql-test/t/partition_innodb-master.opt
+++ b/mysql-test/t/partition_innodb-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=1
+--loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/t/partition_innodb_semi_consistent-master.opt b/mysql-test/t/partition_innodb_semi_consistent-master.opt
index e76299453d3..cb48f1aaf60 100644
--- a/mysql-test/t/partition_innodb_semi_consistent-master.opt
+++ b/mysql-test/t/partition_innodb_semi_consistent-master.opt
@@ -1 +1 @@
---innodb_lock_wait_timeout=2
+--loose-innodb_lock_wait_timeout=2
diff --git a/mysql-test/t/plugin-master.opt b/mysql-test/t/plugin-master.opt
deleted file mode 100644
index 367d5233e0e..00000000000
--- a/mysql-test/t/plugin-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/t/plugin.test b/mysql-test/t/plugin.test
index 7a1ca27d589..55250b73ae5 100644
--- a/mysql-test/t/plugin.test
+++ b/mysql-test/t/plugin.test
@@ -5,15 +5,15 @@ CREATE TABLE t1(a int) ENGINE=EXAMPLE;
DROP TABLE t1;
--replace_regex /\.dll/.so/
-eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
--replace_regex /\.dll/.so/
--error 1125
-eval INSTALL PLUGIN EXAMPLE SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN EXAMPLE SONAME '$HA_EXAMPLE_SO';
UNINSTALL PLUGIN example;
--replace_regex /\.dll/.so/
-eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
@@ -41,7 +41,7 @@ UNINSTALL PLUGIN non_exist;
--echo # to impossible int val
--echo #
--replace_regex /\.dll/.so/
-eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
SET GLOBAL example_enum_var= e1;
SET GLOBAL example_enum_var= e2;
@@ -56,7 +56,7 @@ UNINSTALL PLUGIN example;
# Bug #32757 hang with sql_mode set when setting some global variables
#
--replace_regex /\.dll/.so/
-eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
select @@session.sql_mode into @old_sql_mode;
diff --git a/mysql-test/t/plugin_load-master.opt b/mysql-test/t/plugin_load-master.opt
index bb7831c5769..aadeef2fb66 100644
--- a/mysql-test/t/plugin_load-master.opt
+++ b/mysql-test/t/plugin_load-master.opt
@@ -1,3 +1,2 @@
-$EXAMPLE_PLUGIN_OPT
-$EXAMPLE_PLUGIN_LOAD
+--plugin-load=EXAMPLE=$HA_EXAMPLE_SO
--loose-plugin-example-enum-var=e2
diff --git a/mysql-test/t/plugin_maturity-master.opt b/mysql-test/t/plugin_maturity-master.opt
new file mode 100644
index 00000000000..70ba6280117
--- /dev/null
+++ b/mysql-test/t/plugin_maturity-master.opt
@@ -0,0 +1 @@
+--plugin-maturity=stable
diff --git a/mysql-test/t/plugin_maturity.test b/mysql-test/t/plugin_maturity.test
new file mode 100644
index 00000000000..fe95f19b803
--- /dev/null
+++ b/mysql-test/t/plugin_maturity.test
@@ -0,0 +1,6 @@
+--source include/have_example_plugin.inc
+
+# test for --plugin_maturity
+--replace_regex /\.dll/.so/
+--error 1126
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
diff --git a/mysql-test/t/plugin_not_embedded-master.opt b/mysql-test/t/plugin_not_embedded-master.opt
deleted file mode 100644
index 367d5233e0e..00000000000
--- a/mysql-test/t/plugin_not_embedded-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$EXAMPLE_PLUGIN_OPT
diff --git a/mysql-test/t/plugin_not_embedded.test b/mysql-test/t/plugin_not_embedded.test
index 15aff548c29..11350e8c896 100644
--- a/mysql-test/t/plugin_not_embedded.test
+++ b/mysql-test/t/plugin_not_embedded.test
@@ -8,7 +8,7 @@
GRANT INSERT ON mysql.plugin TO bug51770@localhost;
connect(con1,localhost,bug51770,,);
--replace_regex /\.dll/.so/
-eval INSTALL PLUGIN example SONAME $HA_EXAMPLE_SO;
+eval INSTALL PLUGIN example SONAME '$HA_EXAMPLE_SO';
--error ER_TABLEACCESS_DENIED_ERROR
UNINSTALL PLUGIN example;
connection default;
diff --git a/mysql-test/t/pool_of_threads.cnf b/mysql-test/t/pool_of_threads.cnf
index b96953ad1c5..9ab0571df9f 100644
--- a/mysql-test/t/pool_of_threads.cnf
+++ b/mysql-test/t/pool_of_threads.cnf
@@ -11,4 +11,4 @@ extra-max-connections=1
connect-timeout= 2
[ENV]
-MASTER_EXTRA_PORT= @mysqld.1.extra-port
+MASTER_EXTRA_PORT= @mysqld.1.#extra-port
diff --git a/mysql-test/t/renamedb.test b/mysql-test/t/renamedb.test
index 84315090b7a..71d0c127058 100644
--- a/mysql-test/t/renamedb.test
+++ b/mysql-test/t/renamedb.test
@@ -44,7 +44,7 @@ ALTER DATABASE `#mysql41#not-supported` UPGRADE DATA DIRECTORY NAME;
--error ER_WRONG_USAGE
ALTER DATABASE `#mysql51#not-yet` UPGRADE DATA DIRECTORY NAME;
---error ER_WRONG_USAGE
+--error ER_WRONG_DB_NAME
ALTER DATABASE `#mysql50#` UPGRADE DATA DIRECTORY NAME;
--error ER_BAD_DB_ERROR
diff --git a/mysql-test/t/schema.test b/mysql-test/t/schema.test
index a08d9b38935..a63402bbb83 100644
--- a/mysql-test/t/schema.test
+++ b/mysql-test/t/schema.test
@@ -4,6 +4,9 @@
# Drop mysqltest1 database, as it can left from the previous tests.
#
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
+
--disable_warnings
drop database if exists mysqltest1;
--enable_warnings
@@ -12,3 +15,47 @@ create schema foo;
show create schema foo;
show schemas;
drop schema foo;
+
+
+--echo #
+--echo # Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER
+--echo #
+
+CREATE DATABASE db1;
+CREATE TABLE db1.t1 (a INT);
+INSERT INTO db1.t1 VALUES (1), (2);
+
+--echo # Connection con1
+connect (con1, localhost, root);
+HANDLER db1.t1 OPEN;
+
+--echo # Connection default
+connection default;
+--echo # Sending:
+--send DROP DATABASE db1
+
+--echo # Connection con2
+connect (con2, localhost, root);
+--echo # Waiting for 'DROP DATABASE db1' to sync in.
+let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
+ WHERE state='Waiting for table' AND info='DROP DATABASE db1';
+--source include/wait_condition.inc
+
+--echo # Connection con1
+connection con1;
+# All these statements before resulted in deadlock.
+CREATE DATABASE db2;
+ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
+DROP DATABASE db2;
+
+--echo # Connection default
+connection default;
+--echo # Reaping: DROP DATABASE db1
+--reap
+disconnect con1;
+disconnect con2;
+
+
+# Check that all connections opened by test cases in this file are really
+# gone so execution of other tests won't be affected by their presence.
+--source include/wait_until_count_sessions.inc
diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test
index f61db538fb4..db08aad0df0 100644
--- a/mysql-test/t/select.test
+++ b/mysql-test/t/select.test
@@ -4077,4 +4077,15 @@ SELECT * FROM t1 WHERE 102 < c;
DROP TABLE t1;
+--echo #
+--echo # Bug #54459: Assertion failed: param.sort_length,
+--echo # file .\filesort.cc, line 149 (part II)
+--echo #
+CREATE TABLE t1(a ENUM('') NOT NULL);
+INSERT INTO t1 VALUES (), (), ();
+EXPLAIN SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
+SELECT 1 FROM t1 ORDER BY a COLLATE latin1_german2_ci;
+DROP TABLE t1;
+
+
--echo End of 5.1 tests
diff --git a/mysql-test/t/show_check-master.opt b/mysql-test/t/show_check-master.opt
index 333b1d559e3..b6118d7db9f 100644
--- a/mysql-test/t/show_check-master.opt
+++ b/mysql-test/t/show_check-master.opt
@@ -1 +1 @@
---log-output=file --slow-query-log --log-long-format --log-queries-not-using-indexes --myisam-recover="" --general-log --general-log-file="foo" --slow-query-log-file=""
+--log-output=file --slow-query-log --log-long-format --log-queries-not-using-indexes --myisam-recover="" --general-log --general-log-file="foo" --slow-query-log-file="" --long_query_time=20
diff --git a/mysql-test/t/sp_trans_log.test b/mysql-test/t/sp_trans_log.test
index 2f2b84a9bef..ed054a0ebc6 100644
--- a/mysql-test/t/sp_trans_log.test
+++ b/mysql-test/t/sp_trans_log.test
@@ -3,7 +3,7 @@
# part of sp_trans test that appeared to be sensitive to binlog format
--source include/have_innodb.inc
---source include/have_binlog_format_mixed_or_row.inc
+--source include/have_binlog_format_mixed.inc
delimiter |;
@@ -34,8 +34,8 @@ end|
reset master|
--error ER_DUP_ENTRY
insert into t2 values (bug23333(),1)|
---replace_column 2 # 5 # 6 #
-show binlog events from 106 /* with fixes for #23333 will show there is the query */|
+# with fixes for 23333 will show there is the query */|
+--source include/show_binlog_events.inc
select count(*),@a from t1 /* must be 1,1 */|
delimiter ;|
diff --git a/mysql-test/t/ssl_8k_key-master.opt b/mysql-test/t/ssl_8k_key-master.opt
new file mode 100644
index 00000000000..b58ca7f39f0
--- /dev/null
+++ b/mysql-test/t/ssl_8k_key-master.opt
@@ -0,0 +1 @@
+--loose-ssl-key=$MYSQL_TEST_DIR/std_data/server8k-key.pem --loose-ssl-cert=$MYSQL_TEST_DIR/std_data/server8k-cert.pem
diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
index 20388641d83..22db7ae1eec 100644
--- a/mysql-test/t/subselect.test
+++ b/mysql-test/t/subselect.test
@@ -4181,3 +4181,28 @@ GROUP BY
DROP TABLE t3;
DROP TABLE t2;
DROP TABLE t1;
+
+
+--echo #
+--echo # Bug #52711: Segfault when doing EXPLAIN SELECT with
+--echo # union...order by (select... where...)
+--echo #
+
+CREATE TABLE t1 (a VARCHAR(10), FULLTEXT KEY a (a));
+INSERT INTO t1 VALUES (1),(2);
+CREATE TABLE t2 (b INT);
+INSERT INTO t2 VALUES (1),(2);
+
+--echo # Should not crash
+--disable_result_log
+EXPLAIN
+SELECT * FROM t2 UNION SELECT * FROM t2
+ ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
+
+--echo # Should not crash
+SELECT * FROM t2 UNION SELECT * FROM t2
+ ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
+DROP TABLE t1,t2;
+--enable_result_log
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test
index d71ce28d2b3..b9c4042665b 100644
--- a/mysql-test/t/subselect4.test
+++ b/mysql-test/t/subselect4.test
@@ -63,6 +63,32 @@ DROP TABLE t1,t2,t3;
--echo End of 5.0 tests.
+#
+# Fix for LP#612894
+# Some aggregate functions (such as MIN MAX) work incorrectly in subqueries
+# after getting NULL value
+#
+
+CREATE TABLE t1 (col_int_nokey int(11) NOT NULL, col_varchar_nokey varchar(1) NOT NULL) engine=myisam;
+INSERT INTO t1 VALUES (2,'s'),(0,'v'),(2,'s');
+CREATE TABLE t2 (
+ pk int(11) NOT NULL AUTO_INCREMENT,
+ `col_int_key` int(11) NOT NULL,
+ col_varchar_key varchar(1) NOT NULL,
+ PRIMARY KEY (pk),
+ KEY `col_int_key` (`col_int_key`),
+ KEY `col_varchar_key` (`col_varchar_key`)
+) ENGINE=MyISAM;
+INSERT INTO t2 VALUES (4,10,'g'), (5,20,'v');
+
+SELECT t1.col_int_nokey,(SELECT MIN( t2_a.col_int_key ) FROM t2 t2_a, t2 t2_b, t1 t1_a WHERE t1_a.col_varchar_nokey = t2_b.col_varchar_key and t1.col_int_nokey ) as sub FROM t1;
+
+SELECT t1.col_int_nokey,(SELECT MIN( t2_a.col_int_key ) +1 FROM t2 t2_a, t2 t2_b, t1 t1_a WHERE t1_a.col_varchar_nokey = t2_b.col_varchar_key and t1.col_int_nokey ) as sub FROM t1;
+
+DROP TABLE t1,t2;
+
+--echo End of 5.1 tests.
+
--echo #
--echo # BUG#46743 "Azalea processing correlated, aggregate SELECT
--echo # subqueries incorrectly"
diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test
index 5bb521601e5..34331b72688 100644
--- a/mysql-test/t/type_time.test
+++ b/mysql-test/t/type_time.test
@@ -88,5 +88,15 @@ INSERT INTO t1 VALUES ('0:00:00');
SELECT CAST(c AS TIME) FROM t1;
DROP TABLE t1;
-
--echo End of 5.0 tests
+
+--echo #
+--echo # Bug#53942 valgrind warnings with timestamp() function and incomplete datetime values
+--echo #
+
+CREATE TABLE t1(f1 TIME);
+INSERT INTO t1 VALUES ('23:38:57');
+SELECT TIMESTAMP(f1,'1') FROM t1;
+DROP TABLE t1;
+
+--echo End of 5.1 tests
diff --git a/mysql-test/t/udf-master.opt b/mysql-test/t/udf-master.opt
deleted file mode 100644
index 7d8786c156a..00000000000
--- a/mysql-test/t/udf-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$UDF_EXAMPLE_LIB_OPT
diff --git a/mysql-test/t/udf.test b/mysql-test/t/udf.test
index 283bb1a833c..eff35d9805f 100644
--- a/mysql-test/t/udf.test
+++ b/mysql-test/t/udf.test
@@ -14,26 +14,26 @@ drop table if exists t1;
# Create the example functions from udf_example
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
--error ER_CANT_FIND_DL_ENTRY
-eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION lookup RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
eval CREATE FUNCTION reverse_lookup
- RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
+ RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
eval CREATE AGGREGATE FUNCTION avgcost
- RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
+ RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
--error ER_CANT_INITIALIZE_UDF
select myfunc_double();
@@ -210,14 +210,14 @@ CREATE FUNCTION metaphon(a int) RETURNS int
return 0;
# this currently passes, and eclipse the stored function
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
DROP FUNCTION metaphon;
DROP FUNCTION metaphon;
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
--error ER_UDF_EXISTS
CREATE FUNCTION metaphon(a int) RETURNS int
@@ -248,8 +248,8 @@ DROP FUNCTION avgcost;
# the UDF
#
select * from mysql.func;
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
select IS_const(3);
@@ -263,8 +263,8 @@ select is_const(3);
#
# Bug#18761: constant expression as UDF parameters not passed in as constant
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION is_const RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
select
is_const(3) as const,
@@ -303,14 +303,14 @@ drop function if exists is_const;
# Bug #25382: Passing NULL to an UDF called from stored procedures
# crashes server
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_double RETURNS REAL SONAME "$UDF_EXAMPLE_SO";
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
delimiter //;
create function f1(p1 varchar(255))
@@ -354,8 +354,8 @@ DROP DATABASE IF EXISTS mysqltest;
CREATE DATABASE mysqltest;
USE mysqltest;
DROP DATABASE mysqltest;
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
DROP FUNCTION metaphon;
USE test;
@@ -383,8 +383,8 @@ insert into const_len_bug values(str_const, result, "");
END |
DELIMITER ;|
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_SO";
CALL check_const_len_sp("foo");
@@ -400,8 +400,8 @@ DROP TABLE const_len_bug;
# Bug #30355: Incorrect ordering of UDF results
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION sequence RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (a INT PRIMARY KEY);
INSERT INTO t1 VALUES (4),(3),(2),(1);
diff --git a/mysql-test/t/udf_query_cache-master.opt b/mysql-test/t/udf_query_cache-master.opt
deleted file mode 100644
index 7d8786c156a..00000000000
--- a/mysql-test/t/udf_query_cache-master.opt
+++ /dev/null
@@ -1 +0,0 @@
-$UDF_EXAMPLE_LIB_OPT
diff --git a/mysql-test/t/udf_query_cache.test b/mysql-test/t/udf_query_cache.test
index cb64a2f1665..ce7bd43ea1f 100644
--- a/mysql-test/t/udf_query_cache.test
+++ b/mysql-test/t/udf_query_cache.test
@@ -14,8 +14,8 @@ drop table if exists t1;
# Bug #28921: Queries containing UDF functions are cached
#
---replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
-eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
+--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
+eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_SO";
create table t1 (a char);
set GLOBAL query_cache_size=1355776;
diff --git a/mysql-test/t/unsafe_binlog_innodb-master.opt b/mysql-test/t/unsafe_binlog_innodb-master.opt
index 9581c225d6d..d5ecd2ed9a5 100644
--- a/mysql-test/t/unsafe_binlog_innodb-master.opt
+++ b/mysql-test/t/unsafe_binlog_innodb-master.opt
@@ -1 +1 @@
---innodb_locks_unsafe_for_binlog=true --innodb_lock_wait_timeout=1
+--loose-innodb_locks_unsafe_for_binlog=true --loose-innodb_lock_wait_timeout=1
diff --git a/mysql-test/t/update.test b/mysql-test/t/update.test
index f6708828a6b..c515f8873d8 100644
--- a/mysql-test/t/update.test
+++ b/mysql-test/t/update.test
@@ -483,3 +483,23 @@ UPDATE IGNORE v1 SET a = 1;
SET SESSION sql_safe_updates = DEFAULT;
DROP TABLE t1;
DROP VIEW v1;
+
+--echo #
+--echo # Bug#54734 assert in Diagnostics_area::set_ok_status
+--echo #
+
+--disable_warnings
+DROP TABLE IF EXISTS t1, not_exists;
+DROP FUNCTION IF EXISTS f1;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+
+CREATE TABLE t1 (PRIMARY KEY(pk)) AS SELECT 1 AS pk;
+CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists);
+CREATE VIEW v1 AS SELECT pk FROM t1 WHERE f1() = 13;
+--error ER_VIEW_INVALID
+UPDATE v1 SET pk = 7 WHERE pk > 0;
+
+DROP VIEW v1;
+DROP FUNCTION f1;
+DROP TABLE t1;
diff --git a/mysql-test/t/upgrade.test b/mysql-test/t/upgrade.test
index e390e8a1253..400ce07b7fd 100644
--- a/mysql-test/t/upgrade.test
+++ b/mysql-test/t/upgrade.test
@@ -137,3 +137,48 @@ select * from `a-b-c`.v1;
--enable_ps_protocol
drop database `a-b-c`;
use test;
+
+--echo # End of 5.0 tests
+
+--echo #
+--echo # Bug #53804: serious flaws in the alter database .. upgrade data
+--echo # directory name command
+--echo #
+
+--error ER_BAD_DB_ERROR
+ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME;
+--error ER_WRONG_DB_NAME
+ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME;
+
+--error ER_WRONG_DB_NAME
+USE `#mysql50#.`;
+--error ER_WRONG_DB_NAME
+USE `#mysql50#../blablabla`;
+
+#
+# Test of Bug #56441: mysql_upgrade 5.0->5.1 fails for tables with long names
+#
+copy_file $MYSQL_TEST_DIR/std_data/long_table_name.MYI $MYSQLD_DATADIR/test/ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com.MYI;
+copy_file $MYSQL_TEST_DIR/std_data/long_table_name.MYD $MYSQLD_DATADIR/test/ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com.MYD;
+copy_file $MYSQL_TEST_DIR/std_data/long_table_name.frm $MYSQLD_DATADIR/test/ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com.frm;
+show full tables;
+rename table `#mysql50#ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com` to `ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com`;
+show full tables;
+drop table `ltoriaeinnovacionendesarrolloempres#9120761097220077376#cio_com`;
+
+--echo # End of 5.1 tests
+
diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test
index 94dba1e8ff6..3e9dc5e39d3 100644
--- a/mysql-test/t/variables.test
+++ b/mysql-test/t/variables.test
@@ -362,7 +362,7 @@ set global table_open_cache=100;
set storage_engine=myisam;
set global thread_cache_size=100;
set timestamp=1, timestamp=default;
-set tmp_table_size=100;
+set tmp_table_size=1024;
set tx_isolation="READ-COMMITTED";
set wait_timeout=100;
set log_warnings=1;
@@ -778,6 +778,21 @@ show variables like 'hostname';
--echo # Test 'myisam_mmap_size' option is not dynamic
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
SET @@myisam_mmap_size= 500M;
+
+
+--echo #
+--echo # Bug #52315: utc_date() crashes when system time > year 2037
+--echo #
+
+--error 0, ER_UNKNOWN_ERROR
+SET TIMESTAMP=2*1024*1024*1024;
+--echo #Should not crash
+--disable_result_log
+SELECT UTC_DATE();
+--enable_result_log
+SET TIMESTAMP=DEFAULT;
+
+
--echo End of 5.0 tests
#
diff --git a/mysql-test/t/variables_debug.test b/mysql-test/t/variables_debug.test
index 8f2bde7ae42..12f5d2e6ca5 100644
--- a/mysql-test/t/variables_debug.test
+++ b/mysql-test/t/variables_debug.test
@@ -1,5 +1,7 @@
--source include/have_debug.inc
+SET @old_debug = @@GLOBAL.debug;
+
#
# Bug#34678 @@debug variable's incremental mode
#
@@ -21,5 +23,6 @@ SELECT @@global.debug;
SET GLOBAL debug='';
SELECT @@global.debug;
+SET GLOBAL debug=@old_debug;
--echo End of 5.1 tests
diff --git a/mysql-test/t/warnings_engine_disabled.test b/mysql-test/t/warnings_engine_disabled.test
index b8751a062b7..07a7e54c46c 100644
--- a/mysql-test/t/warnings_engine_disabled.test
+++ b/mysql-test/t/warnings_engine_disabled.test
@@ -2,23 +2,22 @@
# Only run this test with a compiled in but disabled
# engine
#
-disable_query_log;
---require r/true.require
-select support = 'NO' as `TRUE` from information_schema.engines where engine = 'ndbcluster';
-enable_query_log;
+if (!`SELECT count(*) FROM information_schema.engines WHERE
+ support = 'NO' AND engine = 'innodb'`){
+ skip Needs innodb engine;
+}
#
# Test for handler type, will select MyISAM and print a warning
-# about that - since NDB is disabled
+# about that - since InnoDB is disabled
#
-create table t1 (id int) engine=NDB;
-alter table t1 engine=NDB;
+create table t1 (id int) engine=InnoDB;
+alter table t1 engine=InnoDB;
drop table t1;
#
# Bug#29263 disabled storage engines omitted in SHOW ENGINES
#
-SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='ndbcluster';
-SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE
-PLUGIN_NAME='ndbcluster';
+SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='InnoDB';
+SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME='InnoDB';
diff --git a/mysql-test/valgrind.supp b/mysql-test/valgrind.supp
index 0abe78bc140..1919b79461d 100644
--- a/mysql-test/valgrind.supp
+++ b/mysql-test/valgrind.supp
@@ -539,6 +539,13 @@
fun:_Unwind_ForcedUnwind
}
+{
+ dlsym memory loss from plugin
+ Memcheck:Leak
+ fun:malloc
+ fun:_dl_signal_error
+}
+
#
# Reading wrong addresses on SuSe Linux 10.3 32 bit
#
@@ -1044,3 +1051,9 @@
fun:__libc_res_nsend
fun:__libc_res_nquery
}
+
+{
+ buf_buddy_relocate peeking (space,page) in potentially free blocks
+ Memcheck:Addr1
+ fun:buf_buddy_relocate
+}
diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt
index e9873fb0525..bf0c6551a11 100644
--- a/mysys/CMakeLists.txt
+++ b/mysys/CMakeLists.txt
@@ -49,4 +49,6 @@ SET(MYSYS_SOURCES array.c charset-def.c charset.c checksum.c default.c default_
IF(NOT SOURCE_SUBLIBS)
ADD_LIBRARY(mysys ${MYSYS_SOURCES})
+
+ INSTALL(TARGETS mysys DESTINATION lib/opt COMPONENT runtime) # TODO: Component?
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/mysys/Makefile.am b/mysys/Makefile.am
index 337fc86c12e..95358883f4e 100644
--- a/mysys/Makefile.am
+++ b/mysys/Makefile.am
@@ -147,7 +147,3 @@ test_base64$(EXEEXT): base64.c $(LIBRARIES)
test_thr_mutex$(EXEEXT): test_thr_mutex.c $(LIBRARIES)
$(LINK) $(FLAGS) $(srcdir)/test_thr_mutex.c $(LDADD) $(LIBS)
-
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/mysys/charset.c b/mysys/charset.c
index 7cf8a8b828d..153ef8b7e2c 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -406,9 +406,9 @@ static my_pthread_once_t charsets_template= MY_PTHREAD_ONCE_INIT;
static void init_available_charsets(void)
{
char fname[FN_REFLEN + sizeof(MY_CHARSET_INDEX)];
- struct charset_info_st **cs;
+ struct charset_info_st **cs;
- bzero(&all_charsets,sizeof(all_charsets));
+ bzero((char*) &all_charsets,sizeof(all_charsets));
init_compiled_charsets(MYF(0));
/* Copy compiled charsets */
diff --git a/mysys/errors.c b/mysys/errors.c
index fc63ac9d936..4c568952ee3 100644
--- a/mysys/errors.c
+++ b/mysys/errors.c
@@ -50,6 +50,8 @@ const char * NEAR globerrs[GLOBERRS]=
"Collation '%s' is not a compiled collation and is not specified in the '%s' file",
"File '%s' not found (Errcode: %d)",
"File '%s' (fileno: %d) was not closed",
+ "Can't change ownership of the file '%s' (Errcode: %d)",
+ "Can't change permissions of the file '%s' (Errcode: %d)",
"Can't change mode for file '%s' to 0x%lx (Error: %d)",
"Can't do seek on file '%s' (Errcode: %d)",
"Warning: Can't copy ownership for file '%s' (Error: %d)"
@@ -93,6 +95,8 @@ void init_glob_errs()
EE(EE_UNKNOWN_COLLATION)= "Collation '%s' is not a compiled collation and is not specified in the %s file";
EE(EE_FILENOTFOUND) = "File '%s' not found (Errcode: %d)";
EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed";
+ EE(EE_CHANGE_OWNERSHIP) = "Can't change ownership of the file '%s' (Errcode: %d)";
+ EE(EE_CHANGE_PERMISSIONS) = "Can't change permissions of the file '%s' (Errcode: %d)";
EE(EE_CANT_CHMOD) = "Can't change mode for file '%s' to 0x%lx (Error: %d)";
EE(EE_CANT_SEEK) = "Can't do seek on file '%s' (Errcode: %d)";
EE(EE_CANT_COPY_OWNERSHIP)= "Warning: Can't copy ownership for file '%s' (Error: %d)";
diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c
index 59872961523..3824669365f 100644
--- a/mysys/mf_iocache.c
+++ b/mysys/mf_iocache.c
@@ -1701,16 +1701,19 @@ int my_block_write(register IO_CACHE *info, const uchar *Buffer, size_t Count,
#endif
-int my_b_flush_io_cache(IO_CACHE *info, int need_append_buffer_lock)
+int my_b_flush_io_cache(IO_CACHE *info,
+ int need_append_buffer_lock __attribute__((unused)))
{
size_t length;
- my_bool append_cache;
my_off_t pos_in_file;
+ my_bool append_cache= (info->type == SEQ_READ_APPEND);
DBUG_ENTER("my_b_flush_io_cache");
DBUG_PRINT("enter", ("cache: 0x%lx", (long) info));
- if (!(append_cache = (info->type == SEQ_READ_APPEND)))
- need_append_buffer_lock=0;
+#ifdef THREAD
+ if (!append_cache)
+ need_append_buffer_lock= 0;
+#endif
if (info->type == WRITE_CACHE || append_cache)
{
diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c
index 4e22b3f65a2..08c160910c7 100644
--- a/mysys/mf_keycache.c
+++ b/mysys/mf_keycache.c
@@ -5106,7 +5106,7 @@ static SIMPLE_KEY_CACHE_CB
ulonglong* dirty_part_map)
{
uint i= KEYCACHE_BASE_EXPR( file, filepos) % keycache->partitions;
- *dirty_part_map|= 1<<i;
+ *dirty_part_map|= 1ULL << i;
return keycache->partition_array[i];
}
diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c
index 4f7cd90e8aa..86fd61537e7 100644
--- a/mysys/mf_pack.c
+++ b/mysys/mf_pack.c
@@ -52,7 +52,7 @@ void pack_dirname(char * to, const char *from)
buff_length= strlen(buff);
d_length= (size_t) (start-to);
if ((start == to ||
- (buff_length == d_length && !bcmp(buff,start,d_length))) &&
+ (buff_length == d_length && !memcmp(buff,start,d_length))) &&
*start != FN_LIBCHAR && *start)
{ /* Put current dir before */
bchange((uchar*) to, d_length, (uchar*) buff, buff_length, strlen(to)+1);
@@ -70,7 +70,7 @@ void pack_dirname(char * to, const char *from)
}
if (length > 1 && length < d_length)
{ /* test if /xx/yy -> ~/yy */
- if (bcmp(to,home_dir,length) == 0 && to[length] == FN_LIBCHAR)
+ if (memcmp(to,home_dir,length) == 0 && to[length] == FN_LIBCHAR)
{
to[0]=FN_HOMELIB; /* Filename begins with ~ */
(void) strmov_overlapp(to+1,to+length);
@@ -80,7 +80,7 @@ void pack_dirname(char * to, const char *from)
{ /* Test if cwd is ~/... */
if (length > 1 && length < buff_length)
{
- if (bcmp(buff,home_dir,length) == 0 && buff[length] == FN_LIBCHAR)
+ if (memcmp(buff,home_dir,length) == 0 && buff[length] == FN_LIBCHAR)
{
buff[0]=FN_HOMELIB;
(void) strmov_overlapp(buff+1,buff+length);
@@ -166,7 +166,7 @@ size_t cleanup_dirname(register char *to, const char *from)
*pos = FN_LIBCHAR;
if (*pos == FN_LIBCHAR)
{
- if ((size_t) (pos-start) > length && bcmp(pos-length,parent,length) == 0)
+ if ((size_t) (pos-start) > length && memcmp(pos-length,parent,length) == 0)
{ /* If .../../; skip prev */
pos-=length;
if (pos != start)
@@ -197,7 +197,7 @@ size_t cleanup_dirname(register char *to, const char *from)
end_parentdir=pos;
while (pos >= start && *pos != FN_LIBCHAR) /* remove prev dir */
pos--;
- if (pos[1] == FN_HOMELIB || bcmp(pos,parent,length) == 0)
+ if (pos[1] == FN_HOMELIB || memcmp(pos,parent,length) == 0)
{ /* Don't remove ~user/ */
pos=strmov(end_parentdir+1,parent);
*pos=FN_LIBCHAR;
@@ -206,7 +206,7 @@ size_t cleanup_dirname(register char *to, const char *from)
}
}
else if ((size_t) (pos-start) == length-1 &&
- !bcmp(start,parent+1,length-1))
+ !memcmp(start,parent+1,length-1))
start=pos; /* Starts with "../" */
else if (pos-start > 0 && pos[-1] == FN_LIBCHAR)
{
diff --git a/mysys/mf_soundex.c b/mysys/mf_soundex.c
index fe30d8c81af..3a3dab52dd6 100644
--- a/mysys/mf_soundex.c
+++ b/mysys/mf_soundex.c
@@ -47,7 +47,7 @@ void soundex(CHARSET_INFO * cs,register char * out_pntr, char * in_pntr,
{
char ch,last_ch;
reg3 char * end;
- register uchar *map=cs->to_upper;
+ register const uchar *map=cs->to_upper;
if (remove_garbage)
{
diff --git a/mysys/mf_wfile.c b/mysys/mf_wfile.c
index f98d348994e..4a4fb466600 100644
--- a/mysys/mf_wfile.c
+++ b/mysys/mf_wfile.c
@@ -119,6 +119,6 @@ void wf_end(WF_PACK *buffer)
{
DBUG_ENTER("wf_end");
if (buffer)
- my_free((uchar*) buffer,MYF(0));
+ my_free(buffer, MYF(0));
DBUG_VOID_RETURN;
} /* wf_end */
diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c
index 8d3bc0c3fb2..948d3a8476d 100644
--- a/mysys/my_alloc.c
+++ b/mysys/my_alloc.c
@@ -153,6 +153,14 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length)
DBUG_ASSERT(alloc_root_inited(mem_root));
+ DBUG_EXECUTE_IF("simulate_out_of_memory",
+ {
+ if (mem_root->error_handler)
+ (*mem_root->error_handler)();
+ DBUG_SET("-d,simulate_out_of_memory");
+ DBUG_RETURN((void*) 0); /* purecov: inspected */
+ });
+
length+=ALIGN_SIZE(sizeof(USED_MEM));
if (!(next = (USED_MEM*) my_malloc(length,MYF(MY_WME))))
{
@@ -175,6 +183,14 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length)
DBUG_PRINT("enter",("root: 0x%lx", (long) mem_root));
DBUG_ASSERT(alloc_root_inited(mem_root));
+ DBUG_EXECUTE_IF("simulate_out_of_memory",
+ {
+ /* Avoid reusing an already allocated block */
+ if (mem_root->error_handler)
+ (*mem_root->error_handler)();
+ DBUG_SET("-d,simulate_out_of_memory");
+ DBUG_RETURN((void*) 0); /* purecov: inspected */
+ });
length= ALIGN_SIZE(length);
if ((*(prev= &mem_root->free)) != NULL)
{
@@ -275,7 +291,7 @@ void *multi_alloc_root(MEM_ROOT *root, ...)
DBUG_RETURN((void*) start);
}
-#define TRASH_MEM(X) VALGRIND_MAKE_MEM_UNDEFINED(((char*)(X) + ((X)->size-(X)->left)), (X)->left)
+#define TRASH_MEM(X) TRASH(((char*)(X) + ((X)->size-(X)->left)), (X)->left)
/* Mark all data in blocks free for reusage */
diff --git a/mysys/my_bitmap.c b/mysys/my_bitmap.c
index 137127a2fda..0c3f45be374 100644
--- a/mysys/my_bitmap.c
+++ b/mysys/my_bitmap.c
@@ -40,16 +40,31 @@
#include <m_string.h>
#include <my_bit.h>
-void create_last_word_mask(MY_BITMAP *map)
+
+/* Create a mask of the significant bits for the last byte (1,3,7,..255) */
+
+static inline uchar last_byte_mask(uint bits)
{
- /* Get the number of used bits (1..8) in the last byte */
- unsigned int const used= 1U + ((map->n_bits-1U) & 0x7U);
+ /* Get the number of used bits-1 (0..7) in the last byte */
+ unsigned int const used= (bits - 1U) & 7U;
+ /* Return bitmask for the significant bits */
+ return ((2U << used) - 1);
+}
+
+/*
+ Create a mask with the upper 'unused' bits set and the lower 'used'
+ bits clear. The bits within each byte is stored in big-endian order.
+*/
+
+static inline uchar invers_last_byte_mask(uint bits)
+{
+ return last_byte_mask(bits) ^ 255;
+}
- /*
- Create a mask with the upper 'unused' bits set and the lower 'used'
- bits clear. The bits within each byte is stored in big-endian order.
- */
- unsigned char const mask= (~((1 << used) - 1)) & 255;
+
+void create_last_word_mask(MY_BITMAP *map)
+{
+ unsigned char const mask= invers_last_byte_mask(map->n_bits);
/*
The first bytes are to be set to zero since they represent real bits
@@ -267,40 +282,41 @@ void bitmap_set_prefix(MY_BITMAP *map, uint prefix_size)
my_bool bitmap_is_prefix(const MY_BITMAP *map, uint prefix_size)
{
- uint prefix_bits= prefix_size & 0x7, res;
- uchar *m= (uchar*)map->bitmap;
- uchar *end_prefix= m+prefix_size/8;
+ uint prefix_mask= last_byte_mask(prefix_size);
+ uchar *m= (uchar*) map->bitmap;
+ uchar *end_prefix= m+(prefix_size-1)/8;
uchar *end;
DBUG_ASSERT(m && prefix_size <= map->n_bits);
- end= m+no_bytes_in_map(map);
+
+ /* Empty prefix is always true */
+ if (!prefix_size)
+ return 1;
while (m < end_prefix)
if (*m++ != 0xff)
return 0;
- *map->last_word_ptr&= ~map->last_word_mask; /*Clear bits*/
- res= 0;
- if (prefix_bits && *m++ != (1 << prefix_bits)-1)
- goto ret;
+ end= ((uchar*) map->bitmap) + no_bytes_in_map(map) - 1;
+ if (m == end)
+ return ((*m & last_byte_mask(map->n_bits)) == prefix_mask);
- while (m < end)
- if (*m++ != 0)
- goto ret;
- res= 1;
-ret:
- return res;
-}
+ if (*m != prefix_mask)
+ return 0;
+ while (++m < end)
+ if (*m != 0)
+ return 0;
+ return ((*m & last_byte_mask(map->n_bits)) == 0);
+}
my_bool bitmap_is_set_all(const MY_BITMAP *map)
{
my_bitmap_map *data_ptr= map->bitmap;
my_bitmap_map *end= map->last_word_ptr;
- *map->last_word_ptr |= map->last_word_mask;
- for (; data_ptr <= end; data_ptr++)
+ for (; data_ptr < end; data_ptr++)
if (*data_ptr != 0xFFFFFFFF)
return FALSE;
- return TRUE;
+ return (*data_ptr | map->last_word_mask) == 0xFFFFFFFF;
}
@@ -308,13 +324,11 @@ my_bool bitmap_is_clear_all(const MY_BITMAP *map)
{
my_bitmap_map *data_ptr= map->bitmap;
my_bitmap_map *end;
- if (*map->last_word_ptr & ~map->last_word_mask)
- return FALSE;
end= map->last_word_ptr;
for (; data_ptr < end; data_ptr++)
if (*data_ptr)
return FALSE;
- return TRUE;
+ return (*data_ptr & ~map->last_word_mask) == 0;
}
/* Return TRUE if map1 is a subset of map2 */
@@ -327,14 +341,13 @@ my_bool bitmap_is_subset(const MY_BITMAP *map1, const MY_BITMAP *map2)
map1->n_bits==map2->n_bits);
end= map1->last_word_ptr;
- *map1->last_word_ptr &= ~map1->last_word_mask;
- *map2->last_word_ptr &= ~map2->last_word_mask;
- while (m1 <= end)
+ while (m1 < end)
{
if ((*m1++) & ~(*m2++))
return 0;
}
- return 1;
+ /* here both maps have the same number of bits - see assert above */
+ return ((*m1 & ~*m2 & ~map1->last_word_mask) ? 0 : 1);
}
/* True if bitmaps has any common bits */
@@ -347,14 +360,13 @@ my_bool bitmap_is_overlapping(const MY_BITMAP *map1, const MY_BITMAP *map2)
map1->n_bits==map2->n_bits);
end= map1->last_word_ptr;
- *map1->last_word_ptr &= ~map1->last_word_mask;
- *map2->last_word_ptr &= ~map2->last_word_mask;
- while (m1 <= end)
+ while (m1 < end)
{
if ((*m1++) & (*m2++))
return 1;
}
- return 0;
+ /* here both maps have the same number of bits - see assert above */
+ return ((*m1 & *m2 & ~map1->last_word_mask) ? 1 : 0);
}
@@ -366,18 +378,35 @@ void bitmap_intersect(MY_BITMAP *map, const MY_BITMAP *map2)
DBUG_ASSERT(map->bitmap && map2->bitmap);
end= to+min(len,len2);
- *map2->last_word_ptr&= ~map2->last_word_mask; /*Clear last bits in map2*/
while (to < end)
*to++ &= *from++;
- if (len2 < len)
+ if (len2 <= len)
{
- end+=len-len2;
+ to[-1]&= ~map2->last_word_mask; /* Clear last not relevant bits */
+ end+= len-len2;
while (to < end)
- *to++=0;
+ *to++= 0;
}
}
+/* True if union of bitmaps have all bits set */
+
+my_bool bitmap_union_is_set_all(const MY_BITMAP *map1, const MY_BITMAP *map2)
+{
+ my_bitmap_map *m1= map1->bitmap, *m2= map2->bitmap, *end;
+
+ DBUG_ASSERT(map1->bitmap && map2->bitmap &&
+ map1->n_bits==map2->n_bits);
+ end= map1->last_word_ptr;
+ while ( m1 < end)
+ if ((*m1++ | *m2++) != 0xFFFFFFFF)
+ return FALSE;
+ /* here both maps have the same number of bits - see assert above */
+ return ((*m1 | *m2 | map1->last_word_mask) != 0xFFFFFFFF);
+}
+
+
/*
Set/clear all bits above a bit.
@@ -461,14 +490,13 @@ void bitmap_invert(MY_BITMAP *map)
uint bitmap_bits_set(const MY_BITMAP *map)
{
uchar *m= (uchar*)map->bitmap;
- uchar *end= m + no_bytes_in_map(map);
+ uchar *end= m + no_bytes_in_map(map) - 1;
uint res= 0;
DBUG_ASSERT(map->bitmap);
- *map->last_word_ptr&= ~map->last_word_mask; /*Reset last bits to zero*/
while (m < end)
res+= my_count_bits_ushort(*m++);
- return res;
+ return res + my_count_bits_ushort(*m & last_byte_mask(map->n_bits));
}
@@ -492,27 +520,30 @@ uint bitmap_get_first_set(const MY_BITMAP *map)
DBUG_ASSERT(map->bitmap);
data_ptr= map->bitmap;
- *map->last_word_ptr &= ~map->last_word_mask;
- for (i=0; data_ptr <= end; data_ptr++, i++)
- {
+ for (i=0; data_ptr < end; data_ptr++, i++)
if (*data_ptr)
+ goto found;
+ if (!(*data_ptr & ~map->last_word_mask))
+ return MY_BIT_NONE;
+
+found:
+ {
+ byte_ptr= (uchar*)data_ptr;
+ for (j=0; ; j++, byte_ptr++)
{
- byte_ptr= (uchar*)data_ptr;
- for (j=0; ; j++, byte_ptr++)
+ if (*byte_ptr)
{
- if (*byte_ptr)
+ for (k=0; ; k++)
{
- for (k=0; ; k++)
- {
- if (*byte_ptr & (1 << k))
- return (i*32) + (j*8) + k;
- }
+ if (*byte_ptr & (1 << k))
+ return (i*32) + (j*8) + k;
}
}
}
}
- return MY_BIT_NONE;
+ DBUG_ASSERT(0);
+ return MY_BIT_NONE; /* Impossible */
}
@@ -526,25 +557,29 @@ uint bitmap_get_first(const MY_BITMAP *map)
data_ptr= map->bitmap;
*map->last_word_ptr|= map->last_word_mask;
- for (i=0; data_ptr <= end; data_ptr++, i++)
- {
+ for (i=0; data_ptr < end; data_ptr++, i++)
if (*data_ptr != 0xFFFFFFFF)
+ goto found;
+ if ((*data_ptr | map->last_word_mask) == 0xFFFFFFFF)
+ return MY_BIT_NONE;
+
+found:
+ {
+ byte_ptr= (uchar*)data_ptr;
+ for (j=0; ; j++, byte_ptr++)
{
- byte_ptr= (uchar*)data_ptr;
- for (j=0; ; j++, byte_ptr++)
- {
- if (*byte_ptr != 0xFF)
+ if (*byte_ptr != 0xFF)
+ {
+ for (k=0; ; k++)
{
- for (k=0; ; k++)
- {
- if (!(*byte_ptr & (1 << k)))
- return (i*32) + (j*8) + k;
- }
+ if (!(*byte_ptr & (1 << k)))
+ return (i*32) + (j*8) + k;
}
}
}
}
- return MY_BIT_NONE;
+ DBUG_ASSERT(0);
+ return MY_BIT_NONE; /* Impossible */
}
@@ -759,7 +794,7 @@ uint get_rand_bit(uint bitsize)
return (rand() % bitsize);
}
-bool test_set_get_clear_bit(MY_BITMAP *map, uint bitsize)
+my_bool test_set_get_clear_bit(MY_BITMAP *map, uint bitsize)
{
uint i, test_bit;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -782,7 +817,7 @@ error2:
return TRUE;
}
-bool test_flip_bit(MY_BITMAP *map, uint bitsize)
+my_bool test_flip_bit(MY_BITMAP *map, uint bitsize)
{
uint i, test_bit;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -805,13 +840,13 @@ error2:
return TRUE;
}
-bool test_operators(MY_BITMAP *map __attribute__((unused)),
+my_bool test_operators(MY_BITMAP *map __attribute__((unused)),
uint bitsize __attribute__((unused)))
{
return FALSE;
}
-bool test_get_all_bits(MY_BITMAP *map, uint bitsize)
+my_bool test_get_all_bits(MY_BITMAP *map, uint bitsize)
{
uint i;
bitmap_set_all(map);
@@ -853,7 +888,7 @@ error6:
return TRUE;
}
-bool test_compare_operators(MY_BITMAP *map, uint bitsize)
+my_bool test_compare_operators(MY_BITMAP *map, uint bitsize)
{
uint i, j, test_bit1, test_bit2, test_bit3,test_bit4;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -959,7 +994,7 @@ error5:
return TRUE;
}
-bool test_count_bits_set(MY_BITMAP *map, uint bitsize)
+my_bool test_count_bits_set(MY_BITMAP *map, uint bitsize)
{
uint i, bit_count=0, test_bit;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -985,7 +1020,7 @@ error2:
return TRUE;
}
-bool test_get_first_bit(MY_BITMAP *map, uint bitsize)
+my_bool test_get_first_bit(MY_BITMAP *map, uint bitsize)
{
uint i, test_bit;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -1010,7 +1045,7 @@ error2:
return TRUE;
}
-bool test_get_next_bit(MY_BITMAP *map, uint bitsize)
+my_bool test_get_next_bit(MY_BITMAP *map, uint bitsize)
{
uint i, j, test_bit;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -1029,7 +1064,7 @@ error1:
return TRUE;
}
-bool test_prefix(MY_BITMAP *map, uint bitsize)
+my_bool test_prefix(MY_BITMAP *map, uint bitsize)
{
uint i, j, test_bit;
uint no_loops= bitsize > 128 ? 128 : bitsize;
@@ -1064,7 +1099,7 @@ error3:
}
-bool do_test(uint bitsize)
+my_bool do_test(uint bitsize)
{
MY_BITMAP map;
my_bitmap_map buf[1024];
diff --git a/mysys/my_copy.c b/mysys/my_copy.c
index adc891358d4..e1c549f4676 100644
--- a/mysys/my_copy.c
+++ b/mysys/my_copy.c
@@ -17,6 +17,7 @@
#include "mysys_err.h"
#include <my_dir.h> /* for stat */
#include <m_string.h>
+#include "mysys_err.h"
#if defined(HAVE_UTIME_H)
#include <utime.h>
#elif defined(HAVE_SYS_UTIME_H)
@@ -57,7 +58,7 @@ int my_copy(const char *from, const char *to, myf MyFlags)
File from_file,to_file;
uchar buff[IO_SIZE];
MY_STAT stat_buff,new_stat_buff;
- int res;
+ my_bool file_created= 0;
DBUG_ENTER("my_copy");
DBUG_PRINT("my",("from %s to %s MyFlags %d", from, to, MyFlags));
@@ -82,6 +83,7 @@ int my_copy(const char *from, const char *to, myf MyFlags)
MyFlags)) < 0)
goto err;
+ file_created= 1;
while ((Count=my_read(from_file, buff, sizeof(buff), MyFlags)) != 0)
{
if (Count == (uint) -1 ||
@@ -99,15 +101,30 @@ int my_copy(const char *from, const char *to, myf MyFlags)
if (my_close(from_file,MyFlags) | my_close(to_file,MyFlags))
DBUG_RETURN(-1); /* Error on close */
+ from_file=to_file= -1; /* Files are closed */
+
/* Copy modes if possible */
if (MyFlags & MY_HOLD_ORIGINAL_MODES && !new_file_stat)
DBUG_RETURN(0); /* File copyed but not stat */
- res= chmod(to, stat_buff.st_mode & 07777); /* Copy modes */
+ /* Copy modes */
+ if (chmod(to, stat_buff.st_mode & 07777))
+ {
+ my_errno= errno;
+ if (MyFlags & MY_WME)
+ my_error(EE_CHANGE_PERMISSIONS, MYF(ME_BELL+ME_WAITTANG), to, errno);
+ if (MyFlags & MY_FAE)
+ goto err;
+ }
#if !defined(__WIN__) && !defined(__NETWARE__)
+ /* Copy ownership */
if (chown(to, stat_buff.st_uid,stat_buff.st_gid))
{
- my_error(EE_CANT_COPY_OWNERSHIP, MYF(ME_JUST_WARNING), to);
+ my_errno= errno;
+ if (MyFlags & MY_WME)
+ my_error(EE_CANT_COPY_OWNERSHIP, MYF(ME_JUST_WARNING), to, errno);
+ if (MyFlags & MY_FAE)
+ goto err;
}
#endif
#if !defined(VMS) && !defined(__ZTC__)
@@ -124,11 +141,11 @@ int my_copy(const char *from, const char *to, myf MyFlags)
err:
if (from_file >= 0) VOID(my_close(from_file,MyFlags));
- if (to_file >= 0)
- {
- VOID(my_close(to_file, MyFlags));
- /* attempt to delete the to-file we've partially written */
+ if (to_file >= 0) VOID(my_close(to_file, MyFlags));
+
+ /* attempt to delete the to-file we've partially written */
+ if (file_created)
VOID(my_delete(to, MyFlags));
- }
+
DBUG_RETURN(-1);
} /* my_copy */
diff --git a/mysys/my_gethwaddr.c b/mysys/my_gethwaddr.c
index c7f138c7337..00e0e90f1e4 100644
--- a/mysys/my_gethwaddr.c
+++ b/mysys/my_gethwaddr.c
@@ -47,7 +47,7 @@ my_bool my_gethwaddr(uchar *to)
uchar *buf, *next, *end, *addr;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
- int i, res=1, mib[6]={CTL_NET, AF_ROUTE, 0, AF_LINK, NET_RT_IFLIST, 0};
+ int res=1, mib[6]={CTL_NET, AF_ROUTE, 0, AF_LINK, NET_RT_IFLIST, 0};
if (sysctl(mib, 6, NULL, &len, NULL, 0) == -1)
goto err;
diff --git a/mysys/my_getopt.c b/mysys/my_getopt.c
index 1c5aa3735ec..d4e548611de 100644
--- a/mysys/my_getopt.c
+++ b/mysys/my_getopt.c
@@ -22,7 +22,7 @@
#include <errno.h>
#include <m_string.h>
-typedef void (*init_func_p)(const struct my_option *option, uchar* *variable,
+typedef void (*init_func_p)(const struct my_option *option, void *variable,
longlong value);
static void default_reporter(enum loglevel level, const char *format, ...);
@@ -30,7 +30,7 @@ my_error_reporter my_getopt_error_reporter= &default_reporter;
static int findopt(char *optpat, uint length,
const struct my_option **opt_res,
- char **ffname);
+ const char **ffname);
my_bool getopt_compare_strings(const char *s,
const char *t,
uint length);
@@ -40,11 +40,12 @@ static ulonglong getopt_ull(char *arg, const struct my_option *optp,
static double getopt_double(char *arg, const struct my_option *optp, int *err);
static void init_variables(const struct my_option *options,
init_func_p init_one_value);
-static void init_one_value(const struct my_option *opt, uchar* *, longlong);
-static void fini_one_value(const struct my_option *option, uchar* *variable,
+static void init_one_value(const struct my_option *option, void *variable,
longlong value);
-static int setval(const struct my_option *opts, uchar **value, char *argument,
- my_bool set_maximum_value);
+static void fini_one_value(const struct my_option *option, void *variable,
+ longlong value);
+static int setval(const struct my_option *opts, void *value, char *argument,
+ my_bool set_maximum_value);
static char *check_struct_option(char *cur_arg, char *key_name);
/*
@@ -100,10 +101,9 @@ static void default_reporter(enum loglevel level,
one. Call function 'get_one_option()' once for each option.
*/
-static uchar** (*getopt_get_addr)(const char *, uint, const struct my_option *, int *);
+static my_getopt_value getopt_get_addr;
-void my_getopt_register_get_addr(uchar** (*func_addr)(const char *, uint,
- const struct my_option *, int *))
+void my_getopt_register_get_addr(my_getopt_value func_addr)
{
getopt_get_addr= func_addr;
}
@@ -115,10 +115,10 @@ int handle_options(int *argc, char ***argv,
uint opt_found, argvpos= 0, length;
my_bool end_of_options= 0, must_be_var, set_maximum_value,
option_is_loose;
- char **pos, **pos_end, *optend, *UNINIT_VAR(prev_found),
- *opt_str, key_name[FN_REFLEN];
+ char **pos, **pos_end, *optend, *opt_str, key_name[FN_REFLEN];
+ const char *prev_found;
const struct my_option *optp;
- uchar* *value;
+ void *value;
int error, i;
LINT_INIT(opt_found);
@@ -172,7 +172,7 @@ int handle_options(int *argc, char ***argv,
"%s: Option '--set-variable' is deprecated. "
"Use --variable-name=value instead.",
my_progname);
-
+
must_be_var= 1;
if (cur_arg[13] == '=')
{
@@ -377,7 +377,7 @@ int handle_options(int *argc, char ***argv,
optp->value;
if (error)
return error;
-
+
if (optp->arg_type == NO_ARG)
{
if (optend && (optp->var_type & GET_TYPE_MASK) != GET_BOOL)
@@ -405,8 +405,8 @@ int handle_options(int *argc, char ***argv,
else
{
my_getopt_error_reporter(WARNING_LEVEL,
- "%s: ignoring option '--%s' due to \
-invalid value '%s'",
+ "%s: ignoring option '--%s' due to "
+ "invalid value '%s'",
my_progname, optp->name, optend);
continue;
}
@@ -610,7 +610,7 @@ static char *check_struct_option(char *cur_arg, char *key_name)
Will set the option value to given value
*/
-static int setval(const struct my_option *opts, uchar* *value, char *argument,
+static int setval(const struct my_option *opts, void *value, char *argument,
my_bool set_maximum_value)
{
int err= 0;
@@ -618,8 +618,7 @@ static int setval(const struct my_option *opts, uchar* *value, char *argument,
if (value && argument)
{
- uchar* *result_pos= ((set_maximum_value) ?
- opts->u_max_value : value);
+ void *result_pos= ((set_maximum_value) ? opts->u_max_value : value);
if (!result_pos)
return EXIT_NO_PTR_TO_VARIABLE;
@@ -712,10 +711,10 @@ static int setval(const struct my_option *opts, uchar* *value, char *argument,
static int findopt(char *optpat, uint length,
const struct my_option **opt_res,
- char **ffname)
+ const char **ffname)
{
uint count;
- struct my_option *opt= (struct my_option *) *opt_res;
+ const struct my_option *opt= *opt_res;
for (count= 0; opt->name; opt++)
{
@@ -726,8 +725,9 @@ static int findopt(char *optpat, uint length,
return 1;
if (!count)
{
+ /* We only need to know one prev */
count= 1;
- *ffname= (char *) opt->name; /* We only need to know one prev */
+ *ffname= opt->name;
}
else if (strcmp(*ffname, opt->name))
{
@@ -994,7 +994,7 @@ static double getopt_double(char *arg, const struct my_option *optp, int *err)
value Pointer to variable
*/
-static void init_one_value(const struct my_option *option, uchar* *variable,
+static void init_one_value(const struct my_option *option, void *variable,
longlong value)
{
DBUG_ENTER("init_one_value");
@@ -1068,7 +1068,7 @@ static void init_one_value(const struct my_option *option, uchar* *variable,
value Pointer to variable
*/
-static void fini_one_value(const struct my_option *option, uchar* *variable,
+static void fini_one_value(const struct my_option *option, void *variable,
longlong value __attribute__ ((unused)))
{
DBUG_ENTER("fini_one_value");
@@ -1109,7 +1109,7 @@ static void init_variables(const struct my_option *options,
DBUG_ENTER("init_variables");
for (; options->name; options++)
{
- uchar* *variable;
+ void *variable;
DBUG_PRINT("options", ("name: '%s'", options->name));
/*
We must set u_max_value first as for some variables
@@ -1224,7 +1224,7 @@ void my_print_variables(const struct my_option *options)
printf("--------------------------------- -----------------------------\n");
for (optp= options; optp->id; optp++)
{
- uchar* *value= (optp->var_type & GET_ASK_ADDR ?
+ void *value= (optp->var_type & GET_ASK_ADDR ?
(*getopt_get_addr)("", 0, optp, 0) : optp->value);
if (value)
{
@@ -1272,7 +1272,7 @@ void my_print_variables(const struct my_option *options)
printf("%s\n", llstr(*((longlong*) value), buff));
break;
case GET_ULL:
- longlong2str(*((ulonglong*) value), buff, 10);
+ longlong10_to_str(*((ulonglong*) value), buff, 10);
printf("%s\n", buff);
break;
case GET_DOUBLE:
diff --git a/mysys/my_getwd.c b/mysys/my_getwd.c
index e6b867e2753..a18c296a7e1 100644
--- a/mysys/my_getwd.c
+++ b/mysys/my_getwd.c
@@ -51,7 +51,7 @@ int my_getwd(char * buf, size_t size, myf MyFlags)
(long) buf, (uint) size, MyFlags));
if (size < 1)
- return(-1);
+ DBUG_RETURN(-1);
if (curr_dir[0]) /* Current pos is saved here */
VOID(strmake(buf,&curr_dir[0],size-1));
@@ -59,12 +59,12 @@ int my_getwd(char * buf, size_t size, myf MyFlags)
{
#if defined(HAVE_GETCWD)
if (size < 2)
- return(-1);
+ DBUG_RETURN(-1);
if (!getcwd(buf,(uint) (size-2)) && MyFlags & MY_WME)
{
my_errno=errno;
my_error(EE_GETWD,MYF(ME_BELL+ME_WAITTANG),errno);
- return(-1);
+ DBUG_RETURN(-1);
}
#elif defined(HAVE_GETWD)
{
@@ -74,12 +74,12 @@ int my_getwd(char * buf, size_t size, myf MyFlags)
}
#elif defined(VMS)
if (size < 2)
- return(-1);
+ DBUG_RETURN(-1);
if (!getcwd(buf,size-2,1) && MyFlags & MY_WME)
{
my_errno=errno;
my_error(EE_GETWD,MYF(ME_BELL+ME_WAITTANG),errno);
- return(-1);
+ DBUG_RETURN(-1);
}
intern_filename(buf,buf);
#else
diff --git a/mysys/my_handler.c b/mysys/my_handler.c
index 7c13149cb27..efee04194f7 100644
--- a/mysys/my_handler.c
+++ b/mysys/my_handler.c
@@ -277,7 +277,6 @@ int ha_key_cmp(register HA_KEYSEG *keyseg, register const uchar *a,
return ((keyseg->flag & HA_REVERSE_SORT) ? -flag : flag);
a+=a_length;
b+=b_length;
- break;
}
break;
case HA_KEYTYPE_INT8:
diff --git a/mysys/my_malloc.c b/mysys/my_malloc.c
index 12af5603a93..330ef07ed30 100644
--- a/mysys/my_malloc.c
+++ b/mysys/my_malloc.c
@@ -34,13 +34,23 @@ void *my_malloc(size_t size, myf my_flags)
if (!size)
size=1; /* Safety */
- if ((point = (char*)malloc(size)) == NULL)
+
+ point= (char *) malloc(size);
+ DBUG_EXECUTE_IF("simulate_out_of_memory",
+ {
+ free(point);
+ point= NULL;
+ });
+
+ if (point == NULL)
{
my_errno=errno;
if (my_flags & MY_FAE)
error_handler_hook=fatal_error_handler_hook;
if (my_flags & (MY_FAE+MY_WME))
my_error(EE_OUTOFMEMORY, MYF(ME_BELL+ME_WAITTANG+ME_NOREFRESH),size);
+ DBUG_EXECUTE_IF("simulate_out_of_memory",
+ DBUG_SET("-d,simulate_out_of_memory"););
if (my_flags & MY_FAE)
exit(1);
}
diff --git a/mysys/my_redel.c b/mysys/my_redel.c
index 598a728393d..cf0986a7821 100644
--- a/mysys/my_redel.c
+++ b/mysys/my_redel.c
@@ -71,14 +71,28 @@ end:
} /* my_redel */
- /* Copy stat from one file to another */
- /* Return -1 if can't get stat, 1 if wrong type of file */
+/**
+ Copy stat from one file to another
+ @fn my_copystat()
+ @param from Copy stat from this file
+ @param to Copy stat to this file
+ @param MyFlags Flags:
+ MY_WME Give error if something goes wrong
+ MY_FAE Abort operation if something goes wrong
+ If MY_FAE is not given, we don't return -1 for
+ errors from chown (which normally require root
+ privilege)
+
+ @return 0 ok
+ -1 if can't get stat,
+ 1 if wrong type of file
+*/
int my_copystat(const char *from, const char *to, int MyFlags)
{
struct stat statbuf;
- if (stat((char*) from, &statbuf))
+ if (stat(from, &statbuf))
{
my_errno=errno;
if (MyFlags & (MY_FAE+MY_WME))
@@ -87,7 +101,15 @@ int my_copystat(const char *from, const char *to, int MyFlags)
}
if ((statbuf.st_mode & S_IFMT) != S_IFREG)
return 1;
- VOID(chmod(to, statbuf.st_mode & 07777)); /* Copy modes */
+
+ /* Copy modes */
+ if (chmod(to, statbuf.st_mode & 07777))
+ {
+ my_errno= errno;
+ if (MyFlags & (MY_FAE+MY_WME))
+ my_error(EE_CHANGE_PERMISSIONS, MYF(ME_BELL+ME_WAITTANG), from, errno);
+ return -1;
+ }
#if !defined(__WIN__) && !defined(__NETWARE__)
if (statbuf.st_nlink > 1 && MyFlags & MY_LINK_WARNING)
@@ -95,9 +117,14 @@ int my_copystat(const char *from, const char *to, int MyFlags)
if (MyFlags & MY_LINK_WARNING)
my_error(EE_LINK_WARNING,MYF(ME_BELL+ME_WAITTANG),from,statbuf.st_nlink);
}
+ /* Copy ownership */
if (chown(to, statbuf.st_uid, statbuf.st_gid))
{
- my_error(EE_CANT_COPY_OWNERSHIP, MYF(ME_JUST_WARNING), to);
+ my_errno= errno;
+ if (MyFlags & MY_WME)
+ my_error(EE_CHANGE_OWNERSHIP, MYF(ME_BELL+ME_WAITTANG), from, errno);
+ if (MyFlags & MY_FAE)
+ return -1;
}
#endif /* !__WIN__ && !__NETWARE__ */
diff --git a/mysys/my_static.c b/mysys/my_static.c
index 0ef5656b76f..08653d03d21 100644
--- a/mysys/my_static.c
+++ b/mysys/my_static.c
@@ -119,6 +119,7 @@ ulonglong query_performance_frequency, query_performance_offset;
/* How to disable options */
my_bool NEAR my_disable_locking=0;
+my_bool NEAR my_disable_sync=0;
my_bool NEAR my_disable_async_io=0;
my_bool NEAR my_disable_flush_key_blocks=0;
my_bool NEAR my_disable_symlinks=0;
diff --git a/mysys/my_sync.c b/mysys/my_sync.c
index 967a6ae6c78..a2b615a8661 100644
--- a/mysys/my_sync.c
+++ b/mysys/my_sync.c
@@ -48,6 +48,9 @@ int my_sync(File fd, myf my_flags)
DBUG_ENTER("my_sync");
DBUG_PRINT("my",("fd: %d my_flags: %d", fd, my_flags));
+ if (my_disable_sync)
+ DBUG_RETURN(0);
+
statistic_increment(my_sync_count,&THR_LOCK_open);
do
{
@@ -65,6 +68,8 @@ int my_sync(File fd, myf my_flags)
res= fdatasync(fd);
#elif defined(HAVE_FSYNC)
res= fsync(fd);
+ if (res == -1 && errno == ENOLCK)
+ res= 0; /* Result Bug in Old FreeBSD */
#elif defined(__WIN__)
res= _commit(fd);
#else
diff --git a/mysys/safemalloc.c b/mysys/safemalloc.c
index d6cd3896b08..0d0ae2dabe5 100644
--- a/mysys/safemalloc.c
+++ b/mysys/safemalloc.c
@@ -139,6 +139,11 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
size + /* size requested */
4 + /* overrun mark */
sf_malloc_endhunc);
+ DBUG_EXECUTE_IF("simulate_out_of_memory",
+ {
+ free(irem);
+ irem= NULL;
+ });
}
/* Check if there isn't anymore memory avaiable */
if (!irem)
@@ -159,6 +164,8 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
}
DBUG_PRINT("error",("Out of memory, in use: %ld at line %d, '%s'",
(ulong) sf_malloc_max_memory,lineno, filename));
+ DBUG_EXECUTE_IF("simulate_out_of_memory",
+ DBUG_SET("-d,simulate_out_of_memory"););
if (MyFlags & MY_FAE)
exit(1);
DBUG_RETURN ((void*) 0);
@@ -190,9 +197,12 @@ void *_mymalloc(size_t size, const char *filename, uint lineno, myf MyFlags)
sf_malloc_count++;
pthread_mutex_unlock(&THR_LOCK_malloc);
+ MEM_CHECK_ADDRESSABLE(data, size);
/* Set the memory to the aribtrary wierd value */
if ((MyFlags & MY_ZEROFILL) || !sf_malloc_quick)
bfill(data, size, (char) (MyFlags & MY_ZEROFILL ? 0 : ALLOC_VAL));
+ if (!(MyFlags & MY_ZEROFILL))
+ MEM_UNDEFINED(data, size);
/* Return a pointer to the real data */
DBUG_PRINT("exit",("ptr: %p", data));
if (sf_min_adress > data)
@@ -312,7 +322,9 @@ void _myfree(void *ptr, const char *filename, uint lineno, myf myflags)
if (!sf_malloc_quick)
bfill(ptr, irem->datasize, (pchar) FREE_VAL);
#endif
+ MEM_NOACCESS(ptr, irem->datasize);
*((uint32*) ((char*) ptr- sizeof(uint32)))= ~MAGICKEY;
+ MEM_NOACCESS((char*) ptr - sizeof(uint32), sizeof(uint32));
/* Actually free the memory */
free((char*) irem);
DBUG_VOID_RETURN;
diff --git a/mysys/stacktrace.c b/mysys/stacktrace.c
index 75fda93b56e..7bac8017324 100644
--- a/mysys/stacktrace.c
+++ b/mysys/stacktrace.c
@@ -86,7 +86,9 @@ void my_print_stacktrace(uchar* stack_bottom __attribute__((unused)),
#if BACKTRACE_DEMANGLE
-char __attribute__ ((weak)) *my_demangle(const char *mangled_name, int *status)
+char __attribute__ ((weak)) *
+my_demangle(const char *mangled_name __attribute__((unused)),
+ int *status __attribute__((unused)))
{
return NULL;
}
diff --git a/mysys/thr_alarm.c b/mysys/thr_alarm.c
index 680ec985aeb..f7ff20c9b23 100644
--- a/mysys/thr_alarm.c
+++ b/mysys/thr_alarm.c
@@ -285,7 +285,7 @@ sig_handler process_alarm(int sig __attribute__((unused)))
#if defined(MAIN) && !defined(__bsdi__)
printf("thread_alarm in process_alarm\n"); fflush(stdout);
#endif
-#ifdef DONT_REMEMBER_SIGNAL
+#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY
my_sigset(thr_client_alarm, process_alarm); /* int. thread system calls */
#endif
return;
@@ -304,7 +304,7 @@ sig_handler process_alarm(int sig __attribute__((unused)))
#endif
process_alarm_part2(sig);
#ifndef USE_ALARM_THREAD
-#if defined(DONT_REMEMBER_SIGNAL) && !defined(USE_ONE_SIGNAL_HAND)
+#if defined(SIGNAL_HANDLER_RESET_ON_DELIVERY) && !defined(USE_ONE_SIGNAL_HAND)
my_sigset(THR_SERVER_ALARM,process_alarm);
#endif
pthread_mutex_unlock(&LOCK_alarm);
@@ -507,12 +507,12 @@ void thr_alarm_info(ALARM_INFO *info)
*/
-static sig_handler thread_alarm(int sig)
+static sig_handler thread_alarm(int sig __attribute__((unused)))
{
#ifdef MAIN
printf("thread_alarm\n"); fflush(stdout);
#endif
-#ifdef DONT_REMEMBER_SIGNAL
+#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY
my_sigset(sig,thread_alarm); /* int. thread system calls */
#endif
}
@@ -776,6 +776,7 @@ static void *test_thread(void *arg)
return 0;
}
+
static void *signal_hand(void *arg __attribute__((unused)))
{
sigset_t set;
diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c
index c830c4ed0cc..b8aa9e5fcc0 100644
--- a/mysys/thr_lock.c
+++ b/mysys/thr_lock.c
@@ -131,8 +131,7 @@ static int check_lock(struct st_lock_list *list, const char* lock_type,
{
THR_LOCK_DATA *data,**prev;
uint count=0;
- THR_LOCK_OWNER *first_owner;
- LINT_INIT(first_owner);
+ THR_LOCK_OWNER *UNINIT_VAR(first_owner);
prev= &list->data;
if (list->data)
diff --git a/netware/Makefile.am b/netware/Makefile.am
index 3d0402ce714..f537022495b 100644
--- a/netware/Makefile.am
+++ b/netware/Makefile.am
@@ -115,6 +115,3 @@ test_db.sql: init_db.sql $(top_srcdir)/scripts/mysql_test_data_timezone.sql
@echo "Building $@";
@cat init_db.sql \
$(top_srcdir)/scripts/mysql_test_data_timezone.sql > $@;
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/plugin/Makefile.am b/plugin/Makefile.am
index 68f1f939836..e6d9ee4d823 100644
--- a/plugin/Makefile.am
+++ b/plugin/Makefile.am
@@ -23,6 +23,3 @@ EXTRA_DIST = fulltext/configure.in
SUBDIRS = @mysql_pg_dirs@
DIST_SUBDIRS = @mysql_pg_distdirs@
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/plugin/auth/auth_socket.c b/plugin/auth/auth_socket.c
index 6694816dd22..cc406dac331 100644
--- a/plugin/auth/auth_socket.c
+++ b/plugin/auth/auth_socket.c
@@ -115,5 +115,5 @@ maria_declare_plugin(socket_auth)
"1.0",
MariaDB_PLUGIN_MATURITY_BETA
}
-mysql_declare_plugin_end;
+maria_declare_plugin_end;
diff --git a/plugin/daemon_example/Makefile.am b/plugin/daemon_example/Makefile.am
index fce67285a5f..7bfaf5ac79f 100644
--- a/plugin/daemon_example/Makefile.am
+++ b/plugin/daemon_example/Makefile.am
@@ -27,16 +27,12 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
EXTRA_LTLIBRARIES = libdaemon_example.la
pkgplugin_LTLIBRARIES = @plugin_daemon_example_shared_target@
libdaemon_example_la_LDFLAGS = -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices
-
-libdaemon_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-libdaemon_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+libdaemon_example_la_CXXFLAGS= -shared $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
libdaemon_example_la_SOURCES = daemon_example.cc
-
EXTRA_LIBRARIES = libdaemon_example.a
noinst_LIBRARIES = @plugin_daemon_example_static_target@
-libdaemon_example_a_CXXFLAGS = $(AM_CFLAGS)
-libdaemon_example_a_CFLAGS = $(AM_CFLAGS)
+libdaemon_example_a_CXXFLAGS = $(AM_CXXFLAGS)
libdaemon_example_a_SOURCES= daemon_example.cc
# Don't update the files from bitkeeper
diff --git a/plugin/fulltext/Makefile.am b/plugin/fulltext/Makefile.am
index 343416072dd..45565e9fdb2 100644
--- a/plugin/fulltext/Makefile.am
+++ b/plugin/fulltext/Makefile.am
@@ -21,7 +21,7 @@ INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include
pkgplugin_LTLIBRARIES= mypluglib.la
mypluglib_la_SOURCES= plugin_example.c
mypluglib_la_LDFLAGS= -module -rpath $(pkgplugindir)
-mypluglib_la_CFLAGS= -DMYSQL_DYNAMIC_PLUGIN
+mypluglib_la_CFLAGS= -shared -DMYSQL_DYNAMIC_PLUGIN
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/pstack/Makefile.am b/pstack/Makefile.am
index 870fed6ceeb..25feadf9d06 100644
--- a/pstack/Makefile.am
+++ b/pstack/Makefile.am
@@ -27,6 +27,3 @@ libpstack_a_SOURCES = bucomm.c filemode.c linuxthreads.c rddbg.c \
debug.c ieee.c pstack.c stabs.c
noinst_HEADERS = bucomm.h debug.h ieee.h budbg.h demangle.h \
linuxthreads.h pstack.h pstacktrace.h
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/regex/CMakeLists.txt b/regex/CMakeLists.txt
index 2e3b18c7bb0..b8a0a953af6 100755
--- a/regex/CMakeLists.txt
+++ b/regex/CMakeLists.txt
@@ -22,4 +22,6 @@ SET(REGEX_SOURCES regcomp.c regerror.c regexec.c regfree.c reginit.c)
IF(NOT SOURCE_SUBLIBS)
ADD_LIBRARY(regex ${REGEX_SOURCES})
+
+ INSTALL(TARGETS regex DESTINATION lib/opt COMPONENT runtime) # TODO: Component
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/regex/Makefile.am b/regex/Makefile.am
index e2304ff7309..0fd62a777f6 100644
--- a/regex/Makefile.am
+++ b/regex/Makefile.am
@@ -31,6 +31,3 @@ test: re tests
./re < tests
./re -el < tests
./re -er < tests
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/regex/engine.c b/regex/engine.c
index a099cfb891d..5db8df210bd 100644
--- a/regex/engine.c
+++ b/regex/engine.c
@@ -256,7 +256,6 @@ sopno stopst;
register const char *ssp; /* start of string matched by subsubRE */
register const char *sep; /* end of string matched by subsubRE */
register const char *oldssp; /* previous ssp */
- register const char *dp; /* used in debug mode to check asserts */
AT("diss", start, stop, startst, stopst);
sp = start;
@@ -314,11 +313,9 @@ sopno stopst;
ssub = ss + 1;
esub = es - 1;
/* did innards match? */
- if (slow(charset, m, sp, rest, ssub, esub) != NULL) {
- dp = dissect(charset, m, sp, rest, ssub, esub);
- assert(dp == rest);
- } else /* no */
- assert(sp == rest);
+ if (slow(charset, m, sp, rest, ssub, esub) != NULL)
+ sp = dissect(charset, m, sp, rest, ssub, esub);
+ assert(sp == rest);
sp = rest;
break;
case OPLUS_:
@@ -353,8 +350,8 @@ sopno stopst;
}
assert(sep == rest); /* must exhaust substring */
assert(slow(charset, m, ssp, sep, ssub, esub) == rest);
- dp = dissect(charset, m, ssp, sep, ssub, esub);
- assert(dp == sep);
+ sp = dissect(charset, m, ssp, sep, ssub, esub);
+ assert(sp == sep);
sp = rest;
break;
case OCH_:
@@ -388,8 +385,8 @@ sopno stopst;
else
assert(OP(m->g->strip[esub]) == O_CH);
}
- dp = dissect(charset, m, sp, rest, ssub, esub);
- assert(dp == rest);
+ sp = dissect(charset, m, sp, rest, ssub, esub);
+ assert(sp == rest);
sp = rest;
break;
case O_PLUS:
diff --git a/regex/main.c b/regex/main.c
index fa97ca89047..e8277053382 100644
--- a/regex/main.c
+++ b/regex/main.c
@@ -17,8 +17,8 @@ regoff_t startoff = 0;
regoff_t endoff = 0;
-extern int split();
-extern void regprint();
+extern int split(char *string, char **fields, int nfields, const char *sep);
+extern void regprint(my_regex_t *r, FILE *d);
/*
- main - do the simple case, hand off to regress() for regression
diff --git a/regex/regcomp.c b/regex/regcomp.c
index b203d4941e1..81c435ed552 100644
--- a/regex/regcomp.c
+++ b/regex/regcomp.c
@@ -690,7 +690,6 @@ register cset *cs;
case '-':
SETERROR(REG_ERANGE);
return; /* NOTE RETURN */
- break;
default:
c = '\0';
break;
@@ -1564,13 +1563,13 @@ struct parse *p;
register struct re_guts *g;
{
register sop *scan;
- sop *start;
- register sop *newstart;
+ sop *UNINIT_VAR(start);
+ register sop *UNINIT_VAR(newstart);
register sopno newlen;
register sop s;
register char *cp;
register sopno i;
- LINT_INIT(start); LINT_INIT(newstart);
+
/* avoid making error situations worse */
if (p->error != 0)
return;
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
index 2563c49280e..eee70fdf776 100755
--- a/scripts/CMakeLists.txt
+++ b/scripts/CMakeLists.txt
@@ -75,3 +75,12 @@ CONFIGURE_FILE(mysqldumpslow.sh
CONFIGURE_FILE(mysqlhotcopy.sh
${CMAKE_BINARY_DIR}/scripts/mysqlhotcopy.pl ESCAPE_QUOTES @ONLY)
+
+INSTALL(FILES mysqldumpslow.pl mysqlhotcopy.pl mysql_config.pl
+ mysql_convert_table_format.pl mysql_install_db.pl
+ mysql_secure_installation.pl mysqld_multi.pl
+ DESTINATION scripts COMPONENT scripts)
+
+INSTALL(FILES fill_help_tables.sql mysql_fix_privilege_tables.sql mysql_system_tables.sql
+ mysql_system_tables_data.sql mysql_system_tables_fix.sql mysql_test_data_timezone.sql
+ DESTINATION share COMPONENT scripts)
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index b74e7b8df8b..015b664c87d 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -37,7 +37,8 @@ bin_SCRIPTS = @server_scripts@ \
mysqld_multi
noinst_SCRIPTS = make_binary_distribution \
- make_sharedlib_distribution
+ make_sharedlib_distribution \
+ convert-debug-for-diff
EXTRA_SCRIPTS = make_binary_distribution.sh \
make_sharedlib_distribution.sh \
@@ -59,7 +60,8 @@ EXTRA_SCRIPTS = make_binary_distribution.sh \
mysqlhotcopy.sh \
mysqldumpslow.sh \
mysqld_multi.sh \
- mysqld_safe.sh
+ mysqld_safe.sh \
+ convert-debug-for-diff.sh
EXTRA_DIST = $(EXTRA_SCRIPTS) \
mysqlaccess.conf \
@@ -91,6 +93,7 @@ CLEANFILES = @server_scripts@ \
mysqlhotcopy \
mysqldumpslow \
mysqld_multi \
+ convert-debug-for-diff \
$(EXTRA_PROGRAMS)
pkgplugindir = $(pkglibdir)/plugin
@@ -193,7 +196,3 @@ SUFFIXES = .sh
$< > $@-t
@CHMOD@ +x $@-t
@MV@ $@-t $@
-
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/scripts/convert-debug-for-diff.sh b/scripts/convert-debug-for-diff.sh
new file mode 100755
index 00000000000..b6c837504cb
--- /dev/null
+++ b/scripts/convert-debug-for-diff.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/perl -i
+#
+# This script converts all numbers that look like addresses or memory sizes,
+# in a debug files generated by --debug (like mysqld --debug), to #.
+# The script also deletes all thread id's from the start of the line.
+
+# This allows you to easily compare the files (for example with diff)
+# to find out what changes between different executions.
+# This is extremely useful for comparing two mysqld versions to see
+# why things now work differently.
+
+# The script converts the files in place.
+#
+# Typical usage:
+#
+# convert-debug-for-diff /tmp/mysqld.trace /tmp/mysqld-old.trace
+# diff /tmp/mysqld.trace /tmp/mysqld-old.trace
+
+while (<>)
+{
+ s/^T@[0-9]+\s*://g;
+ s/0x[0-9a-f]+(\s|\n|\))/#$1/g;
+ s/size: [0-9]+/size: #/g;
+ print $_;
+}
diff --git a/scripts/make_binary_distribution.sh b/scripts/make_binary_distribution.sh
index eb2cc94afe9..828670d9408 100644
--- a/scripts/make_binary_distribution.sh
+++ b/scripts/make_binary_distribution.sh
@@ -431,9 +431,9 @@ BIN_FILES="extra/comp_err$BS extra/replace$BS extra/perror$BS \
extra/resolve_stack_dump$BS extra/mysql_waitpid$BS \
storage/myisam/myisamchk$BS storage/myisam/myisampack$BS \
storage/myisam/myisamlog$BS storage/myisam/myisam_ftdump$BS \
- storage/maria/maria_chk$BS storage/maria/maria_pack$BS \
- storage/maria/maria_ftdump$BS storage/maria/maria_read_log$BS \
- storage/maria/maria_dump_log$BS \
+ storage/maria/aria_chk$BS storage/maria/aria_pack$BS \
+ storage/maria/aria_ftdump$BS storage/maria/aria_read_log$BS \
+ storage/maria/aria_dump_log$BS \
sql/mysqld$BS sql/mysqld-debug$BS \
sql/mysql_tzinfo_to_sql$BS \
server-tools/instance-manager/mysqlmanager$BS \
@@ -522,9 +522,11 @@ $CP mysql-test/std_data/*.dat mysql-test/std_data/*.frm \
mysql-test/std_data/des_key_file mysql-test/std_data/*.*001 \
mysql-test/std_data/*.cnf mysql-test/std_data/*.MY* \
$BASE/mysql-test/std_data
-$CP mysql-test/t/*.test mysql-test/t/*.imtest \
- mysql-test/t/*.disabled mysql-test/t/*.opt \
- mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t
+# Attention: when the wildcards expand to a line that is very long,
+# it may exceed the command line length limit on some platform(s). Bug#54590
+$CP mysql-test/t/*.test mysql-test/t/*.imtest $BASE/mysql-test/t
+$CP mysql-test/t/*.disabled mysql-test/t/*.opt $BASE/mysql-test/t
+$CP mysql-test/t/*.slave-mi mysql-test/t/*.sh mysql-test/t/*.sql $BASE/mysql-test/t
$CP mysql-test/r/*.result mysql-test/r/*.require \
$BASE/mysql-test/r
diff --git a/scripts/make_win_bin_dist b/scripts/make_win_bin_dist
index aa252ed2b7b..21bd1a7b025 100755
--- a/scripts/make_win_bin_dist
+++ b/scripts/make_win_bin_dist
@@ -141,7 +141,7 @@ fi
# Copy executables, and client DLL
# ----------------------------------------------------------------------
MYISAM_BINARIES="myisamchk myisamlog myisampack myisam_ftdump"
-MARIA_BINARIES="maria_chk maria_dump_log maria_ftdump maria_pack maria_read_log"
+MARIA_BINARIES="aria_chk aria_dump_log aria_ftdump aria_pack aria_read_log"
mkdir $DESTDIR
mkdir $DESTDIR/bin
cp client/$TARGET/*.exe $DESTDIR/bin/
@@ -163,7 +163,7 @@ if [ -f "storage/pbxt/bin/xtstat.exe" ] ; then
cp storage/pbxt/bin/xtstat.{exe,pdb} $DESTDIR/bin
fi
-cp server-tools/instance-manager/$TARGET/*.{exe,map} $DESTDIR/bin/
+cp server-tools/instance-manager/$TARGET/*.exe $DESTDIR/bin/
if [ x"$TARGET" != x"release" ] ; then
cp server-tools/instance-manager/$TARGET/*.pdb $DESTDIR/bin/
cp client/$TARGET/mysql.pdb $DESTDIR/bin/
@@ -305,10 +305,7 @@ cp libmysql/$TARGET/libmysql.dll \
regex/$TARGET/regex.lib \
strings/$TARGET/strings.lib \
zlib/$TARGET/zlib.lib $DESTDIR/lib/opt/
-if [ -d storage/innodb_plugin ]; then
- cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.dll \
- $DESTDIR/lib/plugin/
-fi
+cp storage/*/$TARGET/ha_*.dll $DESTDIR/lib/plugin/
if [ x"$TARGET" != x"release" ] ; then
cp libmysql/$TARGET/libmysql.pdb \
@@ -317,10 +314,7 @@ if [ x"$TARGET" != x"release" ] ; then
regex/$TARGET/regex.pdb \
strings/$TARGET/strings.pdb \
zlib/$TARGET/zlib.pdb $DESTDIR/lib/opt/
- if [ -d storage/innodb_plugin ]; then
- cp storage/innodb_plugin/$TARGET/ha_innodb_plugin.pdb \
- $DESTDIR/lib/plugin/
- fi
+ cp storage/*/$TARGET/ha_*.pdb $DESTDIR/lib/plugin/
fi
@@ -341,12 +335,10 @@ if [ x"$PACK_DEBUG" = x"" -a -f "libmysql/debug/libmysql.lib" -o \
strings/debug/strings.pdb \
zlib/debug/zlib.lib \
zlib/debug/zlib.pdb $DESTDIR/lib/debug/
- if [ -d storage/innodb_plugin ]; then
- cp storage/innodb_plugin/debug/ha_innodb_plugin.dll \
- storage/innodb_plugin/debug/ha_innodb_plugin.lib \
- storage/innodb_plugin/debug/ha_innodb_plugin.pdb \
- $DESTDIR/lib/plugin/debug/
- fi
+ cp storage/*/debug/ha_*.dll \
+ storage/*/debug/ha_*.lib \
+ storage/*/debug/ha_*.pdb \
+ $DESTDIR/lib/plugin/debug/
fi
# ----------------------------------------------------------------------
@@ -361,7 +353,7 @@ cp -R mysql-test/{t,r,include,suite,std_data,lib,collections} $DESTDIR/mysql-tes
rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_kill.{dir,vcproj}
rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/my_safe_process.{dir,vcproj}
-rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/{Debug,RelWithDebInfo}/*.{ilk,idb,map}
+rm -rf $DESTDIR/mysql-test/lib/My/SafeProcess/{Debug,RelWithDebInfo}/*.{ilk,idb}
# Note that this will not copy "extra" if a soft link
diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh
index ea00b3a183b..2d3775afb3a 100644
--- a/scripts/mysql_install_db.sh
+++ b/scripts/mysql_install_db.sh
@@ -408,20 +408,16 @@ else
echo " shell> $bindir/mysql -u root mysql"
echo " mysql> show tables"
echo
- echo "Try 'mysqld --help' if you have problems with paths. Using --log"
- echo "gives you a log in $ldata that may be helpful."
+ echo "Try 'mysqld --help' if you have problems with paths. Using"
+ echo "--general-log gives you a log in $ldata that may be helpful."
echo
- echo "The latest information about MariaDB is available on the web at"
- echo "http://askmonty.org/wiki/index.php/MariaDB".
- echo "If you have a problem, you can consult the MySQL manual section"
- echo "'Problems running mysql_install_db', and the manual section that"
- echo "describes problems on your OS at http://dev.mysql.com/doc/"
+ echo "The latest information about mysql_install_db is available at"
+ echo "http://kb.askmonty.org/v/installing-system-tables-mysql_install_db."
echo "MariaDB is hosted on launchpad; You can find the latest source and"
echo "email lists at http://launchpad.net/maria"
echo
echo "Please check all of the above before mailing us! And remember, if"
echo "you do mail us, you should use the $scriptdir/mysqlbug script!"
- echo
exit 1
fi
@@ -479,7 +475,7 @@ then
echo "Support MariaDB development by buying support/new features from"
echo "Monty Program Ab. You can contact us about this at sales@askmonty.org".
echo "Alternatively consider joining our community based development effort:"
- echo "http://askmonty.org/wiki/index.php/MariaDB#How_can_I_participate_in_the_development_of_MariaDB.3F"
+ echo "http://askmonty.org/wiki/index.php/MariaDB#How_can_I_participate_in_the_development_of_MariaDB"
echo
fi
diff --git a/scripts/mysql_secure_installation.pl.in b/scripts/mysql_secure_installation.pl.in
index 25339f9b916..0cd99267cdb 100755
--- a/scripts/mysql_secure_installation.pl.in
+++ b/scripts/mysql_secure_installation.pl.in
@@ -208,7 +208,7 @@ sub remove_anonymous_users {
}
sub remove_remote_root {
- if (do_query("DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';")) {
+ if (do_query("DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');")) {
print " ... Success!\n";
} else {
print " ... Failed!\n";
diff --git a/scripts/mysql_secure_installation.sh b/scripts/mysql_secure_installation.sh
index 94472169c2a..fe93522aa87 100644
--- a/scripts/mysql_secure_installation.sh
+++ b/scripts/mysql_secure_installation.sh
@@ -68,7 +68,8 @@ parse_arguments()
# release or installed source directory and return the path.
find_in_basedir()
{
- return_dir=
+ return_dir=0
+ found=0
case "$1" in
--dir)
return_dir=1; shift
@@ -81,7 +82,8 @@ find_in_basedir()
do
if test -f "$basedir/$dir/$file"
then
- if test -n "$return_dir"
+ found=1
+ if test $return_dir -eq 1
then
echo "$basedir/$dir"
else
@@ -90,6 +92,17 @@ find_in_basedir()
break
fi
done
+
+ if test $found -eq 0
+ then
+ # Test if command is in PATH
+ $file --no-defaults --version > /dev/null 2>&1
+ status=$?
+ if test $status -eq 0
+ then
+ echo $file
+ fi
+ fi
}
cannot_find_file()
@@ -298,7 +311,7 @@ remove_anonymous_users() {
}
remove_remote_root() {
- do_query "DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';"
+ do_query "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
if [ $? -eq 0 ]; then
echo " ... Success!"
else
@@ -355,14 +368,15 @@ cleanup() {
# The actual script starts here
prepare
+find_mysql_client
set_echo_compat
echo
-echo "NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL"
+echo "NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB"
echo " SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!"
echo
-echo "In order to log into MySQL to secure it, we'll need the current"
-echo "password for the root user. If you've just installed MySQL, and"
+echo "In order to log into MariaDB to secure it, we'll need the current"
+echo "password for the root user. If you've just installed MariaDB, and"
echo "you haven't set the root password yet, the password will be blank,"
echo "so you should just press enter here."
echo
@@ -374,7 +388,7 @@ get_root_password
# Set the root password
#
-echo "Setting the root password ensures that nobody can log into the MySQL"
+echo "Setting the root password ensures that nobody can log into the MariaDB"
echo "root user without the proper authorisation."
echo
@@ -403,8 +417,8 @@ echo
# Remove anonymous users
#
-echo "By default, a MySQL installation has an anonymous user, allowing anyone"
-echo "to log into MySQL without having to have a user account created for"
+echo "By default, a MariaDB installation has an anonymous user, allowing anyone"
+echo "to log into MariaDB without having to have a user account created for"
echo "them. This is intended only for testing, and to make the installation"
echo "go a bit smoother. You should remove them before moving into a"
echo "production environment."
@@ -443,7 +457,7 @@ echo
# Remove test database
#
-echo "By default, MySQL comes with a database named 'test' that anyone can"
+echo "By default, MariaDB comes with a database named 'test' that anyone can"
echo "access. This is also intended only for testing, and should be removed"
echo "before moving into a production environment."
echo
@@ -478,8 +492,7 @@ echo
cleanup
echo
-echo "All done! If you've completed all of the above steps, your MySQL"
+echo "All done! If you've completed all of the above steps, your MariaDB"
echo "installation should now be secure."
echo
-echo "Thanks for using MySQL!"
-
+echo "Thanks for using MariaDB!"
diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql
index 69fc1b8a052..44fadcc6e00 100644
--- a/scripts/mysql_system_tables_fix.sql
+++ b/scripts/mysql_system_tables_fix.sql
@@ -58,7 +58,7 @@ ALTER TABLE tables_priv
COLLATE utf8_general_ci DEFAULT '' NOT NULL,
MODIFY Table_priv set('Select','Insert','Update','Delete','Create',
'Drop','Grant','References','Index','Alter',
- 'Create View','Show view')
+ 'Create View','Show view','Trigger')
COLLATE utf8_general_ci DEFAULT '' NOT NULL,
COMMENT='Table privileges';
@@ -584,8 +584,6 @@ ALTER TABLE host MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAU
ALTER TABLE db ADD Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
ALTER TABLE db MODIFY Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
-ALTER TABLE tables_priv MODIFY Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL;
-
UPDATE user SET Trigger_priv=Super_priv WHERE @hadTriggerPriv = 0;
ALTER TABLE user ADD plugin char(60) CHARACTER SET latin1 DEFAULT '' NOT NULL, ADD auth_string TEXT NOT NULL;
diff --git a/server-tools/Makefile.am b/server-tools/Makefile.am
index 96e9d5a946e..80103d195f5 100644
--- a/server-tools/Makefile.am
+++ b/server-tools/Makefile.am
@@ -15,6 +15,3 @@
SUBDIRS = . instance-manager
DIST_SUBDIRS = . instance-manager
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/server-tools/instance-manager/CMakeLists.txt b/server-tools/instance-manager/CMakeLists.txt
index a1f24b2682d..2d04e522a6d 100755
--- a/server-tools/instance-manager/CMakeLists.txt
+++ b/server-tools/instance-manager/CMakeLists.txt
@@ -36,3 +36,5 @@ TARGET_LINK_LIBRARIES(mysqlmanager debug dbug mysys strings taocrypt vio yassl z
IF(EMBED_MANIFESTS)
MYSQL_EMBED_MANIFEST("mysqlmanager" "asInvoker")
ENDIF(EMBED_MANIFESTS)
+
+INSTALL(TARGETS mysqlmanager DESTINATION bin COMPONENT runtime)
diff --git a/server-tools/instance-manager/instance_options.cc b/server-tools/instance-manager/instance_options.cc
index 8b96d6f0f96..725089e2f42 100644
--- a/server-tools/instance-manager/instance_options.cc
+++ b/server-tools/instance-manager/instance_options.cc
@@ -303,7 +303,6 @@ bool Instance_options::fill_log_options()
enum { MAX_LOG_OPTION_LENGTH= 256 };
char datadir[MAX_LOG_OPTION_LENGTH];
char hostname[MAX_LOG_OPTION_LENGTH];
- uint hostname_length;
struct log_files_st
{
const char *name;
@@ -335,8 +334,6 @@ bool Instance_options::fill_log_options()
strmov(hostname, "mysql");
hostname[MAX_LOG_OPTION_LENGTH - 1]= 0; /* Safety */
- hostname_length= strlen(hostname);
-
for (log_files= logs_st; log_files->name; log_files++)
{
diff --git a/server-tools/instance-manager/options.cc b/server-tools/instance-manager/options.cc
index 75a18c5b43a..b9f8b103315 100644
--- a/server-tools/instance-manager/options.cc
+++ b/server-tools/instance-manager/options.cc
@@ -153,14 +153,14 @@ static struct my_option my_long_options[] =
#ifndef __WIN__
{ "angel-pid-file", OPT_ANGEL_PID_FILE, "Pid file for angel process.",
- (uchar* *) &Options::Daemon::angel_pid_file_name,
- (uchar* *) &Options::Daemon::angel_pid_file_name,
+ &Options::Daemon::angel_pid_file_name,
+ &Options::Daemon::angel_pid_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ "bind-address", OPT_BIND_ADDRESS, "Bind address to use for connection.",
- (uchar* *) &Options::Main::bind_address,
- (uchar* *) &Options::Main::bind_address,
+ &Options::Main::bind_address,
+ &Options::Main::bind_address,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "check-password-file", OPT_CHECK_PASSWORD_FILE,
@@ -173,15 +173,15 @@ static struct my_option my_long_options[] =
#ifndef DBUG_OFF
{"debug", '#', "Debug log.",
- (uchar* *) &Options::Debug::config_str,
- (uchar* *) &Options::Debug::config_str,
+ &Options::Debug::config_str,
+ &Options::Debug::config_str,
0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif
{ "default-mysqld-path", OPT_MYSQLD_PATH, "Where to look for MySQL"
" Server binary.",
- (uchar* *) &Options::Main::default_mysqld_path,
- (uchar* *) &Options::Main::default_mysqld_path,
+ &Options::Main::default_mysqld_path,
+ &Options::Main::default_mysqld_path,
0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0 },
{ "drop-user", OPT_DROP_USER,
@@ -194,8 +194,8 @@ static struct my_option my_long_options[] =
#ifdef __WIN__
{ "install", OPT_INSTALL_SERVICE, "Install as system service.",
- (uchar* *) &Options::Service::install_as_service,
- (uchar* *) &Options::Service::install_as_service,
+ &Options::Service::install_as_service,
+ &Options::Service::install_as_service,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 },
#endif
@@ -205,22 +205,22 @@ static struct my_option my_long_options[] =
#ifndef __WIN__
{ "log", OPT_LOG, "Path to log file. Used only with --run-as-service.",
- (uchar* *) &Options::Daemon::log_file_name,
- (uchar* *) &Options::Daemon::log_file_name,
+ &Options::Daemon::log_file_name,
+ &Options::Daemon::log_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ "monitoring-interval", OPT_MONITORING_INTERVAL, "Interval to monitor"
" instances in seconds.",
- (uchar* *) &Options::Main::monitoring_interval,
- (uchar* *) &Options::Main::monitoring_interval,
+ &Options::Main::monitoring_interval,
+ &Options::Main::monitoring_interval,
0, GET_UINT, REQUIRED_ARG, DEFAULT_MONITORING_INTERVAL,
0, 0, 0, 0, 0 },
{ "mysqld-safe-compatible", OPT_MYSQLD_SAFE_COMPATIBLE,
"Start Instance Manager in mysqld_safe-compatible manner.",
- (uchar* *) &Options::Main::mysqld_safe_compatible,
- (uchar* *) &Options::Main::mysqld_safe_compatible,
+ &Options::Main::mysqld_safe_compatible,
+ &Options::Main::mysqld_safe_compatible,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 },
{ "print-password-line", OPT_PRINT_PASSWORD_LINE,
@@ -228,61 +228,61 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ "password", OPT_PASSWORD, "Password to update the password file.",
- (uchar* *) &Options::User_management::password,
- (uchar* *) &Options::User_management::password,
+ &Options::User_management::password,
+ &Options::User_management::password,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "password-file", OPT_PASSWORD_FILE,
"Look for Instance Manager users and passwords here.",
- (uchar* *) &Options::Main::password_file_name,
- (uchar* *) &Options::Main::password_file_name,
+ &Options::Main::password_file_name,
+ &Options::Main::password_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "pid-file", OPT_PID_FILE, "Pid file to use.",
- (uchar* *) &Options::Main::pid_file_name,
- (uchar* *) &Options::Main::pid_file_name,
+ &Options::Main::pid_file_name,
+ &Options::Main::pid_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "port", OPT_PORT, "Port number to use for connections.",
- (uchar* *) &Options::Main::port_number,
- (uchar* *) &Options::Main::port_number,
+ &Options::Main::port_number,
+ &Options::Main::port_number,
0, GET_UINT, REQUIRED_ARG, DEFAULT_PORT, 0, 0, 0, 0, 0 },
#ifdef __WIN__
{ "remove", OPT_REMOVE_SERVICE, "Remove system service.",
- (uchar* *) &Options::Service::remove_service,
- (uchar* *) &Options::Service::remove_service,
+ &Options::Service::remove_service,
+ &Options::Service::remove_service,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0},
#else
{ "run-as-service", OPT_RUN_AS_SERVICE,
"Daemonize and start angel process.",
- (uchar* *) &Options::Daemon::run_as_service,
+ &Options::Daemon::run_as_service,
0, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0 },
#endif
#ifndef __WIN__
{ "socket", OPT_SOCKET, "Socket file to use for connection.",
- (uchar* *) &Options::Main::socket_file_name,
- (uchar* *) &Options::Main::socket_file_name,
+ &Options::Main::socket_file_name,
+ &Options::Main::socket_file_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
#ifdef __WIN__
{ "standalone", OPT_STAND_ALONE, "Run the application in stand alone mode.",
- (uchar* *) &Options::Service::stand_alone,
- (uchar* *) &Options::Service::stand_alone,
+ &Options::Service::stand_alone,
+ &Options::Service::stand_alone,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 0, 0},
#else
{ "user", OPT_USER, "Username to start mysqlmanager.",
- (uchar* *) &Options::Daemon::user,
- (uchar* *) &Options::Daemon::user,
+ &Options::Daemon::user,
+ &Options::Daemon::user,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
#endif
{ "username", OPT_USERNAME,
"Username to update the password file.",
- (uchar* *) &Options::User_management::user_name,
- (uchar* *) &Options::User_management::user_name,
+ &Options::User_management::user_name,
+ &Options::User_management::user_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "version", 'V', "Output version information and exit.", 0, 0, 0,
@@ -290,8 +290,8 @@ static struct my_option my_long_options[] =
{ "wait-timeout", OPT_WAIT_TIMEOUT, "The number of seconds IM waits "
"for activity on a connection before closing it.",
- (uchar* *) &net_read_timeout,
- (uchar* *) &net_read_timeout,
+ &net_read_timeout,
+ &net_read_timeout,
0, GET_ULONG, REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0 },
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0 }
diff --git a/sql-bench/Makefile.am b/sql-bench/Makefile.am
index a7aff83e7aa..93f9a61d9d4 100644
--- a/sql-bench/Makefile.am
+++ b/sql-bench/Makefile.am
@@ -81,6 +81,3 @@ SUFFIXES = .sh
$< > $@-t
@CHMOD@ +x $@-t
@MV@ $@-t $@
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/sql-common/Makefile.am b/sql-common/Makefile.am
index 7b883ec2457..2f5a049085f 100644
--- a/sql-common/Makefile.am
+++ b/sql-common/Makefile.am
@@ -15,6 +15,3 @@
## Process this file with automake to create Makefile.in
EXTRA_DIST = client.c pack.c my_time.c my_user.c client_plugin.c
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/sql-common/client.c b/sql-common/client.c
index 18f01661c0a..3788ca9829b 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -2559,6 +2559,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
#endif
init_sigpipe_variables
DBUG_ENTER("mysql_real_connect");
+ LINT_INIT(pkt_scramble_len);
DBUG_PRINT("enter",("host: %s db: %s user: %s",
host ? host : "(Null)",
@@ -2986,6 +2987,11 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
goto error;
}
+ /*
+ Using init_commands is not supported when connecting from within the
+ server.
+ */
+#ifndef MYSQL_SERVER
if (mysql->options.init_commands)
{
DYNAMIC_ARRAY *init_commands= mysql->options.init_commands;
@@ -2997,18 +3003,26 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
for (; ptr < end_command; ptr++)
{
- MYSQL_RES *res;
+ int status;
+
if (mysql_real_query(mysql,*ptr, (ulong) strlen(*ptr)))
goto error;
- if (mysql->fields)
- {
- if (!(res= cli_use_result(mysql)))
- goto error;
- mysql_free_result(res);
- }
+
+ do {
+ if (mysql->fields)
+ {
+ MYSQL_RES *res;
+ if (!(res= cli_use_result(mysql)))
+ goto error;
+ mysql_free_result(res);
+ }
+ if ((status= mysql_next_result(mysql)) > 0)
+ goto error;
+ } while (status == 0);
}
mysql->reconnect=reconnect;
}
+#endif
#ifndef TO_BE_DELETED
if (mysql->options.rpl_probe && mysql_rpl_probe(mysql))
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index bae77f80b22..26957c5ea43 100755
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -18,7 +18,7 @@ SET(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi")
SET(CMAKE_C_FLAGS_DEBUG
"${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX -DUSE_SYMDIR /Zi")
-SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /MAP /MAPINFO:EXPORTS")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/extra/yassl/include
@@ -160,3 +160,8 @@ SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
ADD_LIBRARY(udf_example MODULE udf_example.c udf_example.def)
ADD_DEPENDENCIES(udf_example strings GenError)
TARGET_LINK_LIBRARIES(udf_example strings wsock32)
+
+INSTALL(TARGETS mysqld
+ RUNTIME DESTINATION bin COMPONENT runtime
+ LIBRARY DESTINATION lib COMPONENT runtime
+ ARCHIVE DESTINATION lib COMPONENT runtime)
diff --git a/sql/Makefile.am b/sql/Makefile.am
index 13a60ba5c79..f7a3945311f 100644
--- a/sql/Makefile.am
+++ b/sql/Makefile.am
@@ -201,6 +201,3 @@ install-exec-hook:
test ! -x mysqld-debug$(EXEEXT) || $(INSTALL_PROGRAM) mysqld-debug$(EXEEXT) $(DESTDIR)$(libexecdir)
test ! -f mysqld-debug.sym.gz || $(INSTALL_DATA) mysqld-debug.sym.gz $(DESTDIR)$(pkglibdir)
test ! -f mysqld.sym.gz || $(INSTALL_DATA) mysqld.sym.gz $(DESTDIR)$(pkglibdir)
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/sql/authors.h b/sql/authors.h
index 4a321bebb7d..bab319e3dcb 100644
--- a/sql/authors.h
+++ b/sql/authors.h
@@ -86,6 +86,7 @@ struct show_table_authors_st show_table_authors[]= {
{ "Eric Herman", "Amsterdam, Netherlands", "Bug fixing - federated" },
{ "Andrey Hristov", "Walldorf, Germany", "Event scheduler (5.1)" },
{ "Alexander (Alexi) Ivanov", "St. Petersburg, Russia", "Replication" },
+ { "Mattias Jonsson", "Uppsala, Sweden", "Partitioning" },
{ "Alexander (Salle) Keremidarski", "Sofia, Bulgaria",
"Bug fixing" },
{ "Mats Kindahl", "Storvreta, Sweden", "Replication" },
diff --git a/sql/create_options.cc b/sql/create_options.cc
index 6d682853ae6..4478fc14791 100644
--- a/sql/create_options.cc
+++ b/sql/create_options.cc
@@ -136,9 +136,10 @@ static bool set_one_value(ha_create_table_option *opt,
DBUG_RETURN(0);
}
- my_option optp= { opt->name, 1, 0, (uchar **)val, 0, 0, GET_ULL,
- REQUIRED_ARG, opt->def_value, opt->min_value, opt->max_value,
- 0, opt->block_size, 0};
+ my_option optp=
+ { opt->name, 1, 0, (uchar **)val, 0, 0, GET_ULL,
+ REQUIRED_ARG, opt->def_value, opt->min_value, opt->max_value,
+ 0, (long) opt->block_size, 0};
ulonglong orig_val= strtoull(value->str, NULL, 10);
my_bool unused;
@@ -167,7 +168,7 @@ static bool set_one_value(ha_create_table_option *opt,
{
uint *val= (uint *)((char *)base + opt->offset), num;
- *val= opt->def_value;
+ *val= (uint) opt->def_value;
if (!value->str)
DBUG_RETURN(0);
@@ -600,6 +601,7 @@ engine_option_value *merge_engine_table_options(engine_option_value *first,
{
engine_option_value *end, *opt;
DBUG_ENTER("merge_engine_table_options");
+ LINT_INIT(end);
/* find last element */
if (first && second)
diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc
index 9b428ed6ec9..959f6ec06c0 100644
--- a/sql/event_data_objects.cc
+++ b/sql/event_data_objects.cc
@@ -833,8 +833,9 @@ bool get_next_time(const Time_zone *time_zone, my_time_t *next,
}
else
{
- long diff_months= (long) (local_now.year - local_start.year)*12 +
- (local_now.month - local_start.month);
+ long diff_months= ((long) local_now.year - (long) local_start.year)*12 +
+ ((long) local_now.month - (long) local_start.month);
+
/*
Unlike for seconds above, the formula below returns the interval
that, when added to the local_start, will give the time in the
@@ -1432,7 +1433,10 @@ Event_job_data::execute(THD *thd, bool drop)
thd->set_query(sp_sql.c_ptr_safe(), sp_sql.length());
{
- Parser_state parser_state(thd, thd->query(), thd->query_length());
+ Parser_state parser_state;
+ if (parser_state.init(thd, thd->query(), thd->query_length()))
+ goto end;
+
lex_start(thd);
if (parse_sql(thd, & parser_state, creation_ctx))
diff --git a/sql/event_data_objects.h b/sql/event_data_objects.h
index e32077b9c97..1ca619b8ed6 100644
--- a/sql/event_data_objects.h
+++ b/sql/event_data_objects.h
@@ -89,9 +89,9 @@ public:
my_time_t execute_at;
my_time_t starts;
my_time_t ends;
- my_bool starts_null;
- my_bool ends_null;
- my_bool execute_at_null;
+ bool starts_null;
+ bool ends_null;
+ bool execute_at_null;
longlong expression;
interval_type interval;
diff --git a/sql/event_db_repository.cc b/sql/event_db_repository.cc
index 82f9d354888..d1fa971847b 100644
--- a/sql/event_db_repository.cc
+++ b/sql/event_db_repository.cc
@@ -474,7 +474,8 @@ Event_db_repository::table_scan_all_for_i_s(THD *thd, TABLE *schema_table,
READ_RECORD read_record_info;
DBUG_ENTER("Event_db_repository::table_scan_all_for_i_s");
- init_read_record(&read_record_info, thd, event_table, NULL, 1, 0, FALSE);
+ if (init_read_record(&read_record_info, thd, event_table, NULL, 1, 0, FALSE))
+ DBUG_RETURN(TRUE);
/*
rr_sequential, in read_record(), returns 137==HA_ERR_END_OF_FILE,
@@ -609,7 +610,7 @@ Event_db_repository::open_event_table(THD *thd, enum thr_lock_type lock_type,
bool
Event_db_repository::create_event(THD *thd, Event_parse_data *parse_data,
- my_bool create_if_not)
+ bool create_if_not)
{
int ret= 1;
TABLE *table= NULL;
@@ -960,7 +961,9 @@ Event_db_repository::drop_events_by_field(THD *thd,
DBUG_VOID_RETURN;
/* only enabled events are in memory, so we go now and delete the rest */
- init_read_record(&read_record_info, thd, table, NULL, 1, 0, FALSE);
+ if (init_read_record(&read_record_info, thd, table, NULL, 1, 0, FALSE))
+ goto end;
+
while (!ret && !(read_record_info.read_record(&read_record_info)) )
{
char *et_field= get_field(thd->mem_root, table->field[field]);
@@ -982,8 +985,9 @@ Event_db_repository::drop_events_by_field(THD *thd,
}
}
end_read_record(&read_record_info);
- close_thread_tables(thd);
+end:
+ close_thread_tables(thd);
DBUG_VOID_RETURN;
}
diff --git a/sql/event_db_repository.h b/sql/event_db_repository.h
index ef778407d1e..7ff17558572 100644
--- a/sql/event_db_repository.h
+++ b/sql/event_db_repository.h
@@ -73,7 +73,7 @@ public:
Event_db_repository(){}
bool
- create_event(THD *thd, Event_parse_data *parse_data, my_bool create_if_not);
+ create_event(THD *thd, Event_parse_data *parse_data, bool create_if_not);
bool
update_event(THD *thd, Event_parse_data *parse_data, LEX_STRING *new_dbname,
diff --git a/sql/event_parse_data.h b/sql/event_parse_data.h
index 8b42eb23937..01cdc685c46 100644
--- a/sql/event_parse_data.h
+++ b/sql/event_parse_data.h
@@ -70,9 +70,9 @@ public:
my_time_t starts;
my_time_t ends;
my_time_t execute_at;
- my_bool starts_null;
- my_bool ends_null;
- my_bool execute_at_null;
+ bool starts_null;
+ bool ends_null;
+ bool execute_at_null;
sp_name *identifier;
Item* item_expression;
diff --git a/sql/events.cc b/sql/events.cc
index 0f3fc8eee4a..1b794edb5ec 100644
--- a/sql/events.cc
+++ b/sql/events.cc
@@ -917,7 +917,7 @@ Events::fill_schema_events(THD *thd, TABLE_LIST *tables, COND * /* cond */)
*/
bool
-Events::init(my_bool opt_noacl_or_bootstrap)
+Events::init(bool opt_noacl_or_bootstrap)
{
THD *thd;
@@ -1214,7 +1214,12 @@ Events::load_events_from_db(THD *thd)
DBUG_RETURN(TRUE);
}
- init_read_record(&read_record_info, thd, table, NULL, 0, 1, FALSE);
+ if (init_read_record(&read_record_info, thd, table, NULL, 0, 1, FALSE))
+ {
+ close_thread_tables(thd);
+ DBUG_RETURN(TRUE);
+ }
+
while (!(read_record_info.read_record(&read_record_info)))
{
Event_queue_element *et;
diff --git a/sql/events.h b/sql/events.h
index 2bc87517748..a3c98d84f00 100644
--- a/sql/events.h
+++ b/sql/events.h
@@ -92,7 +92,7 @@ public:
get_db_repository() { return db_repository; }
static bool
- init(my_bool opt_noacl);
+ init(bool opt_noacl);
static void
deinit();
diff --git a/sql/field.cc b/sql/field.cc
index 03d78706f95..56f45158b7f 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -57,7 +57,7 @@ const char field_separator=',';
((ulong) ((LL(1) << min(arg, 4) * 8) - LL(1)))
#define ASSERT_COLUMN_MARKED_FOR_READ DBUG_ASSERT(!table || (!table->read_set || bitmap_is_set(table->read_set, field_index)))
-#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED DBUG_ASSERT(!table || (!table->write_set || bitmap_is_set(table->write_set, field_index) || bitmap_is_set(&table->vcol_set, field_index)))
+#define ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED DBUG_ASSERT(!table || (!table->write_set || bitmap_is_set(table->write_set, field_index) || bitmap_is_set(table->vcol_set, field_index)))
/*
Rules for merging different types of fields in UNION
@@ -1284,7 +1284,7 @@ static bool test_if_real(const char *str,int length, CHARSET_INFO *cs)
This is used for printing bit_fields as numbers while debugging.
*/
-String *Field::val_int_as_str(String *val_buffer, my_bool unsigned_val)
+String *Field::val_int_as_str(String *val_buffer, bool unsigned_val)
{
ASSERT_COLUMN_MARKED_FOR_READ;
CHARSET_INFO *cs= &my_charset_bin;
@@ -5319,7 +5319,6 @@ String *Field_time::val_str(String *val_buffer,
bool Field_time::get_date(MYSQL_TIME *ltime, uint fuzzydate)
{
- long tmp;
THD *thd= table ? table->in_use : current_thd;
if (!(fuzzydate & TIME_FUZZY_DATE))
{
@@ -5329,19 +5328,7 @@ bool Field_time::get_date(MYSQL_TIME *ltime, uint fuzzydate)
thd->row_count);
return 1;
}
- tmp=(long) sint3korr(ptr);
- ltime->neg=0;
- if (tmp < 0)
- {
- ltime->neg= 1;
- tmp=-tmp;
- }
- ltime->hour=tmp/10000;
- tmp-=ltime->hour*10000;
- ltime->minute= tmp/100;
- ltime->second= tmp % 100;
- ltime->year= ltime->month= ltime->day= ltime->second_part= 0;
- return 0;
+ return Field_time::get_time(ltime);
}
@@ -6722,8 +6709,7 @@ void Field_string::sql_type(String &res) const
length= cs->cset->snprintf(cs,(char*) res.ptr(),
res.alloced_length(), "%s(%d)",
- ((type() == MYSQL_TYPE_VAR_STRING &&
- !thd->variables.new_mode) ?
+ (type() == MYSQL_TYPE_VAR_STRING ?
(has_charset() ? "varchar" : "varbinary") :
(has_charset() ? "char" : "binary")),
(int) field_length / charset()->mbmaxlen);
@@ -6875,7 +6861,7 @@ int Field_string::do_save_field_metadata(uchar *metadata_ptr)
*/
int Field_string::pack_cmp(const uchar *a, const uchar *b, uint length,
- my_bool insert_or_update)
+ bool insert_or_update)
{
uint a_length, b_length;
if (length > 255)
@@ -6913,7 +6899,7 @@ int Field_string::pack_cmp(const uchar *a, const uchar *b, uint length,
*/
int Field_string::pack_cmp(const uchar *key, uint length,
- my_bool insert_or_update)
+ bool insert_or_update)
{
uint row_length, local_key_length;
uchar *end;
@@ -7392,7 +7378,7 @@ Field_varstring::unpack(uchar *to, const uchar *from,
int Field_varstring::pack_cmp(const uchar *a, const uchar *b,
uint key_length_arg,
- my_bool insert_or_update)
+ bool insert_or_update)
{
uint a_length, b_length;
if (key_length_arg > 255)
@@ -7413,7 +7399,7 @@ int Field_varstring::pack_cmp(const uchar *a, const uchar *b,
int Field_varstring::pack_cmp(const uchar *b, uint key_length_arg,
- my_bool insert_or_update)
+ bool insert_or_update)
{
uchar *a= ptr+ length_bytes;
uint a_length= length_bytes == 1 ? (uint) *ptr : uint2korr(ptr);
@@ -8144,7 +8130,7 @@ const uchar *Field_blob::unpack(uchar *to,
/* Keys for blobs are like keys on varchars */
int Field_blob::pack_cmp(const uchar *a, const uchar *b, uint key_length_arg,
- my_bool insert_or_update)
+ bool insert_or_update)
{
uint a_length, b_length;
if (key_length_arg > 255)
@@ -8165,7 +8151,7 @@ int Field_blob::pack_cmp(const uchar *a, const uchar *b, uint key_length_arg,
int Field_blob::pack_cmp(const uchar *b, uint key_length_arg,
- my_bool insert_or_update)
+ bool insert_or_update)
{
uchar *a;
uint a_length, b_length;
@@ -8715,7 +8701,13 @@ int Field_set::store(longlong nr, bool unsigned_val)
{
ASSERT_COLUMN_MARKED_FOR_WRITE_OR_COMPUTED;
int error= 0;
- ulonglong max_nr= set_bits(ulonglong, typelib->count);
+ ulonglong max_nr;
+
+ if (sizeof(ulonglong)*8 <= typelib->count)
+ max_nr= ULONGLONG_MAX;
+ else
+ max_nr= (ULL(1) << typelib->count) - 1;
+
if ((ulonglong) nr > max_nr)
{
nr&= max_nr;
diff --git a/sql/field.h b/sql/field.h
index 9b31cbc7b70..ca400caac59 100644
--- a/sql/field.h
+++ b/sql/field.h
@@ -64,29 +64,20 @@ private:
*/
enum_field_types field_type; /* Real field type*/
/* Flag indicating that the field is physically stored in the database */
- my_bool stored_in_db;
+ bool stored_in_db;
/* Flag indicating that the field used in a partitioning expression */
- my_bool in_partitioning_expr;
+ bool in_partitioning_expr;
public:
/* The expression to compute the value of the virtual column */
Item *expr_item;
/* Text representation of the defining expression */
LEX_STRING expr_str;
- /*
- The list of items created when the defining expression for the virtual
- column is being parsed and validated. These items are freed in the closefrm
- function when the table containing this virtual column is removed from
- the TABLE cache.
- TODO. Items for all different virtual columns of a table should be put into
- one list attached to the TABLE structure.
- */
- Item *item_free_list;
Virtual_column_info()
: field_type((enum enum_field_types)MYSQL_TYPE_VIRTUAL),
stored_in_db(FALSE), in_partitioning_expr(FALSE),
- expr_item(NULL), item_free_list(NULL)
+ expr_item(NULL)
{
expr_str.str= NULL;
expr_str.length= 0;
@@ -226,7 +217,7 @@ public:
This trickery is used to decrease a number of malloc calls.
*/
virtual String *val_str(String*,String *)=0;
- String *val_int_as_str(String *val_buffer, my_bool unsigned_flag);
+ String *val_int_as_str(String *val_buffer, bool unsigned_flag);
/*
str_needs_quotes() returns TRUE if the value returned by val_str() needs
to be quoted when used in constructing an SQL query.
@@ -525,10 +516,10 @@ public:
{ return max_length;}
virtual int pack_cmp(const uchar *a,const uchar *b, uint key_length_arg,
- my_bool insert_or_update)
+ bool insert_or_update)
{ return cmp(a,b); }
virtual int pack_cmp(const uchar *b, uint key_length_arg,
- my_bool insert_or_update)
+ bool insert_or_update)
{ return cmp(ptr,b); }
uint offset(uchar *record)
{
@@ -794,7 +785,7 @@ public:
/* base class for float and double and decimal (old one) */
class Field_real :public Field_num {
public:
- my_bool not_fixed;
+ bool not_fixed;
Field_real(uchar *ptr_arg, uint32 len_arg, uchar *null_ptr_arg,
uchar null_bit_arg, utype unireg_check_arg,
@@ -1221,7 +1212,7 @@ public:
NONE, field_name_arg, dec_arg, 0, 0)
{}
Field_double(uint32 len_arg, bool maybe_null_arg, const char *field_name_arg,
- uint8 dec_arg, my_bool not_fixed_arg)
+ uint8 dec_arg, bool not_fixed_arg)
:Field_real((uchar*) 0, len_arg, maybe_null_arg ? (uchar*) "" : 0, (uint) 0,
NONE, field_name_arg, dec_arg, 0, 0)
{not_fixed= not_fixed_arg; }
@@ -1312,7 +1303,7 @@ public:
Field::set_default();
}
/* Get TIMESTAMP field value as seconds since begging of Unix Epoch */
- inline long get_timestamp(my_bool *null_value)
+ inline long get_timestamp(bool *null_value)
{
if ((*null_value= is_null()))
return 0;
@@ -1599,8 +1590,8 @@ public:
const Relay_log_info *rli, uint16 mflags);
uint row_pack_length() { return (field_length + 1); }
int pack_cmp(const uchar *a,const uchar *b,uint key_length,
- my_bool insert_or_update);
- int pack_cmp(const uchar *b,uint key_length,my_bool insert_or_update);
+ bool insert_or_update);
+ int pack_cmp(const uchar *b,uint key_length,bool insert_or_update);
uint packed_col_length(const uchar *to, uint length);
uint max_packed_col_length(uint max_length);
uint size_of() const { return sizeof(*this); }
@@ -1682,8 +1673,8 @@ public:
const uchar *unpack_key(uchar* to, const uchar *from,
uint max_length, bool low_byte_first);
int pack_cmp(const uchar *a, const uchar *b, uint key_length,
- my_bool insert_or_update);
- int pack_cmp(const uchar *b, uint key_length,my_bool insert_or_update);
+ bool insert_or_update);
+ int pack_cmp(const uchar *b, uint key_length,bool insert_or_update);
int cmp_binary(const uchar *a,const uchar *b, uint32 max_length=~0L);
int key_cmp(const uchar *,const uchar*);
int key_cmp(const uchar *str, uint length);
@@ -1868,8 +1859,8 @@ public:
const uchar *unpack_key(uchar* to, const uchar *from,
uint max_length, bool low_byte_first);
int pack_cmp(const uchar *a, const uchar *b, uint key_length,
- my_bool insert_or_update);
- int pack_cmp(const uchar *b, uint key_length,my_bool insert_or_update);
+ bool insert_or_update);
+ int pack_cmp(const uchar *b, uint key_length,bool insert_or_update);
uint packed_col_length(const uchar *col_ptr, uint length);
uint max_packed_col_length(uint max_length);
void free() { value.free(); }
@@ -2231,7 +2222,7 @@ class Copy_field :public Sql_alloc {
public:
uchar *from_ptr,*to_ptr;
uchar *from_null_ptr,*to_null_ptr;
- my_bool *null_row;
+ bool *null_row;
uint from_bit,to_bit;
uint from_length,to_length;
Field *from_field,*to_field;
diff --git a/sql/filesort.cc b/sql/filesort.cc
index 41410929f15..aa808a5e6b5 100644
--- a/sql/filesort.cc
+++ b/sql/filesort.cc
@@ -515,7 +515,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
THD *thd= current_thd;
volatile THD::killed_state *killed= &thd->killed;
handler *file;
- MY_BITMAP *save_read_set, *save_write_set;
+ MY_BITMAP *save_read_set, *save_write_set, *save_vcol_set;
DBUG_ENTER("find_all_keys");
DBUG_PRINT("info",("using: %s",
(select ? select->quick ? "ranges" : "where":
@@ -537,7 +537,8 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
if (! indexfile && ! quick_select)
{
next_pos=(uchar*) 0; /* Find records in sequence */
- file->ha_rnd_init(1);
+ if (file->ha_rnd_init_with_error(1))
+ DBUG_RETURN(HA_POS_ERROR);
file->extra_opt(HA_EXTRA_CACHE,
current_thd->variables.read_buff_size);
}
@@ -551,6 +552,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
/* Remember original bitmaps */
save_read_set= sort_form->read_set;
save_write_set= sort_form->write_set;
+ save_vcol_set= sort_form->vcol_set;
/* Set up temporary column read map for columns used by sort */
bitmap_clear_all(&sort_form->tmp_set);
/* Temporary set for register_used_fields and register_field_in_read_map */
@@ -559,7 +561,8 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
if (select && select->cond)
select->cond->walk(&Item::register_field_in_read_map, 1,
(uchar*) sort_form);
- sort_form->column_bitmaps_set(&sort_form->tmp_set, &sort_form->tmp_set);
+ sort_form->column_bitmaps_set(&sort_form->tmp_set, &sort_form->tmp_set,
+ &sort_form->tmp_set);
for (;;)
{
@@ -568,7 +571,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
if ((error= select->quick->get_next()))
break;
if (!error)
- update_virtual_fields(sort_form);
+ update_virtual_fields(thd, sort_form);
file->position(sort_form->record[0]);
DBUG_EXECUTE_IF("debug_filesort", dbug_print_record(sort_form, TRUE););
}
@@ -587,7 +590,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
{
error=file->ha_rnd_next(sort_form->record[0]);
if (!error)
- update_virtual_fields(sort_form);
+ update_virtual_fields(thd, sort_form);
if (!flag)
{
my_store_ptr(ref_pos,ref_length,record); // Position to row
@@ -642,7 +645,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
DBUG_RETURN(HA_POS_ERROR);
/* Signal we should use orignal column read and write maps */
- sort_form->column_bitmaps_set(save_read_set, save_write_set);
+ sort_form->column_bitmaps_set(save_read_set, save_write_set, save_vcol_set);
DBUG_PRINT("test",("error: %d indexpos: %d",error,indexpos));
if (error != HA_ERR_END_OF_FILE)
@@ -1009,7 +1012,14 @@ static void register_used_fields(SORTPARAM *param)
if ((field= sort_field->field))
{
if (field->table == table)
- bitmap_set_bit(bitmap, field->field_index);
+ {
+ if (field->vcol_info)
+ {
+ Item *vcol_item= field->vcol_info->expr_item;
+ vcol_item->walk(&Item::register_field_in_read_map, 1, (uchar *) 0);
+ }
+ bitmap_set_bit(bitmap, field->field_index);
+ }
}
else
{ // Item
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 26e14ab8dfb..7fd37143205 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -4232,7 +4232,7 @@ void ha_ndbcluster::start_bulk_insert(ha_rows rows)
/**
End of an insert.
*/
-int ha_ndbcluster::end_bulk_insert(bool abort)
+int ha_ndbcluster::end_bulk_insert()
{
int error= 0;
DBUG_ENTER("end_bulk_insert");
diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h
index 9e6d697492a..7c9dba9e30e 100644
--- a/sql/ha_ndbcluster.h
+++ b/sql/ha_ndbcluster.h
@@ -332,7 +332,7 @@ class ha_ndbcluster: public handler
double scan_time();
ha_rows records_in_range(uint inx, key_range *min_key, key_range *max_key);
void start_bulk_insert(ha_rows rows);
- int end_bulk_insert(bool abort);
+ int end_bulk_insert();
static Thd_ndb* seize_thd_ndb();
static void release_thd_ndb(Thd_ndb* thd_ndb);
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index 09c2fbef6f3..e76b3607249 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -59,6 +59,8 @@
#include <mysql/plugin.h>
+#include "debug_sync.h"
+
static const char *ha_par_ext= ".par";
#ifdef NOT_USED
static int free_share(PARTITION_SHARE * share);
@@ -87,7 +89,9 @@ static int partition_initialize(void *p)
partition_hton->create= partition_create_handler;
partition_hton->partition_flags= partition_flags;
partition_hton->alter_table_flags= alter_table_flags;
- partition_hton->flags= HTON_NOT_USER_SELECTABLE | HTON_HIDDEN;
+ partition_hton->flags= HTON_NOT_USER_SELECTABLE |
+ HTON_HIDDEN |
+ HTON_TEMPORARY_NOT_SUPPORTED;
return 0;
}
@@ -356,7 +360,7 @@ bool ha_partition::initialize_partition(MEM_ROOT *mem_root)
}
else if (get_from_handler_file(table_share->normalized_path.str, mem_root))
{
- mem_alloc_error(2);
+ my_message(ER_UNKNOWN_ERROR, "Failed to read from the .par file", MYF(0));
DBUG_RETURN(1);
}
/*
@@ -691,6 +695,7 @@ int ha_partition::rename_partitions(const char *path)
DBUG_ASSERT(!strcmp(path, get_canonical_filename(m_file[0], path,
norm_name_buff)));
+ DEBUG_SYNC(ha_thd(), "before_rename_partitions");
if (temp_partitions)
{
/*
@@ -992,7 +997,7 @@ static bool print_admin_msg(THD* thd, const char* msg_type,
Protocol *protocol= thd->protocol;
uint length, msg_length;
char msgbuf[HA_MAX_MSG_BUF];
- char name[NAME_LEN*2+2];
+ char name[SAFE_NAME_LEN*2+2];
va_start(args, fmt);
msg_length= my_vsnprintf(msgbuf, sizeof(msgbuf), fmt, args);
@@ -1661,7 +1666,7 @@ int ha_partition::copy_partitions(ulonglong * const copied,
uint32 new_part;
late_extra_cache(reorg_part);
- if ((result= file->ha_rnd_init(1)))
+ if ((result= file->ha_rnd_init_with_error(1)))
goto error;
while (TRUE)
{
@@ -1835,6 +1840,13 @@ uint ha_partition::del_ren_cre_table(const char *from,
handler **file, **abort_file;
DBUG_ENTER("del_ren_cre_table()");
+ /* Not allowed to create temporary partitioned tables */
+ if (create_info && create_info->options & HA_LEX_CREATE_TMP_TABLE)
+ {
+ my_error(ER_PARTITION_NO_TEMPORARY, MYF(0));
+ DBUG_RETURN(TRUE);
+ }
+
if (get_from_handler_file(from, ha_thd()->mem_root))
DBUG_RETURN(TRUE);
DBUG_ASSERT(m_file_buffer);
@@ -2610,6 +2622,7 @@ int ha_partition::open(const char *name, int mode, uint test_if_locked)
DBUG_RETURN(0);
err_handler:
+ DEBUG_SYNC(ha_thd(), "partition_open_error");
while (file-- != m_file)
(*file)->close();
bitmap_free(&m_bulk_insert_started);
@@ -3416,18 +3429,17 @@ ha_rows ha_partition::guess_bulk_insert_rows()
SYNOPSIS
end_bulk_insert()
- abort 1 if table will be deleted (error condition)
RETURN VALUE
>0 Error code
0 Success
Note: end_bulk_insert can be called without start_bulk_insert
- being called, see bug¤44108.
+ being called, see bug#44108.
*/
-int ha_partition::end_bulk_insert(bool abort)
+int ha_partition::end_bulk_insert()
{
int error= 0;
uint i;
@@ -3440,7 +3452,7 @@ int ha_partition::end_bulk_insert(bool abort)
{
int tmp;
if (bitmap_is_set(&m_bulk_insert_started, i) &&
- (tmp= m_file[i]->ha_end_bulk_insert(abort)))
+ (tmp= m_file[i]->ha_end_bulk_insert()))
error= tmp;
}
bitmap_clear_all(&m_bulk_insert_started);
@@ -4183,6 +4195,58 @@ int ha_partition::common_first_last(uchar *buf)
/*
+ Optimization of the default implementation to take advantage of dynamic
+ partition pruning.
+*/
+int ha_partition::index_read_idx_map(uchar *buf, uint index,
+ const uchar *key,
+ key_part_map keypart_map,
+ enum ha_rkey_function find_flag)
+{
+ int error= HA_ERR_KEY_NOT_FOUND;
+ DBUG_ENTER("ha_partition::index_read_idx_map");
+
+ if (find_flag == HA_READ_KEY_EXACT)
+ {
+ uint part;
+ m_start_key.key= key;
+ m_start_key.keypart_map= keypart_map;
+ m_start_key.flag= find_flag;
+ m_start_key.length= calculate_key_len(table, index, m_start_key.key,
+ m_start_key.keypart_map);
+
+ get_partition_set(table, buf, index, &m_start_key, &m_part_spec);
+
+ /* How can it be more than one partition with the current use? */
+ DBUG_ASSERT(m_part_spec.start_part == m_part_spec.end_part);
+
+ for (part= m_part_spec.start_part; part <= m_part_spec.end_part; part++)
+ {
+ if (bitmap_is_set(&(m_part_info->used_partitions), part))
+ {
+ error= m_file[part]->index_read_idx_map(buf, index, key,
+ keypart_map, find_flag);
+ if (error != HA_ERR_KEY_NOT_FOUND &&
+ error != HA_ERR_END_OF_FILE)
+ break;
+ }
+ }
+ }
+ else
+ {
+ /*
+ If not only used with READ_EXACT, we should investigate if possible
+ to optimize for other find_flag's as well.
+ */
+ DBUG_ASSERT(0);
+ /* fall back on the default implementation */
+ error= handler::index_read_idx_map(buf, index, key, keypart_map, find_flag);
+ }
+ DBUG_RETURN(error);
+}
+
+
+/*
Read next record in a forward index scan
SYNOPSIS
diff --git a/sql/ha_partition.h b/sql/ha_partition.h
index e1339abc081..1a9ec5bbf70 100644
--- a/sql/ha_partition.h
+++ b/sql/ha_partition.h
@@ -53,8 +53,7 @@ typedef struct st_ha_data_partition
HA_CAN_FULLTEXT | \
HA_DUPLICATE_POS | \
HA_CAN_SQL_HANDLER | \
- HA_CAN_INSERT_DELAYED | \
- HA_PRIMARY_KEY_REQUIRED_FOR_POSITION)
+ HA_CAN_INSERT_DELAYED)
class ha_partition :public handler
{
private:
@@ -364,7 +363,7 @@ public:
virtual int delete_row(const uchar * buf);
virtual int delete_all_rows(void);
virtual void start_bulk_insert(ha_rows rows);
- virtual int end_bulk_insert(bool);
+ virtual int end_bulk_insert();
private:
ha_rows guess_bulk_insert_rows();
void start_part_bulk_insert(THD *thd, uint part_id);
@@ -448,6 +447,15 @@ public:
virtual int index_init(uint idx, bool sorted);
virtual int index_end();
+ /**
+ @breif
+ Positions an index cursor to the index specified in the hanlde. Fetches the
+ row if available. If the key value is null, begin at first key of the
+ index.
+ */
+ virtual int index_read_idx_map(uchar *buf, uint index, const uchar *key,
+ key_part_map keypart_map,
+ enum ha_rkey_function find_flag);
/*
These methods are used to jump to next or previous entry in the index
scan. There are also methods to jump to first and last entry.
@@ -764,9 +772,6 @@ public:
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION:
Does the storage engine need a PK for position?
- Used with hidden primary key in InnoDB.
- Hidden primary keys cannot be supported by partitioning, since the
- partitioning expressions columns must be a part of the primary key.
(InnoDB)
HA_FILE_BASED is always set for partition handler since we use a
diff --git a/sql/handler.cc b/sql/handler.cc
index 1713510e980..94e16499c59 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -59,6 +59,7 @@ static const LEX_STRING sys_table_aliases[]=
{ C_STRING_WITH_LEN("NDB") }, { C_STRING_WITH_LEN("NDBCLUSTER") },
{ C_STRING_WITH_LEN("HEAP") }, { C_STRING_WITH_LEN("MEMORY") },
{ C_STRING_WITH_LEN("MERGE") }, { C_STRING_WITH_LEN("MRG_MYISAM") },
+ { C_STRING_WITH_LEN("Maria") }, { C_STRING_WITH_LEN("Aria") },
{NullS, 0}
};
@@ -2028,6 +2029,10 @@ int ha_delete_table(THD *thd, handlerton *table_type, const char *path,
handler *handler::clone(MEM_ROOT *mem_root)
{
handler *new_handler= get_new_handler(table->s, mem_root, table->s->db_type());
+
+ if (!new_handler)
+ return NULL;
+
/*
Allocate handler->ref here because otherwise ha_open will allocate it
on this->table->mem_root and we will not be able to reclaim that memory
@@ -2035,12 +2040,13 @@ handler *handler::clone(MEM_ROOT *mem_root)
*/
if (!(new_handler->ref= (uchar*) alloc_root(mem_root, ALIGN_SIZE(ref_length)*2)))
return NULL;
- if (new_handler && !new_handler->ha_open(table,
- table->s->normalized_path.str,
- table->db_stat,
- HA_OPEN_IGNORE_IF_LOCKED))
- return new_handler;
- return NULL;
+ if (new_handler->ha_open(table,
+ table->s->normalized_path.str,
+ table->db_stat,
+ HA_OPEN_IGNORE_IF_LOCKED))
+ return NULL;
+ new_handler->cloned= 1; // Marker for debugging
+ return new_handler;
}
@@ -2114,6 +2120,18 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode,
}
+/* Initialize handler for random reading, with error handling */
+
+int handler::ha_rnd_init_with_error(bool scan)
+{
+ int error;
+ if (!(error= ha_rnd_init(scan)))
+ return 0;
+ table->file->print_error(error, MYF(0));
+ return error;
+}
+
+
/**
Read first row (only) from a table.
@@ -2133,9 +2151,11 @@ int handler::read_first_row(uchar * buf, uint primary_key)
if (stats.deleted < 10 || primary_key >= MAX_KEY ||
!(index_flags(primary_key, 0, 0) & HA_READ_ORDER))
{
- (void) ha_rnd_init(1);
- while ((error= ha_rnd_next(buf)) == HA_ERR_RECORD_DELETED) ;
- (void) ha_rnd_end();
+ if ((!(error= ha_rnd_init(1))))
+ {
+ while ((error= ha_rnd_next(buf)) == HA_ERR_RECORD_DELETED) ;
+ (void) ha_rnd_end();
+ }
}
else
{
@@ -4040,7 +4060,8 @@ ha_find_files(THD *thd,const char *db,const char *path,
int error= 0;
DBUG_ENTER("ha_find_files");
DBUG_PRINT("enter", ("db: '%s' path: '%s' wild: '%s' dir: %d",
- db, path, wild ? wild : "NULL", dir));
+ val_or_null(db), val_or_null(path),
+ val_or_null(wild), dir));
st_find_files_args args= {db, path, wild, dir, files};
plugin_foreach(thd, find_files_handlerton,
diff --git a/sql/handler.h b/sql/handler.h
index e12048da18c..6eb496a38cc 100644
--- a/sql/handler.h
+++ b/sql/handler.h
@@ -100,7 +100,10 @@
#define HA_PRIMARY_KEY_IN_READ_INDEX (1 << 15)
/*
If HA_PRIMARY_KEY_REQUIRED_FOR_POSITION is set, it means that to position()
- uses a primary key. Without primary key, we can't call position().
+ uses a primary key given by the record argument.
+ Without primary key, we can't call position().
+ If not set, the position is returned as the current rows position
+ regardless of what argument is given.
*/
#define HA_PRIMARY_KEY_REQUIRED_FOR_POSITION (1 << 16)
#define HA_CAN_RTREEKEYS (1 << 17)
@@ -1037,7 +1040,7 @@ typedef struct st_ha_create_information
ulong avg_row_length;
ulong used_fields;
ulong key_block_size;
- SQL_LIST merge_list;
+ SQL_I_List<TABLE_LIST> merge_list;
handlerton *db_type;
/**
Row type of the table definition.
@@ -1448,6 +1451,7 @@ public:
bool locked;
bool implicit_emptied; /* Can be !=0 only if HEAP */
bool mark_trx_done;
+ bool cloned; /* 1 if this was created with clone */
const COND *pushed_cond;
Item *pushed_idx_cond;
uint pushed_idx_cond_keyno; /* The index which the above condition is for */
@@ -1494,7 +1498,7 @@ public:
key_used_on_scan(MAX_KEY), active_index(MAX_KEY),
ref_length(sizeof(my_off_t)),
ft_handler(0), inited(NONE),
- locked(FALSE), implicit_emptied(FALSE), mark_trx_done(FALSE),
+ locked(FALSE), implicit_emptied(FALSE), mark_trx_done(FALSE), cloned(0),
pushed_cond(0), pushed_idx_cond(NULL),
pushed_idx_cond_keyno(MAX_KEY),
next_insert_id(0), insert_id_for_cur_row(0),
@@ -1537,7 +1541,7 @@ public:
}
/* This is called after index_init() if we need to do a index scan */
virtual int prepare_index_scan() { return 0; }
- int ha_rnd_init(bool scan)
+ int ha_rnd_init(bool scan) __attribute__ ((warn_unused_result))
{
int result;
DBUG_ENTER("ha_rnd_init");
@@ -1552,6 +1556,7 @@ public:
inited=NONE;
DBUG_RETURN(rnd_end());
}
+ int ha_rnd_init_with_error(bool scan) __attribute__ ((warn_unused_result));
int ha_reset();
/* Tell handler (not storage engine) this is start of a new statement */
void ha_start_of_new_statement()
@@ -1591,10 +1596,10 @@ public:
estimation_rows_to_insert= rows;
start_bulk_insert(rows);
}
- int ha_end_bulk_insert(bool abort)
+ int ha_end_bulk_insert()
{
estimation_rows_to_insert= 0;
- return end_bulk_insert(abort);
+ return end_bulk_insert();
}
int ha_bulk_update_row(const uchar *old_data, uchar *new_data,
uint *dup_key_found);
@@ -1826,10 +1831,9 @@ private:
virtual int rnd_next(uchar *buf)=0;
virtual int rnd_pos(uchar * buf, uchar *pos)=0;
/**
- One has to use this method when to find
- random position by record as the plain
- position() call doesn't work for some
- handlers for random position.
+ This function only works for handlers having
+ HA_PRIMARY_KEY_REQUIRED_FOR_POSITION set.
+ It will return the row with the PK given in the record argument.
*/
virtual int rnd_pos_by_record(uchar *record)
{
@@ -1860,6 +1864,12 @@ public:
virtual ha_rows records_in_range(uint inx, key_range *min_key,
key_range *max_key)
{ return (ha_rows) 10; }
+ /*
+ If HA_PRIMARY_KEY_REQUIRED_FOR_POSITION is set, then it sets ref
+ (reference to the row, aka position, with the primary key given in
+ the record).
+ Otherwise it set ref to the current row.
+ */
virtual void position(const uchar *record)=0;
virtual int info(uint)=0; // see my_base.h for full description
virtual void get_dynamic_partition_info(PARTITION_INFO *stat_info,
@@ -2278,7 +2288,7 @@ private:
virtual int repair(THD* thd, HA_CHECK_OPT* check_opt)
{ return HA_ADMIN_NOT_IMPLEMENTED; }
virtual void start_bulk_insert(ha_rows rows) {}
- virtual int end_bulk_insert(bool abort) { return 0; }
+ virtual int end_bulk_insert() { return 0; }
virtual int index_read(uchar * buf, const uchar * key, uint key_len,
enum ha_rkey_function find_flag)
{ return HA_ERR_WRONG_COMMAND; }
diff --git a/sql/hash_filo.h b/sql/hash_filo.h
index ab13d338695..8ddeeeb02fc 100644
--- a/sql/hash_filo.h
+++ b/sql/hash_filo.h
@@ -107,7 +107,7 @@ public:
return entry;
}
- my_bool add(hash_filo_element *entry)
+ bool add(hash_filo_element *entry)
{
if (cache.records == size)
{
diff --git a/sql/item.cc b/sql/item.cc
index 8f393eca79b..f5de67bf422 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -258,8 +258,9 @@ my_decimal *Item::val_decimal_from_int(my_decimal *decimal_value)
my_decimal *Item::val_decimal_from_string(my_decimal *decimal_value)
{
String *res;
+
if (!(res= val_str(&str_value)))
- return 0; // NULL or EOM
+ return 0;
if (str2my_decimal(E_DEC_FATAL_ERROR & ~E_DEC_BAD_NUM,
res->ptr(), res->length(), res->charset(),
@@ -428,8 +429,8 @@ Item::Item(THD *thd, Item *item):
with_sum_func(item->with_sum_func),
fixed(item->fixed),
is_autogenerated_name(item->is_autogenerated_name),
- collation(item->collation),
with_subselect(item->with_subselect),
+ collation(item->collation),
cmp_context(item->cmp_context)
{
next= thd->free_list; // Put in free list
@@ -2879,7 +2880,7 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
unsigned_flag= entry->unsigned_flag;
if (limit_clause_param)
{
- my_bool unused;
+ bool unused;
set_int(entry->val_int(&unused), MY_INT64_NUM_DECIMAL_DIGITS);
item_type= Item::INT_ITEM;
DBUG_RETURN(!unsigned_flag && value.integer < 0 ? 1 : 0);
@@ -3827,7 +3828,7 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list)
int found_match_degree= 0;
Item_ident *cur_field;
int cur_match_degree= 0;
- char name_buff[NAME_LEN+1];
+ char name_buff[SAFE_NAME_LEN+1];
if (find_item->type() == Item::FIELD_ITEM ||
find_item->type() == Item::REF_ITEM)
@@ -3950,7 +3951,7 @@ resolve_ref_in_select_and_group(THD *thd, Item_ident *ref, SELECT_LEX *select)
{
Item **group_by_ref= NULL;
Item **select_ref= NULL;
- ORDER *group_list= (ORDER*) select->group_list.first;
+ ORDER *group_list= select->group_list.first;
bool ambiguous_fields= FALSE;
uint counter;
enum_resolution_type resolution;
@@ -4242,8 +4243,7 @@ Item_field::fix_outer_field(THD *thd, Field **from_field, Item **reference)
context->first_name_resolution_table,
context->last_name_resolution_table,
reference, REPORT_ALL_ERRORS,
- !any_privileges &&
- TRUE, TRUE);
+ !any_privileges, TRUE);
}
return -1;
}
diff --git a/sql/item.h b/sql/item.h
index 05e35e97e04..2158206441e 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -539,17 +539,17 @@ public:
uint name_length; /* Length of name */
int8 marker;
uint8 decimals;
- my_bool maybe_null; /* If item may be null */
- my_bool null_value; /* if item is null */
- my_bool unsigned_flag;
- my_bool with_sum_func;
- my_bool fixed; /* If item fixed with fix_fields */
- my_bool is_autogenerated_name; /* indicate was name of this Item
+ bool maybe_null; /* If item may be null */
+ bool null_value; /* if item is null */
+ bool unsigned_flag;
+ bool with_sum_func;
+ bool fixed; /* If item fixed with fix_fields */
+ bool is_autogenerated_name; /* indicate was name of this Item
autogenerated or set by user */
- DTCollation collation;
- my_bool with_subselect; /* If this item is a subselect or some
+ bool with_subselect; /* If this item is a subselect or some
of its arguments is or contains a
subselect */
+ DTCollation collation;
Item_result cmp_context; /* Comparison context */
// alloc & destruct is done as start of select using sql_alloc
Item();
@@ -890,6 +890,7 @@ public:
set value of aggregate function in case of no rows for grouping were found
*/
virtual void no_rows_in_result() {}
+ virtual void restore_to_before_no_rows_in_result() {}
virtual Item *copy_or_same(THD *thd) { return this; }
virtual Item *copy_andor_structure(THD *thd) { return this; }
virtual Item *real_item() { return this; }
@@ -947,6 +948,21 @@ public:
virtual bool register_field_in_read_map(uchar *arg) { return 0; }
virtual bool enumerate_field_refs_processor(uchar *arg) { return 0; }
virtual bool mark_as_eliminated_processor(uchar *arg) { return 0; }
+
+ /* To call bool function for all arguments */
+ struct bool_func_call_args
+ {
+ Item *original_func_item;
+ void (Item::*bool_function)();
+ };
+ bool call_bool_func_processor(uchar *org_item)
+ {
+ bool_func_call_args *info= (bool_func_call_args*) org_item;
+ /* Avoid recursion, as walk also calls for original item */
+ if (info->original_func_item != this)
+ (this->*(info->bool_function))();
+ return FALSE;
+ }
/*
The next function differs from the previous one that a bitmap to be updated
is passed as uchar *arg.
@@ -1938,7 +1954,7 @@ public:
{ return (uint)(max_length - test(value < 0)); }
bool eq(const Item *, bool binary_cmp) const;
bool check_partition_func_processor(uchar *bool_arg) { return FALSE;}
- bool check_vcol_func_processor(uchar arg) { return FALSE;}
+ bool check_vcol_func_processor(uchar *arg) { return FALSE;}
};
@@ -2477,6 +2493,14 @@ public:
}
bool enumerate_field_refs_processor(uchar *arg)
{ return (*ref)->enumerate_field_refs_processor(arg); }
+ void no_rows_in_result()
+ {
+ (*ref)->no_rows_in_result();
+ }
+ void restore_to_before_no_rows_in_result()
+ {
+ (*ref)->restore_to_before_no_rows_in_result();
+ }
virtual void print(String *str, enum_query_type query_type);
bool result_as_longlong()
{
@@ -2767,6 +2791,7 @@ public:
{
return (*ref)->const_item() ? 0 : OUTER_REF_TABLE_BIT;
}
+ table_map not_null_tables() const { return 0; }
virtual Ref_Type ref_type() { return OUTER_REF; }
bool check_inner_refs_processor(uchar * arg);
};
@@ -2826,7 +2851,7 @@ class Item_int_with_ref :public Item_int
{
Item *ref;
public:
- Item_int_with_ref(longlong i, Item *ref_arg, my_bool unsigned_arg) :
+ Item_int_with_ref(longlong i, Item *ref_arg, bool unsigned_arg) :
Item_int(i), ref(ref_arg)
{
unsigned_flag= unsigned_arg;
@@ -3071,7 +3096,7 @@ public:
class Cached_item :public Sql_alloc
{
public:
- my_bool null_value;
+ bool null_value;
Cached_item() :null_value(0) {}
virtual bool cmp(void)=0;
virtual ~Cached_item(); /*line -e1509 */
@@ -3080,6 +3105,7 @@ public:
class Cached_item_str :public Cached_item
{
Item *item;
+ uint32 value_max_length;
String value,tmp_value;
public:
Cached_item_str(THD *thd, Item *arg);
diff --git a/sql/item_buff.cc b/sql/item_buff.cc
index 13183a33e59..7d025ef518b 100644
--- a/sql/item_buff.cc
+++ b/sql/item_buff.cc
@@ -62,7 +62,9 @@ Cached_item::~Cached_item() {}
*/
Cached_item_str::Cached_item_str(THD *thd, Item *arg)
- :item(arg), value(min(arg->max_length, thd->variables.max_sort_length))
+ :item(arg),
+ value_max_length(min(arg->max_length, thd->variables.max_sort_length)),
+ value(value_max_length)
{}
bool Cached_item_str::cmp(void)
@@ -71,7 +73,7 @@ bool Cached_item_str::cmp(void)
bool tmp;
if ((res=item->val_str(&tmp_value)))
- res->length(min(res->length(), value.alloced_length()));
+ res->length(min(res->length(), value_max_length));
if (null_value != item->null_value)
{
if ((null_value= item->null_value))
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index 6b075c2d4aa..288fa439fad 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -825,7 +825,6 @@ Arg_comparator::can_compare_as_dates(Item *a, Item *b, ulonglong *const_value)
return cmp_type;
}
-
/*
Retrieves correct TIME value from the given item.
@@ -876,7 +875,12 @@ get_time_value(THD *thd, Item ***item_arg, Item **cache_arg,
if (item->const_item() && cache_arg && (item->type() != Item::FUNC_ITEM ||
((Item_func*)item)->functype() != Item_func::GUSERVAR_FUNC))
{
+ Query_arena backup;
+ Query_arena *save_arena= thd->switch_to_arena_for_cached_items(&backup);
Item_cache_int *cache= new Item_cache_int();
+ if (save_arena)
+ thd->set_query_arena(save_arena);
+
/* Mark the cache as non-const to prevent re-caching. */
cache->set_used_tables(1);
cache->store_longlong(item, value);
@@ -912,7 +916,12 @@ int Arg_comparator::set_cmp_func(Item_result_field *owner_arg,
cache_converted_constant can't be used here because it can't
correctly convert a DATETIME value from string to int representation.
*/
+ Query_arena backup;
+ Query_arena *save_arena= thd->switch_to_arena_for_cached_items(&backup);
Item_cache_int *cache= new Item_cache_int();
+ if (save_arena)
+ thd->set_query_arena(save_arena);
+
/* Mark the cache as non-const to prevent re-caching. */
cache->set_used_tables(1);
if (!(*a)->is_datetime())
@@ -1142,7 +1151,12 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
if (item->const_item() && cache_arg && (item->type() != Item::FUNC_ITEM ||
((Item_func*)item)->functype() != Item_func::GUSERVAR_FUNC))
{
+ Query_arena backup;
+ Query_arena *save_arena= thd->switch_to_arena_for_cached_items(&backup);
Item_cache_int *cache= new Item_cache_int(MYSQL_TYPE_DATETIME);
+ if (save_arena)
+ thd->set_query_arena(save_arena);
+
/* Mark the cache as non-const to prevent re-caching. */
cache->set_used_tables(1);
cache->store_longlong(item, value);
@@ -2884,6 +2898,8 @@ Item *Item_func_case::find_item(String *str)
/* Compare every WHEN argument with it and return the first match */
for (uint i=0 ; i < ncases ; i+=2)
{
+ if (args[i]->real_item()->type() == NULL_ITEM)
+ continue;
cmp_type= item_cmp_type(left_result_type, args[i]->result_type());
DBUG_ASSERT(cmp_type != ROW_RESULT);
DBUG_ASSERT(cmp_items[(uint)cmp_type]);
@@ -4122,9 +4138,17 @@ longlong Item_func_in::val_int()
return (longlong) (!null_value && tmp != negated);
}
+ if ((null_value= args[0]->real_item()->type() == NULL_ITEM))
+ return 0;
+
have_null= 0;
for (uint i= 1 ; i < arg_count ; i++)
{
+ if (args[i]->real_item()->type() == NULL_ITEM)
+ {
+ have_null= TRUE;
+ continue;
+ }
Item_result cmp_type= item_cmp_type(left_result_type, args[i]->result_type());
in_item= cmp_items[(uint)cmp_type];
DBUG_ASSERT(in_item);
@@ -4726,13 +4750,14 @@ Item_func::optimize_type Item_func_like::select_optimize() const
if (args[1]->const_item())
{
String* res2= args[1]->val_str((String *)&cmp.value2);
+ const char *ptr2;
- if (!res2)
+ if (!res2 || !(ptr2= res2->ptr()))
return OPTIMIZE_NONE;
- if (*res2->ptr() != wild_many)
+ if (*ptr2 != wild_many)
{
- if (args[0]->result_type() != STRING_RESULT || *res2->ptr() != wild_one)
+ if (args[0]->result_type() != STRING_RESULT || *ptr2 != wild_one)
return OPTIMIZE_OP;
}
}
@@ -4808,8 +4833,7 @@ bool Item_func_like::fix_fields(THD *thd, Item **ref)
We could also do boyer-more for non-const items, but as we would have to
recompute the tables for each row it's not worth it.
*/
- if (args[1]->const_item() && !use_strnxfrm(collation.collation) &&
- !(specialflag & SPECIAL_NO_NEW_FUNC))
+ if (args[1]->const_item() && !use_strnxfrm(collation.collation))
{
String* res2 = args[1]->val_str(&cmp.value2);
if (!res2)
@@ -5646,7 +5670,7 @@ longlong Item_equal::val_int()
return 0;
List_iterator_fast<Item_field> it(fields);
Item *item= const_item ? const_item : it++;
- if ((null_value= item->null_value))
+ if ((null_value= item->is_null()))
return 0;
eval_item->store_value(item);
while ((item_field= it++))
@@ -5654,7 +5678,7 @@ longlong Item_equal::val_int()
/* Skip fields of non-const tables. They haven't been read yet */
if (item_field->field->table->const_table)
{
- if ((null_value= item_field->null_value) || eval_item->cmp(item_field))
+ if ((null_value= item_field->is_null()) || eval_item->cmp(item_field))
return 0;
}
}
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index 2eb419738e3..8a62f69de1f 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -220,7 +220,7 @@ public:
class Item_cache;
-#define UNKNOWN ((my_bool)-1)
+#define UNKNOWN (-1)
/*
@@ -250,7 +250,7 @@ protected:
FALSE - result is FALSE
TRUE - result is NULL
*/
- my_bool result_for_null_param;
+ int result_for_null_param;
public:
Item_in_optimizer(Item *a, Item_in_subselect *b):
Item_bool_func(a, my_reinterpret_cast(Item *)(b)), cache(0), expr_cache(0),
@@ -671,7 +671,7 @@ struct interval_range
class Item_func_interval :public Item_int_func
{
Item_row *row;
- my_bool use_decimal_comparison;
+ bool use_decimal_comparison;
interval_range *intervals;
public:
Item_func_interval(Item_row *a)
@@ -879,7 +879,7 @@ public:
void value_to_item(uint pos, Item *item)
{
((Item_int*) item)->value= ((packed_longlong*) base)[pos].val;
- ((Item_int*) item)->unsigned_flag= (my_bool)
+ ((Item_int*) item)->unsigned_flag= (bool)
((packed_longlong*) base)[pos].unsigned_flag;
}
Item_result result_type() { return INT_RESULT; }
@@ -1327,8 +1327,8 @@ public:
else
{
args[0]->update_used_tables();
- if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())) &&
- !with_subselect)
+ if ((const_item_cache= !(used_tables_cache= args[0]->used_tables()) &&
+ !with_subselect))
{
/* Remember if the value is always NULL or never NULL */
cached_value= (longlong) args[0]->is_null();
diff --git a/sql/item_create.cc b/sql/item_create.cc
index 2e72ab24fb0..eade395a229 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -5054,8 +5054,6 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type,
CHARSET_INFO *cs)
{
Item *UNINIT_VAR(res);
- ulong len;
- uint dec;
switch (cast_type) {
case ITEM_CAST_BINARY:
@@ -5078,11 +5076,10 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type,
break;
case ITEM_CAST_DECIMAL:
{
- if (c_len == NULL)
- {
- len= 0;
- }
- else
+ ulong len= 0;
+ uint dec= 0;
+
+ if (c_len)
{
ulong decoded_size;
errno= 0;
@@ -5096,11 +5093,7 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type,
len= decoded_size;
}
- if (c_dec == NULL)
- {
- dec= 0;
- }
- else
+ if (c_dec)
{
ulong decoded_size;
errno= 0;
@@ -5136,12 +5129,9 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type,
}
case ITEM_CAST_CHAR:
{
+ int len= -1;
CHARSET_INFO *real_cs= (cs ? cs : thd->variables.collation_connection);
- if (c_len == NULL)
- {
- len= (ulong) -1L;
- }
- else
+ if (c_len)
{
ulong decoded_size;
errno= 0;
@@ -5151,7 +5141,7 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type,
my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH);
return NULL;
}
- len= decoded_size;
+ len= (int) decoded_size;
}
res= new (thd->mem_root) Item_char_typecast(a, len, real_cs);
break;
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 82e0903be29..f0ed8110b79 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -2065,10 +2065,12 @@ double Item_func_round::real_op()
{
double value= args[0]->val_real();
- if (!(null_value= args[0]->null_value || args[1]->null_value))
- return my_double_round(value, args[1]->val_int(), args[1]->unsigned_flag,
- truncate);
-
+ if (!(null_value= args[0]->null_value))
+ {
+ longlong dec= args[1]->val_int();
+ if (!(null_value= args[1]->null_value))
+ return my_double_round(value, dec, args[1]->unsigned_flag, truncate);
+ }
return 0.0;
}
@@ -2267,6 +2269,8 @@ void Item_func_min_max::fix_length_and_dec()
max_length= my_decimal_precision_to_length_no_truncation(max_int_part +
decimals, decimals,
unsigned_flag);
+ else if (cmp_type == REAL_RESULT)
+ max_length= float_length(decimals);
cached_field_type= agg_field_type(args, arg_count);
}
@@ -3143,11 +3147,15 @@ void Item_udf_func::print(String *str, enum_query_type query_type)
double Item_func_udf_float::val_real()
{
+ double res;
+ my_bool tmp_null_value;
DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_func_udf_float::val");
DBUG_PRINT("info",("result_type: %d arg_count: %d",
args[0]->result_type(), arg_count));
- DBUG_RETURN(udf.val(&null_value));
+ res= udf.val(&tmp_null_value);
+ null_value= tmp_null_value;
+ DBUG_RETURN(res);
}
@@ -3164,9 +3172,13 @@ String *Item_func_udf_float::val_str(String *str)
longlong Item_func_udf_int::val_int()
{
+ longlong res;
+ my_bool tmp_null_value;
DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_func_udf_int::val_int");
- DBUG_RETURN(udf.val_int(&null_value));
+ res= udf.val_int(&tmp_null_value);
+ null_value= tmp_null_value;
+ DBUG_RETURN(res);
}
@@ -3183,8 +3195,10 @@ String *Item_func_udf_int::val_str(String *str)
longlong Item_func_udf_decimal::val_int()
{
- my_decimal dec_buf, *dec= udf.val_decimal(&null_value, &dec_buf);
+ my_bool tmp_null_value;
longlong result;
+ my_decimal dec_buf, *dec= udf.val_decimal(&tmp_null_value, &dec_buf);
+ null_value= tmp_null_value;
if (null_value)
return 0;
my_decimal2int(E_DEC_FATAL_ERROR, dec, unsigned_flag, &result);
@@ -3194,8 +3208,10 @@ longlong Item_func_udf_decimal::val_int()
double Item_func_udf_decimal::val_real()
{
- my_decimal dec_buf, *dec= udf.val_decimal(&null_value, &dec_buf);
+ my_bool tmp_null_value;
double result;
+ my_decimal dec_buf, *dec= udf.val_decimal(&tmp_null_value, &dec_buf);
+ null_value= tmp_null_value;
if (null_value)
return 0.0;
my_decimal2double(E_DEC_FATAL_ERROR, dec, &result);
@@ -3205,18 +3221,24 @@ double Item_func_udf_decimal::val_real()
my_decimal *Item_func_udf_decimal::val_decimal(my_decimal *dec_buf)
{
+ my_decimal *res;
+ my_bool tmp_null_value;
DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_func_udf_decimal::val_decimal");
DBUG_PRINT("info",("result_type: %d arg_count: %d",
args[0]->result_type(), arg_count));
- DBUG_RETURN(udf.val_decimal(&null_value, dec_buf));
+ res= udf.val_decimal(&tmp_null_value, dec_buf);
+ null_value= tmp_null_value;
+ DBUG_RETURN(res);
}
String *Item_func_udf_decimal::val_str(String *str)
{
- my_decimal dec_buf, *dec= udf.val_decimal(&null_value, &dec_buf);
+ my_bool tmp_null_value;
+ my_decimal dec_buf, *dec= udf.val_decimal(&tmp_null_value, &dec_buf);
+ null_value= tmp_null_value;
if (null_value)
return 0;
if (str->length() < DECIMAL_MAX_STR_LENGTH)
@@ -3977,7 +3999,7 @@ Item_func_set_user_var::update_hash(void *ptr, uint length,
/** Get the value of a variable as a double. */
-double user_var_entry::val_real(my_bool *null_value)
+double user_var_entry::val_real(bool *null_value)
{
if ((*null_value= (value == 0)))
return 0.0;
@@ -4006,7 +4028,7 @@ double user_var_entry::val_real(my_bool *null_value)
/** Get the value of a variable as an integer. */
-longlong user_var_entry::val_int(my_bool *null_value) const
+longlong user_var_entry::val_int(bool *null_value) const
{
if ((*null_value= (value == 0)))
return LL(0);
@@ -4038,7 +4060,7 @@ longlong user_var_entry::val_int(my_bool *null_value) const
/** Get the value of a variable as a string. */
-String *user_var_entry::val_str(my_bool *null_value, String *str,
+String *user_var_entry::val_str(bool *null_value, String *str,
uint decimals)
{
if ((*null_value= (value == 0)))
@@ -4071,7 +4093,7 @@ String *user_var_entry::val_str(my_bool *null_value, String *str,
/** Get the value of a variable as a decimal. */
-my_decimal *user_var_entry::val_decimal(my_bool *null_value, my_decimal *val)
+my_decimal *user_var_entry::val_decimal(bool *null_value, my_decimal *val)
{
if ((*null_value= (value == 0)))
return 0;
@@ -4763,6 +4785,7 @@ bool Item_func_get_user_var::set_value(THD *thd,
bool Item_user_var_as_out_param::fix_fields(THD *thd, Item **ref)
{
DBUG_ASSERT(fixed == 0);
+ DBUG_ASSERT(thd->lex->exchange);
if (Item::fix_fields(thd, ref) ||
!(entry= get_variable(&thd->user_vars, name, 1)))
return TRUE;
@@ -4772,7 +4795,9 @@ bool Item_user_var_as_out_param::fix_fields(THD *thd, Item **ref)
of fields in LOAD DATA INFILE.
(Since Item_user_var_as_out_param is used only there).
*/
- entry->collation.set(thd->variables.collation_database);
+ entry->collation.set(thd->lex->exchange->cs ?
+ thd->lex->exchange->cs :
+ thd->variables.collation_database);
entry->update_query_id= thd->query_id;
return FALSE;
}
diff --git a/sql/item_func.h b/sql/item_func.h
index 679348b1795..1aa8433b6dc 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -218,6 +218,21 @@ public:
{
return functype() == *(Functype *) arg;
}
+
+ void no_rows_in_result()
+ {
+ bool_func_call_args info;
+ info.original_func_item= this;
+ info.bool_function= &Item::no_rows_in_result;
+ walk(&Item::call_bool_func_processor, FALSE, (uchar*) &info);
+ }
+ void restore_to_before_no_rows_in_result()
+ {
+ bool_func_call_args info;
+ info.original_func_item= this;
+ info.bool_function= &Item::restore_to_before_no_rows_in_result;
+ walk(&Item::call_bool_func_processor, FALSE, (uchar*) &info);
+ }
};
@@ -1504,7 +1519,7 @@ class Item_func_get_system_var :public Item_func
longlong cached_llval;
double cached_dval;
String cached_strval;
- my_bool cached_null_value;
+ bool cached_null_value;
query_id_t used_query_id;
uchar cache_present;
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 4c90eceec99..cafabe9a3ee 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -2701,7 +2701,7 @@ String *Item_func_conv::val_str(String *str)
from_base, &endptr, &err);
}
- ptr= longlong2str(dec, ans, to_base);
+ ptr= longlong2str(dec, ans, to_base, 1);
if (str->copy(ans, (uint32) (ptr-ans), default_charset()))
return &my_empty_string;
return str;
@@ -2868,7 +2868,7 @@ String *Item_func_hex::val_str(String *str)
if ((null_value= args[0]->null_value))
return 0;
- ptr= longlong2str(dec,ans,16);
+ ptr= longlong2str(dec,ans,16,1);
if (str->copy(ans,(uint32) (ptr-ans),default_charset()))
return &my_empty_string; // End of memory
return str;
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 814bf14bb3e..2cc7ccfceaa 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -445,12 +445,12 @@ bool Item_subselect::walk(Item_processor processor, bool walk_subquery,
if (item->walk(processor, walk_subquery, argument))
return 1;
}
- for (order= (ORDER*) lex->order_list.first ; order; order= order->next)
+ for (order= lex->order_list.first ; order; order= order->next)
{
if ((*order->item)->walk(processor, walk_subquery, argument))
return 1;
}
- for (order= (ORDER*) lex->group_list.first ; order; order= order->next)
+ for (order= lex->group_list.first ; order; order= order->next)
{
if ((*order->item)->walk(processor, walk_subquery, argument))
return 1;
@@ -2519,15 +2519,15 @@ int subselect_single_select_engine::prepare()
SELECT_LEX *save_select= thd->lex->current_select;
thd->lex->current_select= select_lex;
if (join->prepare(&select_lex->ref_pointer_array,
- (TABLE_LIST*) select_lex->table_list.first,
+ select_lex->table_list.first,
select_lex->with_wild,
select_lex->where,
select_lex->order_list.elements +
select_lex->group_list.elements,
- (ORDER*) select_lex->order_list.first,
- (ORDER*) select_lex->group_list.first,
+ select_lex->order_list.first,
+ select_lex->group_list.first,
select_lex->having,
- (ORDER*) 0, select_lex,
+ NULL, select_lex,
select_lex->master_unit()))
return 1;
thd->lex->current_select= save_select;
@@ -2778,7 +2778,8 @@ int subselect_uniquesubquery_engine::scan_table()
if (table->file->inited)
table->file->ha_index_end();
- table->file->ha_rnd_init(1);
+ if (table->file->ha_rnd_init_with_error(1))
+ DBUG_RETURN(1);
table->file->extra_opt(HA_EXTRA_CACHE,
current_thd->variables.read_buff_size);
table->null_row= 0;
@@ -3297,14 +3298,13 @@ table_map subselect_engine::calc_const_tables(TABLE_LIST *table)
table_map subselect_single_select_engine::upper_select_const_tables()
{
- return calc_const_tables((TABLE_LIST *) select_lex->outer_select()->
- leaf_tables);
+ return calc_const_tables(select_lex->outer_select()->leaf_tables);
}
table_map subselect_union_engine::upper_select_const_tables()
{
- return calc_const_tables((TABLE_LIST *) unit->outer_select()->leaf_tables);
+ return calc_const_tables(unit->outer_select()->leaf_tables);
}
diff --git a/sql/item_subselect.h b/sql/item_subselect.h
index 3b0a9075a20..320c57b679f 100644
--- a/sql/item_subselect.h
+++ b/sql/item_subselect.h
@@ -32,8 +32,8 @@ class Cached_item;
class Item_subselect :public Item_result_field
{
- my_bool value_assigned; /* value already assigned to subselect */
-public:
+ bool value_assigned; /* value already assigned to subselect */
+protected:
/* thread handler, will be assigned in fix_fields only */
THD *thd;
/*
@@ -204,6 +204,8 @@ public:
friend void mark_select_range_as_dependent(THD*,
st_select_lex*, st_select_lex*,
Field*, Item*, Item_ident*);
+ friend bool convert_join_subqueries_to_semijoins(JOIN *join);
+
};
/* single value subselect */
@@ -564,9 +566,9 @@ protected:
class subselect_single_select_engine: public subselect_engine
{
- my_bool prepared; /* simple subselect is prepared */
- my_bool optimized; /* simple subselect is optimized */
- my_bool executed; /* simple subselect is executed */
+ bool prepared; /* simple subselect is prepared */
+ bool optimized; /* simple subselect is optimized */
+ bool executed; /* simple subselect is executed */
st_select_lex *select_lex; /* corresponding select_lex */
JOIN * join; /* corresponding JOIN structure */
public:
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 75d98bc6d2a..f21d96a717a 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -1639,8 +1639,22 @@ void Item_sum_hybrid::cleanup()
void Item_sum_hybrid::no_rows_in_result()
{
- was_values= FALSE;
- clear();
+ /* We may be called here twice in case of ref field in function */
+ if (was_values)
+ {
+ was_values= FALSE;
+ was_null_value= value->null_value;
+ clear();
+ }
+}
+
+void Item_sum_hybrid::restore_to_before_no_rows_in_result()
+{
+ if (!was_values)
+ {
+ was_values= TRUE;
+ null_value= value->null_value= was_null_value;
+ }
}
@@ -2624,8 +2638,10 @@ void Item_udf_sum::clear()
bool Item_udf_sum::add()
{
+ my_bool tmp_null_value;
DBUG_ENTER("Item_udf_sum::add");
- udf.add(&null_value);
+ udf.add(&tmp_null_value);
+ null_value= tmp_null_value;
DBUG_RETURN(0);
}
@@ -2661,11 +2677,15 @@ Item *Item_sum_udf_float::copy_or_same(THD* thd)
double Item_sum_udf_float::val_real()
{
+ my_bool tmp_null_value;
+ double res;
DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_sum_udf_float::val");
DBUG_PRINT("info",("result_type: %d arg_count: %d",
args[0]->result_type(), arg_count));
- DBUG_RETURN(udf.val(&null_value));
+ res= udf.val(&tmp_null_value);
+ null_value= tmp_null_value;
+ DBUG_RETURN(res);
}
@@ -2701,12 +2721,16 @@ longlong Item_sum_udf_decimal::val_int()
my_decimal *Item_sum_udf_decimal::val_decimal(my_decimal *dec_buf)
{
+ my_decimal *res;
+ my_bool tmp_null_value;
DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_func_udf_decimal::val_decimal");
DBUG_PRINT("info",("result_type: %d arg_count: %d",
args[0]->result_type(), arg_count));
- DBUG_RETURN(udf.val_decimal(&null_value, dec_buf));
+ res= udf.val_decimal(&tmp_null_value, dec_buf);
+ null_value= tmp_null_value;
+ DBUG_RETURN(res);
}
@@ -2723,11 +2747,15 @@ Item *Item_sum_udf_int::copy_or_same(THD* thd)
longlong Item_sum_udf_int::val_int()
{
+ my_bool tmp_null_value;
+ longlong res;
DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_sum_udf_int::val_int");
DBUG_PRINT("info",("result_type: %d arg_count: %d",
args[0]->result_type(), arg_count));
- DBUG_RETURN(udf.val_int(&null_value));
+ res= udf.val_int(&tmp_null_value);
+ null_value= tmp_null_value;
+ DBUG_RETURN(res);
}
@@ -2965,7 +2993,7 @@ int dump_leaf_key(uchar* key, element_count count __attribute__((unused)),
Item_func_group_concat::
Item_func_group_concat(Name_resolution_context *context_arg,
bool distinct_arg, List<Item> *select_list,
- SQL_LIST *order_list, String *separator_arg)
+ SQL_I_List<ORDER> *order_list, String *separator_arg)
:tmp_table_param(0), warning(0),
separator(separator_arg), tree(0), unique_filter(NULL), table(0),
order(0), context(context_arg),
@@ -3009,7 +3037,7 @@ Item_func_group_concat(Name_resolution_context *context_arg,
if (arg_count_order)
{
ORDER **order_ptr= order;
- for (ORDER *order_item= (ORDER*) order_list->first;
+ for (ORDER *order_item= order_list->first;
order_item != NULL;
order_item= order_item->next)
{
@@ -3030,7 +3058,6 @@ Item_func_group_concat::Item_func_group_concat(THD *thd,
tree(item->tree),
unique_filter(item->unique_filter),
table(item->table),
- order(item->order),
context(item->context),
arg_count_order(item->arg_count_order),
arg_count_field(item->arg_count_field),
@@ -3043,8 +3070,25 @@ Item_func_group_concat::Item_func_group_concat(THD *thd,
{
quick_group= item->quick_group;
result.set_charset(collation.collation);
-}
+ /*
+ Since the ORDER structures pointed to by the elements of the 'order' array
+ may be modified in find_order_in_list() called from
+ Item_func_group_concat::setup(), create a copy of those structures so that
+ such modifications done in this object would not have any effect on the
+ object being copied.
+ */
+ ORDER *tmp;
+ if (!(tmp= (ORDER *) thd->alloc(sizeof(ORDER *) * arg_count_order +
+ sizeof(ORDER) * arg_count_order)))
+ return;
+ order= (ORDER **)(tmp + arg_count_order);
+ for (uint i= 0; i < arg_count_order; i++, tmp++)
+ {
+ memcpy(tmp, item->order[i], sizeof(ORDER));
+ order[i]= tmp;
+ }
+}
void Item_func_group_concat::cleanup()
diff --git a/sql/item_sum.h b/sql/item_sum.h
index 2922d6c9644..a47939187dd 100644
--- a/sql/item_sum.h
+++ b/sql/item_sum.h
@@ -500,7 +500,7 @@ public:
enum Sumfunctype sum_func () const { return SUM_DISTINCT_FUNC; }
void reset_field() {} // not used
void update_field() {} // not used
- virtual void no_rows_in_result() {}
+ void no_rows_in_result() {}
void fix_length_and_dec();
enum Item_result result_type () const { return val.traits->type(); }
virtual void calculate_val_and_count();
@@ -857,6 +857,7 @@ protected:
enum_field_types hybrid_field_type;
int cmp_sign;
bool was_values; // Set if we have found at least one row (for max/min only)
+ bool was_null_value;
public:
Item_sum_hybrid(Item *item_par,int sign)
@@ -888,6 +889,7 @@ protected:
void cleanup();
bool any_value() { return was_values; }
void no_rows_in_result();
+ void restore_to_before_no_rows_in_result();
Field *create_tmp_field(bool group, TABLE *table,
uint convert_blob_length);
};
@@ -1248,7 +1250,7 @@ class Item_func_group_concat : public Item_sum
public:
Item_func_group_concat(Name_resolution_context *context_arg,
bool is_distinct, List<Item> *is_select,
- SQL_LIST *is_order, String *is_separator);
+ SQL_I_List<ORDER> *is_order, String *is_separator);
Item_func_group_concat(THD *thd, Item_func_group_concat *item);
~Item_func_group_concat();
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index d91ccee1575..57656f30294 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -288,11 +288,6 @@ static bool extract_date_time(DATE_TIME_FORMAT *format,
CHARSET_INFO *cs= &my_charset_bin;
DBUG_ENTER("extract_date_time");
- LINT_INIT(strict_week_number);
- /* Remove valgrind varnings when using gcc 3.3 and -O1 */
- VALGRIND_OR_LINT_INIT(strict_week_number_year_type);
- VALGRIND_OR_LINT_INIT(sunday_first_n_first_week_non_iso);
-
if (!sub_pattern_end)
bzero((char*) l_time, sizeof(*l_time));
@@ -2996,7 +2991,7 @@ String *Item_func_maketime::val_str(String *str)
buf, len, MYSQL_TIMESTAMP_TIME,
NullS);
}
-
+
if (make_time_with_warn((DATE_TIME_FORMAT *) 0, &ltime, str))
{
null_value= 1;
diff --git a/sql/log.cc b/sql/log.cc
index 90a60445716..8173b44c21f 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -372,6 +372,7 @@ bool Log_to_csv_event_handler::
Open_tables_state open_tables_backup;
ulonglong save_thd_options;
bool save_time_zone_used;
+ DBUG_ENTER("log_general");
/*
CSV uses TIME_to_timestamp() internally if table needs to be repaired
@@ -412,7 +413,7 @@ bool Log_to_csv_event_handler::
need_close= TRUE;
if (table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) ||
- table->file->ha_rnd_init(0))
+ table->file->ha_rnd_init_with_error(0))
goto err;
need_rnd_end= TRUE;
@@ -490,7 +491,7 @@ err:
thd->options= save_thd_options;
thd->time_zone_used= save_time_zone_used;
- return result;
+ DBUG_RETURN(result);
}
@@ -563,7 +564,7 @@ bool Log_to_csv_event_handler::
need_close= TRUE;
if (table->file->extra(HA_EXTRA_MARK_AS_LOG_TABLE) ||
- table->file->ha_rnd_init(0))
+ table->file->ha_rnd_init_with_error(0))
goto err;
need_rnd_end= TRUE;
@@ -1474,11 +1475,6 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data,
trx_data->has_incident());
trx_data->reset();
- /*
- We need to step the table map version after writing the
- transaction cache to disk.
- */
- mysql_bin_log.update_table_map_version();
statistic_increment(binlog_cache_use, &LOCK_status);
if (trans_log->disk_writes != 0)
{
@@ -1504,13 +1500,6 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data,
}
else // ...statement
trx_data->truncate(trx_data->before_stmt_pos);
-
- /*
- We need to step the table map version on a rollback to ensure
- that a new table map event is generated instead of the one that
- was written to the thrown-away transaction cache.
- */
- mysql_bin_log.update_table_map_version();
}
DBUG_ASSERT(thd->binlog_get_pending_rows_event() == NULL);
@@ -1556,28 +1545,23 @@ static int binlog_commit(handlerton *hton, THD *thd, bool all)
}
/*
- We commit the transaction if:
-
- - We are not in a transaction and committing a statement, or
+ We flush the cache if:
- - We are in a transaction and a full transaction is committed
+ - we are committing a transaction or;
+ - no statement was committed before and just non-transactional
+ tables were updated.
- Otherwise, we accumulate the statement
+ Otherwise, we collect the changes.
*/
- ulonglong const in_transaction=
- thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN);
DBUG_PRINT("debug",
- ("all: %d, empty: %s, in_transaction: %s, all.modified_non_trans_table: %s, stmt.modified_non_trans_table: %s",
+ ("all: %d, empty: %s, all.modified_non_trans_table: %s, stmt.modified_non_trans_table: %s",
all,
YESNO(trx_data->empty()),
- YESNO(in_transaction),
YESNO(thd->transaction.all.modified_non_trans_table),
YESNO(thd->transaction.stmt.modified_non_trans_table)));
-
- if (!in_transaction || all ||
- (!all && !trx_data->at_least_one_stmt_committed &&
- !stmt_has_updated_trans_table(thd) &&
- thd->transaction.stmt.modified_non_trans_table))
+ if (ending_trans(thd, all) ||
+ (trans_has_no_stmt_committed(thd, all) &&
+ !stmt_has_updated_trans_table(thd) && stmt_has_updated_non_trans_table(thd)))
{
Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, TRUE, 0);
error= binlog_end_trans(thd, trx_data, &qev, all);
@@ -1640,7 +1624,7 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
On the other hand, if a statement is transactional, we just safely roll it
back.
*/
- if ((thd->transaction.stmt.modified_non_trans_table ||
+ if ((stmt_has_updated_non_trans_table(thd) ||
(thd->options & OPTION_KEEP_LOG)) &&
mysql_bin_log.check_write_error(thd))
trx_data->set_incident();
@@ -1649,20 +1633,19 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
else
{
/*
- We flush the cache with a rollback, wrapped in a beging/rollback if:
- . aborting a transaction that modified a non-transactional table;
+ We flush the cache with a rollback, wrapped in a begin/rollback if:
+ . aborting a transaction that modified a non-transactional table or
+ the OPTION_KEEP_LOG is activate.
. aborting a statement that modified both transactional and
non-transactional tables but which is not in the boundaries of any
transaction or there was no early change;
- . the OPTION_KEEP_LOG is activate.
*/
- if ((all && thd->transaction.all.modified_non_trans_table) ||
- (!all && thd->transaction.stmt.modified_non_trans_table &&
- !(thd->options & (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT))) ||
- (!all && thd->transaction.stmt.modified_non_trans_table &&
- !trx_data->at_least_one_stmt_committed &&
- thd->current_stmt_binlog_row_based) ||
- ((thd->options & OPTION_KEEP_LOG)))
+ if ((ending_trans(thd, all) &&
+ (trans_has_updated_non_trans_table(thd) ||
+ (thd->options & OPTION_KEEP_LOG))) ||
+ (trans_has_no_stmt_committed(thd, all) &&
+ stmt_has_updated_non_trans_table(thd) &&
+ thd->current_stmt_binlog_row_based))
{
Query_log_event qev(thd, STRING_WITH_LEN("ROLLBACK"), TRUE, TRUE, 0);
error= binlog_end_trans(thd, trx_data, &qev, all);
@@ -1671,8 +1654,8 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
Otherwise, we simply truncate the cache as there is no change on
non-transactional tables as follows.
*/
- else if ((all && !thd->transaction.all.modified_non_trans_table) ||
- (!all && !thd->transaction.stmt.modified_non_trans_table))
+ else if (ending_trans(thd, all) ||
+ (!(thd->options & OPTION_KEEP_LOG) && !stmt_has_updated_non_trans_table(thd)))
error= binlog_end_trans(thd, trx_data, 0, all);
}
if (!all)
@@ -1680,6 +1663,19 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
DBUG_RETURN(error);
}
+/**
+ Cleanup the cache.
+
+ @param thd The client thread that wants to clean up the cache.
+*/
+void MYSQL_BIN_LOG::reset_gathered_updates(THD *thd)
+{
+ binlog_trx_data *const trx_data=
+ (binlog_trx_data*) thd_get_ha_data(thd, binlog_hton);
+
+ trx_data->reset();
+}
+
void MYSQL_BIN_LOG::set_write_error(THD *thd)
{
DBUG_ENTER("MYSQL_BIN_LOG::set_write_error");
@@ -1769,7 +1765,7 @@ static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
non-transactional table. Otherwise, truncate the binlog cache starting
from the SAVEPOINT command.
*/
- if (unlikely(thd->transaction.all.modified_non_trans_table ||
+ if (unlikely(trans_has_updated_non_trans_table(thd) ||
(thd->options & OPTION_KEEP_LOG)))
{
String log_query;
@@ -1788,17 +1784,17 @@ static int binlog_savepoint_rollback(handlerton *hton, THD *thd, void *sv)
int check_binlog_magic(IO_CACHE* log, const char** errmsg)
{
- char magic[4];
+ uchar magic[4];
DBUG_ASSERT(my_b_tell(log) == 0);
- if (my_b_read(log, (uchar*) magic, sizeof(magic)))
+ if (my_b_read(log, magic, sizeof(magic)))
{
*errmsg = "I/O error reading the header from the binary log";
sql_print_error("%s, errno=%d, io cache code=%d", *errmsg, my_errno,
log->error);
return 1;
}
- if (memcmp(magic, BINLOG_MAGIC, sizeof(magic)))
+ if (bcmp(magic, BINLOG_MAGIC, sizeof(magic)))
{
*errmsg = "Binlog has bad magic number; It's not a binary log file that can be used by this version of MySQL";
return 1;
@@ -1915,7 +1911,7 @@ static int find_uniq_filename(char *name)
file_info= dir_info->dir_entry;
for (i=dir_info->number_off_files ; i-- ; file_info++)
{
- if (bcmp((uchar*) file_info->name, (uchar*) start, length) == 0 &&
+ if (memcmp(file_info->name, start, length) == 0 &&
test_if_number(file_info->name+length, &number,0))
{
set_if_bigger(max_found,(ulong) number);
@@ -2493,7 +2489,7 @@ const char *MYSQL_LOG::generate_name(const char *log_name,
MYSQL_BIN_LOG::MYSQL_BIN_LOG()
:bytes_written(0), prepared_xids(0), file_id(1), open_count(1),
- need_start_event(TRUE), m_table_map_version(0),
+ need_start_event(TRUE),
is_relay_log(0),
description_event_for_exec(0), description_event_for_queue(0)
{
@@ -2693,7 +2689,7 @@ bool MYSQL_BIN_LOG::open(const char *log_name,
an extension for the binary log files.
In this case we write a standard header to it.
*/
- if (my_b_safe_write(&log_file, (uchar*) BINLOG_MAGIC,
+ if (my_b_safe_write(&log_file, BINLOG_MAGIC,
BIN_LOG_HEADER_SIZE))
goto err;
bytes_written+= BIN_LOG_HEADER_SIZE;
@@ -4007,6 +4003,67 @@ bool MYSQL_BIN_LOG::is_query_in_union(THD *thd, query_id_t query_id_param)
query_id_param >= thd->binlog_evt_union.first_query_id);
}
+/**
+ This function checks if a transaction, either a multi-statement
+ or a single statement transaction is about to commit or not.
+
+ @param thd The client thread that executed the current statement.
+ @param all Committing a transaction (i.e. TRUE) or a statement
+ (i.e. FALSE).
+ @return
+ @c true if committing a transaction, otherwise @c false.
+*/
+bool ending_trans(const THD* thd, const bool all)
+{
+ return (all || (!all && !(thd->options &
+ (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT))));
+}
+
+/**
+ This function checks if a non-transactional table was updated by
+ the current transaction.
+
+ @param thd The client thread that executed the current statement.
+ @return
+ @c true if a non-transactional table was updated, @c false
+ otherwise.
+*/
+bool trans_has_updated_non_trans_table(const THD* thd)
+{
+ return (thd->transaction.all.modified_non_trans_table ||
+ thd->transaction.stmt.modified_non_trans_table);
+}
+
+/**
+ This function checks if any statement was committed and cached.
+
+ @param thd The client thread that executed the current statement.
+ @param all Committing a transaction (i.e. TRUE) or a statement
+ (i.e. FALSE).
+ @return
+ @c true if at a statement was committed and cached, @c false
+ otherwise.
+*/
+bool trans_has_no_stmt_committed(const THD* thd, bool all)
+{
+ binlog_trx_data *const trx_data=
+ (binlog_trx_data*) thd_get_ha_data(thd, binlog_hton);
+
+ return (!all && !trx_data->at_least_one_stmt_committed);
+}
+
+/**
+ This function checks if a non-transactional table was updated by the
+ current statement.
+
+ @param thd The client thread that executed the current statement.
+ @return
+ @c true if a non-transactional table was updated, @c false otherwise.
+*/
+bool stmt_has_updated_non_trans_table(const THD* thd)
+{
+ return (thd->transaction.stmt.modified_non_trans_table);
+}
/*
These functions are placed in this file since they need access to
@@ -4139,7 +4196,6 @@ int THD::binlog_write_table_map(TABLE *table, bool is_trans)
DBUG_RETURN(error);
binlog_table_maps++;
- table->s->table_map_version= mysql_bin_log.table_map_version();
DBUG_RETURN(0);
}
@@ -4230,10 +4286,8 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
file= &trx_data->trans_log;
/*
- If we are writing to the log file directly, we could avoid
- locking the log. This does not work since we need to step the
- m_table_map_version below, and that change has to be protected
- by the LOCK_log mutex.
+ If we are not writing to the log file directly, we could avoid
+ locking the log.
*/
pthread_mutex_lock(&LOCK_log);
@@ -4247,24 +4301,6 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
DBUG_RETURN(1);
}
- /*
- We step the table map version if we are writing an event
- representing the end of a statement. We do this regardless of
- wheather we write to the transaction cache or to directly to the
- file.
-
- In an ideal world, we could avoid stepping the table map version
- if we were writing to a transaction cache, since we could then
- reuse the table map that was written earlier in the transaction
- cache. This does not work since STMT_END_F implies closing all
- table mappings on the slave side.
-
- TODO: Find a solution so that table maps does not have to be
- written several times within a transaction.
- */
- if (pending->get_flags(Rows_log_event::STMT_END_F))
- ++m_table_map_version;
-
delete pending;
if (file == &log_file)
@@ -4480,9 +4516,6 @@ err:
set_write_error(thd);
}
- if (event_info->flags & LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F)
- ++m_table_map_version;
-
pthread_mutex_unlock(&LOCK_log);
DBUG_RETURN(error);
}
@@ -5106,6 +5139,22 @@ void sql_perror(const char *message)
}
+/*
+ Unfortunately, there seems to be no good way
+ to restore the original streams upon failure.
+*/
+static bool redirect_std_streams(const char *file)
+{
+ if (freopen(file, "a+", stdout) && freopen(file, "a+", stderr))
+ {
+ setbuf(stderr, NULL);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
bool flush_error_log()
{
bool result=0;
@@ -5134,11 +5183,7 @@ bool flush_error_log()
setbuf(stderr, NULL);
(void) my_delete(err_renamed, MYF(0));
my_rename(log_error_file,err_renamed,MYF(0));
- if (freopen(log_error_file,"a+",stdout))
- {
- freopen(log_error_file,"a+",stderr);
- setbuf(stderr, NULL);
- }
+ redirect_std_streams(log_error_file);
if ((fd = my_open(err_temp, O_RDONLY, MYF(0))) >= 0)
{
@@ -5153,13 +5198,7 @@ bool flush_error_log()
result= 1;
#else
my_rename(log_error_file,err_renamed,MYF(0));
- if (freopen(log_error_file,"a+",stdout))
- {
- FILE *reopen;
- reopen= freopen(log_error_file,"a+",stderr);
- setbuf(stderr, NULL);
- }
- else
+ if (redirect_std_streams(log_error_file))
result= 1;
#endif
VOID(pthread_mutex_unlock(&LOCK_error_log));
@@ -5210,25 +5249,9 @@ static void print_buffer_to_nt_eventlog(enum loglevel level, char *buff,
#endif /* __NT__ */
-/**
- Prints a printf style message to the error log and, under NT, to the
- Windows event log.
-
- This function prints the message into a buffer and then sends that buffer
- to other functions to write that message to other logging sources.
-
- @param event_type Type of event to write (Error, Warning, or Info)
- @param format Printf style format of message
- @param args va_list list of arguments for the message
-
- @returns
- The function always returns 0. The return value is present in the
- signature to be compatible with other logging routines, which could
- return an error (e.g. logging to the log tables)
-*/
-
#ifndef EMBEDDED_LIBRARY
-static void print_buffer_to_file(enum loglevel level, const char *buffer)
+static void print_buffer_to_file(enum loglevel level, const char *buffer,
+ size_t length)
{
time_t skr;
struct tm tm_tmp;
@@ -5242,7 +5265,7 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer)
localtime_r(&skr, &tm_tmp);
start=&tm_tmp;
- fprintf(stderr, "%02d%02d%02d %2d:%02d:%02d [%s] %s\n",
+ fprintf(stderr, "%02d%02d%02d %2d:%02d:%02d [%s] %.*s\n",
start->tm_year % 100,
start->tm_mon+1,
start->tm_mday,
@@ -5251,7 +5274,7 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer)
start->tm_sec,
(level == ERROR_LEVEL ? "ERROR" : level == WARNING_LEVEL ?
"Warning" : "Note"),
- buffer);
+ (int) length, buffer);
fflush(stderr);
@@ -5259,17 +5282,30 @@ static void print_buffer_to_file(enum loglevel level, const char *buffer)
DBUG_VOID_RETURN;
}
+/**
+ Prints a printf style message to the error log and, under NT, to the
+ Windows event log.
+
+ This function prints the message into a buffer and then sends that buffer
+ to other functions to write that message to other logging sources.
+ @param level The level of the msg significance
+ @param format Printf style format of message
+ @param args va_list list of arguments for the message
+
+ @returns
+ The function always returns 0. The return value is present in the
+ signature to be compatible with other logging routines, which could
+ return an error (e.g. logging to the log tables)
+*/
int vprint_msg_to_log(enum loglevel level, const char *format, va_list args)
{
char buff[1024];
+ size_t length;
DBUG_ENTER("vprint_msg_to_log");
-#ifdef __NT__
- size_t length=
-#endif
- my_vsnprintf(buff, sizeof(buff), format, args);
- print_buffer_to_file(level, buff);
+ length= my_vsnprintf(buff, sizeof(buff), format, args);
+ print_buffer_to_file(level, buff, length);
#ifdef __NT__
print_buffer_to_nt_eventlog(level, buff, length, sizeof(buff));
@@ -5277,7 +5313,7 @@ int vprint_msg_to_log(enum loglevel level, const char *format, va_list args)
DBUG_RETURN(0);
}
-#endif /*EMBEDDED_LIBRARY*/
+#endif /* EMBEDDED_LIBRARY */
void sql_print_error(const char *format, ...)
@@ -5322,39 +5358,39 @@ void sql_print_information(const char *format, ...)
/********* transaction coordinator log for 2pc - mmap() based solution *******/
/*
- the log consists of a file, mmapped to a memory.
- file is divided on pages of tc_log_page_size size.
- (usable size of the first page is smaller because of log header)
- there's PAGE control structure for each page
- each page (or rather PAGE control structure) can be in one of three
- states - active, syncing, pool.
- there could be only one page in active or syncing states,
- but many in pool - pool is fifo queue.
- usual lifecycle of a page is pool->active->syncing->pool
- "active" page - is a page where new xid's are logged.
- the page stays active as long as syncing slot is taken.
- "syncing" page is being synced to disk. no new xid can be added to it.
- when the sync is done the page is moved to a pool and an active page
+ the log consists of a file, mapped to memory.
+ file is divided into pages of tc_log_page_size size.
+ (usable size of the first page is smaller because of the log header)
+ there is a PAGE control structure for each page
+ each page (or rather its PAGE control structure) can be in one of
+ the three states - active, syncing, pool.
+ there could be only one page in the active or syncing state,
+ but many in pool - pool is a fifo queue.
+ the usual lifecycle of a page is pool->active->syncing->pool.
+ the "active" page is a page where new xid's are logged.
+ the page stays active as long as the syncing slot is taken.
+ the "syncing" page is being synced to disk. no new xid can be added to it.
+ when the syncing is done the page is moved to a pool and an active page
becomes "syncing".
the result of such an architecture is a natural "commit grouping" -
If commits are coming faster than the system can sync, they do not
- stall. Instead, all commit that came since the last sync are
- logged to the same page, and they all are synced with the next -
+ stall. Instead, all commits that came since the last sync are
+ logged to the same "active" page, and they all are synced with the next -
one - sync. Thus, thought individual commits are delayed, throughput
is not decreasing.
- when a xid is added to an active page, the thread of this xid waits
+ when an xid is added to an active page, the thread of this xid waits
for a page's condition until the page is synced. when syncing slot
becomes vacant one of these waiters is awaken to take care of syncing.
it syncs the page and signals all waiters that the page is synced.
PAGE::waiters is used to count these waiters, and a page may never
become active again until waiters==0 (that is all waiters from the
- previous sync have noticed the sync was completed)
+ previous sync have noticed that the sync was completed)
note, that the page becomes "dirty" and has to be synced only when a
new xid is added into it. Removing a xid from a page does not make it
- dirty - we don't sync removals to disk.
+ dirty - we don't sync xid removals to disk.
*/
ulong tc_log_page_waits= 0;
@@ -5363,7 +5399,7 @@ ulong tc_log_page_waits= 0;
#define TC_LOG_HEADER_SIZE (sizeof(tc_log_magic)+1)
-static const char tc_log_magic[]={(char) 254, 0x23, 0x05, 0x74};
+static const uchar tc_log_magic[]={(uchar) 254, 0x23, 0x05, 0x74};
ulong opt_tc_log_size= TC_LOG_MIN_SIZE;
ulong tc_log_max_pages_used=0, tc_log_page_size=0, tc_log_cur_pages_used=0;
@@ -5420,7 +5456,8 @@ int TC_LOG_MMAP::open(const char *opt_name)
inited=2;
npages=(uint)file_length/tc_log_page_size;
- DBUG_ASSERT(npages >= 3); // to guarantee non-empty pool
+ if (npages < 3) // to guarantee non-empty pool
+ goto err;
if (!(pages=(PAGE *)my_malloc(npages*sizeof(PAGE), MYF(MY_WME|MY_ZEROFILL))))
goto err;
inited=3;
@@ -5477,7 +5514,7 @@ err:
-# if there're waiters - take the one with the most free space.
@todo
- TODO page merging. try to allocate adjacent page first,
+ page merging. try to allocate adjacent page first,
so that they can be flushed both in one sync
*/
@@ -5486,8 +5523,7 @@ void TC_LOG_MMAP::get_active_from_pool()
PAGE **p, **best_p=0;
int best_free;
- if (syncing)
- pthread_mutex_lock(&LOCK_pool);
+ pthread_mutex_lock(&LOCK_pool);
do
{
@@ -5507,20 +5543,21 @@ void TC_LOG_MMAP::get_active_from_pool()
}
while ((*best_p == 0 || best_free == 0) && overflow());
+ safe_mutex_assert_owner(&LOCK_active);
active=*best_p;
- if (active->free == active->size) // we've chosen an empty page
- {
- tc_log_cur_pages_used++;
- set_if_bigger(tc_log_max_pages_used, tc_log_cur_pages_used);
- }
if ((*best_p)->next) // unlink the page from the pool
*best_p=(*best_p)->next;
else
pool_last=*best_p;
+ pthread_mutex_unlock(&LOCK_pool);
- if (syncing)
- pthread_mutex_unlock(&LOCK_pool);
+ pthread_mutex_lock(&active->lock);
+ if (active->free == active->size) // we've chosen an empty page
+ {
+ tc_log_cur_pages_used++;
+ set_if_bigger(tc_log_max_pages_used, tc_log_cur_pages_used);
+ }
}
/**
@@ -5575,7 +5612,7 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid)
pthread_mutex_lock(&LOCK_active);
/*
- if active page is full - just wait...
+ if the active page is full - just wait...
frankly speaking, active->free here accessed outside of mutex
protection, but it's safe, because it only means we may miss an
unlog() for the active page, and we're not waiting for it here -
@@ -5587,9 +5624,17 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid)
/* no active page ? take one from the pool */
if (active == 0)
get_active_from_pool();
+ else
+ pthread_mutex_lock(&active->lock);
p=active;
- pthread_mutex_lock(&p->lock);
+
+ /*
+ p->free is always > 0 here because to decrease it one needs
+ to take p->lock and before it one needs to take LOCK_active.
+ But checked that active->free > 0 under LOCK_active and
+ haven't release it ever since
+ */
/* searching for an empty slot */
while (*p->ptr)
@@ -5603,38 +5648,51 @@ int TC_LOG_MMAP::log_xid(THD *thd, my_xid xid)
*p->ptr++= xid;
p->free--;
p->state= DIRTY;
-
- /* to sync or not to sync - this is the question */
- pthread_mutex_unlock(&LOCK_active);
- pthread_mutex_lock(&LOCK_sync);
pthread_mutex_unlock(&p->lock);
+ pthread_mutex_lock(&LOCK_sync);
if (syncing)
{ // somebody's syncing. let's wait
+ pthread_mutex_unlock(&LOCK_active);
+ pthread_mutex_lock(&p->lock);
p->waiters++;
- /*
- note - it must be while (), not do ... while () here
- as p->state may be not DIRTY when we come here
- */
- while (p->state == DIRTY && syncing)
+ for (;;)
+ {
+ int not_dirty = p->state != DIRTY;
+ pthread_mutex_unlock(&p->lock);
+ if (not_dirty || !syncing)
+ break;
pthread_cond_wait(&p->cond, &LOCK_sync);
+ pthread_mutex_lock(&p->lock);
+ }
p->waiters--;
err= p->state == ERROR;
if (p->state != DIRTY) // page was synced
{
+ pthread_mutex_unlock(&LOCK_sync);
if (p->waiters == 0)
pthread_cond_signal(&COND_pool); // in case somebody's waiting
- pthread_mutex_unlock(&LOCK_sync);
+ pthread_mutex_unlock(&p->lock);
goto done; // we're done
}
- } // page was not synced! do it now
- DBUG_ASSERT(active == p && syncing == 0);
- pthread_mutex_lock(&LOCK_active);
- syncing=p; // place is vacant - take it
- active=0; // page is not active anymore
- pthread_cond_broadcast(&COND_active); // in case somebody's waiting
- pthread_mutex_unlock(&LOCK_active);
- pthread_mutex_unlock(&LOCK_sync);
+ DBUG_ASSERT(!syncing);
+ pthread_mutex_unlock(&p->lock);
+ syncing = p;
+ pthread_mutex_unlock(&LOCK_sync);
+
+ pthread_mutex_lock(&LOCK_active);
+ active=0; // page is not active anymore
+ pthread_cond_broadcast(&COND_active);
+ pthread_mutex_unlock(&LOCK_active);
+ }
+ else
+ {
+ syncing = p; // place is vacant - take it
+ pthread_mutex_unlock(&LOCK_sync);
+ active = 0; // page is not active anymore
+ pthread_cond_broadcast(&COND_active);
+ pthread_mutex_unlock(&LOCK_active);
+ }
err= sync();
done:
@@ -5651,7 +5709,7 @@ int TC_LOG_MMAP::sync()
sit down and relax - this can take a while...
note - no locks are held at this point
*/
- err= my_msync(fd, syncing->start, 1, MS_SYNC);
+ err= my_msync(fd, syncing->start, syncing->size * sizeof(my_xid), MS_SYNC);
/* page is synced. let's move it to the pool */
pthread_mutex_lock(&LOCK_pool);
@@ -5659,19 +5717,20 @@ int TC_LOG_MMAP::sync()
pool_last=syncing;
syncing->next=0;
syncing->state= err ? ERROR : POOL;
- pthread_cond_broadcast(&syncing->cond); // signal "sync done"
pthread_cond_signal(&COND_pool); // in case somebody's waiting
pthread_mutex_unlock(&LOCK_pool);
/* marking 'syncing' slot free */
pthread_mutex_lock(&LOCK_sync);
+ pthread_cond_broadcast(&syncing->cond); // signal "sync done"
syncing=0;
/*
we check the "active" pointer without LOCK_active. Still, it's safe -
"active" can change from NULL to not NULL any time, but it
will take LOCK_sync before waiting on active->cond. That is, it can never
miss a signal.
- And "active" can change to NULL only after LOCK_sync, so this is safe too.
+ And "active" can change to NULL only by the syncing thread
+ (the thread that will send a signal below)
*/
if (active)
pthread_cond_signal(&active->cond); // wake up a new syncer
@@ -5691,13 +5750,13 @@ void TC_LOG_MMAP::unlog(ulong cookie, my_xid xid)
DBUG_ASSERT(*x == xid);
DBUG_ASSERT(x >= p->start && x < p->end);
- *x=0;
pthread_mutex_lock(&p->lock);
+ *x=0;
p->free++;
DBUG_ASSERT(p->free <= p->size);
set_if_smaller(p->ptr, x);
- if (p->free == p->size) // the page is completely empty
+ if (p->free == p->size) // the page is completely empty
statistic_decrement(tc_log_cur_pages_used, &LOCK_status);
if (p->waiters == 0) // the page is in pool and ready to rock
pthread_cond_signal(&COND_pool); // ping ... for overflow()
@@ -5740,7 +5799,7 @@ int TC_LOG_MMAP::recover()
HASH xids;
PAGE *p=pages, *end_p=pages+npages;
- if (memcmp(data, tc_log_magic, sizeof(tc_log_magic)))
+ if (bcmp(data, tc_log_magic, sizeof(tc_log_magic)))
{
sql_print_error("Bad magic header in tc log");
goto err1;
diff --git a/sql/log.h b/sql/log.h
index c6cf8780c04..8ee94ab5807 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -20,6 +20,11 @@ class Relay_log_info;
class Format_description_log_event;
+bool ending_trans(const THD* thd, const bool all);
+bool trans_has_updated_non_trans_table(const THD* thd);
+bool trans_has_no_stmt_committed(const THD* thd, const bool all);
+bool stmt_has_updated_non_trans_table(const THD* thd);
+
/*
Transaction Coordinator log - a base abstract class
for two different implementations
@@ -272,8 +277,6 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
*/
bool no_auto_events;
- ulonglong m_table_map_version;
-
int write_to_file(IO_CACHE *cache);
/*
This is used to start writing to a new log file. The difference from
@@ -314,14 +317,6 @@ public:
void unlog(ulong cookie, my_xid xid);
int recover(IO_CACHE *log, Format_description_log_event *fdle);
#if !defined(MYSQL_CLIENT)
- bool is_table_mapped(TABLE *table) const
- {
- return table->s->table_map_version == table_map_version();
- }
-
- ulonglong table_map_version() const { return m_table_map_version; }
- void update_table_map_version() { ++m_table_map_version; }
-
int flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event);
int remove_pending_rows_event(THD *thd);
@@ -361,10 +356,10 @@ public:
/* Use this to start writing a new log file */
void new_file();
+ void reset_gathered_updates(THD *thd);
bool write(Log_event* event_info); // binary log write
bool write(THD *thd, IO_CACHE *cache, Log_event *commit_event, bool incident);
bool write_incident(THD *thd, bool lock);
-
int write_cache(THD *thd, IO_CACHE *cache, bool lock_log,
bool flush_and_sync);
void set_write_error(THD *thd);
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 0a658719eca..fa7bb01077d 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -1673,7 +1673,7 @@ beg:
precision, decimals);
return bin_size;
}
-
+
case MYSQL_TYPE_FLOAT:
{
float fl;
@@ -1716,14 +1716,13 @@ beg:
case MYSQL_TYPE_DATETIME:
{
- /* these must be size_t, because it's what my_b_printf expects for %d */
- size_t d, t;
+ ulong d, t;
uint64 i64= uint8korr(ptr); /* YYYYMMDDhhmmss */
- d= (size_t)(i64 / 1000000);
- t= (size_t)(i64 % 1000000);
+ d= (ulong) (i64 / 1000000);
+ t= (ulong) (i64 % 1000000);
my_b_printf(file, "%04d-%02d-%02d %02d:%02d:%02d",
- d / 10000, (d % 10000) / 100, d % 100,
- t / 10000, (t % 10000) / 100, t % 100);
+ (int) (d / 10000), (int) (d % 10000) / 100, (int) (d % 100),
+ (int) (t / 10000), (int) (t % 10000) / 100, (int) t % 100);
my_snprintf(typestr, typestr_length, "DATETIME");
return 8;
}
@@ -2307,6 +2306,53 @@ bool Query_log_event::write(IO_CACHE* file)
start+= 4;
}
+ if (thd && thd->is_current_user_used())
+ {
+ LEX_STRING user;
+ LEX_STRING host;
+ memset(&user, 0, sizeof(user));
+ memset(&host, 0, sizeof(host));
+
+ if (thd->slave_thread && thd->has_invoker())
+ {
+ /* user will be null, if master is older than this patch */
+ user= thd->get_invoker_user();
+ host= thd->get_invoker_host();
+ }
+ else if (thd->security_ctx->priv_user)
+ {
+ Security_context *ctx= thd->security_ctx;
+
+ user.length= strlen(ctx->priv_user);
+ user.str= ctx->priv_user;
+ if (ctx->priv_host[0] != '\0')
+ {
+ host.str= ctx->priv_host;
+ host.length= strlen(ctx->priv_host);
+ }
+ }
+
+ if (user.length > 0)
+ {
+ *start++= Q_INVOKER;
+
+ /*
+ Store user length and user. The max length of use is 16, so 1 byte is
+ enough to store the user's length.
+ */
+ *start++= (uchar)user.length;
+ memcpy(start, user.str, user.length);
+ start+= user.length;
+
+ /*
+ Store host length and host. The max length of host is 60, so 1 byte is
+ enough to store the host's length.
+ */
+ *start++= (uchar)host.length;
+ memcpy(start, host.str, host.length);
+ start+= host.length;
+ }
+ }
/*
NOTE: When adding new status vars, please don't forget to update
the MAX_SIZE_LOG_EVENT_STATUS in log_event.h and update the function
@@ -2349,6 +2395,8 @@ bool Query_log_event::write(IO_CACHE* file)
Query_log_event::Query_log_event()
:Log_event(), data_buf(0)
{
+ memset(&user, 0, sizeof(user));
+ memset(&host, 0, sizeof(host));
}
@@ -2391,6 +2439,9 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
{
time_t end_time;
+ memset(&user, 0, sizeof(user));
+ memset(&host, 0, sizeof(host));
+
error_code= errcode;
time(&end_time);
@@ -2406,13 +2457,29 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
charset_database_number= thd_arg->variables.collation_database->number;
/*
- If we don't use flags2 for anything else than options contained in
- thd_arg->options, it would be more efficient to flags2=thd_arg->options
- (OPTIONS_WRITTEN_TO_BIN_LOG would be used only at reading time).
- But it's likely that we don't want to use 32 bits for 3 bits; in the future
- we will probably want to reclaim the 29 bits. So we need the &.
+ We only replicate over the bits of flags2 that we need: the rest
+ are masked out by "& OPTIONS_WRITTEN_TO_BINLOG".
+
+ We also force AUTOCOMMIT=1. Rationale (cf. BUG#29288): After
+ fixing BUG#26395, we always write BEGIN and COMMIT around all
+ transactions (even single statements in autocommit mode). This is
+ so that replication from non-transactional to transactional table
+ and error recovery from XA to non-XA table should work as
+ expected. The BEGIN/COMMIT are added in log.cc. However, there is
+ one exception: MyISAM bypasses log.cc and writes directly to the
+ binlog. So if autocommit is off, master has MyISAM, and slave has
+ a transactional engine, then the slave will just see one long
+ never-ending transaction. The only way to bypass explicit
+ BEGIN/COMMIT in the binlog is by using a non-transactional table.
+ So setting AUTOCOMMIT=1 will make this work as expected.
+
+ Note: explicitly replicate AUTOCOMMIT=1 from master. We do not
+ assume AUTOCOMMIT=1 on slave; the slave still reads the state of
+ the autocommit flag as written by the master to the binlog. This
+ behavior may change after WL#4162 has been implemented.
*/
- flags2= (uint32) (thd_arg->options & OPTIONS_WRITTEN_TO_BIN_LOG);
+ flags2= (uint32) (thd_arg->options &
+ (OPTIONS_WRITTEN_TO_BIN_LOG & ~OPTION_NOT_AUTOCOMMIT));
DBUG_ASSERT(thd_arg->variables.character_set_client->number < 256*256);
DBUG_ASSERT(thd_arg->variables.collation_connection->number < 256*256);
DBUG_ASSERT(thd_arg->variables.collation_server->number < 256*256);
@@ -2559,6 +2626,8 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
bool catalog_nz= 1;
DBUG_ENTER("Query_log_event::Query_log_event(char*,...)");
+ memset(&user, 0, sizeof(user));
+ memset(&host, 0, sizeof(host));
common_header_len= description_event->common_header_len;
post_header_len= description_event->post_header_len[event_type-1];
DBUG_PRINT("info",("event_len: %u common_header_len: %d post_header_len: %d",
@@ -2713,6 +2782,20 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
data_written= master_data_written= uint4korr(pos);
pos+= 4;
break;
+ case Q_INVOKER:
+ {
+ CHECK_SPACE(pos, end, 1);
+ user.length= *pos++;
+ CHECK_SPACE(pos, end, user.length);
+ user.str= (char *)pos;
+ pos+= user.length;
+
+ CHECK_SPACE(pos, end, 1);
+ host.length= *pos++;
+ CHECK_SPACE(pos, end, host.length);
+ host.str= (char *)pos;
+ pos+= host.length;
+ }
default:
/* That's why you must write status vars in growing order of code */
DBUG_PRINT("info",("Query_log_event has unknown status vars (first has\
@@ -2726,12 +2809,16 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
time_zone_len + 1 +
data_len + 1 +
QUERY_CACHE_FLAGS_SIZE +
+ user.length + 1 +
+ host.length + 1 +
db_len + 1,
MYF(MY_WME))))
#else
if (!(start= data_buf = (Log_event::Byte*) my_malloc(catalog_len + 1 +
time_zone_len + 1 +
- data_len + 1,
+ data_len + 1 +
+ user.length + 1 +
+ host.length + 1,
MYF(MY_WME))))
#endif
DBUG_VOID_RETURN;
@@ -2754,6 +2841,11 @@ Query_log_event::Query_log_event(const char* buf, uint event_len,
if (time_zone_len)
copy_str_and_move(&time_zone_str, &start, time_zone_len);
+ if (user.length > 0)
+ copy_str_and_move((const char **)&(user.str), &start, user.length);
+ if (host.length > 0)
+ copy_str_and_move((const char **)&(host.str), &start, host.length);
+
/**
if time_zone_len or catalog_len are 0, then time_zone and catalog
are uninitialized at this point. shouldn't they point to the
@@ -2889,7 +2981,7 @@ void Query_log_event::print_query_header(IO_CACHE* file,
if (likely(charset_inited) &&
(unlikely(!print_event_info->charset_inited ||
- bcmp((uchar*) print_event_info->charset, (uchar*) charset, 6))))
+ memcmp(print_event_info->charset, charset, 6))))
{
CHARSET_INFO *cs_info= get_charset(uint2korr(charset), MYF(MY_WME));
if (cs_info)
@@ -2912,8 +3004,8 @@ void Query_log_event::print_query_header(IO_CACHE* file,
}
if (time_zone_len)
{
- if (bcmp((uchar*) print_event_info->time_zone_str,
- (uchar*) time_zone_str, time_zone_len+1))
+ if (memcmp(print_event_info->time_zone_str,
+ time_zone_str, time_zone_len+1))
{
my_b_printf(file,"SET @@session.time_zone='%s'%s\n",
time_zone_str, print_event_info->delimiter);
@@ -3162,7 +3254,7 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli,
thd->variables.collation_database= thd->db_charset;
thd->table_map_for_update= (table_map)table_map_for_update;
-
+ thd->set_invoker(&user, &host);
/* Execute the query (note that we bypass dispatch_command()) */
const char* found_semicolon= NULL;
mysql_parse(thd, thd->query(), thd->query_length(), &found_semicolon);
@@ -5573,7 +5665,7 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
double real_val;
char real_buf[FMT_G_BUFSIZE(14)];
float8get(real_val, val);
- my_sprintf(real_buf, (real_buf, "%.14g", real_val));
+ sprintf(real_buf, "%.14g", real_val);
my_b_printf(&cache, ":=%s%s\n", real_buf, print_event_info->delimiter);
break;
case INT_RESULT:
@@ -6142,7 +6234,7 @@ void Create_file_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info
#if defined(HAVE_REPLICATION) && !defined(MYSQL_CLIENT)
void Create_file_log_event::pack_info(Protocol *protocol)
{
- char buf[NAME_LEN*2 + 30 + 21*2], *pos;
+ char buf[SAFE_NAME_LEN*2 + 30 + 21*2], *pos;
pos= strmov(buf, "db=");
memcpy(pos, db, db_len);
pos= strmov(pos + db_len, ";table=");
@@ -7490,8 +7582,7 @@ int Rows_log_event::do_apply_event(Relay_log_info const *rli)
{
int actual_error= convert_handler_error(error, thd, table);
bool idempotent_error= (idempotent_error_code(error) &&
- ((bit_is_set(slave_exec_mode,
- SLAVE_EXEC_MODE_IDEMPOTENT)) == 1));
+ (slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT));
bool ignored_error= (idempotent_error == 0 ?
ignored_error_code(actual_error) : 0);
@@ -7547,12 +7638,6 @@ int Rows_log_event::do_apply_event(Relay_log_info const *rli)
clear_all_errors(thd, const_cast<Relay_log_info*>(rli));
error= 0;
}
-
- if (!cache_stmt)
- {
- DBUG_PRINT("info", ("Marked that we need to keep log"));
- thd->options|= OPTION_KEEP_LOG;
- }
} // if (table)
/*
@@ -8430,7 +8515,7 @@ Write_rows_log_event::do_before_row_operations(const Slave_reporting_capability
todo: to introduce a property for the event (handler?) which forces
applying the event in the replace (idempotent) fashion.
*/
- if (bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1 ||
+ if ((slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT) ||
m_table->s->db_type()->db_type == DB_TYPE_NDBCLUSTER)
{
/*
@@ -8509,7 +8594,7 @@ Write_rows_log_event::do_after_row_operations(const Slave_reporting_capability *
int local_error= 0;
m_table->next_number_field=0;
m_table->auto_increment_field_not_null= FALSE;
- if (bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1 ||
+ if ((slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT) ||
m_table->s->db_type()->db_type == DB_TYPE_NDBCLUSTER)
{
m_table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
@@ -8522,7 +8607,7 @@ Write_rows_log_event::do_after_row_operations(const Slave_reporting_capability *
ultimately. Still todo: fix
*/
}
- if ((local_error= m_table->file->ha_end_bulk_insert(0)))
+ if ((local_error= m_table->file->ha_end_bulk_insert()))
{
m_table->file->print_error(local_error, MYF(0));
}
@@ -8612,7 +8697,7 @@ Rows_log_event::write_row(const Relay_log_info *const rli,
TABLE *table= m_table; // pointer to event's table
int error;
- int keynum;
+ int UNINIT_VAR(keynum);
auto_afree_ptr<char> key(NULL);
/* fill table->record[0] with default values */
@@ -8810,10 +8895,8 @@ int
Write_rows_log_event::do_exec_row(const Relay_log_info *const rli)
{
DBUG_ASSERT(m_table != NULL);
- int error=
- write_row(rli, /* if 1 then overwrite */
- bit_is_set(slave_exec_mode, SLAVE_EXEC_MODE_IDEMPOTENT) == 1);
-
+ int error= write_row(rli, (slave_exec_mode & SLAVE_EXEC_MODE_IDEMPOTENT));
+
if (error && !thd->is_error())
{
DBUG_ASSERT(0);
@@ -8866,11 +8949,28 @@ static bool record_compare(TABLE *table)
{
for (int i = 0 ; i < 2 ; ++i)
{
- saved_x[i]= table->record[i][0];
- saved_filler[i]= table->record[i][table->s->null_bytes - 1];
- table->record[i][0]|= 1U;
- table->record[i][table->s->null_bytes - 1]|=
- 256U - (1U << table->s->last_null_bit_pos);
+ /*
+ If we have an X bit then we need to take care of it.
+ */
+ if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD))
+ {
+ saved_x[i]= table->record[i][0];
+ table->record[i][0]|= 1U;
+ }
+
+ /*
+ If (last_null_bit_pos == 0 && null_bytes > 1), then:
+
+ X bit (if any) + N nullable fields + M Field_bit fields = 8 bits
+
+ Ie, the entire byte is used.
+ */
+ if (table->s->last_null_bit_pos > 0)
+ {
+ saved_filler[i]= table->record[i][table->s->null_bytes - 1];
+ table->record[i][table->s->null_bytes - 1]|=
+ 256U - (1U << table->s->last_null_bit_pos);
+ }
}
}
@@ -8910,8 +9010,11 @@ record_compare_exit:
{
for (int i = 0 ; i < 2 ; ++i)
{
- table->record[i][0]= saved_x[i];
- table->record[i][table->s->null_bytes - 1]= saved_filler[i];
+ if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD))
+ table->record[i][0]= saved_x[i];
+
+ if (table->s->last_null_bit_pos)
+ table->record[i][table->s->null_bytes - 1]= saved_filler[i];
}
}
@@ -8921,10 +9024,10 @@ record_compare_exit:
/**
Locate the current row in event's table.
- The current row is pointed by @c m_curr_row. Member @c m_width tells how many
- columns are there in the row (this can be differnet from the number of columns
- in the table). It is assumed that event's table is already open and pointed
- by @c m_table.
+ The current row is pointed by @c m_curr_row. Member @c m_width tells
+ how many columns are there in the row (this can be differnet from
+ the number of columns in the table). It is assumed that event's
+ table is already open and pointed by @c m_table.
If a corresponding record is found in the table it is stored in
@c m_table->record[0]. Note that when record is located based on a primary
@@ -9088,8 +9191,35 @@ int Rows_log_event::find_row(const Relay_log_info *rli)
*/
if (table->key_info->flags & HA_NOSAME)
{
- table->file->ha_index_end();
- goto ok;
+ /* Unique does not have non nullable part */
+ if (!(table->key_info->flags & (HA_NULL_PART_KEY)))
+ {
+ table->file->ha_index_end();
+ goto ok;
+ }
+ else
+ {
+ KEY *keyinfo= table->key_info;
+ /*
+ Unique has nullable part. We need to check if there is any field in the
+ BI image that is null and part of UNNI.
+ */
+ bool null_found= FALSE;
+ for (uint i=0; i < keyinfo->key_parts && !null_found; i++)
+ {
+ uint fieldnr= keyinfo->key_part[i].fieldnr - 1;
+ Field **f= table->field+fieldnr;
+ null_found= (*f)->is_null();
+ }
+
+ if (!null_found)
+ {
+ table->file->ha_index_end();
+ goto ok;
+ }
+
+ /* else fall through to index scan */
+ }
}
/*
@@ -9140,11 +9270,10 @@ int Rows_log_event::find_row(const Relay_log_info *rli)
int restart_count= 0; // Number of times scanning has restarted from top
/* We don't have a key: search the table using rnd_next() */
- if ((error= table->file->ha_rnd_init(1)))
+ if ((error= table->file->ha_rnd_init_with_error(1)))
{
DBUG_PRINT("info",("error initializing table scan"
" (ha_rnd_init returns %d)",error));
- table->file->print_error(error, MYF(0));
goto err;
}
@@ -9169,7 +9298,14 @@ int Rows_log_event::find_row(const Relay_log_info *rli)
case HA_ERR_END_OF_FILE:
if (++restart_count < 2)
- table->file->ha_rnd_init(1);
+ {
+ int error2;
+ if ((error2= table->file->ha_rnd_init_with_error(1)))
+ {
+ error= error2;
+ goto err;
+ }
+ }
break;
default:
diff --git a/sql/log_event.h b/sql/log_event.h
index db3950e6c25..3c7ba766545 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -264,7 +264,8 @@ struct sql_ex_info
1 + 2 /* type, lc_time_names_number */ + \
1 + 2 /* type, charset_database_number */ + \
1 + 8 /* type, table_map_for_update */ + \
- 1 + 4 /* type, master_data_written */)
+ 1 + 4 /* type, master_data_written */ + \
+ 1 + 16 + 1 + 60/* type, user_len, user, host_len, host */)
#define MAX_LOG_EVENT_HEADER ( /* in order of Query_log_event::write */ \
LOG_EVENT_HEADER_LEN + /* write_header */ \
QUERY_HEADER_LEN + /* write_data */ \
@@ -333,6 +334,8 @@ struct sql_ex_info
#define Q_MASTER_DATA_WRITTEN_CODE 10
+#define Q_INVOKER 11
+
/* Intvar event post-header */
/* Intvar event data */
@@ -395,7 +398,7 @@ struct sql_ex_info
#define ELQ_DUP_HANDLING_OFFSET ELQ_FILE_ID_OFFSET + 12
/* 4 bytes which all binlogs should begin with */
-#define BINLOG_MAGIC "\xfe\x62\x69\x6e"
+#define BINLOG_MAGIC (const uchar*) "\xfe\x62\x69\x6e"
/*
The 2 flags below were useless :
@@ -463,10 +466,10 @@ struct sql_ex_info
#define LOG_EVENT_SUPPRESS_USE_F 0x8
/*
- The table map version internal to the log should be increased after
- the event has been written to the binary log.
+ Note: this is a place holder for the flag
+ LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F (0x10), which is not used any
+ more, please do not reused this value for other flags.
*/
-#define LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F 0x10
/**
@def LOG_EVENT_ARTIFICIAL_F
@@ -1558,6 +1561,8 @@ protected:
*/
class Query_log_event: public Log_event
{
+ LEX_STRING user;
+ LEX_STRING host;
protected:
Log_event::Byte* data_buf;
public:
diff --git a/sql/log_event_old.cc b/sql/log_event_old.cc
index cf358bd757d..5d3ab1f17d5 100644
--- a/sql/log_event_old.cc
+++ b/sql/log_event_old.cc
@@ -229,11 +229,6 @@ Old_rows_log_event::do_apply_event(Old_rows_log_event *ev, const Relay_log_info
DBUG_EXECUTE_IF("STOP_SLAVE_after_first_Rows_event",
const_cast<Relay_log_info*>(rli)->abort_slave= 1;);
error= do_after_row_operations(table, error);
- if (!ev->cache_stmt)
- {
- DBUG_PRINT("info", ("Marked that we need to keep log"));
- ev_thd->options|= OPTION_KEEP_LOG;
- }
}
/*
@@ -342,12 +337,29 @@ static bool record_compare(TABLE *table)
if (table->s->null_bytes > 0)
{
for (int i = 0 ; i < 2 ; ++i)
- {
- saved_x[i]= table->record[i][0];
- saved_filler[i]= table->record[i][table->s->null_bytes - 1];
- table->record[i][0]|= 1U;
- table->record[i][table->s->null_bytes - 1]|=
- 256U - (1U << table->s->last_null_bit_pos);
+ {
+ /*
+ If we have an X bit then we need to take care of it.
+ */
+ if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD))
+ {
+ saved_x[i]= table->record[i][0];
+ table->record[i][0]|= 1U;
+ }
+
+ /*
+ If (last_null_bit_pos == 0 && null_bytes > 1), then:
+
+ X bit (if any) + N nullable fields + M Field_bit fields = 8 bits
+
+ Ie, the entire byte is used.
+ */
+ if (table->s->last_null_bit_pos > 0)
+ {
+ saved_filler[i]= table->record[i][table->s->null_bytes - 1];
+ table->record[i][table->s->null_bytes - 1]|=
+ 256U - (1U << table->s->last_null_bit_pos);
+ }
}
}
@@ -387,8 +399,11 @@ record_compare_exit:
{
for (int i = 0 ; i < 2 ; ++i)
{
- table->record[i][0]= saved_x[i];
- table->record[i][table->s->null_bytes - 1]= saved_filler[i];
+ if (!(table->s->db_options_in_use & HA_OPTION_PACK_RECORD))
+ table->record[i][0]= saved_x[i];
+
+ if (table->s->last_null_bit_pos > 0)
+ table->record[i][table->s->null_bytes - 1]= saved_filler[i];
}
}
@@ -426,7 +441,7 @@ copy_extra_record_fields(TABLE *table,
DBUG_ASSERT(master_reclength <= table->s->reclength);
if (master_reclength < table->s->reclength)
- bmove_align(table->record[0] + master_reclength,
+ memcpy(table->record[0] + master_reclength,
table->record[1] + master_reclength,
table->s->reclength - master_reclength);
@@ -705,7 +720,7 @@ static int find_and_fetch_row(TABLE *table, uchar *key)
rnd_pos() returns the record in table->record[0], so we have to
move it to table->record[1].
*/
- bmove_align(table->record[1], table->record[0], table->s->reclength);
+ memcpy(table->record[1], table->record[0], table->s->reclength);
DBUG_RETURN(error);
}
@@ -816,7 +831,7 @@ static int find_and_fetch_row(TABLE *table, uchar *key)
int error;
/* We don't have a key: search the table using rnd_next() */
- if ((error= table->file->ha_rnd_init(1)))
+ if ((error= table->file->ha_rnd_init_with_error(1)))
return error;
/* Continue until we find the right record or have made a full loop */
@@ -840,15 +855,19 @@ static int find_and_fetch_row(TABLE *table, uchar *key)
goto restart_rnd_next;
case HA_ERR_END_OF_FILE:
- if (++restart_count < 2)
- table->file->ha_rnd_init(1);
- break;
+ if (++restart_count < 2)
+ {
+ int error2;
+ if ((error2= table->file->ha_rnd_init_with_error(1)))
+ DBUG_RETURN(error2);
+ }
+ break;
default:
- table->file->print_error(error, MYF(0));
+ table->file->print_error(error, MYF(0));
DBUG_PRINT("info", ("Record not found"));
table->file->ha_rnd_end();
- DBUG_RETURN(error);
+ DBUG_RETURN(error);
}
}
while (restart_count < 2 && record_compare(table));
@@ -944,7 +963,7 @@ int Write_rows_log_event_old::do_after_row_operations(TABLE *table, int error)
fires bug#27077
todo: explain or fix
*/
- if ((local_error= table->file->ha_end_bulk_insert(0)))
+ if ((local_error= table->file->ha_end_bulk_insert()))
{
table->file->print_error(local_error, MYF(0));
}
@@ -1199,7 +1218,7 @@ int Update_rows_log_event_old::do_exec_row(TABLE *table)
overwriting the default values that where put there by the
unpack_row() function.
*/
- bmove_align(table->record[0], m_after_image, table->s->reclength);
+ memcpy(table->record[0], m_after_image, table->s->reclength);
copy_extra_record_fields(table, m_master_reclength, m_width);
/*
@@ -1756,11 +1775,6 @@ int Old_rows_log_event::do_apply_event(Relay_log_info const *rli)
DBUG_EXECUTE_IF("STOP_SLAVE_after_first_Rows_event",
const_cast<Relay_log_info*>(rli)->abort_slave= 1;);
error= do_after_row_operations(rli, error);
- if (!cache_stmt)
- {
- DBUG_PRINT("info", ("Marked that we need to keep log"));
- thd->options|= OPTION_KEEP_LOG;
- }
} // if (table)
/*
@@ -2409,8 +2423,35 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli)
*/
if (table->key_info->flags & HA_NOSAME)
{
- table->file->ha_index_end();
- DBUG_RETURN(0);
+ /* Unique does not have non nullable part */
+ if (!(table->key_info->flags & (HA_NULL_PART_KEY)))
+ {
+ table->file->ha_index_end();
+ DBUG_RETURN(0);
+ }
+ else
+ {
+ KEY *keyinfo= table->key_info;
+ /*
+ Unique has nullable part. We need to check if there is any field in the
+ BI image that is null and part of UNNI.
+ */
+ bool null_found= FALSE;
+ for (uint i=0; i < keyinfo->key_parts && !null_found; i++)
+ {
+ uint fieldnr= keyinfo->key_part[i].fieldnr - 1;
+ Field **f= table->field+fieldnr;
+ null_found= (*f)->is_null();
+ }
+
+ if (!null_found)
+ {
+ table->file->ha_index_end();
+ DBUG_RETURN(0);
+ }
+
+ /* else fall through to index scan */
+ }
}
/*
@@ -2461,11 +2502,10 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli)
int restart_count= 0; // Number of times scanning has restarted from top
/* We don't have a key: search the table using rnd_next() */
- if ((error= table->file->ha_rnd_init(1)))
+ if ((error= table->file->ha_rnd_init_with_error(1)))
{
DBUG_PRINT("info",("error initializing table scan"
" (ha_rnd_init returns %d)",error));
- table->file->print_error(error, MYF(0));
DBUG_RETURN(error);
}
@@ -2485,7 +2525,11 @@ int Old_rows_log_event::find_row(const Relay_log_info *rli)
case HA_ERR_END_OF_FILE:
if (++restart_count < 2)
- table->file->ha_rnd_init(1);
+ {
+ int error2;
+ if ((error2= table->file->ha_rnd_init_with_error(1)))
+ DBUG_RETURN(error2);
+ }
break;
default:
@@ -2637,7 +2681,7 @@ Write_rows_log_event_old::do_after_row_operations(const Slave_reporting_capabili
fires bug#27077
todo: explain or fix
*/
- if ((local_error= m_table->file->ha_end_bulk_insert(0)))
+ if ((local_error= m_table->file->ha_end_bulk_insert()))
{
m_table->file->print_error(local_error, MYF(0));
}
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index ba60bab9b50..84c07dbf2b3 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -702,49 +702,6 @@ enum enum_check_fields
CHECK_FIELD_ERROR_FOR_NULL
};
-
-/** Struct to handle simple linked lists. */
-typedef struct st_sql_list {
- uint elements;
- uchar *first;
- uchar **next;
-
- st_sql_list() {} /* Remove gcc warning */
- inline void empty()
- {
- elements=0;
- first=0;
- next= &first;
- }
- inline void link_in_list(uchar *element,uchar **next_ptr)
- {
- elements++;
- (*next)=element;
- next= next_ptr;
- *next=0;
- }
- inline void save_and_clear(struct st_sql_list *save)
- {
- *save= *this;
- empty();
- }
- inline void push_front(struct st_sql_list *save)
- {
- *save->next= first; /* link current list last */
- first= save->first;
- elements+= save->elements;
- }
- inline void push_back(struct st_sql_list *save)
- {
- if (save->first)
- {
- *next= save->first;
- next= save->next;
- elements+= save->elements;
- }
- }
-} SQL_LIST;
-
#if defined(MYSQL_DYNAMIC_PLUGIN) && defined(_WIN32)
extern "C" THD *_current_thd_noinline();
#define _current_thd() _current_thd_noinline()
@@ -1132,7 +1089,7 @@ bool mysql_opt_change_db(THD *thd,
bool force_switch,
bool *cur_db_changed);
-void mysql_parse(THD *thd, const char *inBuf, uint length,
+void mysql_parse(THD *thd, char *rawbuf, uint length,
const char ** semicolon);
bool mysql_test_parse_for_slave(THD *thd,char *inBuf,uint length);
@@ -1342,7 +1299,7 @@ int check_that_all_fields_are_given_values(THD *thd, TABLE *entry,
void prepare_triggers_for_insert_stmt(TABLE *table);
int mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds);
bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
- SQL_LIST *order, ha_rows rows, ulonglong options,
+ SQL_I_List<ORDER> *order, ha_rows rows, ulonglong options,
bool reset_auto_increment);
bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok);
bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create);
@@ -1368,7 +1325,8 @@ bool fix_merge_after_open(TABLE_LIST *old_child_list, TABLE_LIST **old_last,
TABLE_LIST *new_child_list, TABLE_LIST **new_last);
bool reopen_table(TABLE *table);
bool reopen_tables(THD *thd,bool get_locks,bool in_refresh);
-thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table);
+thr_lock_type read_lock_type_for_table(THD *thd, LEX *lex,
+ TABLE_LIST *table_list);
void close_data_files_and_morph_locks(THD *thd, const char *db,
const char *table_name);
void close_handle_and_leave_table_as_lock(TABLE *table);
@@ -1402,7 +1360,7 @@ find_field_in_table(THD *thd, TABLE *table, const char *name, uint length,
bool allow_rowid, uint *cached_field_index_ptr);
Field *
find_field_in_table_sef(TABLE *table, const char *name);
-int update_virtual_fields(TABLE *table, bool ignore_stored= FALSE);
+int update_virtual_fields(THD *thd, TABLE *table, bool ignore_stored= FALSE);
#endif /* MYSQL_SERVER */
@@ -1545,7 +1503,7 @@ Create_field * new_create_field(THD *thd, char *field_name, enum_field_types typ
uint uint_geom_type,
Virtual_column_info *vcol_info);
void store_position_for_column(const char *name);
-bool add_to_list(THD *thd, SQL_LIST &list,Item *group,bool asc);
+bool add_to_list(THD *thd, SQL_I_List<ORDER> &list, Item *group,bool asc);
bool push_new_name_resolution_context(THD *thd,
TABLE_LIST *left_op,
TABLE_LIST *right_op);
@@ -1820,7 +1778,7 @@ extern pthread_mutex_t LOCK_gdl;
#define WFRM_PACK_FRM 4
#define WFRM_KEEP_SHARE 8
bool mysql_write_frm(ALTER_PARTITION_PARAM_TYPE *lpt, uint flags);
-int abort_and_upgrade_lock(ALTER_PARTITION_PARAM_TYPE *lpt);
+int abort_and_upgrade_lock_and_close_table(ALTER_PARTITION_PARAM_TYPE *lpt);
void close_open_tables_and_downgrade(ALTER_PARTITION_PARAM_TYPE *lpt);
void mysql_wait_completed_table(ALTER_PARTITION_PARAM_TYPE *lpt, TABLE *my_table);
@@ -2091,6 +2049,7 @@ extern bool volatile abort_loop, shutdown_in_progress;
extern bool in_bootstrap;
extern uint volatile thread_count, thread_running, global_read_lock;
extern ulong thread_created;
+extern uint thread_handling;
extern uint connection_count, extra_connection_count;
extern my_bool opt_sql_bin_update, opt_safe_user_create, opt_no_mix_types;
extern my_bool opt_safe_show_db, opt_local_infile, opt_myisam_use_mmap;
@@ -2341,7 +2300,7 @@ longlong get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
int test_if_number(char *str,int *res,bool allow_wildcards);
void change_byte(uchar *,uint,char,char);
-void init_read_record(READ_RECORD *info, THD *thd, TABLE *reg_form,
+bool init_read_record(READ_RECORD *info, THD *thd, TABLE *reg_form,
SQL_SELECT *select, int use_record_cache,
bool print_errors, bool disable_rr_cache);
void init_read_record_idx(READ_RECORD *info, THD *thd, TABLE *table,
@@ -2382,6 +2341,7 @@ char *fn_rext(char *name);
/* Conversion functions */
#endif /* MYSQL_SERVER */
+
#if defined MYSQL_SERVER || defined INNODB_COMPATIBILITY_HOOKS
uint strconvert(CHARSET_INFO *from_cs, const char *from,
CHARSET_INFO *to_cs, char *to, uint to_length, uint *errors);
@@ -2398,6 +2358,7 @@ uint explain_filename(THD* thd, const char *from, char *to, uint to_length,
uint filename_to_tablename(const char *from, char *to, uint to_length);
uint tablename_to_filename(const char *from, char *to, uint to_length);
uint check_n_cut_mysql50_prefix(const char *from, char *to, uint to_length);
+bool check_mysql50_prefix(const char *name);
#endif /* MYSQL_SERVER || INNODB_COMPATIBILITY_HOOKS */
#ifdef MYSQL_SERVER
uint build_table_filename(char *buff, size_t bufflen, const char *db,
@@ -2405,9 +2366,6 @@ uint build_table_filename(char *buff, size_t bufflen, const char *db,
const char *get_canonical_filename(handler *file, const char *path,
char *tmp_path);
-#define MYSQL50_TABLE_NAME_PREFIX "#mysql50#"
-#define MYSQL50_TABLE_NAME_PREFIX_LENGTH 9
-
uint build_table_shadow_filename(char *buff, size_t bufflen,
ALTER_PARTITION_PARAM_TYPE *lpt);
/* Flags for conversion functions. */
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 1593a584454..627827b39be 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -181,6 +181,21 @@ typedef fp_except fp_except_t;
/* for IRIX to use set_fpc_csr() */
#include <sys/fpu.h>
#endif
+#ifdef HAVE_FPU_CONTROL_H
+#include <fpu_control.h>
+#endif
+#if defined(__i386__) && !defined(HAVE_FPU_CONTROL_H)
+# define fpu_control_t unsigned int
+# define _FPU_EXTENDED 0x300
+# define _FPU_DOUBLE 0x200
+# if defined(__GNUC__) || (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x590)
+# define _FPU_GETCW(cw) asm volatile ("fnstcw %0" : "=m" (*&cw))
+# define _FPU_SETCW(cw) asm volatile ("fldcw %0" : : "m" (*&cw))
+# else
+# define _FPU_GETCW(cw) (cw= 0)
+# define _FPU_SETCW(cw)
+# endif
+#endif
inline void setup_fpu()
{
@@ -202,7 +217,26 @@ inline void setup_fpu()
/* Set FPU rounding mode to "round-to-nearest" */
fesetround(FE_TONEAREST);
#endif /* HAVE_FESETROUND */
-
+
+ /*
+ x86 (32-bit) requires FPU precision to be explicitly set to 64 bit
+ (double precision) for portable results of floating point operations.
+ However, there is no need to do so if compiler is using SSE2 for floating
+ point, double values will be stored and processed in 64 bits anyway.
+ */
+#if defined(__i386__) && !defined(__SSE2_MATH__)
+#if defined(_WIN32)
+#if !defined(_WIN64)
+ _control87(_PC_53, MCW_PC);
+#endif /* !_WIN64 */
+#else /* !_WIN32 */
+ fpu_control_t cw;
+ _FPU_GETCW(cw);
+ cw= (cw & ~_FPU_EXTENDED) | _FPU_DOUBLE;
+ _FPU_SETCW(cw);
+#endif /* _WIN32 && */
+#endif /* __i386__ */
+
#if defined(__sgi) && defined(HAVE_SYS_FPU_H)
/* Enable denormalized DOUBLE values support for IRIX */
union fpc_csr n;
@@ -361,6 +395,16 @@ TYPELIB thread_handling_typelib=
thread_handling_names, NULL
};
+const char *plugin_maturity_names[]=
+{ "unknown", "experimental", "alpha", "beta", "gamma", "stable", 0 };
+
+TYPELIB plugin_maturity_values=
+{
+ array_elements(plugin_maturity_names) - 1, "", plugin_maturity_names, 0
+};
+
+const int server_maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN;
+
const char *first_keyword= "first", *binary_keyword= "BINARY";
const char *my_localhost= "localhost", *delayed_user= "DELAYED";
#if SIZEOF_OFF_T > 4 && defined(BIG_TABLES)
@@ -398,8 +442,10 @@ static bool volatile ready_to_exit;
static my_bool opt_debugging= 0, opt_external_locking= 0, opt_console= 0;
static my_bool opt_short_log_format= 0;
static my_bool opt_ignore_wrong_options= 0, opt_expect_abort= 0;
+static my_bool opt_sync= 0;
static uint kill_cached_threads, wake_thread;
ulong thread_created;
+uint thread_handling;
static ulong max_used_connections;
static ulong my_bind_addr; /**< the address we bind to */
static volatile ulong cached_thread_count= 0;
@@ -561,7 +607,7 @@ ulong query_buff_size, slow_launch_time, slave_open_temp_tables;
ulong open_files_limit, max_binlog_size, max_relay_log_size;
ulong slave_net_timeout, slave_trans_retries;
ulong slave_exec_mode_options;
-const char *slave_exec_mode_str= "STRICT";
+static const char *slave_exec_mode_str= "STRICT";
ulong thread_cache_size=0, thread_pool_size= 0;
ulong binlog_cache_size=0;
ulonglong max_binlog_cache_size=0;
@@ -1261,7 +1307,7 @@ extern "C" sig_handler print_signal_warning(int sig)
{
if (global_system_variables.log_warnings)
sql_print_warning("Got signal %d from thread %ld", sig,my_thread_id());
-#ifdef DONT_REMEMBER_SIGNAL
+#ifdef SIGNAL_HANDLER_RESET_ON_DELIVERY
my_sigset(sig,print_signal_warning); /* int. thread system calls */
#endif
#if !defined(__WIN__) && !defined(__NETWARE__)
@@ -2554,7 +2600,9 @@ extern "C" sig_handler handle_segfault(int sig)
{
time_t curr_time;
struct tm tm;
+#ifdef HAVE_STACKTRACE
THD *thd=current_thd;
+#endif
/*
Strictly speaking, one needs a mutex here
@@ -2621,13 +2669,14 @@ the thread stack. Please read http://dev.mysql.com/doc/mysql/en/linux.html\n\n",
#endif /* HAVE_LINUXTHREADS */
#ifdef HAVE_STACKTRACE
+
if (!(test_flags & TEST_NO_STACKTRACE))
{
- fprintf(stderr,"thd: 0x%lx\n",(long) thd);
- fprintf(stderr,"\
-Attempting backtrace. You can use the following information to find out\n\
-where mysqld died. If you see no messages after this, something went\n\
-terribly wrong...\n");
+ fprintf(stderr, "thd: 0x%lx\n",(long) thd);
+ fprintf(stderr, "Attempting backtrace. You can use the following "
+ "information to find out\nwhere mysqld died. If "
+ "you see no messages after this, something went\n"
+ "terribly wrong...\n");
my_print_stacktrace(thd ? (uchar*) thd->thread_stack : NULL,
my_thread_stack_size);
}
@@ -3020,7 +3069,7 @@ int my_message_sql(uint error, const char *str, myf MyFlags)
{
/* At least, prevent new abuse ... */
DBUG_ASSERT(strncmp(str, "MyISAM table", 12) == 0 ||
- strncmp(str, "MARIA table", 11) == 0);
+ strncmp(str, "Aria table", 11) == 0);
error= ER_UNKNOWN_ERROR;
}
@@ -3072,7 +3121,20 @@ int my_message_sql(uint error, const char *str, myf MyFlags)
}
else
{
- if (! thd->main_da.is_error()) // Return only first message
+ if (thd->main_da.is_ok() && !thd->main_da.can_overwrite_status)
+ {
+ /*
+ Client has already got ok packet and we are not in net_flush(), so
+ we write a message to error log.
+ This could happen if we get an error in implicit commit.
+ This should never happen in normal operation, so lets
+ assert here in debug builds.
+ */
+ DBUG_ASSERT(0);
+ func= sql_print_error;
+ MyFlags|= ME_NOREFRESH;
+ }
+ else if (! thd->main_da.is_error()) // Return only first message
{
thd->main_da.set_error_status(thd, error, str);
}
@@ -3093,6 +3155,9 @@ int my_message_sql(uint error, const char *str, myf MyFlags)
DBUG_RETURN(0);
}
+ /* When simulating OOM, skip writing to error log to avoid mtr errors */
+ DBUG_EXECUTE_IF("simulate_out_of_memory", DBUG_RETURN(0););
+
if (!thd->no_warnings_for_error &&
!(MyFlags & ME_NO_WARNING_FOR_ERROR))
{
@@ -3105,7 +3170,11 @@ int my_message_sql(uint error, const char *str, myf MyFlags)
thd->no_warnings_for_error= FALSE;
}
}
+
to_error_log:
+ /* When simulating OOM, skip writing to error log to avoid mtr errors */
+ DBUG_EXECUTE_IF("simulate_out_of_memory", DBUG_RETURN(0););
+
if (!thd || (MyFlags & ME_NOREFRESH))
(*func)("%s: %s", my_progname_short, str); /* purecov: inspected */
DBUG_RETURN(0);
@@ -3364,6 +3433,13 @@ static int init_common_variables(const char *conf_file_name, int argc,
max_system_variables.pseudo_thread_id= (ulong)~0;
server_start_time= flush_status_time= my_time(0);
+ /* TODO: remove this when my_time_t is 64 bit compatible */
+ if (server_start_time >= (time_t) MY_TIME_T_MAX)
+ {
+ sql_print_error("This MySQL server doesn't support dates later then 2038");
+ return 1;
+ }
+
rpl_filter= new Rpl_filter;
binlog_filter= new Rpl_filter;
if (!rpl_filter || !binlog_filter)
@@ -4189,7 +4265,6 @@ a file name for --log-bin-index option", opt_binlog_index_name);
unireg_abort(1);
}
-#ifdef WITH_CSV_STORAGE_ENGINE
if (opt_bootstrap)
log_output_options= LOG_FILE;
else
@@ -4223,10 +4298,6 @@ a file name for --log-bin-index option", opt_binlog_index_name);
logger.set_handlers(LOG_FILE, opt_slow_log ? log_output_options:LOG_NONE,
opt_log ? log_output_options:LOG_NONE);
}
-#else
- logger.set_handlers(LOG_FILE, opt_slow_log ? LOG_FILE:LOG_NONE,
- opt_log ? LOG_FILE:LOG_NONE);
-#endif
/*
Check that the default storage engine is actually available.
@@ -4268,10 +4339,10 @@ a file name for --log-bin-index option", opt_binlog_index_name);
pthread_mutex_unlock(&LOCK_global_system_variables);
}
}
-#if defined(WITH_MARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
+#if defined(WITH_ARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
if (!ha_storage_engine_is_enabled(maria_hton) && !opt_bootstrap)
{
- sql_print_error("Maria engine is not enabled or did not start. The Maria engine must be enabled to continue as mysqld was configured with --with-maria-tmp-tables");
+ sql_print_error("Aria engine is not enabled or did not start. The Aria engine must be enabled to continue as mysqld was configured with --with-aria-tmp-tables");
unireg_abort(1);
}
#endif
@@ -5791,7 +5862,7 @@ error:
enum options_mysqld
{
- OPT_ISAM_LOG=256, OPT_SKIP_NEW,
+ OPT_ISAM_LOG=256,
OPT_SKIP_GRANT, OPT_SKIP_LOCK,
OPT_ENABLE_LOCK, OPT_USE_LOCKING,
OPT_SOCKET, OPT_UPDATE_LOG,
@@ -5912,7 +5983,7 @@ enum options_mysqld
OPT_RANGE_ALLOC_BLOCK_SIZE, OPT_ALLOW_SUSPICIOUS_UDFS,
OPT_QUERY_ALLOC_BLOCK_SIZE, OPT_QUERY_PREALLOC_SIZE,
OPT_TRANS_ALLOC_BLOCK_SIZE, OPT_TRANS_PREALLOC_SIZE,
- OPT_SYNC_FRM, OPT_SYNC_BINLOG,
+ OPT_SYNC_FRM, OPT_SYNC_BINLOG, OPT_SYNC,
OPT_SYNC_REPLICATION,
OPT_SYNC_REPLICATION_SLAVE_ID,
OPT_SYNC_REPLICATION_TIMEOUT,
@@ -5950,6 +6021,7 @@ enum options_mysqld
OPT_TABLE_LOCK_WAIT_TIMEOUT,
OPT_PLUGIN_LOAD,
OPT_PLUGIN_DIR,
+ OPT_PLUGIN_MATURITY,
OPT_SYMBOLIC_LINKS,
OPT_WARNINGS,
OPT_RECORD_BUFFER_OLD,
@@ -5969,6 +6041,7 @@ enum options_mysqld
#if defined(ENABLED_DEBUG_SYNC)
OPT_DEBUG_SYNC_TIMEOUT,
#endif /* defined(ENABLED_DEBUG_SYNC) */
+ OPT_DEPRECATED_OPTION,
OPT_SLAVE_EXEC_MODE,
OPT_DEADLOCK_SEARCH_DEPTH_SHORT,
OPT_DEADLOCK_SEARCH_DEPTH_LONG,
@@ -5990,13 +6063,13 @@ enum options_mysqld
struct my_option my_long_options[] =
{
- {"help", '?', "Display this help and exit.",
- (uchar**) &opt_help, (uchar**) &opt_help, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ {"help", '?', "Display this help and exit.",
+ &opt_help, &opt_help, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
#ifdef HAVE_REPLICATION
{"abort-slave-event-count", OPT_ABORT_SLAVE_EVENT_COUNT,
"Option used by mysql-test for debugging and testing of replication.",
- (uchar**) &abort_slave_event_count, (uchar**) &abort_slave_event_count,
+ &abort_slave_event_count, &abort_slave_event_count,
0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif /* HAVE_REPLICATION */
{"allow-suspicious-udfs", OPT_ALLOW_SUSPICIOUS_UDFS,
@@ -6004,33 +6077,34 @@ struct my_option my_long_options[] =
"without corresponding xxx_init() or xxx_deinit(). That also means "
"that one can load any function from any library, for example exit() "
"from libc.so",
- (uchar**) &opt_allow_suspicious_udfs, (uchar**) &opt_allow_suspicious_udfs,
+ &opt_allow_suspicious_udfs, &opt_allow_suspicious_udfs,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"ansi", 'a', "Use ANSI SQL syntax instead of MySQL syntax. This mode will also set transaction isolation level 'serializable'.", 0, 0, 0,
+ {"ansi", 'a', "Use ANSI SQL syntax instead of MySQL syntax. This mode "
+ "will also set transaction isolation level 'serializable'.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"auto-increment-increment", OPT_AUTO_INCREMENT,
"Auto-increment columns are incremented by this.",
- (uchar**) &global_system_variables.auto_increment_increment,
- (uchar**) &max_system_variables.auto_increment_increment, 0, GET_ULONG,
+ &global_system_variables.auto_increment_increment,
+ &max_system_variables.auto_increment_increment, 0, GET_ULONG,
OPT_ARG, 1, 1, 65535, 0, 1, 0 },
{"auto-increment-offset", OPT_AUTO_INCREMENT_OFFSET,
"Offset added to Auto-increment columns. Used when auto-increment-increment != 1.",
- (uchar**) &global_system_variables.auto_increment_offset,
- (uchar**) &max_system_variables.auto_increment_offset, 0, GET_ULONG, OPT_ARG,
+ &global_system_variables.auto_increment_offset,
+ &max_system_variables.auto_increment_offset, 0, GET_ULONG, OPT_ARG,
1, 1, 65535, 0, 1, 0 },
{"automatic-sp-privileges", OPT_SP_AUTOMATIC_PRIVILEGES,
"Creating and dropping stored procedures alters ACLs. Disable with --skip-automatic-sp-privileges.",
- (uchar**) &sp_automatic_privileges, (uchar**) &sp_automatic_privileges,
+ &sp_automatic_privileges, &sp_automatic_privileges,
0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"basedir", 'b',
"Path to installation directory. All paths are usually resolved relative to this.",
- (uchar**) &mysql_home_ptr, (uchar**) &mysql_home_ptr, 0, GET_STR, REQUIRED_ARG,
+ &mysql_home_ptr, &mysql_home_ptr, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"big-tables", OPT_BIG_TABLES,
"Allow big result sets by saving all temporary sets on file (solves most 'table full' errors).",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"bind-address", OPT_BIND_ADDRESS, "IP address to bind to.",
- (uchar**) &my_bind_addr_str, (uchar**) &my_bind_addr_str, 0, GET_STR,
+ &my_bind_addr_str, &my_bind_addr_str, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"binlog_format", OPT_BINLOG_FORMAT,
"Does not have any effect without '--log-bin'. "
@@ -6043,10 +6117,11 @@ struct my_option my_long_options[] =
"If ndbcluster is enabled and binlog_format is `mixed', the format switches"
" to 'row' and back implicitly per each query accessing a NDB table."
#endif
- ,(uchar**) &opt_binlog_format, (uchar**) &opt_binlog_format,
+ , &opt_binlog_format, &opt_binlog_format,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"binlog-do-db", OPT_BINLOG_DO_DB,
- "Tells the master it should log updates for the specified database, and exclude all others not explicitly mentioned.",
+ "Tells the master it should log updates for the specified database, "
+ "and exclude all others not explicitly mentioned.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"binlog-ignore-db", OPT_BINLOG_IGNORE_DB,
"Tells the master that updates to the given database should not be logged to the binary log.",
@@ -6055,12 +6130,10 @@ struct my_option my_long_options[] =
"The maximum size of a row-based binary log event in bytes. Rows will be "
"grouped into events smaller than this size if possible. "
"The value has to be a multiple of 256.",
- (uchar**) &opt_binlog_rows_event_max_size,
- (uchar**) &opt_binlog_rows_event_max_size, 0,
- GET_ULONG, REQUIRED_ARG,
- /* def_value */ 1024, /* min_value */ 256,
- /* max_value */ (longlong) ULONG_MAX,
- /* sub_size */ 0, /* block_size */ 256,
+ &opt_binlog_rows_event_max_size, &opt_binlog_rows_event_max_size,
+ 0, GET_ULONG, REQUIRED_ARG,
+ /* def_value */ 1024, /* min_value */ 256, /* max_value */ ULONG_MAX,
+ /* sub_size */ 0, /* block_size */ 256,
/* app_type */ 0
},
#ifndef DISABLE_GRANT_OPTIONS
@@ -6069,134 +6142,138 @@ struct my_option my_long_options[] =
#endif
{"character-set-client-handshake", OPT_CHARACTER_SET_CLIENT_HANDSHAKE,
"Don't ignore client side character set value sent during handshake.",
- (uchar**) &opt_character_set_client_handshake,
- (uchar**) &opt_character_set_client_handshake,
+ &opt_character_set_client_handshake,
+ &opt_character_set_client_handshake,
0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"character-set-filesystem", OPT_CHARACTER_SET_FILESYSTEM,
"Set the filesystem character set.",
- (uchar**) &character_set_filesystem_name,
- (uchar**) &character_set_filesystem_name,
+ &character_set_filesystem_name,
+ &character_set_filesystem_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"character-set-server", 'C', "Set the default character set.",
- (uchar**) &default_character_set_name, (uchar**) &default_character_set_name,
+ &default_character_set_name, &default_character_set_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"character-sets-dir", OPT_CHARSETS_DIR,
- "Directory where character sets are.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory where character sets are.", &charsets_dir,
+ &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"chroot", 'r', "Chroot mysqld daemon during startup.",
- (uchar**) &mysqld_chroot, (uchar**) &mysqld_chroot, 0, GET_STR, REQUIRED_ARG,
+ &mysqld_chroot, &mysqld_chroot, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"collation-server", OPT_DEFAULT_COLLATION, "Set the default collation.",
- (uchar**) &default_collation_name, (uchar**) &default_collation_name,
+ &default_collation_name, &default_collation_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"completion-type", OPT_COMPLETION_TYPE, "Default completion type.",
- (uchar**) &global_system_variables.completion_type,
- (uchar**) &max_system_variables.completion_type, 0, GET_ULONG,
+ &global_system_variables.completion_type,
+ &max_system_variables.completion_type, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, 2, 0, 1, 0},
{"concurrent-insert", OPT_CONCURRENT_INSERT,
"Use concurrent insert with MyISAM. Disable with --concurrent-insert=0.",
- (uchar**) &myisam_concurrent_insert, (uchar**) &myisam_concurrent_insert,
+ &myisam_concurrent_insert, &myisam_concurrent_insert,
0, GET_ULONG, OPT_ARG, 1, 0, 2, 0, 0, 0},
{"console", OPT_CONSOLE, "Write error output on screen; don't remove the console window on windows.",
- (uchar**) &opt_console, (uchar**) &opt_console, 0, GET_BOOL, NO_ARG, 0, 0, 0,
+ &opt_console, &opt_console, 0, GET_BOOL, NO_ARG, 0, 0, 0,
0, 0, 0},
{"core-file", OPT_WANT_CORE, "Write core on errors.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
- {"datadir", 'h', "Path to the database root.", (uchar**) &mysql_data_home,
- (uchar**) &mysql_data_home, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"datadir", 'h', "Path to the database root.", &mysql_data_home,
+ &mysql_data_home, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"deadlock-search-depth-short", OPT_DEADLOCK_SEARCH_DEPTH_SHORT,
"Short search depth for the two-step deadlock detection",
- (uchar**) &global_system_variables.wt_deadlock_search_depth_short,
- (uchar**) &max_system_variables.wt_deadlock_search_depth_short,
+ &global_system_variables.wt_deadlock_search_depth_short,
+ &max_system_variables.wt_deadlock_search_depth_short,
0, GET_ULONG, REQUIRED_ARG, 4, 0, 32, 0, 0, 0},
{"deadlock-search-depth-long", OPT_DEADLOCK_SEARCH_DEPTH_LONG,
"Long search depth for the two-step deadlock detection",
- (uchar**) &global_system_variables.wt_deadlock_search_depth_long,
- (uchar**) &max_system_variables.wt_deadlock_search_depth_long,
+ &global_system_variables.wt_deadlock_search_depth_long,
+ &max_system_variables.wt_deadlock_search_depth_long,
0, GET_ULONG, REQUIRED_ARG, 15, 0, 33, 0, 0, 0},
{"deadlock-timeout-short", OPT_DEADLOCK_TIMEOUT_SHORT,
"Short timeout for the two-step deadlock detection (in microseconds)",
- (uchar**) &global_system_variables.wt_timeout_short,
- (uchar**) &max_system_variables.wt_timeout_short,
+ &global_system_variables.wt_timeout_short,
+ &max_system_variables.wt_timeout_short,
0, GET_ULONG, REQUIRED_ARG, 10000, 0, ULONG_MAX, 0, 0, 0},
{"deadlock-timeout-long", OPT_DEADLOCK_TIMEOUT_LONG,
"Long timeout for the two-step deadlock detection (in microseconds)",
- (uchar**) &global_system_variables.wt_timeout_long,
- (uchar**) &max_system_variables.wt_timeout_long,
+ &global_system_variables.wt_timeout_long,
+ &max_system_variables.wt_timeout_long,
0, GET_ULONG, REQUIRED_ARG, 50000000, 0, ULONG_MAX, 0, 0, 0},
#ifndef DBUG_OFF
- {"debug", '#', "Debug log.", (uchar**) &default_dbug_option,
- (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Debug log.", &default_dbug_option,
+ &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"debug-crc-break", OPT_DEBUG_CRC,
"Call my_debug_put_break_here() if crc matches this number (for debug).",
- (uchar**) &opt_my_crc_dbug_check, (uchar**) &opt_my_crc_dbug_check,
+ &opt_my_crc_dbug_check, &opt_my_crc_dbug_check,
0, GET_ULONG, REQUIRED_ARG, 0, 0, ~(ulong) 0L, 0, 0, 0},
{"debug-flush", OPT_DEBUG_FLUSH, "Default debug log with flush after write",
- (uchar**) 0, (uchar**) 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
+ 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"default-character-set", OPT_DEFAULT_CHARACTER_SET_OLD,
"Set the default character set (deprecated option, use --character-set-server instead).",
- (uchar**) &default_character_set_name, (uchar**) &default_character_set_name,
+ &default_character_set_name, &default_character_set_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
- {"default-collation", OPT_DEFAULT_COLLATION_OLD, "Set the default collation (deprecated option, use --collation-server instead).",
- (uchar**) &default_collation_name, (uchar**) &default_collation_name,
+ {"default-collation", OPT_DEFAULT_COLLATION_OLD, "Set the default collation "
+ "(deprecated option, use --collation-server instead).",
+ &default_collation_name, &default_collation_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"default-storage-engine", OPT_STORAGE_ENGINE,
"Set the default storage engine (table type) for tables.",
- (uchar**)&default_storage_engine_str, (uchar**)&default_storage_engine_str,
+ &default_storage_engine_str, &default_storage_engine_str,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"default-table-type", OPT_STORAGE_ENGINE,
"(deprecated) Use --default-storage-engine.",
- (uchar**)&default_storage_engine_str, (uchar**)&default_storage_engine_str,
+ &default_storage_engine_str, &default_storage_engine_str,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"default-time-zone", OPT_DEFAULT_TIME_ZONE, "Set the default time zone.",
- (uchar**) &default_tz_name, (uchar**) &default_tz_name,
+ &default_tz_name, &default_tz_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"delay-key-write", OPT_DELAY_KEY_WRITE, "Type of DELAY_KEY_WRITE.",
0,0,0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"delay-key-write-for-all-tables", OPT_DELAY_KEY_WRITE_ALL,
- "Don't flush key buffers between writes for any MyISAM table. (Deprecated option, use --delay-key-write=all instead.)",
+ "Don't flush key buffers between writes for any MyISAM table. "
+ "(Deprecated option, use --delay-key-write=all instead.)",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_OPENSSL
{"des-key-file", OPT_DES_KEY_FILE,
"Load keys for des_encrypt() and des_encrypt from given file.",
- (uchar**) &des_key_file, (uchar**) &des_key_file, 0, GET_STR, REQUIRED_ARG,
+ &des_key_file, &des_key_file, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#endif /* HAVE_OPENSSL */
#ifdef HAVE_REPLICATION
{"disconnect-slave-event-count", OPT_DISCONNECT_SLAVE_EVENT_COUNT,
"Option used by mysql-test for debugging and testing of replication.",
- (uchar**) &disconnect_slave_event_count,
- (uchar**) &disconnect_slave_event_count, 0, GET_INT, REQUIRED_ARG, 0, 0, 0,
- 0, 0, 0},
+ &disconnect_slave_event_count, &disconnect_slave_event_count,
+ 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif /* HAVE_REPLICATION */
{"enable-locking", OPT_ENABLE_LOCK,
"Deprecated option, use --external-locking instead.",
- (uchar**) &opt_external_locking, (uchar**) &opt_external_locking,
+ &opt_external_locking, &opt_external_locking,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef __NT__
{"enable-named-pipe", OPT_HAVE_NAMED_PIPE, "Enable the named pipe (NT).",
- (uchar**) &opt_enable_named_pipe, (uchar**) &opt_enable_named_pipe, 0, GET_BOOL,
+ &opt_enable_named_pipe, &opt_enable_named_pipe, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
#ifdef HAVE_STACK_TRACE_ON_SEGV
{"enable-pstack", OPT_DO_PSTACK, "Print a symbolic stack trace on failure.",
- (uchar**) &opt_do_pstack, (uchar**) &opt_do_pstack, 0, GET_BOOL, NO_ARG, 0, 0,
+ &opt_do_pstack, &opt_do_pstack, 0, GET_BOOL, NO_ARG, 0, 0,
0, 0, 0, 0},
#endif /* HAVE_STACK_TRACE_ON_SEGV */
{"engine-condition-pushdown",
OPT_ENGINE_CONDITION_PUSHDOWN,
"Push supported query conditions to the storage engine.",
- (uchar**) &global_system_variables.engine_condition_pushdown,
- (uchar**) &global_system_variables.engine_condition_pushdown,
+ &global_system_variables.engine_condition_pushdown,
+ &global_system_variables.engine_condition_pushdown,
0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
/* See how it's handled in get_one_option() */
{"event-scheduler", OPT_EVENT_SCHEDULER, "Enable/disable the event scheduler.",
NULL, NULL, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"exit-info", 'T', "Used for debugging. Use at your own risk.", 0, 0, 0,
GET_LONG, OPT_ARG, 0, 0, 0, 0, 0, 0},
- {"external-locking", OPT_USE_LOCKING, "Use system (external) locking (disabled by default). With this option enabled you can run myisamchk to test (not repair) tables while the MySQL server is running. Disable with --skip-external-locking.",
- (uchar**) &opt_external_locking, (uchar**) &opt_external_locking,
+ {"external-locking", OPT_USE_LOCKING, "Use system (external) locking "
+ "(disabled by default). With this option enabled you can run myisamchk "
+ "to test (not repair) tables while the MySQL server is running. "
+ "Disable with --skip-external-locking.",
+ &opt_external_locking, &opt_external_locking,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"flush", OPT_FLUSH, "Flush tables to disk between SQL commands.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -6204,73 +6281,70 @@ struct my_option my_long_options[] =
easier to do */
{"extra-port", OPT_EXTRA_PORT,
"Extra port number to use for tcp-connections in a one-thread-per-connection manner. 0 means don't use another port",
- (uchar**) &mysqld_extra_port,
- (uchar**) &mysqld_extra_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &mysqld_extra_port,
+ &mysqld_extra_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"extra-max-connections", OPT_MAX_CONNECTIONS,
"The number of connections on 'extra-port.",
- (uchar**) &extra_max_connections,
- (uchar**) &extra_max_connections, 0, GET_ULONG, REQUIRED_ARG, 1, 1, 100000,
+ &extra_max_connections,
+ &extra_max_connections, 0, GET_ULONG, REQUIRED_ARG, 1, 1, 100000,
0, 1, 0},
{"gdb", OPT_DEBUGGING,
"Set up signals usable for debugging.",
- (uchar**) &opt_debugging, (uchar**) &opt_debugging,
+ &opt_debugging, &opt_debugging,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"general_log", OPT_GENERAL_LOG,
- "Enable/disable general log.", (uchar**) &opt_log,
- (uchar**) &opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ "Enable/disable general log.", &opt_log,
+ &opt_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_LARGE_PAGES
- {"large-pages", OPT_ENABLE_LARGE_PAGES, "Enable support for large pages. \
-Disable with --skip-large-pages.",
- (uchar**) &opt_large_pages, (uchar**) &opt_large_pages, 0, GET_BOOL, NO_ARG, 0, 0, 0,
- 0, 0, 0},
+ {"large-pages", OPT_ENABLE_LARGE_PAGES, "Enable support for large pages. "
+ "Disable with --skip-large-pages.", &opt_large_pages, &opt_large_pages,
+ 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"ignore-builtin-innodb", OPT_IGNORE_BUILTIN_INNODB ,
"Disable initialization of builtin InnoDB plugin.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"init-connect", OPT_INIT_CONNECT,
"Command(s) that are executed for each new connection.",
- (uchar**) &opt_init_connect, (uchar**) &opt_init_connect, 0, GET_STR_ALLOC,
+ &opt_init_connect, &opt_init_connect, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DISABLE_GRANT_OPTIONS
{"init-file", OPT_INIT_FILE, "Read SQL commands from this file at startup.",
- (uchar**) &opt_init_file, (uchar**) &opt_init_file, 0, GET_STR, REQUIRED_ARG,
+ &opt_init_file, &opt_init_file, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
#endif
{"init-rpl-role", OPT_INIT_RPL_ROLE, "Set the replication role.", 0, 0, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"init-slave", OPT_INIT_SLAVE, "Command(s) that are executed by a slave server \
each time the SQL thread starts.",
- (uchar**) &opt_init_slave, (uchar**) &opt_init_slave, 0, GET_STR_ALLOC,
+ &opt_init_slave, &opt_init_slave, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"language", 'L',
"Client error messages in given language. May be given as a full path.",
- (uchar**) &language_ptr, (uchar**) &language_ptr, 0, GET_STR, REQUIRED_ARG,
+ &language_ptr, &language_ptr, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"lc-time-names", OPT_LC_TIME_NAMES,
"Set the language used for the month names and the days of the week.",
- (uchar**) &lc_time_names_name,
- (uchar**) &lc_time_names_name,
+ &lc_time_names_name, &lc_time_names_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"local-infile", OPT_LOCAL_INFILE,
"Enable/disable LOAD DATA LOCAL INFILE (takes values 1 or 0).",
- (uchar**) &opt_local_infile,
- (uchar**) &opt_local_infile, 0, GET_BOOL, OPT_ARG,
+ &opt_local_infile, &opt_local_infile, 0, GET_BOOL, OPT_ARG,
1, 0, 0, 0, 0, 0},
{"log", 'l', "Log connections and queries to file (deprecated option, use "
- "--general_log/--general_log_file instead).", (uchar**) &opt_logname,
- (uchar**) &opt_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ "--general_log/--general_log_file instead).", &opt_logname,
+ &opt_logname, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"general_log_file", OPT_GENERAL_LOG_FILE,
- "Log connections and queries to given file.", (uchar**) &opt_logname,
- (uchar**) &opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Log connections and queries to given file.", &opt_logname,
+ &opt_logname, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"log-bin", OPT_BIN_LOG,
"Log update queries in binary format. Optional (but strongly recommended "
"to avoid replication problems if server's hostname changes) argument "
"should be the chosen location for the binary log files.",
- (uchar**) &opt_bin_logname, (uchar**) &opt_bin_logname, 0, GET_STR_ALLOC,
+ &opt_bin_logname, &opt_bin_logname, 0, GET_STR_ALLOC,
OPT_ARG, 0, 0, 0, 0, 0, 0},
{"log-bin-index", OPT_BIN_LOG_INDEX,
"File that holds the names for last binary log files.",
- (uchar**) &opt_binlog_index_name, (uchar**) &opt_binlog_index_name, 0, GET_STR,
+ &opt_binlog_index_name, &opt_binlog_index_name, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifndef TO_BE_REMOVED_IN_5_1_OR_6_0
/*
@@ -6281,7 +6355,7 @@ each time the SQL thread starts.",
*/
{"log-bin-trust-routine-creators", OPT_LOG_BIN_TRUST_FUNCTION_CREATORS_OLD,
"(deprecated) Use log-bin-trust-function-creators.",
- (uchar**) &trust_function_creators, (uchar**) &trust_function_creators, 0,
+ &trust_function_creators, &trust_function_creators, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
/*
@@ -6296,195 +6370,200 @@ each time the SQL thread starts.",
"Note that if ALL connections to this server ALWAYS use row-based binary "
"logging, the security issues do not exist and the binary logging cannot "
"break, so you can safely set this to 1."
- ,(uchar**) &trust_function_creators, (uchar**) &trust_function_creators, 0,
+ ,&trust_function_creators, &trust_function_creators, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"log-error", OPT_ERROR_LOG_FILE, "Error log file.",
- (uchar**) &log_error_file_ptr, (uchar**) &log_error_file_ptr, 0, GET_STR,
+ &log_error_file_ptr, &log_error_file_ptr, 0, GET_STR,
OPT_ARG, 0, 0, 0, 0, 0, 0},
{"log-isam", OPT_ISAM_LOG, "Log all MyISAM changes to file.",
- (uchar**) &myisam_log_filename, (uchar**) &myisam_log_filename, 0, GET_STR,
+ &myisam_log_filename, &myisam_log_filename, 0, GET_STR,
OPT_ARG, 0, 0, 0, 0, 0, 0},
{"log-long-format", '0',
- "Log some extra information to update log. Please note that this option is deprecated; see --log-short-format option.",
+ "Log some extra information to update log. Please note that this option "
+ "is deprecated; see --log-short-format option.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
-#ifdef WITH_CSV_STORAGE_ENGINE
{"log-output", OPT_LOG_OUTPUT,
"Syntax: log-output[=value[,value...]], where \"value\" could be TABLE, "
"FILE or NONE.",
- (uchar**) &log_output_str, (uchar**) &log_output_str, 0,
+ &log_output_str, &log_output_str, 0,
GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
-#endif
{"log-queries-not-using-indexes", OPT_LOG_QUERIES_NOT_USING_INDEXES,
"Log queries that are executed without benefit of any index to the slow log if it is open.",
- (uchar**) &opt_log_queries_not_using_indexes, (uchar**) &opt_log_queries_not_using_indexes,
+ &opt_log_queries_not_using_indexes, &opt_log_queries_not_using_indexes,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"log-short-format", OPT_SHORT_LOG_FORMAT,
"Don't log extra information to update and slow-query logs.",
- (uchar**) &opt_short_log_format, (uchar**) &opt_short_log_format,
+ &opt_short_log_format, &opt_short_log_format,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"log-slave-updates", OPT_LOG_SLAVE_UPDATES,
- "Tells the slave to log the updates from the slave thread to the binary log. You will need to turn it on if you plan to daisy-chain the slaves.",
- (uchar**) &opt_log_slave_updates, (uchar**) &opt_log_slave_updates, 0, GET_BOOL,
+ "Tells the slave to log the updates from the slave thread to the binary log. "
+ "You will need to turn it on if you plan to daisy-chain the slaves.",
+ &opt_log_slave_updates, &opt_log_slave_updates, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"log-slow-admin-statements", OPT_LOG_SLOW_ADMIN_STATEMENTS,
- "Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements to the slow log if it is open. . Please note that this option is deprecated; see --log-slow-filter for filtering slow query log output",
- (uchar**) &opt_log_slow_admin_statements,
- (uchar**) &opt_log_slow_admin_statements,
- 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Log slow OPTIMIZE, ANALYZE, ALTER and other administrative statements "
+ "to the slow log if it is open.", &opt_log_slow_admin_statements,
+ &opt_log_slow_admin_statements, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"log-slow-slave-statements", OPT_LOG_SLOW_SLAVE_STATEMENTS,
"Log slow statements executed by slave thread to the slow log if it is open.",
- (uchar**) &opt_log_slow_slave_statements,
- (uchar**) &opt_log_slow_slave_statements,
+ &opt_log_slow_slave_statements,
+ &opt_log_slow_slave_statements,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"log-slow-queries", OPT_SLOW_QUERY_LOG,
"Log slow queries to a table or log file. Defaults logging to table "
"mysql.slow_log or hostname-slow.log if --log-output=file is used. "
"Must be enabled to activate other slow log options. "
"(deprecated option, use --slow_query_log/--slow_query_log_file instead)",
- (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR, OPT_ARG,
+ &opt_slow_logname, &opt_slow_logname, 0, GET_STR, OPT_ARG,
0, 0, 0, 0, 0, 0},
- {"slow-query-log-file", OPT_SLOW_QUERY_LOG_FILE,
- "Log slow queries to given log file. Defaults logging to hostname-slow.log.",
- (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR,
+ {"slow_query_log_file", OPT_SLOW_QUERY_LOG_FILE,
+ "Log slow queries to given log file. Defaults logging to hostname-slow.log. "
+ "Must be enabled to activate other slow log options.",
+ &opt_slow_logname, &opt_slow_logname, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"log-tc", OPT_LOG_TC,
"Path to transaction coordinator log (used for transactions that affect "
"more than one storage engine, when binary log is disabled).",
- (uchar**) &opt_tc_log_file, (uchar**) &opt_tc_log_file, 0, GET_STR,
+ &opt_tc_log_file, &opt_tc_log_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_MMAP
{"log-tc-size", OPT_LOG_TC_SIZE, "Size of transaction coordinator log.",
- (uchar**) &opt_tc_log_size, (uchar**) &opt_tc_log_size, 0, GET_ULONG,
+ &opt_tc_log_size, &opt_tc_log_size, 0, GET_ULONG,
REQUIRED_ARG, TC_LOG_MIN_SIZE, TC_LOG_MIN_SIZE, (longlong) ULONG_MAX, 0,
TC_LOG_PAGE_SIZE, 0},
#endif
{"log-update", OPT_UPDATE_LOG,
"The update log is deprecated since version 5.0, is replaced by the binary "
"log and this option just turns on --log-bin instead.",
- (uchar**) &opt_update_logname, (uchar**) &opt_update_logname, 0, GET_STR,
+ &opt_update_logname, &opt_update_logname, 0, GET_STR,
OPT_ARG, 0, 0, 0, 0, 0, 0},
{"log-warnings", 'W', "Log some not critical warnings to the log file.",
- (uchar**) &global_system_variables.log_warnings,
- (uchar**) &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, 1, 0, 0,
+ &global_system_variables.log_warnings,
+ &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG, 1, 0, 0,
0, 0, 0},
{"low-priority-updates", OPT_LOW_PRIORITY_UPDATES,
"INSERT/DELETE/UPDATE has lower priority than selects.",
- (uchar**) &global_system_variables.low_priority_updates,
- (uchar**) &max_system_variables.low_priority_updates,
+ &global_system_variables.low_priority_updates,
+ &max_system_variables.low_priority_updates,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"master-connect-retry", OPT_MASTER_CONNECT_RETRY,
"The number of seconds the slave thread will sleep before retrying to "
"connect to the master, in case the master goes down or the connection "
"is lost.",
- (uchar**) &master_connect_retry, (uchar**) &master_connect_retry, 0, GET_UINT,
+ &master_connect_retry, &master_connect_retry, 0, GET_UINT,
REQUIRED_ARG, 60, 0, 0, 0, 0, 0},
{"master-host", OPT_MASTER_HOST,
- "Master hostname or IP address for replication. If not set, the slave thread will not be started. Note that the setting of master-host will be ignored if there exists a valid master.info file.",
- (uchar**) &master_host, (uchar**) &master_host, 0, GET_STR, REQUIRED_ARG, 0, 0,
+ "Master hostname or IP address for replication. If not set, the slave "
+ "thread will not be started. Note that the setting of master-host will "
+ "be ignored if there exists a valid master.info file.",
+ &master_host, &master_host, 0, GET_STR, REQUIRED_ARG, 0, 0,
0, 0, 0, 0},
{"master-info-file", OPT_MASTER_INFO_FILE,
- "The location and name of the file that remembers the master and where the I/O replication \
-thread is in the master's binlogs.",
- (uchar**) &master_info_file, (uchar**) &master_info_file, 0, GET_STR,
+ "The location and name of the file that remembers the master and where "
+ "the I/O replication thread is in the master's binlogs.",
+ &master_info_file, &master_info_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"master-password", OPT_MASTER_PASSWORD,
"The password the slave thread will authenticate with when connecting to "
"the master. If not set, an empty password is assumed. The value in "
"master.info will take precedence if it can be read.",
- (uchar**)&master_password, (uchar**)&master_password, 0,
+ &master_password, &master_password, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"master-port", OPT_MASTER_PORT,
- "The port the master is listening on. If not set, the compiled setting of MYSQL_PORT is assumed. If you have not tinkered with configure options, this should be 3306. The value in master.info will take precedence if it can be read.",
- (uchar**) &master_port, (uchar**) &master_port, 0, GET_UINT, REQUIRED_ARG,
+ "The port the master is listening on. If not set, the compiled setting of "
+ "MYSQL_PORT is assumed. If you have not tinkered with configure options, "
+ "this should be 3306. The value in master.info will take precedence if it "
+ "can be read.", &master_port, &master_port, 0, GET_UINT, REQUIRED_ARG,
MYSQL_PORT, 0, 0, 0, 0, 0},
{"master-retry-count", OPT_MASTER_RETRY_COUNT,
"The number of tries the slave will make to connect to the master before giving up.",
- (uchar**) &master_retry_count, (uchar**) &master_retry_count, 0, GET_ULONG,
+ &master_retry_count, &master_retry_count, 0, GET_ULONG,
REQUIRED_ARG, 3600*24, 0, 0, 0, 0, 0},
{"master-ssl", OPT_MASTER_SSL,
"Enable the slave to connect to the master using SSL.",
- (uchar**) &master_ssl, (uchar**) &master_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
+ &master_ssl, &master_ssl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
{"master-ssl-ca", OPT_MASTER_SSL_CA,
"Master SSL CA file. Only applies if you have enabled master-ssl.",
- (uchar**) &master_ssl_ca, (uchar**) &master_ssl_ca, 0, GET_STR, OPT_ARG,
+ &master_ssl_ca, &master_ssl_ca, 0, GET_STR, OPT_ARG,
0, 0, 0, 0, 0, 0},
{"master-ssl-capath", OPT_MASTER_SSL_CAPATH,
"Master SSL CA path. Only applies if you have enabled master-ssl.",
- (uchar**) &master_ssl_capath, (uchar**) &master_ssl_capath, 0, GET_STR, OPT_ARG,
+ &master_ssl_capath, &master_ssl_capath, 0, GET_STR, OPT_ARG,
0, 0, 0, 0, 0, 0},
{"master-ssl-cert", OPT_MASTER_SSL_CERT,
"Master SSL certificate file name. Only applies if you have enabled "
"master-ssl.",
- (uchar**) &master_ssl_cert, (uchar**) &master_ssl_cert, 0, GET_STR, OPT_ARG,
+ &master_ssl_cert, &master_ssl_cert, 0, GET_STR, OPT_ARG,
0, 0, 0, 0, 0, 0},
{"master-ssl-cipher", OPT_MASTER_SSL_CIPHER,
"Master SSL cipher. Only applies if you have enabled master-ssl.",
- (uchar**) &master_ssl_cipher, (uchar**) &master_ssl_capath, 0, GET_STR, OPT_ARG,
+ &master_ssl_cipher, &master_ssl_capath, 0, GET_STR, OPT_ARG,
0, 0, 0, 0, 0, 0},
{"master-ssl-key", OPT_MASTER_SSL_KEY,
"Master SSL keyfile name. Only applies if you have enabled master-ssl.",
- (uchar**) &master_ssl_key, (uchar**) &master_ssl_key, 0, GET_STR, OPT_ARG,
+ &master_ssl_key, &master_ssl_key, 0, GET_STR, OPT_ARG,
0, 0, 0, 0, 0, 0},
{"master-user", OPT_MASTER_USER,
- "The username the slave thread will use for authentication when connecting to the master. The user must have FILE privilege. If the master user is not set, user test is assumed. The value in master.info will take precedence if it can be read.",
- (uchar**) &master_user, (uchar**) &master_user, 0, GET_STR, REQUIRED_ARG, 0, 0,
+ "The username the slave thread will use for authentication when "
+ "connecting to the master. The user must have FILE privilege. "
+ "If the master user is not set, user test is assumed. The value "
+ "in master.info will take precedence if it can be read.",
+ &master_user, &master_user, 0, GET_STR, REQUIRED_ARG, 0, 0,
0, 0, 0, 0},
#ifdef HAVE_REPLICATION
{"max-binlog-dump-events", OPT_MAX_BINLOG_DUMP_EVENTS,
"Option used by mysql-test for debugging and testing of replication.",
- (uchar**) &max_binlog_dump_events, (uchar**) &max_binlog_dump_events, 0,
+ &max_binlog_dump_events, &max_binlog_dump_events, 0,
GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif /* HAVE_REPLICATION */
- {"memlock", OPT_MEMLOCK, "Lock mysqld in memory.", (uchar**) &locked_in_memory,
- (uchar**) &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"memlock", OPT_MEMLOCK, "Lock mysqld in memory.", &locked_in_memory,
+ &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef SAFE_MUTEX
{"mutex-deadlock-detector", OPT_MUTEX_DEADLOCK_DETECTOR,
"Enable checking of wrong mutex usage.",
- (uchar**) &safe_mutex_deadlock_detector,
- (uchar**) &safe_mutex_deadlock_detector,
+ &safe_mutex_deadlock_detector,
+ &safe_mutex_deadlock_detector,
0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
#endif
{"myisam-recover", OPT_MYISAM_RECOVER,
"Syntax: myisam-recover[=option[,option...]], where option can be DEFAULT, BACKUP, FORCE or QUICK.",
- (uchar**) &myisam_recover_options_str, (uchar**) &myisam_recover_options_str, 0,
+ &myisam_recover_options_str, &myisam_recover_options_str, 0,
GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
{"ndb-connectstring", OPT_NDB_CONNECTSTRING,
"Connect string for ndbcluster.",
- (uchar**) &opt_ndb_connectstring,
- (uchar**) &opt_ndb_connectstring,
+ &opt_ndb_connectstring, &opt_ndb_connectstring,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ndb-mgmd-host", OPT_NDB_MGMD,
"Set host and port for ndb_mgmd. Syntax: hostname[:port]",
- (uchar**) &opt_ndb_mgmd,
- (uchar**) &opt_ndb_mgmd,
+ &opt_ndb_mgmd, &opt_ndb_mgmd,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ndb-nodeid", OPT_NDB_NODEID,
"Nodeid for this mysqlserver in the cluster.",
- (uchar**) &opt_ndb_nodeid,
- (uchar**) &opt_ndb_nodeid,
+ &opt_ndb_nodeid,
+ &opt_ndb_nodeid,
0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"ndb-autoincrement-prefetch-sz", OPT_NDB_AUTOINCREMENT_PREFETCH_SZ,
"Specify number of autoincrement values that are prefetched.",
- (uchar**) &global_system_variables.ndb_autoincrement_prefetch_sz,
- (uchar**) &max_system_variables.ndb_autoincrement_prefetch_sz,
+ &global_system_variables.ndb_autoincrement_prefetch_sz,
+ &max_system_variables.ndb_autoincrement_prefetch_sz,
0, GET_ULONG, REQUIRED_ARG, 1, 1, 256, 0, 0, 0},
{"ndb-force-send", OPT_NDB_FORCE_SEND,
"Force send of buffers to ndb immediately without waiting for "
"other threads.",
- (uchar**) &global_system_variables.ndb_force_send,
- (uchar**) &global_system_variables.ndb_force_send,
+ &global_system_variables.ndb_force_send,
+ &global_system_variables.ndb_force_send,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb_force_send", OPT_NDB_FORCE_SEND,
"same as --ndb-force-send.",
- (uchar**) &global_system_variables.ndb_force_send,
- (uchar**) &global_system_variables.ndb_force_send,
+ &global_system_variables.ndb_force_send,
+ &global_system_variables.ndb_force_send,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb-extra-logging", OPT_NDB_EXTRA_LOGGING,
"Turn on more logging in the error log.",
- (uchar**) &ndb_extra_logging,
- (uchar**) &ndb_extra_logging,
+ &ndb_extra_logging,
+ &ndb_extra_logging,
0, GET_INT, OPT_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_NDB_BINLOG
{"ndb-report-thresh-binlog-epoch-slip", OPT_NDB_REPORT_THRESH_BINLOG_EPOCH_SLIP,
@@ -6492,86 +6571,87 @@ thread is in the master's binlogs.",
"E.g., 3 means that if the difference between what epoch has been received "
"from the storage nodes and what has been applied to the binlog is 3 or more, "
"a status message will be sent to the cluster log.",
- (uchar**) &ndb_report_thresh_binlog_epoch_slip,
- (uchar**) &ndb_report_thresh_binlog_epoch_slip,
+ &ndb_report_thresh_binlog_epoch_slip,
+ &ndb_report_thresh_binlog_epoch_slip,
0, GET_ULONG, REQUIRED_ARG, 3, 0, 256, 0, 0, 0},
{"ndb-report-thresh-binlog-mem-usage", OPT_NDB_REPORT_THRESH_BINLOG_MEM_USAGE,
"Threshold on percentage of free memory before reporting binlog status. E.g., "
"10 means that if amount of available memory for receiving binlog data from "
"the storage nodes goes below 10%, "
"a status message will be sent to the cluster log.",
- (uchar**) &ndb_report_thresh_binlog_mem_usage,
- (uchar**) &ndb_report_thresh_binlog_mem_usage,
+ &ndb_report_thresh_binlog_mem_usage,
+ &ndb_report_thresh_binlog_mem_usage,
0, GET_ULONG, REQUIRED_ARG, 10, 0, 100, 0, 0, 0},
#endif
{"ndb-use-exact-count", OPT_NDB_USE_EXACT_COUNT,
"Use exact records count during query planning and for fast "
"select count(*), disable for faster queries.",
- (uchar**) &global_system_variables.ndb_use_exact_count,
- (uchar**) &global_system_variables.ndb_use_exact_count,
+ &global_system_variables.ndb_use_exact_count,
+ &global_system_variables.ndb_use_exact_count,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb_use_exact_count", OPT_NDB_USE_EXACT_COUNT,
"Same as --ndb-use-exact-count.",
- (uchar**) &global_system_variables.ndb_use_exact_count,
- (uchar**) &global_system_variables.ndb_use_exact_count,
+ &global_system_variables.ndb_use_exact_count,
+ &global_system_variables.ndb_use_exact_count,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb-use-transactions", OPT_NDB_USE_TRANSACTIONS,
"Use transactions for large inserts, if enabled then large "
"inserts will be split into several smaller transactions",
- (uchar**) &global_system_variables.ndb_use_transactions,
- (uchar**) &global_system_variables.ndb_use_transactions,
+ &global_system_variables.ndb_use_transactions,
+ &global_system_variables.ndb_use_transactions,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb_use_transactions", OPT_NDB_USE_TRANSACTIONS,
"Same as --ndb-use-transactions.",
- (uchar**) &global_system_variables.ndb_use_transactions,
- (uchar**) &global_system_variables.ndb_use_transactions,
+ &global_system_variables.ndb_use_transactions,
+ &global_system_variables.ndb_use_transactions,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ndb-shm", OPT_NDB_SHM,
"Use shared memory connections when available.",
- (uchar**) &opt_ndb_shm,
- (uchar**) &opt_ndb_shm,
+ &opt_ndb_shm, &opt_ndb_shm,
0, GET_BOOL, OPT_ARG, OPT_NDB_SHM_DEFAULT, 0, 0, 0, 0, 0},
{"ndb-optimized-node-selection", OPT_NDB_OPTIMIZED_NODE_SELECTION,
"Select nodes for transactions in a more optimal way.",
- (uchar**) &opt_ndb_optimized_node_selection,
- (uchar**) &opt_ndb_optimized_node_selection,
+ &opt_ndb_optimized_node_selection,
+ &opt_ndb_optimized_node_selection,
0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{ "ndb-cache-check-time", OPT_NDB_CACHE_CHECK_TIME,
"A dedicated thread is created to, at the given milliseconds interval, "
"invalidate the query cache if another MySQL server in the cluster has "
"changed the data in the database.",
- (uchar**) &opt_ndb_cache_check_time, (uchar**) &opt_ndb_cache_check_time, 0, GET_ULONG, REQUIRED_ARG,
+ &opt_ndb_cache_check_time, &opt_ndb_cache_check_time, 0, GET_ULONG, REQUIRED_ARG,
0, 0, LONG_TIMEOUT, 0, 1, 0},
{"ndb-index-stat-enable", OPT_NDB_INDEX_STAT_ENABLE,
"Use ndb index statistics in query optimization.",
- (uchar**) &global_system_variables.ndb_index_stat_enable,
- (uchar**) &max_system_variables.ndb_index_stat_enable,
+ &global_system_variables.ndb_index_stat_enable,
+ &max_system_variables.ndb_index_stat_enable,
0, GET_BOOL, OPT_ARG, 0, 0, 1, 0, 0, 0},
#endif
{"ndb-use-copying-alter-table",
OPT_NDB_USE_COPYING_ALTER_TABLE,
- "Force ndbcluster to always copy tables at alter table (should only be used if on-line alter table fails).",
- (uchar**) &global_system_variables.ndb_use_copying_alter_table,
- (uchar**) &global_system_variables.ndb_use_copying_alter_table,
- 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "Force ndbcluster to always copy tables at alter table "
+ "(should only be used if on-line alter table fails).",
+ &global_system_variables.ndb_use_copying_alter_table,
+ &global_system_variables.ndb_use_copying_alter_table,
+ 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"new", 'n', "Use very new, possibly 'unsafe', functions.",
- (uchar**) &global_system_variables.new_mode,
- (uchar**) &max_system_variables.new_mode,
+ &global_system_variables.new_mode,
+ &max_system_variables.new_mode,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifdef NOT_YET
{"no-mix-table-types", OPT_NO_MIX_TYPE,
"Don't allow commands that use two different table types.",
- (uchar**) &opt_no_mix_types, (uchar**) &opt_no_mix_types, 0, GET_BOOL, NO_ARG,
+ &opt_no_mix_types, &opt_no_mix_types, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
#endif
{"old-alter-table", OPT_OLD_ALTER_TABLE,
"Use old, non-optimized alter table.",
- (uchar**) &global_system_variables.old_alter_table,
- (uchar**) &max_system_variables.old_alter_table, 0, GET_BOOL, NO_ARG,
+ &global_system_variables.old_alter_table,
+ &max_system_variables.old_alter_table, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
- {"old-passwords", OPT_OLD_PASSWORDS, "Use old password encryption method (needed for 4.0 and older clients).",
- (uchar**) &global_system_variables.old_passwords,
- (uchar**) &max_system_variables.old_passwords, 0, GET_BOOL, NO_ARG,
+ {"old-passwords", OPT_OLD_PASSWORDS, "Use old password "
+ "encryption method (needed for 4.0 and older clients).",
+ &global_system_variables.old_passwords,
+ &max_system_variables.old_passwords, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"one-thread", OPT_ONE_THREAD,
"(Deprecated): Only use one thread (for debugging under Linux). Use "
@@ -6580,10 +6660,10 @@ thread is in the master's binlogs.",
{"old-style-user-limits", OPT_OLD_STYLE_USER_LIMITS,
"Enable old-style user limits (before 5.0.3, user resources were counted "
"per each user+host vs. per account).",
- (uchar**) &opt_old_style_user_limits, (uchar**) &opt_old_style_user_limits,
+ &opt_old_style_user_limits, &opt_old_style_user_limits,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"pid-file", OPT_PID_FILE, "Pid file used by safe_mysqld.",
- (uchar**) &pidfile_name_ptr, (uchar**) &pidfile_name_ptr, 0, GET_STR,
+ &pidfile_name_ptr, &pidfile_name_ptr, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"port", 'P', "Port number to use for connection or 0 for default to, in "
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
@@ -6591,64 +6671,85 @@ thread is in the master's binlogs.",
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar**) &mysqld_port,
- (uchar**) &mysqld_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &mysqld_port,
+ &mysqld_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"port-open-timeout", OPT_PORT_OPEN_TIMEOUT,
"Maximum time in seconds to wait for the port to become free. "
- "(Default: No wait).", (uchar**) &mysqld_port_timeout,
- (uchar**) &mysqld_port_timeout, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "(Default: No wait).", &mysqld_port_timeout,
+ &mysqld_port_timeout, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
{"profiling_history_size", OPT_PROFILING, "Limit of query profiling memory.",
- (uchar**) &global_system_variables.profiling_history_size,
- (uchar**) &max_system_variables.profiling_history_size,
+ &global_system_variables.profiling_history_size,
+ &max_system_variables.profiling_history_size,
0, GET_ULONG, REQUIRED_ARG, 15, 0, 100, 0, 0, 0},
#endif
{"relay-log", OPT_RELAY_LOG,
"The location and name to use for relay logs.",
- (uchar**) &opt_relay_logname, (uchar**) &opt_relay_logname, 0,
+ &opt_relay_logname, &opt_relay_logname, 0,
GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"relay-log-index", OPT_RELAY_LOG_INDEX,
"The location and name to use for the file that keeps a list of the last \
relay logs.",
- (uchar**) &opt_relaylog_index_name, (uchar**) &opt_relaylog_index_name, 0,
+ &opt_relaylog_index_name, &opt_relaylog_index_name, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"relay-log-info-file", OPT_RELAY_LOG_INFO_FILE,
"The location and name of the file that remembers where the SQL replication \
thread is in the relay logs.",
- (uchar**) &relay_log_info_file, (uchar**) &relay_log_info_file, 0, GET_STR,
+ &relay_log_info_file, &relay_log_info_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-do-db", OPT_REPLICATE_DO_DB,
- "Tells the slave thread to restrict replication to the specified database. To specify more than one database, use the directive multiple times, once for each database. Note that this will only work if you do not use cross-database queries such as UPDATE some_db.some_table SET foo='bar' while having selected a different or no database. If you need cross database updates to work, make sure you have 3.23.28 or later, and use replicate-wild-do-table=db_name.%.",
+ "Tells the slave thread to restrict replication to the specified database. "
+ "To specify more than one database, use the directive multiple times, "
+ "once for each database. Note that this will only work if you do not use "
+ "cross-database queries such as UPDATE some_db.some_table SET foo='bar' "
+ "while having selected a different or no database. If you need cross "
+ "database updates to work, make sure you have 3.23.28 or later, and use "
+ "replicate-wild-do-table=db_name.%.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-do-table", OPT_REPLICATE_DO_TABLE,
- "Tells the slave thread to restrict replication to the specified table. To specify more than one table, use the directive multiple times, once for each table. This will work for cross-database updates, in contrast to replicate-do-db.",
- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Tells the slave thread to restrict replication to the specified table. "
+ "To specify more than one table, use the directive multiple times, once "
+ "for each table. This will work for cross-database updates, in contrast "
+ "to replicate-do-db.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-ignore-db", OPT_REPLICATE_IGNORE_DB,
- "Tells the slave thread to not replicate to the specified database. To specify more than one database to ignore, use the directive multiple times, once for each database. This option will not work if you use cross database updates. If you need cross database updates to work, make sure you have 3.23.28 or later, and use replicate-wild-ignore-table=db_name.%. ",
- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Tells the slave thread to not replicate to the specified database. To "
+ "specify more than one database to ignore, use the directive multiple "
+ "times, once for each database. This option will not work if you use "
+ "cross database updates. If you need cross database updates to work, "
+ "make sure you have 3.23.28 or later, and use replicate-wild-ignore-"
+ "table=db_name.%. ", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-ignore-table", OPT_REPLICATE_IGNORE_TABLE,
"Tells the slave thread to not replicate to the specified table. To specify "
"more than one table to ignore, use the directive multiple times, once for "
"each table. This will work for cross-database updates, in contrast to "
- "replicate-ignore-db.",
- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "replicate-ignore-db.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-rewrite-db", OPT_REPLICATE_REWRITE_DB,
- "Updates to a database with a different name than the original. Example: replicate-rewrite-db=master_db_name->slave_db_name.",
+ "Updates to a database with a different name than the original. Example: "
+ "replicate-rewrite-db=master_db_name->slave_db_name.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_REPLICATION
{"replicate-same-server-id", OPT_REPLICATE_SAME_SERVER_ID,
- "In replication, if set to 1, do not skip events having our server id. \
-Default value is 0 (to break infinite loops in circular replication). \
-Can't be set to 1 if --log-slave-updates is used.",
- (uchar**) &replicate_same_server_id,
- (uchar**) &replicate_same_server_id,
+ "In replication, if set to 1, do not skip events having our server id. "
+ "Default value is 0 (to break infinite loops in circular replication). "
+ "Can't be set to 1 if --log-slave-updates is used.",
+ &replicate_same_server_id, &replicate_same_server_id,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"replicate-wild-do-table", OPT_REPLICATE_WILD_DO_TABLE,
- "Tells the slave thread to restrict replication to the tables that match the specified wildcard pattern. To specify more than one table, use the directive multiple times, once for each table. This will work for cross-database updates. Example: replicate-wild-do-table=foo%.bar% will replicate only updates to tables in all databases that start with foo and whose table names start with bar.",
+ "Tells the slave thread to restrict replication to the tables that match "
+ "the specified wildcard pattern. To specify more than one table, use the "
+ "directive multiple times, once for each table. This will work for cross-"
+ "database updates. Example: replicate-wild-do-table=foo%.bar% will "
+ "replicate only updates to tables in all databases that start with foo "
+ "and whose table names start with bar.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-wild-ignore-table", OPT_REPLICATE_WILD_IGNORE_TABLE,
- "Tells the slave thread to not replicate to the tables that match the given wildcard pattern. To specify more than one table to ignore, use the directive multiple times, once for each table. This will work for cross-database updates. Example: replicate-wild-ignore-table=foo%.bar% will not do updates to tables in databases that start with foo and whose table names start with bar.",
+ "Tells the slave thread to not replicate to the tables that match the "
+ "given wildcard pattern. To specify more than one table to ignore, use "
+ "the directive multiple times, once for each table. This will work for "
+ "cross-database updates. Example: replicate-wild-ignore-table=foo%.bar% "
+ "will not do updates to tables in databases that start with foo and whose "
+ "table names start with bar.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
// In replication, we may need to tell the other servers how to connect
{"report-host", OPT_REPORT_HOST,
@@ -6659,19 +6760,22 @@ Can't be set to 1 if --log-slave-updates is used.",
"from the socket once the slave connects. Due to NAT and other routing "
"issues, that IP may not be valid for connecting to the slave from the "
"master or other hosts.",
- (uchar**) &report_host, (uchar**) &report_host, 0, GET_STR, REQUIRED_ARG, 0, 0,
+ &report_host, &report_host, 0, GET_STR, REQUIRED_ARG, 0, 0,
0, 0, 0, 0},
{"report-password", OPT_REPORT_PASSWORD, "Undocumented.",
- (uchar**) &report_password, (uchar**) &report_password, 0, GET_STR,
+ &report_password, &report_password, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"report-port", OPT_REPORT_PORT,
- "Port for connecting to slave reported to the master during slave registration. Set it only if the slave is listening on a non-default port or if you have a special tunnel from the master or other clients to the slave. If not sure, leave this option unset.",
- (uchar**) &report_port, (uchar**) &report_port, 0, GET_UINT, REQUIRED_ARG,
+ "Port for connecting to slave reported to the master during slave "
+ "registration. Set it only if the slave is listening on a non-default "
+ "port or if you have a special tunnel from the master or other clients "
+ "to the slave. If not sure, leave this option unset.",
+ &report_port, &report_port, 0, GET_UINT, REQUIRED_ARG,
MYSQL_PORT, 0, 0, 0, 0, 0},
- {"report-user", OPT_REPORT_USER, "Undocumented.", (uchar**) &report_user,
- (uchar**) &report_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"report-user", OPT_REPORT_USER, "Undocumented.", &report_user,
+ &report_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"rpl-recovery-rank", OPT_RPL_RECOVERY_RANK, "Undocumented.",
- (uchar**) &rpl_recovery_rank, (uchar**) &rpl_recovery_rank, 0, GET_ULONG,
+ &rpl_recovery_rank, &rpl_recovery_rank, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"safe-mode", OPT_SAFE, "Skip some optimize stages (for testing).",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -6682,21 +6786,21 @@ Can't be set to 1 if --log-slave-updates is used.",
#endif
{"safe-user-create", OPT_SAFE_USER_CREATE,
"Don't allow new user creation by the user who has no write privileges to the mysql.user table.",
- (uchar**) &opt_safe_user_create, (uchar**) &opt_safe_user_create, 0, GET_BOOL,
+ &opt_safe_user_create, &opt_safe_user_create, 0, GET_BOOL,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"safemalloc-mem-limit", OPT_SAFEMALLOC_MEM_LIMIT,
"Simulate memory shortage when compiled with the --with-debug=full option.",
0, 0, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"secure-auth", OPT_SECURE_AUTH, "Disallow authentication for accounts that have old (pre-4.1) passwords.",
- (uchar**) &opt_secure_auth, (uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG,
+ &opt_secure_auth, &opt_secure_auth, 0, GET_BOOL, NO_ARG,
my_bool(0), 0, 0, 0, 0, 0},
{"secure-file-priv", OPT_SECURE_FILE_PRIV,
"Limit LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE() to files within specified directory.",
- (uchar**) &opt_secure_file_priv, (uchar**) &opt_secure_file_priv, 0,
+ &opt_secure_file_priv, &opt_secure_file_priv, 0,
GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"server-id", OPT_SERVER_ID,
"Uniquely identifies the server instance in the community of replication partners.",
- (uchar**) &server_id, (uchar**) &server_id, 0, GET_ULONG, REQUIRED_ARG, 0, 0, UINT_MAX32,
+ &server_id, &server_id, 0, GET_ULONG, REQUIRED_ARG, 0, 0, UINT_MAX32,
0, 0, 0},
{"set-variable", 'O',
"Change the value of a variable. Please note that this option is deprecated; "
@@ -6704,20 +6808,23 @@ Can't be set to 1 if --log-slave-updates is used.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_SMEM
{"shared-memory", OPT_ENABLE_SHARED_MEMORY,
- "Enable the shared memory.",(uchar**) &opt_enable_shared_memory, (uchar**) &opt_enable_shared_memory,
+ "Enable the shared memory.",&opt_enable_shared_memory, &opt_enable_shared_memory,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"shared-memory-base-name",OPT_SHARED_MEMORY_BASE_NAME,
- "Base name of shared memory.", (uchar**) &shared_memory_base_name, (uchar**) &shared_memory_base_name,
+ "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"show-slave-auth-info", OPT_SHOW_SLAVE_AUTH_INFO,
"Show user and password in SHOW SLAVE HOSTS on this master.",
- (uchar**) &opt_show_slave_auth_info, (uchar**) &opt_show_slave_auth_info, 0,
+ &opt_show_slave_auth_info, &opt_show_slave_auth_info, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"skip-bdb", OPT_DEPRECATED_OPTION,
+ "Deprecated option; Exist only for compatiblity with old my.cnf files",
+ 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DISABLE_GRANT_OPTIONS
{"skip-grant-tables", OPT_SKIP_GRANT,
"Start without grant tables. This gives all users FULL ACCESS to all tables.",
- (uchar**) &opt_noacl, (uchar**) &opt_noacl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &opt_noacl, &opt_noacl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
#endif
{"skip-host-cache", OPT_SKIP_HOST_CACHE, "Don't cache host names.", 0, 0, 0,
@@ -6731,8 +6838,6 @@ Can't be set to 1 if --log-slave-updates is used.",
{"skip-networking", OPT_SKIP_NETWORKING,
"Don't allow connection with TCP/IP.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0,
0, 0, 0},
- {"skip-new", OPT_SKIP_NEW, "Don't use new, possibly wrong routines.",
- 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DBUG_OFF
#ifdef SAFEMALLOC
{"skip-safemalloc", OPT_SKIP_SAFEMALLOC,
@@ -6744,49 +6849,55 @@ Can't be set to 1 if --log-slave-updates is used.",
"Don't allow 'SHOW DATABASE' commands.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0,
0, 0, 0, 0},
{"skip-slave-start", OPT_SKIP_SLAVE_START,
- "If set, slave is not autostarted.", (uchar**) &opt_skip_slave_start,
- (uchar**) &opt_skip_slave_start, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ "If set, slave is not autostarted.", &opt_skip_slave_start,
+ &opt_skip_slave_start, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"skip-stack-trace", OPT_SKIP_STACK_TRACE,
"Don't print a stack trace on failure.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0,
0, 0, 0, 0},
- {"skip-symlink", OPT_SKIP_SYMLINKS, "Don't allow symlinking of tables. Deprecated option. Use --skip-symbolic-links instead.",
+ {"skip-symlink", OPT_SKIP_SYMLINKS, "Don't allow symlinking of tables. "
+ "Deprecated option. Use --skip-symbolic-links instead.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"skip-thread-priority", OPT_SKIP_PRIOR,
"Don't give threads different priorities. Deprecated option.", 0, 0, 0, GET_NO_ARG, NO_ARG,
DEFAULT_SKIP_THREAD_PRIORITY, 0, 0, 0, 0, 0},
#ifdef HAVE_REPLICATION
{"slave-load-tmpdir", OPT_SLAVE_LOAD_TMPDIR,
- "The location where the slave should put its temporary files when \
-replicating a LOAD DATA INFILE command.",
- (uchar**) &slave_load_tmpdir, (uchar**) &slave_load_tmpdir, 0, GET_STR_ALLOC,
+ "The location where the slave should put its temporary files when "
+ "replicating a LOAD DATA INFILE command.",
+ &slave_load_tmpdir, &slave_load_tmpdir, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"slave-skip-errors", OPT_SLAVE_SKIP_ERRORS,
"Tells the slave thread to continue replication when a query event returns an error from the provided list.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"slave-exec-mode", OPT_SLAVE_EXEC_MODE,
- "Modes for how replication events should be executed. Legal values are STRICT (default) and IDEMPOTENT. In IDEMPOTENT mode, replication will not stop for operations that are idempotent. In STRICT mode, replication will stop on any unexpected difference between the master and the slave.",
- (uchar**) &slave_exec_mode_str, (uchar**) &slave_exec_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Modes for how replication events should be executed. Legal values are "
+ "STRICT (default) and IDEMPOTENT. In IDEMPOTENT mode, replication will "
+ "not stop for operations that are idempotent. In STRICT mode, replication "
+ "will stop on any unexpected difference between the master and the slave.",
+ &slave_exec_mode_str, &slave_exec_mode_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"slow-query-log", OPT_SLOW_LOG,
- "Enable/disable slow query log.", (uchar**) &opt_slow_log,
- (uchar**) &opt_slow_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ "Enable/disable slow query log.", &opt_slow_log,
+ &opt_slow_log, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"socket", OPT_SOCKET, "Socket file to use for connection.",
- (uchar**) &mysqld_unix_port, (uchar**) &mysqld_unix_port, 0, GET_STR,
+ &mysqld_unix_port, &mysqld_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#ifdef HAVE_REPLICATION
{"sporadic-binlog-dump-fail", OPT_SPORADIC_BINLOG_DUMP_FAIL,
"Option used by mysql-test for debugging and testing of replication.",
- (uchar**) &opt_sporadic_binlog_dump_fail,
- (uchar**) &opt_sporadic_binlog_dump_fail, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
+ &opt_sporadic_binlog_dump_fail,
+ &opt_sporadic_binlog_dump_fail, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
0},
#endif /* HAVE_REPLICATION */
{"sql-bin-update-same", OPT_SQL_BIN_UPDATE_SAME,
- "The update log is deprecated since version 5.0, is replaced by the binary \
-log and this option does nothing anymore.",
+ "The update log is deprecated since version 5.0, is replaced by the "
+ "binary log and this option does nothing anymore.",
0, 0, 0, GET_DISABLED, NO_ARG, 0, 0, 0, 0, 0, 0},
{"sql-mode", OPT_SQL_MODE,
- "Syntax: sql-mode=option[,option[,option...]] where option can be one of: REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ONLY_FULL_GROUP_BY, NO_UNSIGNED_SUBTRACTION.",
- (uchar**) &sql_mode_str, (uchar**) &sql_mode_str, 0, GET_STR, REQUIRED_ARG, 0,
+ "Syntax: sql-mode=option[,option[,option...]] where option can be one "
+ "of: REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, "
+ "ONLY_FULL_GROUP_BY, NO_UNSIGNED_SUBTRACTION.",
+ &sql_mode_str, &sql_mode_str, 0, GET_STR, REQUIRED_ARG, 0,
0, 0, 0, 0, 0},
#ifdef HAVE_OPENSSL
#include "sslopt-longopts.h"
@@ -6797,7 +6908,7 @@ log and this option does nothing anymore.",
NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"symbolic-links", 's', "Enable symbolic link support.",
- (uchar**) &my_use_symdir, (uchar**) &my_use_symdir, 0, GET_BOOL, NO_ARG,
+ &my_use_symdir, &my_use_symdir, 0, GET_BOOL, NO_ARG,
/*
The system call realpath() produces warnings under valgrind and
purify. These are not suppressed: instead we disable symlinks
@@ -6805,41 +6916,43 @@ log and this option does nothing anymore.",
*/
IF_VALGRIND(0,1), 0, 0, 0, 0, 0},
{"sysdate-is-now", OPT_SYSDATE_IS_NOW,
- "Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. Since 5.0, SYSDATE() returns a `dynamic' value different for different invocations, even within the same statement.",
- (uchar**) &global_system_variables.sysdate_is_now,
+ "Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. "
+ "Since 5.0, SYSDATE() returns a `dynamic' value different for different "
+ "invocations, even within the same statement.",
+ &global_system_variables.sysdate_is_now,
0, 0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0},
{"tc-heuristic-recover", OPT_TC_HEURISTIC_RECOVER,
- "Decision to use in heuristic recover process. Possible values are COMMIT or ROLLBACK.",
- (uchar**) &opt_tc_heuristic_recover, (uchar**) &opt_tc_heuristic_recover,
+ "Decision to use in heuristic recover process. Possible values are COMMIT "
+ "or ROLLBACK.", &opt_tc_heuristic_recover, &opt_tc_heuristic_recover,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#if defined(ENABLED_DEBUG_SYNC)
{"debug-sync-timeout", OPT_DEBUG_SYNC_TIMEOUT,
"Enable the debug sync facility "
"and optionally specify a default wait timeout in seconds. "
"A zero value keeps the facility disabled.",
- (uchar**) &opt_debug_sync_timeout, 0,
+ &opt_debug_sync_timeout, 0,
0, GET_UINT, OPT_ARG, 0, 0, UINT_MAX, 0, 0, 0},
#endif /* defined(ENABLED_DEBUG_SYNC) */
{"temp-pool", OPT_TEMP_POOL,
#if (ENABLE_TEMP_POOL)
- "Using this option will cause most temporary files created to use a small set of names, rather than a unique name for each new file.",
+ "Using this option will cause most temporary files created to use a small "
+ "set of names, rather than a unique name for each new file.",
#else
"This option is ignored on this OS.",
#endif
- (uchar**) &use_temp_pool, (uchar**) &use_temp_pool, 0, GET_BOOL, NO_ARG, 1,
+ &use_temp_pool, &use_temp_pool, 0, GET_BOOL, NO_ARG, 1,
0, 0, 0, 0, 0},
-
{"test-ignore-wrong-options", OPT_TEST_IGNORE_WRONG_OPTIONS,
"Ignore wrong enums values in command line arguments. Useful only for test scripts",
- (uchar**) &opt_ignore_wrong_options, (uchar**) &opt_ignore_wrong_options,
+ &opt_ignore_wrong_options, &opt_ignore_wrong_options,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"test-expect-abort", OPT_TEST_RESTART,
"Expect that server aborts with 'abort'; Don't write out server variables on 'abort'. Useful only for test scripts",
- (uchar**) &opt_expect_abort, (uchar**) &opt_expect_abort,
+ &opt_expect_abort, &opt_expect_abort,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"timed_mutexes", OPT_TIMED_MUTEXES,
"Specify whether to time mutexes (only InnoDB mutexes are currently supported).",
- (uchar**) &timed_mutexes, (uchar**) &timed_mutexes, 0, GET_BOOL, NO_ARG, 0,
+ &timed_mutexes, &timed_mutexes, 0, GET_BOOL, NO_ARG, 0,
0, 0, 0, 0, 0},
{"tmpdir", 't',
"Path for temporary files. Several paths may be specified, separated by a "
@@ -6849,138 +6962,145 @@ log and this option does nothing anymore.",
"colon (:)"
#endif
", in this case they are used in a round-robin fashion.",
- (uchar**) &opt_mysql_tmpdir,
- (uchar**) &opt_mysql_tmpdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_mysql_tmpdir, &opt_mysql_tmpdir, 0, GET_STR, REQUIRED_ARG,
+ 0, 0, 0, 0, 0, 0},
{"transaction-isolation", OPT_TX_ISOLATION,
"Default transaction isolation level.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0,
0, 0, 0, 0, 0},
- {"use-symbolic-links", OPT_SYMBOLIC_LINKS, "Enable symbolic link support. Deprecated option; use --symbolic-links instead.",
- (uchar**) &my_use_symdir, (uchar**) &my_use_symdir, 0, GET_BOOL, NO_ARG,
+ {"use-symbolic-links", OPT_SYMBOLIC_LINKS,
+ "Enable symbolic link support. "
+ "Deprecated option; use --symbolic-links instead.",
+ &my_use_symdir, &my_use_symdir, 0, GET_BOOL, NO_ARG,
IF_VALGRIND(0,1), 0, 0, 0, 0, 0},
{"user", 'u', "Run mysqld daemon as user.", 0, 0, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Used with --help option for detailed help.",
- (uchar**) &opt_verbose, (uchar**) &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
- 0, 0},
+ &opt_verbose, &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"warnings", OPT_WARNINGS, "Deprecated; use --log-warnings instead.",
- (uchar**) &global_system_variables.log_warnings,
- (uchar**) &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG,
- 1, 0, (longlong) ULONG_MAX, 0, 0, 0},
- { "back_log", OPT_BACK_LOG,
- "The number of outstanding connection requests MySQL can have. This comes into play when the main MySQL thread gets very many connection requests in a very short time.",
- (uchar**) &back_log, (uchar**) &back_log, 0, GET_ULONG,
- REQUIRED_ARG, 50, 1, 65535, 0, 1, 0 },
+ &global_system_variables.log_warnings,
+ &max_system_variables.log_warnings, 0, GET_ULONG, OPT_ARG,
+ 1, 0, ULONG_MAX, 0, 0, 0},
+ {"back_log", OPT_BACK_LOG,
+ "The number of outstanding connection requests MySQL can have. This "
+ "comes into play when the main MySQL thread gets very many connection "
+ "requests in a very short time.", &back_log, &back_log, 0, GET_ULONG,
+ REQUIRED_ARG, 50, 1, 65535, 0, 1, 0 },
{"binlog_cache_size", OPT_BINLOG_CACHE_SIZE,
- "The size of the cache to hold the SQL statements for the binary log during a transaction. If you often use big, multi-statement transactions you can increase this to get more performance.",
- (uchar**) &binlog_cache_size, (uchar**) &binlog_cache_size, 0, GET_ULONG,
+ "The size of the cache to hold the SQL statements for the binary log "
+ "during a transaction. If you often use big, multi-statement "
+ "transactions you can increase this to get more performance.",
+ &binlog_cache_size, &binlog_cache_size, 0, GET_ULONG,
REQUIRED_ARG, 32*1024L, IO_SIZE, (longlong) ULONG_MAX, 0, IO_SIZE, 0},
{"bulk_insert_buffer_size", OPT_BULK_INSERT_BUFFER_SIZE,
- "Size of tree cache used in bulk insert optimization. Note that this is a limit per thread.",
- (uchar**) &global_system_variables.bulk_insert_buff_size,
- (uchar**) &max_system_variables.bulk_insert_buff_size,
+ "Size of tree cache used in bulk insert optimization. Note that this "
+ "is a limit per thread.", &global_system_variables.bulk_insert_buff_size,
+ &max_system_variables.bulk_insert_buff_size,
0, GET_ULONG, REQUIRED_ARG, 8192*1024, 0, (longlong) ULONG_MAX, 0, 1, 0},
{"connect_timeout", OPT_CONNECT_TIMEOUT,
- "The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake'.",
- (uchar**) &connect_timeout, (uchar**) &connect_timeout,
+ "The number of seconds the mysqld server is waiting for a connect packet "
+ "before responding with 'Bad handshake'.", &connect_timeout, &connect_timeout,
0, GET_ULONG, REQUIRED_ARG, CONNECT_TIMEOUT, 2, LONG_TIMEOUT, 0, 1, 0 },
{ "date_format", OPT_DATE_FORMAT,
"The DATE format (for future).",
- (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATE],
- (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATE],
+ &opt_date_time_formats[MYSQL_TIMESTAMP_DATE],
+ &opt_date_time_formats[MYSQL_TIMESTAMP_DATE],
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ "datetime_format", OPT_DATETIME_FORMAT,
"The DATETIME/TIMESTAMP format (for future).",
- (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME],
- (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME],
+ &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME],
+ &opt_date_time_formats[MYSQL_TIMESTAMP_DATETIME],
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ "default_week_format", OPT_DEFAULT_WEEK_FORMAT,
"The default week format used by WEEK() functions.",
- (uchar**) &global_system_variables.default_week_format,
- (uchar**) &max_system_variables.default_week_format,
+ &global_system_variables.default_week_format,
+ &max_system_variables.default_week_format,
0, GET_ULONG, REQUIRED_ARG, 0, 0, 7L, 0, 1, 0},
{"delayed_insert_limit", OPT_DELAYED_INSERT_LIMIT,
- "After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing.",
- (uchar**) &delayed_insert_limit, (uchar**) &delayed_insert_limit, 0, GET_ULONG,
+ "After inserting delayed_insert_limit rows, the INSERT DELAYED handler "
+ "will check if there are any SELECT statements pending. If so, it allows "
+ "these to execute before continuing.",
+ &delayed_insert_limit, &delayed_insert_limit, 0, GET_ULONG,
REQUIRED_ARG, DELAYED_LIMIT, 1, (longlong) ULONG_MAX, 0, 1, 0},
{"delayed_insert_timeout", OPT_DELAYED_INSERT_TIMEOUT,
"How long a INSERT DELAYED thread should wait for INSERT statements before terminating.",
- (uchar**) &delayed_insert_timeout, (uchar**) &delayed_insert_timeout, 0,
+ &delayed_insert_timeout, &delayed_insert_timeout, 0,
GET_ULONG, REQUIRED_ARG, DELAYED_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0},
{ "delayed_queue_size", OPT_DELAYED_QUEUE_SIZE,
- "What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again.",
- (uchar**) &delayed_queue_size, (uchar**) &delayed_queue_size, 0, GET_ULONG,
+ "What size queue (in rows) should be allocated for handling INSERT DELAYED. "
+ "If the queue becomes full, any client that does INSERT DELAYED will wait "
+ "until there is room in the queue again.",
+ &delayed_queue_size, &delayed_queue_size, 0, GET_ULONG,
REQUIRED_ARG, DELAYED_QUEUE_SIZE, 1, (longlong) ULONG_MAX, 0, 1, 0},
{"div_precision_increment", OPT_DIV_PRECINCREMENT,
"Precision of the result of '/' operator will be increased on that value.",
- (uchar**) &global_system_variables.div_precincrement,
- (uchar**) &max_system_variables.div_precincrement, 0, GET_ULONG,
+ &global_system_variables.div_precincrement,
+ &max_system_variables.div_precincrement, 0, GET_ULONG,
REQUIRED_ARG, 4, 0, DECIMAL_MAX_SCALE, 0, 0, 0},
{"expire_logs_days", OPT_EXPIRE_LOGS_DAYS,
"If non-zero, binary logs will be purged after expire_logs_days "
"days; possible purges happen at startup and at binary log rotation.",
- (uchar**) &expire_logs_days,
- (uchar**) &expire_logs_days, 0, GET_ULONG,
+ &expire_logs_days, &expire_logs_days, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, 99, 0, 1, 0},
{ "flush_time", OPT_FLUSH_TIME,
"A dedicated thread is created to flush all tables at the given interval.",
- (uchar**) &flush_time, (uchar**) &flush_time, 0, GET_ULONG, REQUIRED_ARG,
+ &flush_time, &flush_time, 0, GET_ULONG, REQUIRED_ARG,
FLUSH_TIME, 0, LONG_TIMEOUT, 0, 1, 0},
{ "ft_boolean_syntax", OPT_FT_BOOLEAN_SYNTAX,
"List of operators for MATCH ... AGAINST ( ... IN BOOLEAN MODE).",
- 0, 0, 0, GET_STR,
- REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ "ft_max_word_len", OPT_FT_MAX_WORD_LEN,
- "The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable.",
- (uchar**) &ft_max_word_len, (uchar**) &ft_max_word_len, 0, GET_ULONG,
+ "The maximum length of the word to be included in a FULLTEXT index. "
+ "Note: FULLTEXT indexes must be rebuilt after changing this variable.",
+ &ft_max_word_len, &ft_max_word_len, 0, GET_ULONG,
REQUIRED_ARG, HA_FT_MAXCHARLEN, 10, HA_FT_MAXCHARLEN, 0, 1, 0},
{ "ft_min_word_len", OPT_FT_MIN_WORD_LEN,
- "The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable.",
- (uchar**) &ft_min_word_len, (uchar**) &ft_min_word_len, 0, GET_ULONG,
+ "The minimum length of the word to be included in a FULLTEXT index. "
+ "Note: FULLTEXT indexes must be rebuilt after changing this variable.",
+ &ft_min_word_len, &ft_min_word_len, 0, GET_ULONG,
REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN, 0, 1, 0},
{ "ft_query_expansion_limit", OPT_FT_QUERY_EXPANSION_LIMIT,
"Number of best matches to use for query expansion.",
- (uchar**) &ft_query_expansion_limit, (uchar**) &ft_query_expansion_limit, 0, GET_ULONG,
+ &ft_query_expansion_limit, &ft_query_expansion_limit, 0, GET_ULONG,
REQUIRED_ARG, 20, 0, 1000, 0, 1, 0},
{ "ft_stopword_file", OPT_FT_STOPWORD_FILE,
"Use stopwords from this file instead of built-in list.",
- (uchar**) &ft_stopword_file, (uchar**) &ft_stopword_file, 0, GET_STR,
+ &ft_stopword_file, &ft_stopword_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ "group_concat_max_len", OPT_GROUP_CONCAT_MAX_LEN,
"The maximum length of the result of function group_concat.",
- (uchar**) &global_system_variables.group_concat_max_len,
- (uchar**) &max_system_variables.group_concat_max_len, 0, GET_ULONG,
+ &global_system_variables.group_concat_max_len,
+ &max_system_variables.group_concat_max_len, 0, GET_ULONG,
REQUIRED_ARG, 1024, 4, (longlong) ULONG_MAX, 0, 1, 0},
{"interactive_timeout", OPT_INTERACTIVE_TIMEOUT,
- "The number of seconds the server waits for activity on an interactive connection before closing it.",
- (uchar**) &global_system_variables.net_interactive_timeout,
- (uchar**) &max_system_variables.net_interactive_timeout, 0,
+ "The number of seconds the server waits for activity on an interactive "
+ "connection before closing it.",
+ &global_system_variables.net_interactive_timeout,
+ &max_system_variables.net_interactive_timeout, 0,
GET_ULONG, REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0},
{"join_buffer_size", OPT_JOIN_BUFF_SIZE,
"The size of the buffer that is used for full joins.",
- (uchar**) &global_system_variables.join_buff_size,
- (uchar**) &max_system_variables.join_buff_size, 0, GET_ULONG,
+ &global_system_variables.join_buff_size,
+ &max_system_variables.join_buff_size, 0, GET_ULONG,
REQUIRED_ARG, 128*1024L, 128+MALLOC_OVERHEAD, (longlong) ULONG_MAX,
MALLOC_OVERHEAD, 128, 0},
{"join_cache_level", OPT_JOIN_CACHE_LEVEL,
"Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers",
- (uchar**) &global_system_variables.join_cache_level,
- (uchar**) &max_system_variables.join_cache_level,
+ &global_system_variables.join_cache_level,
+ &max_system_variables.join_cache_level,
0, GET_ULONG, REQUIRED_ARG, 1, 0, 8, 0, 1, 0},
{"keep_files_on_create", OPT_KEEP_FILES_ON_CREATE,
"Don't overwrite stale .MYD and .MYI even if no directory is specified.",
- (uchar**) &global_system_variables.keep_files_on_create,
- (uchar**) &max_system_variables.keep_files_on_create,
+ &global_system_variables.keep_files_on_create,
+ &max_system_variables.keep_files_on_create,
0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"key_buffer_size", OPT_KEY_BUFFER_SIZE,
"The size of the buffer used for index blocks for MyISAM tables. Increase "
"this to get better index handling (for all reads and multiple writes) to "
"as much as you can afford; 1GB on a 4GB machine that mainly runs MySQL is "
"quite common.",
- (uchar**) &dflt_key_cache_var.param_buff_size,
- (uchar**) 0,
- 0, (GET_ULL | GET_ASK_ADDR),
+ &dflt_key_cache_var.param_buff_size, NULL, NULL, (GET_ULL | GET_ASK_ADDR),
REQUIRED_ARG, KEY_CACHE_SIZE, MALLOC_OVERHEAD, SIZE_T_MAX, MALLOC_OVERHEAD,
IO_SIZE, 0},
{"key_cache_age_threshold", OPT_KEY_CACHE_AGE_THRESHOLD,
@@ -6988,60 +7108,58 @@ log and this option does nothing anymore.",
"until it is considered aged enough to be downgraded to a warm block. "
"This specifies the percentage ratio of that number of hits to the total "
"number of blocks in key cache.",
- (uchar**) &dflt_key_cache_var.param_age_threshold,
- (uchar**) 0,
- 0, (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG,
- 300, 100, (longlong) ULONG_MAX, 0, 100, 0},
+ &dflt_key_cache_var.param_age_threshold, 0, 0,
+ (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG, 300, 100, (longlong) ULONG_MAX,
+ 0, 100, 0},
{"key_cache_block_size", OPT_KEY_CACHE_BLOCK_SIZE,
"The default size of key cache blocks.",
- (uchar**) &dflt_key_cache_var.param_block_size,
- (uchar**) 0,
- 0, (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG,
- KEY_CACHE_BLOCK_SIZE, 512, 1024 * 16, 0, 512, 0},
+ &dflt_key_cache_var.param_block_size, NULL, NULL, (GET_ULONG | GET_ASK_ADDR),
+ REQUIRED_ARG, KEY_CACHE_BLOCK_SIZE, 512, 1024 * 16, 0, 512, 0},
{"key_cache_division_limit", OPT_KEY_CACHE_DIVISION_LIMIT,
- "The minimum percentage of warm blocks in a key cache.",
- (uchar**) &dflt_key_cache_var.param_division_limit,
- (uchar**) 0,
- 0, (GET_ULONG | GET_ASK_ADDR) , REQUIRED_ARG, 100,
- 1, 100, 0, 1, 0},
+ "The minimum percentage of warm blocks in key cache.",
+ &dflt_key_cache_var.param_division_limit, 0, 0,
+ (GET_ULONG | GET_ASK_ADDR) , REQUIRED_ARG, 100, 1, 100, 0, 1, 0},
{"key_cache_segments", OPT_KEY_CACHE_PARTITIONS,
"The number of segments in a key cache",
- (uchar**) &dflt_key_cache_var.param_partitions,
- (uchar**) 0,
+ &dflt_key_cache_var.param_partitions, 0,
0, (GET_ULONG | GET_ASK_ADDR), REQUIRED_ARG, DEFAULT_KEY_CACHE_PARTITIONS,
0, MAX_KEY_CACHE_PARTITIONS, 0, 1, 0},
{"log-slow-filter", OPT_LOG_SLOW_FILTER,
- "Log only the queries that followed certain execution plan. Multiple flags allowed in a comma-separated string. [admin, filesort, filesort_on_disk, full_join, full_scan, query_cache, query_cache_miss, tmp_table, tmp_table_on_disk]. Sets log-slow-admin-command to ON",
+ "Log only the queries that followed certain execution plan. Multiple flags "
+ "allowed in a comma-separated string. [admin, filesort, filesort_on_disk, "
+ "full_join, full_scan, query_cache, query_cache_miss, tmp_table, "
+ "tmp_table_on_disk]. Sets log-slow-admin-command to ON",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, QPLAN_ALWAYS_SET, 0, 0},
{"log-slow-rate_limit", OPT_LOG_SLOW_RATE_LIMIT,
- "If set, only write to slow log every 'log_slow_rate_limit' query (use this to reduce output on slow query log)",
- (uchar**) &global_system_variables.log_slow_rate_limit,
- (uchar**) &max_system_variables.log_slow_rate_limit, 0, GET_ULONG,
+ "If set, only write to slow log every 'log_slow_rate_limit' query (use "
+ "this to reduce output on slow query log)",
+ &global_system_variables.log_slow_rate_limit,
+ &max_system_variables.log_slow_rate_limit, 0, GET_ULONG,
REQUIRED_ARG, 1, 1, ~0L, 0, 1L, 0},
{"log-slow-verbosity", OPT_LOG_SLOW_VERBOSITY,
- "Choose how verbose the messages to your slow log will be. Multiple flags allowed in a comma-separated string. [query_plan, innodb]",
+ "Choose how verbose the messages to your slow log will be. Multiple flags "
+ "allowed in a comma-separated string. [query_plan, innodb]",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{"log-slow-file", OPT_SLOW_QUERY_LOG_FILE,
"Log slow queries to given log file. Defaults logging to hostname-slow.log",
- (uchar**) &opt_slow_logname, (uchar**) &opt_slow_logname, 0, GET_STR,
+ &opt_slow_logname, &opt_slow_logname, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"long_query_time", OPT_LONG_QUERY_TIME,
"Log all queries that have taken more than long_query_time seconds to "
"execute. The argument will be treated as a decimal value with "
"microsecond precision.",
- (uchar**) &long_query_time, (uchar**) &long_query_time, 0, GET_DOUBLE,
+ &long_query_time, &long_query_time, 0, GET_DOUBLE,
REQUIRED_ARG, 10, 0, LONG_TIMEOUT, 0, 0, 0},
{"log-slow-time", OPT_LONG_QUERY_TIME,
"Log all queries that have taken more than long_query_time seconds to execute to file. "
"The argument will be treated as a decimal value with microsecond precission.",
- (uchar**) &long_query_time, (uchar**) &long_query_time, 0, GET_DOUBLE,
+ &long_query_time, &long_query_time, 0, GET_DOUBLE,
REQUIRED_ARG, 10, 0, LONG_TIMEOUT, 0, 0, 0},
{"lower_case_table_names", OPT_LOWER_CASE_TABLE_NAMES,
"If set to 1, table names are stored in lowercase on disk and table names "
"will be case-insensitive. Should be set to 2 if you are using a case-"
"insensitive file system.",
- (uchar**) &lower_case_table_names,
- (uchar**) &lower_case_table_names, 0, GET_UINT, OPT_ARG,
+ &lower_case_table_names, &lower_case_table_names, 0, GET_UINT, OPT_ARG,
#ifdef FN_NO_CASE_SENCE
1
#else
@@ -7050,95 +7168,99 @@ log and this option does nothing anymore.",
, 0, 2, 0, 1, 0},
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET,
"The maximum packet length to send to or receive from server.",
- (uchar**) &global_system_variables.max_allowed_packet,
- (uchar**) &max_system_variables.max_allowed_packet, 0, GET_ULONG,
- REQUIRED_ARG, 1024*1024L, 1024, 1024L*1024L*1024L, 0, 1024, 0},
+ &global_system_variables.max_allowed_packet,
+ &max_system_variables.max_allowed_packet, 0, GET_ULONG,
+ REQUIRED_ARG, 1024*1024L, 1024, 1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
{"max_binlog_cache_size", OPT_MAX_BINLOG_CACHE_SIZE,
"Can be used to restrict the total size used to cache a multi-transaction query.",
- (uchar**) &max_binlog_cache_size, (uchar**) &max_binlog_cache_size, 0,
+ &max_binlog_cache_size, &max_binlog_cache_size, 0,
GET_ULL, REQUIRED_ARG, ULONG_MAX, IO_SIZE, ULONGLONG_MAX, 0, IO_SIZE, 0},
{"max_binlog_size", OPT_MAX_BINLOG_SIZE,
- "Binary log will be rotated automatically when the size exceeds this \
-value. Will also apply to relay logs if max_relay_log_size is 0. \
-The minimum value for this variable is 4096.",
- (uchar**) &max_binlog_size, (uchar**) &max_binlog_size, 0, GET_ULONG,
+ "Binary log will be rotated automatically when the size exceeds this "
+ "value. Will also apply to relay logs if max_relay_log_size is 0. "
+ "The minimum value for this variable is 4096.",
+ &max_binlog_size, &max_binlog_size, 0, GET_ULONG,
REQUIRED_ARG, 1024*1024L*1024L, IO_SIZE, 1024*1024L*1024L, 0, IO_SIZE, 0},
{"max_connect_errors", OPT_MAX_CONNECT_ERRORS,
- "If there is more than this number of interrupted connections from a host this host will be blocked from further connections.",
- (uchar**) &max_connect_errors, (uchar**) &max_connect_errors, 0, GET_ULONG,
- REQUIRED_ARG, MAX_CONNECT_ERRORS, 1, (longlong) ULONG_MAX, 0, 1, 0},
+ "If there is more than this number of interrupted connections from a host "
+ "this host will be blocked from further connections.",
+ &max_connect_errors, &max_connect_errors, 0, GET_ULONG,
+ REQUIRED_ARG, MAX_CONNECT_ERRORS, 1, (longlong) ULONG_MAX, 0, 1, 0},
// Default max_connections of 151 is larger than Apache's default max
// children, to avoid "too many connections" error in a common setup
{"max_connections", OPT_MAX_CONNECTIONS,
- "The number of simultaneous clients allowed.", (uchar**) &max_connections,
- (uchar**) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 151, 1, 100000, 0, 1,
- 0},
+ "The number of simultaneous clients allowed.", &max_connections,
+ &max_connections, 0, GET_ULONG, REQUIRED_ARG, 151, 1, 100000, 0, 1, 0},
{"max_delayed_threads", OPT_MAX_DELAYED_THREADS,
- "Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero, which means INSERT DELAYED is not used.",
- (uchar**) &global_system_variables.max_insert_delayed_threads,
- (uchar**) &max_system_variables.max_insert_delayed_threads,
+ "Don't start more than this number of threads to handle INSERT DELAYED "
+ "statements. If set to zero, which means INSERT DELAYED is not used.",
+ &global_system_variables.max_insert_delayed_threads,
+ &max_system_variables.max_insert_delayed_threads,
0, GET_ULONG, REQUIRED_ARG, 20, 0, 16384, 0, 1, 0},
{"max_error_count", OPT_MAX_ERROR_COUNT,
"Max number of errors/warnings to store for a statement.",
- (uchar**) &global_system_variables.max_error_count,
- (uchar**) &max_system_variables.max_error_count,
+ &global_system_variables.max_error_count,
+ &max_system_variables.max_error_count,
0, GET_ULONG, REQUIRED_ARG, DEFAULT_ERROR_COUNT, 0, 65535, 0, 1, 0},
{"max_heap_table_size", OPT_MAX_HEP_TABLE_SIZE,
"Don't allow creation of heap tables bigger than this.",
- (uchar**) &global_system_variables.max_heap_table_size,
- (uchar**) &max_system_variables.max_heap_table_size, 0, GET_ULL,
+ &global_system_variables.max_heap_table_size,
+ &max_system_variables.max_heap_table_size, 0, GET_ULL,
REQUIRED_ARG, 16*1024*1024L, 16384, MAX_MEM_TABLE_SIZE,
MALLOC_OVERHEAD, 1024, 0},
{"max_join_size", OPT_MAX_JOIN_SIZE,
"Joins that are probably going to read more than max_join_size records return an error.",
- (uchar**) &global_system_variables.max_join_size,
- (uchar**) &max_system_variables.max_join_size, 0, GET_HA_ROWS, REQUIRED_ARG,
+ &global_system_variables.max_join_size,
+ &max_system_variables.max_join_size, 0, GET_HA_ROWS, REQUIRED_ARG,
HA_POS_ERROR, 1, HA_POS_ERROR, 0, 1, 0},
{"max_length_for_sort_data", OPT_MAX_LENGTH_FOR_SORT_DATA,
"Max number of bytes in sorted records.",
- (uchar**) &global_system_variables.max_length_for_sort_data,
- (uchar**) &max_system_variables.max_length_for_sort_data, 0, GET_ULONG,
+ &global_system_variables.max_length_for_sort_data,
+ &max_system_variables.max_length_for_sort_data, 0, GET_ULONG,
REQUIRED_ARG, 1024, 4, 8192*1024L, 0, 1, 0},
{"max_prepared_stmt_count", OPT_MAX_PREPARED_STMT_COUNT,
"Maximum number of prepared statements in the server.",
- (uchar**) &max_prepared_stmt_count, (uchar**) &max_prepared_stmt_count,
+ &max_prepared_stmt_count, &max_prepared_stmt_count,
0, GET_ULONG, REQUIRED_ARG, 16382, 0, 1*1024*1024, 0, 1, 0},
{"max_relay_log_size", OPT_MAX_RELAY_LOG_SIZE,
- "If non-zero: relay log will be rotated automatically when the size exceeds this value; if zero (the default): when the size exceeds max_binlog_size. 0 excepted, the minimum value for this variable is 4096.",
- (uchar**) &max_relay_log_size, (uchar**) &max_relay_log_size, 0, GET_ULONG,
+ "If non-zero: relay log will be rotated automatically when the size "
+ "exceeds this value; if zero (the default): when the size exceeds "
+ "max_binlog_size. 0 excepted, the minimum value for this variable is 4096.",
+ &max_relay_log_size, &max_relay_log_size, 0, GET_ULONG,
REQUIRED_ARG, 0L, 0L, 1024*1024L*1024L, 0, IO_SIZE, 0},
{ "max_seeks_for_key", OPT_MAX_SEEKS_FOR_KEY,
"Limit assumed max number of seeks when looking up rows based on a key.",
- (uchar**) &global_system_variables.max_seeks_for_key,
- (uchar**) &max_system_variables.max_seeks_for_key, 0, GET_ULONG,
+ &global_system_variables.max_seeks_for_key,
+ &max_system_variables.max_seeks_for_key, 0, GET_ULONG,
REQUIRED_ARG, (longlong) ULONG_MAX, 1, (longlong) ULONG_MAX, 0, 1, 0 },
{"max_sort_length", OPT_MAX_SORT_LENGTH,
- "The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored).",
- (uchar**) &global_system_variables.max_sort_length,
- (uchar**) &max_system_variables.max_sort_length, 0, GET_ULONG,
+ "The number of bytes to use when sorting BLOB or TEXT values (only the "
+ "first max_sort_length bytes of each value are used; the rest are ignored).",
+ &global_system_variables.max_sort_length,
+ &max_system_variables.max_sort_length, 0, GET_ULONG,
REQUIRED_ARG, 1024, 4, 8192*1024L, 0, 1, 0},
{"max_sp_recursion_depth", OPT_MAX_SP_RECURSION_DEPTH,
"Maximum stored procedure recursion depth. (discussed with docs).",
- (uchar**) &global_system_variables.max_sp_recursion_depth,
- (uchar**) &max_system_variables.max_sp_recursion_depth, 0, GET_ULONG,
+ &global_system_variables.max_sp_recursion_depth,
+ &max_system_variables.max_sp_recursion_depth, 0, GET_ULONG,
OPT_ARG, 0, 0, 255, 0, 1, 0 },
{"max_tmp_tables", OPT_MAX_TMP_TABLES,
"Maximum number of temporary tables a client can keep open at a time.",
- (uchar**) &global_system_variables.max_tmp_tables,
- (uchar**) &max_system_variables.max_tmp_tables, 0, GET_ULONG,
+ &global_system_variables.max_tmp_tables,
+ &max_system_variables.max_tmp_tables, 0, GET_ULONG,
REQUIRED_ARG, 32, 1, (longlong) ULONG_MAX, 0, 1, 0},
{"max_user_connections", OPT_MAX_USER_CONNECTIONS,
"The maximum number of active connections for a single user (0 = no limit).",
- (uchar**) &max_user_connections, (uchar**) &max_user_connections, 0, GET_UINT,
+ &max_user_connections, &max_user_connections, 0, GET_UINT,
REQUIRED_ARG, 0, 0, UINT_MAX, 0, 1, 0},
{"max_write_lock_count", OPT_MAX_WRITE_LOCK_COUNT,
"After this many write locks, allow some read locks to run in between.",
- (uchar**) &max_write_lock_count, (uchar**) &max_write_lock_count, 0, GET_ULONG,
+ &max_write_lock_count, &max_write_lock_count, 0, GET_ULONG,
REQUIRED_ARG, (longlong) ULONG_MAX, 1, (longlong) ULONG_MAX, 0, 1, 0},
{"min_examined_row_limit", OPT_MIN_EXAMINED_ROW_LIMIT,
"Don't log queries which examine less than min_examined_row_limit rows to file.",
- (uchar**) &global_system_variables.min_examined_row_limit,
- (uchar**) &max_system_variables.min_examined_row_limit, 0, GET_ULONG,
+ &global_system_variables.min_examined_row_limit,
+ &max_system_variables.min_examined_row_limit, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, (longlong) ULONG_MAX, 0, 1L, 0},
{"mrr_buffer_size", OPT_MRR_BUFFER_SIZE,
"Size of buffer to use when using MRR with range access",
@@ -7148,87 +7270,106 @@ The minimum value for this variable is 4096.",
INT_MAX32, MALLOC_OVERHEAD, 1 /* Small to be able to do tests */ , 0},
{"myisam_block_size", OPT_MYISAM_BLOCK_SIZE,
"Block size to be used for MyISAM index pages.",
- (uchar**) &opt_myisam_block_size,
- (uchar**) &opt_myisam_block_size, 0, GET_ULONG, REQUIRED_ARG,
+ &opt_myisam_block_size, &opt_myisam_block_size, 0, GET_ULONG, REQUIRED_ARG,
MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH, MI_MAX_KEY_BLOCK_LENGTH,
0, MI_MIN_KEY_BLOCK_LENGTH, 0},
{"myisam_data_pointer_size", OPT_MYISAM_DATA_POINTER_SIZE,
"Default pointer size to be used for MyISAM tables.",
- (uchar**) &myisam_data_pointer_size,
- (uchar**) &myisam_data_pointer_size, 0, GET_ULONG, REQUIRED_ARG,
+ &myisam_data_pointer_size,
+ &myisam_data_pointer_size, 0, GET_ULONG, REQUIRED_ARG,
6, 2, 7, 0, 1, 0},
+ {"myisam_max_extra_sort_file_size", OPT_MYISAM_MAX_EXTRA_SORT_FILE_SIZE,
+ "This is a deprecated option that does nothing anymore. "
+ "It will be removed in MySQL " VER_CELOSIA,
+ &global_system_variables.myisam_max_extra_sort_file_size,
+ &max_system_variables.myisam_max_extra_sort_file_size,
+ 0, GET_ULL, REQUIRED_ARG, (ulonglong) INT_MAX32,
+ 0, (ulonglong) MAX_FILE_SIZE, 0, 1, 0},
{"myisam_max_sort_file_size", OPT_MYISAM_MAX_SORT_FILE_SIZE,
- "Don't use the fast sort index method to created index if the temporary file would get bigger than this.",
- (uchar**) &global_system_variables.myisam_max_sort_file_size,
- (uchar**) &max_system_variables.myisam_max_sort_file_size, 0,
+ "Don't use the fast sort index method to created index if the temporary "
+ "file would get bigger than this.",
+ &global_system_variables.myisam_max_sort_file_size,
+ &max_system_variables.myisam_max_sort_file_size, 0,
GET_ULL, REQUIRED_ARG, (longlong) LONG_MAX, 0, (ulonglong) MAX_FILE_SIZE,
0, 1024*1024, 0},
{"myisam_mmap_size", OPT_MYISAM_MMAP_SIZE,
"Can be used to restrict the total memory used for memory mmaping of myisam files",
- (uchar**) &myisam_mmap_size, (uchar**) &myisam_mmap_size, 0,
+ &myisam_mmap_size, &myisam_mmap_size, 0,
GET_ULL, REQUIRED_ARG, SIZE_T_MAX, MEMMAP_EXTRA_MARGIN, SIZE_T_MAX, 0, 1, 0},
{"myisam_repair_threads", OPT_MYISAM_REPAIR_THREADS,
"Specifies whether several threads should be used when repairing MyISAM "
"tables. For values > 1, one thread is used per index. The value of 1 "
"disables parallel repair.",
- (uchar**) &global_system_variables.myisam_repair_threads,
- (uchar**) &max_system_variables.myisam_repair_threads, 0,
+ &global_system_variables.myisam_repair_threads,
+ &max_system_variables.myisam_repair_threads, 0,
GET_ULONG, REQUIRED_ARG, 1, 1, (longlong) ULONG_MAX, 0, 1, 0},
{"myisam_sort_buffer_size", OPT_MYISAM_SORT_BUFFER_SIZE,
- "The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE.",
- (uchar**) &global_system_variables.myisam_sort_buff_size,
- (uchar**) &max_system_variables.myisam_sort_buff_size, 0,
+ "The buffer that is allocated when sorting the index when doing a REPAIR "
+ "or when creating indexes with CREATE INDEX or ALTER TABLE.",
+ &global_system_variables.myisam_sort_buff_size,
+ &max_system_variables.myisam_sort_buff_size, 0,
GET_ULONG, REQUIRED_ARG, 8192 * 1024, 4096, (longlong) ULONG_MAX, 0, 1, 0},
{"myisam_use_mmap", OPT_MYISAM_USE_MMAP,
"Use memory mapping for reading and writing MyISAM tables.",
- (uchar**) &opt_myisam_use_mmap,
- (uchar**) &opt_myisam_use_mmap, 0, GET_BOOL, NO_ARG, 0,
- 0, 0, 0, 0, 0},
+ &opt_myisam_use_mmap, &opt_myisam_use_mmap, 0, GET_BOOL, NO_ARG,
+ 0, 0, 0, 0, 0, 0},
{"myisam_stats_method", OPT_MYISAM_STATS_METHOD,
"Specifies how MyISAM index statistics collection code should threat NULLs. "
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), "
"\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".",
- (uchar**) &myisam_stats_method_str, (uchar**) &myisam_stats_method_str, 0,
+ &myisam_stats_method_str, &myisam_stats_method_str, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"net_buffer_length", OPT_NET_BUFFER_LENGTH,
"Buffer length for TCP/IP and socket communication.",
- (uchar**) &global_system_variables.net_buffer_length,
- (uchar**) &max_system_variables.net_buffer_length, 0, GET_ULONG,
+ &global_system_variables.net_buffer_length,
+ &max_system_variables.net_buffer_length, 0, GET_ULONG,
REQUIRED_ARG, 16384, 1024, 1024*1024L, 0, 1024, 0},
{"net_read_timeout", OPT_NET_READ_TIMEOUT,
"Number of seconds to wait for more data from a connection before aborting the read.",
- (uchar**) &global_system_variables.net_read_timeout,
- (uchar**) &max_system_variables.net_read_timeout, 0, GET_ULONG,
+ &global_system_variables.net_read_timeout,
+ &max_system_variables.net_read_timeout, 0, GET_ULONG,
REQUIRED_ARG, NET_READ_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0},
{"net_retry_count", OPT_NET_RETRY_COUNT,
"If a read on a communication port is interrupted, retry this many times before giving up.",
- (uchar**) &global_system_variables.net_retry_count,
- (uchar**) &max_system_variables.net_retry_count,0,
+ &global_system_variables.net_retry_count,
+ &max_system_variables.net_retry_count,0,
GET_ULONG, REQUIRED_ARG, MYSQLD_NET_RETRY_COUNT, 1, (longlong) ULONG_MAX,
0, 1, 0},
{"net_write_timeout", OPT_NET_WRITE_TIMEOUT,
"Number of seconds to wait for a block to be written to a connection before "
"aborting the write.",
- (uchar**) &global_system_variables.net_write_timeout,
- (uchar**) &max_system_variables.net_write_timeout, 0, GET_ULONG,
+ &global_system_variables.net_write_timeout,
+ &max_system_variables.net_write_timeout, 0, GET_ULONG,
REQUIRED_ARG, NET_WRITE_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0},
- {"old", OPT_OLD_MODE, "Use compatible behavior.",
- (uchar**) &global_system_variables.old_mode,
- (uchar**) &max_system_variables.old_mode, 0, GET_BOOL, NO_ARG,
+ { "old", OPT_OLD_MODE, "Use compatible behavior.",
+ &global_system_variables.old_mode,
+ &max_system_variables.old_mode, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"open_files_limit", OPT_OPEN_FILES_LIMIT,
- "If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of files.",
- (uchar**) &open_files_limit, (uchar**) &open_files_limit, 0, GET_ULONG,
+ "If this is not 0, then mysqld will use this value to reserve file "
+ "descriptors to use with setrlimit(). If this value is 0 then mysqld "
+ "will reserve max_connections*5 or max_connections + table_cache*2 "
+ "(whichever is larger) number of files.",
+ &open_files_limit, &open_files_limit, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, OS_FILE_LIMIT, 0, 1, 0},
{"optimizer_prune_level", OPT_OPTIMIZER_PRUNE_LEVEL,
- "Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows.",
- (uchar**) &global_system_variables.optimizer_prune_level,
- (uchar**) &max_system_variables.optimizer_prune_level,
+ "Controls the heuristic(s) applied during query optimization to prune "
+ "less-promising partial plans from the optimizer search space. Meaning: "
+ "0 - do not apply any heuristic, thus perform exhaustive search; 1 - "
+ "prune plans based on number of retrieved rows.",
+ &global_system_variables.optimizer_prune_level,
+ &max_system_variables.optimizer_prune_level,
0, GET_ULONG, OPT_ARG, 1, 0, 1, 0, 1, 0},
{"optimizer_search_depth", OPT_OPTIMIZER_SEARCH_DEPTH,
- "Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Smaller values than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value; if set to MAX_TABLES+2, the optimizer will switch to the original find_best (used for testing/comparison).",
- (uchar**) &global_system_variables.optimizer_search_depth,
- (uchar**) &max_system_variables.optimizer_search_depth,
+ "Maximum depth of search performed by the query optimizer. Values larger "
+ "than the number of relations in a query result in better query plans, "
+ "but take longer to compile a query. Smaller values than the number of "
+ "tables in a relation result in faster optimization, but may produce "
+ "very bad query plans. If set to 0, the system will automatically pick "
+ "a reasonable value; if set to MAX_TABLES+2, the optimizer will switch "
+ "to the original find_best (used for testing/comparison).",
+ &global_system_variables.optimizer_search_depth,
+ &max_system_variables.optimizer_search_depth,
0, GET_ULONG, OPT_ARG, MAX_TABLES+1, 0, MAX_TABLES+2, 0, 1, 0},
{"optimizer_switch", OPT_OPTIMIZER_SWITCH,
"optimizer_switch=option=val[,option=val...], where option={index_merge, "
@@ -7240,68 +7381,72 @@ The minimum value for this variable is 4096.",
", table_elimination"
#endif
"} and val={on, off, default}.",
- (uchar**) &optimizer_switch_str, (uchar**) &optimizer_switch_str, 0, GET_STR, REQUIRED_ARG,
- /*OPTIMIZER_SWITCH_DEFAULT*/0,
- 0, 0, 0, 0, 0},
+ &optimizer_switch_str, &optimizer_switch_str, 0, GET_STR, REQUIRED_ARG,
+ /*OPTIMIZER_SWITCH_DEFAULT*/0, 0, 0, 0, 0, 0},
{"plugin_dir", OPT_PLUGIN_DIR,
"Directory for plugins.",
- (uchar**) &opt_plugin_dir_ptr, (uchar**) &opt_plugin_dir_ptr, 0,
+ &opt_plugin_dir_ptr, &opt_plugin_dir_ptr, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"plugin-load", OPT_PLUGIN_LOAD,
"Optional semicolon-separated list of plugins to load, where each plugin is "
"identified as name=library, where name is the plugin name and library "
"is the plugin library in plugin_dir.",
- (uchar**) &opt_plugin_load, (uchar**) &opt_plugin_load, 0,
+ &opt_plugin_load, &opt_plugin_load, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"plugin-maturity", OPT_PLUGIN_MATURITY,
+ "The lowest desirable plugin maturity. Plugins less mature than that will not be installed or loaded.",
+ (uchar**) &plugin_maturity, (uchar**) &plugin_maturity, &plugin_maturity_values,
+ GET_ENUM, REQUIRED_ARG, server_maturity, 0, 0, 0, 0, 0},
{"preload_buffer_size", OPT_PRELOAD_BUFFER_SIZE,
"The size of the buffer that is allocated when preloading indexes.",
- (uchar**) &global_system_variables.preload_buff_size,
- (uchar**) &max_system_variables.preload_buff_size, 0, GET_ULONG,
+ &global_system_variables.preload_buff_size,
+ &max_system_variables.preload_buff_size, 0, GET_ULONG,
REQUIRED_ARG, 32*1024L, 1024, 1024*1024*1024L, 0, 1, 0},
{"query_alloc_block_size", OPT_QUERY_ALLOC_BLOCK_SIZE,
"Allocation block size for query parsing and execution.",
- (uchar**) &global_system_variables.query_alloc_block_size,
- (uchar**) &max_system_variables.query_alloc_block_size, 0, GET_ULONG,
+ &global_system_variables.query_alloc_block_size,
+ &max_system_variables.query_alloc_block_size, 0, GET_ULONG,
REQUIRED_ARG, QUERY_ALLOC_BLOCK_SIZE, 1024, (longlong) ULONG_MAX, 0, 1024,
0},
#ifdef HAVE_QUERY_CACHE
{"query_cache_limit", OPT_QUERY_CACHE_LIMIT,
"Don't cache results that are bigger than this.",
- (uchar**) &query_cache_limit, (uchar**) &query_cache_limit, 0, GET_ULONG,
+ &query_cache_limit, &query_cache_limit, 0, GET_ULONG,
REQUIRED_ARG, 1024*1024L, 0, (longlong) ULONG_MAX, 0, 1, 0},
{"query_cache_min_res_unit", OPT_QUERY_CACHE_MIN_RES_UNIT,
"Minimal size of unit in which space for results is allocated (last unit "
"will be trimmed after writing all result data).",
- (uchar**) &query_cache_min_res_unit, (uchar**) &query_cache_min_res_unit,
+ &query_cache_min_res_unit, &query_cache_min_res_unit,
0, GET_ULONG, REQUIRED_ARG, QUERY_CACHE_MIN_RESULT_DATA_SIZE,
0, (longlong) ULONG_MAX, 0, 1, 0},
#endif /*HAVE_QUERY_CACHE*/
{"query_cache_size", OPT_QUERY_CACHE_SIZE,
"The memory allocated to store results from old queries.",
- (uchar**) &query_cache_size, (uchar**) &query_cache_size, 0, GET_ULONG,
+ &query_cache_size, &query_cache_size, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, (longlong) ULONG_MAX, 0, 1024, 0},
#ifdef HAVE_QUERY_CACHE
{"query_cache_type", OPT_QUERY_CACHE_TYPE,
- "0 = OFF = Don't cache or retrieve results. 1 = ON = Cache all results except SELECT SQL_NO_CACHE ... queries. 2 = DEMAND = Cache only SELECT SQL_CACHE ... queries.",
- (uchar**) &global_system_variables.query_cache_type,
- (uchar**) &max_system_variables.query_cache_type,
+ "0 = OFF = Don't cache or retrieve results. 1 = ON = Cache all results "
+ "except SELECT SQL_NO_CACHE ... queries. 2 = DEMAND = Cache only SELECT "
+ "SQL_CACHE ... queries.", &global_system_variables.query_cache_type,
+ &max_system_variables.query_cache_type,
0, GET_ULONG, REQUIRED_ARG, 1, 0, 2, 0, 1, 0},
{"query_cache_wlock_invalidate", OPT_QUERY_CACHE_WLOCK_INVALIDATE,
"Invalidate queries in query cache on LOCK for write.",
- (uchar**) &global_system_variables.query_cache_wlock_invalidate,
- (uchar**) &max_system_variables.query_cache_wlock_invalidate,
+ &global_system_variables.query_cache_wlock_invalidate,
+ &max_system_variables.query_cache_wlock_invalidate,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0},
#endif /*HAVE_QUERY_CACHE*/
{"query_prealloc_size", OPT_QUERY_PREALLOC_SIZE,
"Persistent buffer for query parsing and execution.",
- (uchar**) &global_system_variables.query_prealloc_size,
- (uchar**) &max_system_variables.query_prealloc_size, 0, GET_ULONG,
+ &global_system_variables.query_prealloc_size,
+ &max_system_variables.query_prealloc_size, 0, GET_ULONG,
REQUIRED_ARG, QUERY_ALLOC_PREALLOC_SIZE, QUERY_ALLOC_PREALLOC_SIZE,
(longlong) ULONG_MAX, 0, 1024, 0},
{"range_alloc_block_size", OPT_RANGE_ALLOC_BLOCK_SIZE,
"Allocation block size for storing ranges during optimization.",
- (uchar**) &global_system_variables.range_alloc_block_size,
- (uchar**) &max_system_variables.range_alloc_block_size, 0, GET_ULONG,
+ &global_system_variables.range_alloc_block_size,
+ &max_system_variables.range_alloc_block_size, 0, GET_ULONG,
REQUIRED_ARG, RANGE_ALLOC_BLOCK_SIZE, RANGE_ALLOC_BLOCK_SIZE,
(longlong) ULONG_MAX, 0, 1024, 0},
{"rowid_merge_buff_size", OPT_ROWID_MERGE_BUFF_SIZE,
@@ -7310,149 +7455,160 @@ The minimum value for this variable is 4096.",
(uchar**) &max_system_variables.rowid_merge_buff_size, 0, GET_ULONG,
REQUIRED_ARG, 8*1024*1024L, 0, MAX_MEM_TABLE_SIZE/2, 0, 1, 0},
{"read_buffer_size", OPT_RECORD_BUFFER,
- "Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value.",
- (uchar**) &global_system_variables.read_buff_size,
- (uchar**) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG,
+ "Each thread that does a sequential scan allocates a buffer of this size "
+ "for each table it scans. If you do many sequential scans, you may want "
+ "to increase this value.", &global_system_variables.read_buff_size,
+ &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG,
128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, INT_MAX32, MALLOC_OVERHEAD, IO_SIZE,
0},
{"read_only", OPT_READONLY,
"Make all non-temporary tables read-only, with the exception of replication "
"(slave) threads and users with the SUPER privilege.",
- (uchar**) &opt_readonly,
- (uchar**) &opt_readonly,
+ &opt_readonly,
+ &opt_readonly,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0},
{"read_rnd_buffer_size", OPT_RECORD_RND_BUFFER,
"When reading rows in sorted order after a sort, the rows are read through "
"this buffer to avoid disk seeks. If not set, then it's set to the value of "
"record_buffer.",
- (uchar**) &global_system_variables.read_rnd_buff_size,
- (uchar**) &max_system_variables.read_rnd_buff_size, 0,
+ &global_system_variables.read_rnd_buff_size,
+ &max_system_variables.read_rnd_buff_size, 0,
GET_ULONG, REQUIRED_ARG, 256*1024L, IO_SIZE*2+MALLOC_OVERHEAD,
INT_MAX32, MALLOC_OVERHEAD, IO_SIZE, 0},
{"record_buffer", OPT_RECORD_BUFFER_OLD,
"Alias for read_buffer_size. This variable is deprecated and will be removed in a future release.",
- (uchar**) &global_system_variables.read_buff_size,
- (uchar**) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG,
+ &global_system_variables.read_buff_size,
+ &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG,
128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, INT_MAX32, MALLOC_OVERHEAD, IO_SIZE, 0},
#ifdef HAVE_REPLICATION
{"relay_log_purge", OPT_RELAY_LOG_PURGE,
"0 = do not purge relay logs. 1 = purge them as soon as they are no more needed.",
- (uchar**) &relay_log_purge,
- (uchar**) &relay_log_purge, 0, GET_BOOL, NO_ARG,
+ &relay_log_purge,
+ &relay_log_purge, 0, GET_BOOL, NO_ARG,
1, 0, 1, 0, 1, 0},
{"relay_log_space_limit", OPT_RELAY_LOG_SPACE_LIMIT,
"Maximum space to use for all relay logs.",
- (uchar**) &relay_log_space_limit,
- (uchar**) &relay_log_space_limit, 0, GET_ULL, REQUIRED_ARG, 0L, 0L,
+ &relay_log_space_limit,
+ &relay_log_space_limit, 0, GET_ULL, REQUIRED_ARG, 0L, 0L,
(longlong) ULONG_MAX, 0, 1, 0},
{"slave_compressed_protocol", OPT_SLAVE_COMPRESSED_PROTOCOL,
"Use compression on master/slave protocol.",
- (uchar**) &opt_slave_compressed_protocol,
- (uchar**) &opt_slave_compressed_protocol,
+ &opt_slave_compressed_protocol,
+ &opt_slave_compressed_protocol,
0, GET_BOOL, NO_ARG, 0, 0, 1, 0, 1, 0},
{"slave_net_timeout", OPT_SLAVE_NET_TIMEOUT,
"Number of seconds to wait for more data from a master/slave connection before aborting the read.",
- (uchar**) &slave_net_timeout, (uchar**) &slave_net_timeout, 0,
+ &slave_net_timeout, &slave_net_timeout, 0,
GET_ULONG, REQUIRED_ARG, SLAVE_NET_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0},
{"slave_transaction_retries", OPT_SLAVE_TRANS_RETRIES,
"Number of times the slave SQL thread will retry a transaction in case "
"it failed with a deadlock or elapsed lock wait timeout, "
"before giving up and stopping.",
- (uchar**) &slave_trans_retries, (uchar**) &slave_trans_retries, 0,
+ &slave_trans_retries, &slave_trans_retries, 0,
GET_ULONG, REQUIRED_ARG, 10L, 0L, (longlong) ULONG_MAX, 0, 1, 0},
#endif /* HAVE_REPLICATION */
{"slow_launch_time", OPT_SLOW_LAUNCH_TIME,
- "If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented.",
- (uchar**) &slow_launch_time, (uchar**) &slow_launch_time, 0, GET_ULONG,
+ "If creating the thread takes longer than this value (in seconds), "
+ "the Slow_launch_threads counter will be incremented.",
+ &slow_launch_time, &slow_launch_time, 0, GET_ULONG,
REQUIRED_ARG, 2L, 0L, LONG_TIMEOUT, 0, 1, 0},
{"sort_buffer_size", OPT_SORT_BUFFER,
"Each thread that needs to do a sort allocates a buffer of this size.",
- (uchar**) &global_system_variables.sortbuff_size,
- (uchar**) &max_system_variables.sortbuff_size, 0, GET_ULONG, REQUIRED_ARG,
+ &global_system_variables.sortbuff_size,
+ &max_system_variables.sortbuff_size, 0, GET_ULONG, REQUIRED_ARG,
MAX_SORT_MEMORY, MIN_SORT_MEMORY+MALLOC_OVERHEAD*2, (longlong) ULONG_MAX,
MALLOC_OVERHEAD, 1, 0},
{"sync-binlog", OPT_SYNC_BINLOG,
"Synchronously flush binary log to disk after every #th event. "
"Use 0 (default) to disable synchronous flushing.",
- (uchar**) &sync_binlog_period, (uchar**) &sync_binlog_period, 0, GET_ULONG,
+ &sync_binlog_period, &sync_binlog_period, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, (longlong) ULONG_MAX, 0, 1, 0},
{"sync-frm", OPT_SYNC_FRM, "Sync .frm to disk on create. Enabled by default.",
- (uchar**) &opt_sync_frm, (uchar**) &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0,
+ &opt_sync_frm, &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0,
0, 0, 0, 0},
+ {"sync-sys", OPT_SYNC,
+ "Enable/disable system sync calls. Should only be turned off when running "
+ "tests or debugging!!",
+ &opt_sync, &opt_sync, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{"table_cache", OPT_TABLE_OPEN_CACHE,
"Deprecated; use --table_open_cache instead.",
- (uchar**) &table_cache_size, (uchar**) &table_cache_size, 0, GET_ULONG,
+ &table_cache_size, &table_cache_size, 0, GET_ULONG,
REQUIRED_ARG, TABLE_OPEN_CACHE_DEFAULT, 1, 512*1024L, 0, 1, 0},
{"table_definition_cache", OPT_TABLE_DEF_CACHE,
"The number of cached table definitions.",
- (uchar**) &table_def_size, (uchar**) &table_def_size,
+ &table_def_size, &table_def_size,
0, GET_ULONG, REQUIRED_ARG, TABLE_DEF_CACHE_DEFAULT, TABLE_DEF_CACHE_MIN,
512*1024L, 0, 1, 0},
{"table_open_cache", OPT_TABLE_OPEN_CACHE,
"The number of cached open tables.",
- (uchar**) &table_cache_size, (uchar**) &table_cache_size, 0, GET_ULONG,
+ &table_cache_size, &table_cache_size, 0, GET_ULONG,
REQUIRED_ARG, TABLE_OPEN_CACHE_DEFAULT, 1, 512*1024L, 0, 1, 0},
{"table_lock_wait_timeout", OPT_TABLE_LOCK_WAIT_TIMEOUT,
"Timeout in seconds to wait for a table level lock before returning an "
"error. Used only if the connection has active cursors.",
- (uchar**) &table_lock_wait_timeout, (uchar**) &table_lock_wait_timeout,
+ &table_lock_wait_timeout, &table_lock_wait_timeout,
0, GET_ULONG, REQUIRED_ARG, 50, 1, 1024 * 1024 * 1024, 0, 1, 0},
{"thread_cache_size", OPT_THREAD_CACHE_SIZE,
"How many threads we should keep in a cache for reuse.",
- (uchar**) &thread_cache_size, (uchar**) &thread_cache_size, 0, GET_ULONG,
+ &thread_cache_size, &thread_cache_size, 0, GET_ULONG,
REQUIRED_ARG, 0, 0, 16384, 0, 1, 0},
{"thread_concurrency", OPT_THREAD_CONCURRENCY,
- "Permits the application to give the threads system a hint for the desired number of threads that should be run at the same time.",
- (uchar**) &concurrency, (uchar**) &concurrency, 0, GET_ULONG, REQUIRED_ARG,
+ "Permits the application to give the threads system a hint for the "
+ "desired number of threads that should be run at the same time.",
+ &concurrency, &concurrency, 0, GET_ULONG, REQUIRED_ARG,
DEFAULT_CONCURRENCY, 1, 512, 0, 1, 0},
#if HAVE_POOL_OF_THREADS == 1
{"thread_pool_size", OPT_THREAD_CACHE_SIZE,
"How many threads we should create to handle query requests in case of "
"'thread_handling=pool-of-threads'.",
- (uchar**) &thread_pool_size, (uchar**) &thread_pool_size, 0, GET_ULONG,
+ &thread_pool_size, &thread_pool_size, 0, GET_ULONG,
REQUIRED_ARG, 20, 1, 16384, 0, 1, 0},
#endif
{"thread_stack", OPT_THREAD_STACK,
- "The stack size for each thread.", (uchar**) &my_thread_stack_size,
- (uchar**) &my_thread_stack_size, 0, GET_ULONG, REQUIRED_ARG,DEFAULT_THREAD_STACK,
+ "The stack size for each thread.", &my_thread_stack_size,
+ &my_thread_stack_size, 0, GET_ULONG, REQUIRED_ARG,DEFAULT_THREAD_STACK,
(sizeof(void*)<=4)?1024L*128L: ((256-16)*1024L), (longlong) ULONG_MAX, 0, 1024, 0},
{ "time_format", OPT_TIME_FORMAT,
"The TIME format (for future).",
- (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_TIME],
- (uchar**) &opt_date_time_formats[MYSQL_TIMESTAMP_TIME],
+ &opt_date_time_formats[MYSQL_TIMESTAMP_TIME],
+ &opt_date_time_formats[MYSQL_TIMESTAMP_TIME],
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"tmp_table_size", OPT_TMP_TABLE_SIZE,
- "If an internal in-memory temporary table exceeds this size, MySQL will"
- " automatically convert it to an on-disk MyISAM/Maria table.",
- (uchar**) &global_system_variables.tmp_table_size,
- (uchar**) &max_system_variables.tmp_table_size, 0, GET_ULL,
- REQUIRED_ARG, 16*1024*1024L, 0, MAX_MEM_TABLE_SIZE, 0, 1, 0},
+ "If an internal in-memory temporary table exceeds this size, MySQL will "
+ "automatically convert it to an on-disk MyISAM/Aria table.",
+ &global_system_variables.tmp_table_size,
+ &max_system_variables.tmp_table_size, 0, GET_ULL,
+ REQUIRED_ARG, 16*1024*1024L, 1024, MAX_MEM_TABLE_SIZE, 0, 1, 0},
{"transaction_alloc_block_size", OPT_TRANS_ALLOC_BLOCK_SIZE,
"Allocation block size for transactions to be stored in binary log.",
- (uchar**) &global_system_variables.trans_alloc_block_size,
- (uchar**) &max_system_variables.trans_alloc_block_size, 0, GET_ULONG,
+ &global_system_variables.trans_alloc_block_size,
+ &max_system_variables.trans_alloc_block_size, 0, GET_ULONG,
REQUIRED_ARG, QUERY_ALLOC_BLOCK_SIZE, 1024, (longlong) ULONG_MAX, 0, 1024,
0},
{"transaction_prealloc_size", OPT_TRANS_PREALLOC_SIZE,
"Persistent buffer for transactions to be stored in binary log.",
- (uchar**) &global_system_variables.trans_prealloc_size,
- (uchar**) &max_system_variables.trans_prealloc_size, 0, GET_ULONG,
+ &global_system_variables.trans_prealloc_size,
+ &max_system_variables.trans_prealloc_size, 0, GET_ULONG,
REQUIRED_ARG, TRANS_ALLOC_PREALLOC_SIZE, 1024, (longlong) ULONG_MAX, 0,
1024, 0},
{"thread_handling", OPT_THREAD_HANDLING,
"Define threads usage for handling queries: "
"one-thread-per-connection or no-threads.",
- (uchar**) &opt_thread_handling, (uchar**) &opt_thread_handling,
+ &opt_thread_handling, &opt_thread_handling,
0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"updatable_views_with_limit", OPT_UPDATABLE_VIEWS_WITH_LIMIT,
- "1 = YES = Don't issue an error message (warning only) if a VIEW without presence of a key of the underlying table is used in queries with a LIMIT clause for updating. 0 = NO = Prohibit update of a VIEW, which does not contain a key of the underlying table and the query uses a LIMIT clause (usually get from GUI tools).",
- (uchar**) &global_system_variables.updatable_views_with_limit,
- (uchar**) &max_system_variables.updatable_views_with_limit,
+ "1 = YES = Don't issue an error message (warning only) if a VIEW without "
+ "presence of a key of the underlying table is used in queries with a "
+ "LIMIT clause for updating. 0 = NO = Prohibit update of a VIEW, which "
+ "does not contain a key of the underlying table and the query uses a "
+ "LIMIT clause (usually get from GUI tools).",
+ &global_system_variables.updatable_views_with_limit,
+ &max_system_variables.updatable_views_with_limit,
0, GET_ULONG, REQUIRED_ARG, 1, 0, 1, 0, 1, 0},
{"wait_timeout", OPT_WAIT_TIMEOUT,
"The number of seconds the server waits for activity on a connection before closing it.",
- (uchar**) &global_system_variables.net_wait_timeout,
- (uchar**) &max_system_variables.net_wait_timeout, 0, GET_ULONG,
+ &global_system_variables.net_wait_timeout,
+ &max_system_variables.net_wait_timeout, 0, GET_ULONG,
REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT),
0, 1, 0},
{"userstat", OPT_USERSTAT,
@@ -7465,8 +7621,9 @@ The minimum value for this variable is 4096.",
"there are no dependencies between transactional and non-transactional "
"tables such as in the statement INSERT INTO t_myisam SELECT * FROM "
"t_innodb; otherwise, slaves may diverge from the master.",
- (uchar**) &global_system_variables.binlog_direct_non_trans_update, (uchar**) &max_system_variables.binlog_direct_non_trans_update, 0, GET_BOOL, NO_ARG, 0,
- 0, 0, 0, 0, 0},
+ &global_system_variables.binlog_direct_non_trans_update,
+ &max_system_variables.binlog_direct_non_trans_update,
+ 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -8123,10 +8280,11 @@ static int mysql_init_variables(void)
/* Things with default values that are not zero */
delay_key_write_options= (uint) DELAY_KEY_WRITE_ON;
- slave_exec_mode_options= 0;
- slave_exec_mode_options= (uint)
- find_bit_type_or_exit(slave_exec_mode_str, &slave_exec_mode_typelib, NULL,
- &error);
+ slave_exec_mode_options= find_bit_type_or_exit(slave_exec_mode_str,
+ &slave_exec_mode_typelib,
+ NULL, &error);
+ /* Default mode string must not yield a error. */
+ DBUG_ASSERT(!error);
if (error)
return 1;
opt_specialflag= SPECIAL_ENGLISH;
@@ -8374,6 +8532,10 @@ mysqld_get_one_option(int optid,
case '0':
WARN_DEPRECATED(NULL, VER_CELOSIA, "--log-long-format", "--log-short-format");
break;
+ case OPT_DEPRECATED_OPTION:
+ sql_print_warning("'%s' is deprecated and exists only for compatiblity with old my.cnf files; Please remove this option from all your my.cnf files!",
+ opt->name);
+ break;
case 'a':
global_system_variables.sql_mode= fix_sql_mode(MODE_ANSI);
global_system_variables.tx_isolation= ISO_SERIALIZABLE;
@@ -8417,8 +8579,9 @@ mysqld_get_one_option(int optid,
init_slave_skip_errors(argument);
break;
case OPT_SLAVE_EXEC_MODE:
- slave_exec_mode_options= (uint)
- find_bit_type_or_exit(argument, &slave_exec_mode_typelib, "", &error);
+ slave_exec_mode_options= find_bit_type_or_exit(argument,
+ &slave_exec_mode_typelib,
+ "", &error);
if (error)
return 1;
break;
@@ -8523,7 +8686,7 @@ mysqld_get_one_option(int optid,
*val= 0;
val+= 2;
while (*val && my_isspace(mysqld_charset, *val))
- *val++;
+ val++;
if (!*val)
{
sql_print_error("Bad syntax in replicate-rewrite-db - empty TO db!\n");
@@ -8596,7 +8759,6 @@ mysqld_get_one_option(int optid,
WARN_DEPRECATED(NULL, "7.0", "--log_slow_queries", "'--slow_query_log'/'--log-slow-file'");
opt_slow_log= 1;
break;
-#ifdef WITH_CSV_STORAGE_ENGINE
case OPT_LOG_OUTPUT:
{
if (!argument || !argument[0])
@@ -8614,7 +8776,6 @@ mysqld_get_one_option(int optid,
}
break;
}
-#endif
case OPT_EVENT_SCHEDULER:
#ifndef HAVE_EVENT_SCHEDULER
sql_perror("Event scheduler is not supported in embedded build.");
@@ -8623,23 +8784,14 @@ mysqld_get_one_option(int optid,
return 1;
#endif
break;
- case (int) OPT_SKIP_NEW:
- opt_specialflag|= SPECIAL_NO_NEW_FUNC;
- delay_key_write_options= (uint) DELAY_KEY_WRITE_NONE;
- myisam_concurrent_insert=0;
- myisam_recover_options= HA_RECOVER_NONE;
- sp_automatic_privileges=0;
- my_use_symdir=0;
- ha_open_options&= ~(HA_OPEN_ABORT_IF_CRASHED | HA_OPEN_DELAY_KEY_WRITE);
-#ifdef HAVE_QUERY_CACHE
- query_cache_size=0;
-#endif
- break;
case (int) OPT_SAFE:
- opt_specialflag|= SPECIAL_SAFE_MODE;
+ opt_specialflag|= SPECIAL_SAFE_MODE | SPECIAL_NO_NEW_FUNC;
delay_key_write_options= (uint) DELAY_KEY_WRITE_NONE;
myisam_recover_options= HA_RECOVER_DEFAULT;
ha_open_options&= ~(HA_OPEN_DELAY_KEY_WRITE);
+#ifdef HAVE_QUERY_CACHE
+ query_cache_size=0;
+#endif
break;
case (int) OPT_SKIP_PRIOR:
opt_specialflag|= SPECIAL_NO_PRIOR;
@@ -8739,8 +8891,7 @@ mysqld_get_one_option(int optid,
if (!slave_warning_issued) //only show the warning once
{
slave_warning_issued = true;
- WARN_DEPRECATED(NULL, "6.0", "for replication startup options",
- "'CHANGE MASTER'");
+ WARN_DEPRECATED(NULL, "6.0", opt->name, "'CHANGE MASTER'");
}
break;
case OPT_CONSOLE:
@@ -8954,16 +9105,16 @@ mysqld_get_one_option(int optid,
break;
}
case OPT_ONE_THREAD:
- global_system_variables.thread_handling= SCHEDULER_NO_THREADS;
- opt_thread_handling= thread_handling_typelib.type_names[global_system_variables.thread_handling];
+ thread_handling= SCHEDULER_NO_THREADS;
+ opt_thread_handling= thread_handling_typelib.type_names[thread_handling];
break;
case OPT_THREAD_HANDLING:
{
int id;
LINT_INIT(id);
if (!find_opt_type(argument, &thread_handling_typelib, opt->name, &id))
- global_system_variables.thread_handling= id - 1;
- opt_thread_handling= thread_handling_typelib.type_names[global_system_variables.thread_handling];
+ thread_handling= id - 1;
+ opt_thread_handling= thread_handling_typelib.type_names[thread_handling];
break;
}
case OPT_FT_BOOLEAN_SYNTAX:
@@ -9009,13 +9160,12 @@ mysqld_get_one_option(int optid,
/** Handle arguments for multiple key caches. */
+C_MODE_START
+static void* mysql_getopt_value(const char *, uint,
+ const struct my_option *, int *);
+C_MODE_END
-extern "C" int mysql_getopt_value(uchar **value,
- const char *keyname, uint key_length,
- const struct my_option *option,
- int *error);
-
-static uchar* *
+static void*
mysql_getopt_value(const char *keyname, uint key_length,
const struct my_option *option, int *error)
{
@@ -9037,13 +9187,13 @@ mysql_getopt_value(const char *keyname, uint key_length,
}
switch (option->id) {
case OPT_KEY_BUFFER_SIZE:
- return (uchar**) &key_cache->param_buff_size;
+ return &key_cache->param_buff_size;
case OPT_KEY_CACHE_BLOCK_SIZE:
- return (uchar**) &key_cache->param_block_size;
+ return &key_cache->param_block_size;
case OPT_KEY_CACHE_DIVISION_LIMIT:
- return (uchar**) &key_cache->param_division_limit;
+ return &key_cache->param_division_limit;
case OPT_KEY_CACHE_AGE_THRESHOLD:
- return (uchar**) &key_cache->param_age_threshold;
+ return &key_cache->param_age_threshold;
case OPT_KEY_CACHE_PARTITIONS:
return (uchar**) &key_cache->param_partitions;
}
@@ -9117,7 +9267,7 @@ static int get_options(int *argc,char **argv)
/* Set global MyISAM variables from delay_key_write_options */
fix_delay_key_write((THD*) 0, OPT_GLOBAL);
/* Set global slave_exec_mode from its option */
- fix_slave_exec_mode(OPT_GLOBAL);
+ fix_slave_exec_mode();
global_system_variables.log_slow_filter=
fix_log_slow_filter(global_system_variables.log_slow_filter);
@@ -9125,7 +9275,7 @@ static int get_options(int *argc,char **argv)
if (mysqld_chroot)
set_root(mysqld_chroot);
#else
- global_system_variables.thread_handling = SCHEDULER_NO_THREADS;
+ thread_handling = SCHEDULER_NO_THREADS;
max_allowed_packet= global_system_variables.max_allowed_packet;
net_buffer_length= global_system_variables.net_buffer_length;
#endif
@@ -9137,6 +9287,7 @@ static int get_options(int *argc,char **argv)
In most cases the global variables will not be used
*/
my_disable_locking= myisam_single_user= test(opt_external_locking == 0);
+ my_disable_sync= opt_sync == 0;
my_default_record_cache_size=global_system_variables.read_buff_size;
myisam_max_temp_length=
(my_off_t) global_system_variables.myisam_max_sort_file_size;
@@ -9164,11 +9315,10 @@ static int get_options(int *argc,char **argv)
one_thread_scheduler(&thread_scheduler);
one_thread_scheduler(&extra_thread_scheduler);
#else
- if (global_system_variables.thread_handling <=
- SCHEDULER_ONE_THREAD_PER_CONNECTION)
+ if (thread_handling <= SCHEDULER_ONE_THREAD_PER_CONNECTION)
one_thread_per_connection_scheduler(&thread_scheduler, &max_connections,
&connection_count);
- else if (global_system_variables.thread_handling == SCHEDULER_NO_THREADS)
+ else if (thread_handling == SCHEDULER_NO_THREADS)
one_thread_scheduler(&thread_scheduler);
else
pool_of_threads_scheduler(&thread_scheduler); /* purecov: tested */
@@ -9282,6 +9432,8 @@ bool is_secure_file_path(char *path)
static int fix_paths(void)
{
char buff[FN_REFLEN],*pos;
+ DBUG_ENTER("fix_paths");
+
convert_dirname(mysql_home,mysql_home,NullS);
/* Resolve symlinks to allow 'mysql_home' to be a relative symlink */
my_realpath(mysql_home,mysql_home,MYF(0));
@@ -9326,12 +9478,12 @@ static int fix_paths(void)
charsets_dir=mysql_charsets_dir;
if (init_tmpdir(&mysql_tmpdir_list, opt_mysql_tmpdir))
- return 1;
+ DBUG_RETURN(1);
#ifdef HAVE_REPLICATION
if (!slave_load_tmpdir)
{
if (!(slave_load_tmpdir = (char*) my_strdup(mysql_tmpdir, MYF(MY_FAE))))
- return 1;
+ DBUG_RETURN(1);
}
#endif /* HAVE_REPLICATION */
/*
@@ -9352,7 +9504,7 @@ static int fix_paths(void)
if (my_realpath(buff, opt_secure_file_priv, 0))
{
sql_print_warning("Failed to normalize the argument for --secure-file-priv.");
- return 1;
+ DBUG_RETURN(1);
}
secure_file_real_path= (char *)my_malloc(FN_REFLEN, MYF(MY_FAE));
convert_dirname(secure_file_real_path, buff, NullS);
@@ -9360,7 +9512,7 @@ static int fix_paths(void)
opt_secure_file_priv= secure_file_real_path;
}
}
- return 0;
+ DBUG_RETURN(0);
}
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index b2f40d576f7..8ca525994c9 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -16,11 +16,7 @@
/**
@file
- This file is the net layer API for the MySQL client/server protocol,
- which is a tightly coupled, proprietary protocol owned by MySQL AB.
- @note
- Any re-implementations of this protocol must also be under GPL
- unless one has got an license from MySQL AB stating otherwise.
+ This file is the net layer API for the MySQL client/server protocol.
Write and read of logical packets to/from socket.
@@ -914,13 +910,18 @@ my_real_read(NET *net, size_t *complen)
("Packets out of order (Found: %d, expected %u)",
(int) net->buff[net->where_b + 3],
net->pkt_nr));
-#ifdef EXTRA_DEBUG
+ /*
+ We don't make noise server side, since the client is expected
+ to break the protocol for e.g. --send LOAD DATA .. LOCAL where
+ the server expects the client to send a file, but the client
+ may reply with a new command instead.
+ */
+#if defined (EXTRA_DEBUG) && !defined (MYSQL_SERVER)
fflush(stdout);
fprintf(stderr,"Error: Packets out of order (Found: %d, expected %d)\n",
(int) net->buff[net->where_b + 3],
(uint) (uchar) net->pkt_nr);
fflush(stderr);
- DBUG_ASSERT(0);
#endif
}
len= packet_error;
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 1d521f78209..fd81236b343 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -1259,7 +1259,7 @@ QUICK_RANGE_SELECT::~QUICK_RANGE_SELECT()
QUICK_INDEX_MERGE_SELECT::QUICK_INDEX_MERGE_SELECT(THD *thd_param,
TABLE *table)
- :pk_quick_select(NULL), thd(thd_param)
+ :unique(NULL), pk_quick_select(NULL), thd(thd_param)
{
DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::QUICK_INDEX_MERGE_SELECT");
index= MAX_KEY;
@@ -1301,6 +1301,7 @@ QUICK_INDEX_MERGE_SELECT::~QUICK_INDEX_MERGE_SELECT()
List_iterator_fast<QUICK_RANGE_SELECT> quick_it(quick_selects);
QUICK_RANGE_SELECT* quick;
DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::~QUICK_INDEX_MERGE_SELECT");
+ delete unique;
quick_it.rewind();
while ((quick= quick_it++))
quick->file= NULL;
@@ -1498,7 +1499,7 @@ int QUICK_ROR_INTERSECT_SELECT::init_ror_merged_scan(bool reuse_handler)
quick->record= head->record[0];
}
- if (need_to_fetch_row && head->file->ha_rnd_init(1))
+ if (need_to_fetch_row && head->file->ha_rnd_init_with_error(1))
{
DBUG_PRINT("error", ("ROR index_merge rnd_init call failed"));
DBUG_RETURN(1);
@@ -1669,7 +1670,7 @@ int QUICK_ROR_UNION_SELECT::reset()
queue_insert(&queue, (uchar*)quick);
}
- if (head->file->ha_rnd_init(1))
+ if (head->file->ha_rnd_init_with_error(1))
{
DBUG_PRINT("error", ("ROR index_merge rnd_init call failed"));
DBUG_RETURN(1);
@@ -7754,7 +7755,7 @@ get_quick_keys(PARAM *param,QUICK_RANGE_SELECT *quick,KEY_PART *key,
{
KEY *table_key=quick->head->key_info+quick->index;
flag=EQ_RANGE;
- if ((table_key->flags & (HA_NOSAME | HA_END_SPACE_KEY)) == HA_NOSAME &&
+ if ((table_key->flags & HA_NOSAME) &&
key->part == table_key->key_parts-1)
{
if (!(table_key->flags & HA_NULL_PART_KEY) ||
@@ -7804,7 +7805,7 @@ bool QUICK_RANGE_SELECT::unique_key_range()
if ((tmp->flag & (EQ_RANGE | NULL_RANGE)) == EQ_RANGE)
{
KEY *key=head->key_info+index;
- return ((key->flags & (HA_NOSAME | HA_END_SPACE_KEY)) == HA_NOSAME &&
+ return ((key->flags & HA_NOSAME) &&
key->key_length == tmp->min_length);
}
}
@@ -7951,8 +7952,7 @@ QUICK_RANGE_SELECT *get_quick_select_for_ref(THD *thd, TABLE *table,
range->min_length= range->max_length= ref->key_length;
range->min_keypart_map= range->max_keypart_map=
make_prev_keypart_map(ref->key_parts);
- range->flag= ((ref->key_length == key_info->key_length &&
- (key_info->flags & HA_END_SPACE_KEY) == 0) ? EQ_RANGE : 0);
+ range->flag= (ref->key_length == key_info->key_length ? EQ_RANGE : 0);
if (!(quick->key_parts=key_part=(KEY_PART *)
alloc_root(&quick->alloc,sizeof(KEY_PART)*ref->key_parts)))
@@ -8038,7 +8038,6 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge()
List_iterator_fast<QUICK_RANGE_SELECT> cur_quick_it(quick_selects);
QUICK_RANGE_SELECT* cur_quick;
int result;
- Unique *unique= 0;
handler *file= head->file;
DBUG_ENTER("QUICK_INDEX_MERGE_SELECT::read_keys_and_merge");
@@ -8060,11 +8059,24 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge()
if (cur_quick->init() || cur_quick->reset())
goto err;
- unique= new Unique(refpos_order_cmp, (void *)file,
- file->ref_length,
- thd->variables.sortbuff_size);
- if (!unique)
- goto err;
+ if (unique == NULL)
+ {
+ DBUG_EXECUTE_IF("index_merge_may_not_create_a_Unique", abort(); );
+ DBUG_EXECUTE_IF("only_one_Unique_may_be_created",
+ DBUG_SET("+d,index_merge_may_not_create_a_Unique"); );
+
+ unique= new Unique(refpos_order_cmp, (void *)file,
+ file->ref_length,
+ thd->variables.sortbuff_size);
+ if (!unique)
+ goto err;
+ }
+ else
+ unique->reset();
+
+ DBUG_ASSERT(file->ref_length == unique->get_size());
+ DBUG_ASSERT(thd->variables.sortbuff_size == unique->get_max_in_memory_size());
+
for (;;)
{
while ((result= cur_quick->get_next()) == HA_ERR_END_OF_FILE)
@@ -8108,17 +8120,16 @@ int QUICK_INDEX_MERGE_SELECT::read_keys_and_merge()
sequence.
*/
result= unique->get(head);
- delete unique;
doing_pk_scan= FALSE;
/*
index_merge currently doesn't support "using index" at all
*/
head->disable_keyread();
- init_read_record(&read_record, thd, head, (SQL_SELECT*) 0, 1 , 1, TRUE);
+ if (init_read_record(&read_record, thd, head, (SQL_SELECT*) 0, 1 , 1, TRUE))
+ result= 1;
DBUG_RETURN(result);
err:
- delete unique;
head->disable_keyread();
DBUG_RETURN(1);
}
@@ -8233,6 +8244,7 @@ int QUICK_ROR_INTERSECT_SELECT::get_next()
if ((error= quick->get_next()))
DBUG_RETURN(error);
}
+ quick->file->position(quick->record);
}
memcpy(last_rowid, quick->file->ref, head->file->ref_length);
last_rowid_count= 1;
@@ -8413,49 +8425,52 @@ int QUICK_RANGE_SELECT::get_next()
/*
Get the next record with a different prefix.
- SYNOPSIS
- QUICK_RANGE_SELECT::get_next_prefix()
- prefix_length length of cur_prefix
- cur_prefix prefix of a key to be searched for
+ @param prefix_length length of cur_prefix
+ @param group_key_parts The number of key parts in the group prefix
+ @param cur_prefix prefix of a key to be searched for
- DESCRIPTION
- Each subsequent call to the method retrieves the first record that has a
- prefix with length prefix_length different from cur_prefix, such that the
- record with the new prefix is within the ranges described by
- this->ranges. The record found is stored into the buffer pointed by
- this->record.
- The method is useful for GROUP-BY queries with range conditions to
- discover the prefix of the next group that satisfies the range conditions.
+ Each subsequent call to the method retrieves the first record that has a
+ prefix with length prefix_length and which is different from cur_prefix,
+ such that the record with the new prefix is within the ranges described by
+ this->ranges. The record found is stored into the buffer pointed by
+ this->record. The method is useful for GROUP-BY queries with range
+ conditions to discover the prefix of the next group that satisfies the range
+ conditions.
+
+ @todo
- TODO
This method is a modified copy of QUICK_RANGE_SELECT::get_next(), so both
methods should be unified into a more general one to reduce code
duplication.
- RETURN
- 0 on success
- HA_ERR_END_OF_FILE if returned all keys
- other if some error occurred
+ @retval 0 on success
+ @retval HA_ERR_END_OF_FILE if returned all keys
+ @retval other if some error occurred
*/
int QUICK_RANGE_SELECT::get_next_prefix(uint prefix_length,
- key_part_map keypart_map,
+ uint group_key_parts,
uchar *cur_prefix)
{
DBUG_ENTER("QUICK_RANGE_SELECT::get_next_prefix");
+ const key_part_map keypart_map= make_prev_keypart_map(group_key_parts);
for (;;)
{
int result;
- key_range start_key, end_key;
if (last_range)
{
/* Read the next record in the same range with prefix after cur_prefix. */
- DBUG_ASSERT(cur_prefix != 0);
+ DBUG_ASSERT(cur_prefix != NULL);
result= file->ha_index_read_map(record, cur_prefix, keypart_map,
HA_READ_AFTER_KEY);
- if (result || (file->compare_key(file->end_range) <= 0))
+ if (result || last_range->max_keypart_map == 0)
DBUG_RETURN(result);
+
+ key_range previous_endpoint;
+ last_range->make_max_endpoint(&previous_endpoint, prefix_length, keypart_map);
+ if (file->compare_key(&previous_endpoint) <= 0)
+ DBUG_RETURN(0);
}
uint count= ranges.elements - (cur_range - (QUICK_RANGE**) ranges.buffer);
@@ -8467,21 +8482,9 @@ int QUICK_RANGE_SELECT::get_next_prefix(uint prefix_length,
}
last_range= *(cur_range++);
- start_key.key= (const uchar*) last_range->min_key;
- start_key.length= min(last_range->min_length, prefix_length);
- start_key.keypart_map= last_range->min_keypart_map & keypart_map;
- start_key.flag= ((last_range->flag & NEAR_MIN) ? HA_READ_AFTER_KEY :
- (last_range->flag & EQ_RANGE) ?
- HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT);
- end_key.key= (const uchar*) last_range->max_key;
- end_key.length= min(last_range->max_length, prefix_length);
- end_key.keypart_map= last_range->max_keypart_map & keypart_map;
- /*
- We use READ_AFTER_KEY here because if we are reading on a key
- prefix we want to find all keys with this prefix
- */
- end_key.flag= (last_range->flag & NEAR_MAX ? HA_READ_BEFORE_KEY :
- HA_READ_AFTER_KEY);
+ key_range start_key, end_key;
+ last_range->make_min_endpoint(&start_key, prefix_length, keypart_map);
+ last_range->make_max_endpoint(&end_key, prefix_length, keypart_map);
result= file->read_range_first(last_range->min_keypart_map ? &start_key : 0,
last_range->max_keypart_map ? &end_key : 0,
@@ -8576,9 +8579,9 @@ bool QUICK_RANGE_SELECT::row_in_ranges()
}
/*
- This is a hack: we inherit from QUICK_SELECT so that we can use the
+ This is a hack: we inherit from QUICK_RANGE_SELECT so that we can use the
get_next() interface, but we have to hold a pointer to the original
- QUICK_SELECT because its data are used all over the place. What
+ QUICK_RANGE_SELECT because its data are used all over the place. What
should be done is to factor out the data that is needed into a base
class (QUICK_SELECT), and then have two subclasses (_ASC and _DESC)
which handle the ranges and implement the get_next() function. But
@@ -8854,7 +8857,7 @@ void QUICK_RANGE_SELECT::add_keys_and_lengths(String *key_names,
uint length;
KEY *key_info= head->key_info + index;
key_names->append(key_info->name);
- length= longlong2str(max_used_key_length, buf, 10) - buf;
+ length= longlong10_to_str(max_used_key_length, buf, 10) - buf;
used_lengths->append(buf, length);
}
@@ -8879,7 +8882,7 @@ void QUICK_INDEX_MERGE_SELECT::add_keys_and_lengths(String *key_names,
KEY *key_info= head->key_info + quick->index;
key_names->append(key_info->name);
- length= longlong2str(quick->max_used_key_length, buf, 10) - buf;
+ length= longlong10_to_str(quick->max_used_key_length, buf, 10) - buf;
used_lengths->append(buf, length);
}
if (pk_quick_select)
@@ -8887,7 +8890,8 @@ void QUICK_INDEX_MERGE_SELECT::add_keys_and_lengths(String *key_names,
KEY *key_info= head->key_info + pk_quick_select->index;
key_names->append(',');
key_names->append(key_info->name);
- length= longlong2str(pk_quick_select->max_used_key_length, buf, 10) - buf;
+ length= (longlong10_to_str(pk_quick_select->max_used_key_length, buf, 10)
+ - buf);
used_lengths->append(',');
used_lengths->append(buf, length);
}
@@ -8912,7 +8916,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_keys_and_lengths(String *key_names,
used_lengths->append(',');
}
key_names->append(key_info->name);
- length= longlong2str(quick->max_used_key_length, buf, 10) - buf;
+ length= longlong10_to_str(quick->max_used_key_length, buf, 10) - buf;
used_lengths->append(buf, length);
}
@@ -8921,7 +8925,7 @@ void QUICK_ROR_INTERSECT_SELECT::add_keys_and_lengths(String *key_names,
KEY *key_info= head->key_info + cpk_quick->index;
key_names->append(',');
key_names->append(key_info->name);
- length= longlong2str(cpk_quick->max_used_key_length, buf, 10) - buf;
+ length= longlong10_to_str(cpk_quick->max_used_key_length, buf, 10) - buf;
used_lengths->append(',');
used_lengths->append(buf, length);
}
@@ -10112,7 +10116,7 @@ QUICK_GROUP_MIN_MAX_SELECT(TABLE *table, JOIN *join_arg, bool have_min_arg,
uint use_index, double read_cost_arg,
ha_rows records_arg, uint key_infix_len_arg,
uchar *key_infix_arg, MEM_ROOT *parent_alloc)
- :join(join_arg), index_info(index_info_arg),
+ :file(table->file), join(join_arg), index_info(index_info_arg),
group_prefix_len(group_prefix_len_arg),
group_key_parts(group_key_parts_arg), have_min(have_min_arg),
have_max(have_max_arg), seen_first_key(FALSE), doing_key_read(FALSE),
@@ -10121,7 +10125,6 @@ QUICK_GROUP_MIN_MAX_SELECT(TABLE *table, JOIN *join_arg, bool have_min_arg,
max_functions_it(NULL)
{
head= table;
- file= head->file;
index= use_index;
record= head->record[0];
tmp_record= head->record[1];
@@ -10721,7 +10724,8 @@ int QUICK_GROUP_MIN_MAX_SELECT::next_prefix()
{
uchar *cur_prefix= seen_first_key ? group_prefix : NULL;
if ((result= quick_prefix_select->get_next_prefix(group_prefix_len,
- make_prev_keypart_map(group_key_parts), cur_prefix)))
+ group_key_parts,
+ cur_prefix)))
DBUG_RETURN(result);
seen_first_key= TRUE;
}
@@ -11093,7 +11097,7 @@ void QUICK_GROUP_MIN_MAX_SELECT::add_keys_and_lengths(String *key_names,
char buf[64];
uint length;
key_names->append(index_info->name);
- length= longlong2str(max_used_key_length, buf, 10) - buf;
+ length= longlong10_to_str(max_used_key_length, buf, 10) - buf;
used_lengths->append(buf, length);
}
diff --git a/sql/opt_range.h b/sql/opt_range.h
index 5abad749b58..1f2df1d7d55 100644
--- a/sql/opt_range.h
+++ b/sql/opt_range.h
@@ -71,6 +71,85 @@ class QUICK_RANGE :public Sql_alloc {
dummy=0;
#endif
}
+
+ /**
+ Initalizes a key_range object for communication with storage engine.
+
+ This function facilitates communication with the Storage Engine API by
+ translating the minimum endpoint of the interval represented by this
+ QUICK_RANGE into an index range endpoint specifier for the engine.
+
+ @param Pointer to an uninitialized key_range C struct.
+
+ @param prefix_length The length of the search key prefix to be used for
+ lookup.
+
+ @param keypart_map A set (bitmap) of keyparts to be used.
+ */
+ void make_min_endpoint(key_range *kr, uint prefix_length,
+ key_part_map keypart_map) {
+ make_min_endpoint(kr);
+ kr->length= min(kr->length, prefix_length);
+ kr->keypart_map&= keypart_map;
+ }
+
+ /**
+ Initalizes a key_range object for communication with storage engine.
+
+ This function facilitates communication with the Storage Engine API by
+ translating the minimum endpoint of the interval represented by this
+ QUICK_RANGE into an index range endpoint specifier for the engine.
+
+ @param Pointer to an uninitialized key_range C struct.
+ */
+ void make_min_endpoint(key_range *kr) {
+ kr->key= (const uchar*)min_key;
+ kr->length= min_length;
+ kr->keypart_map= min_keypart_map;
+ kr->flag= ((flag & NEAR_MIN) ? HA_READ_AFTER_KEY :
+ (flag & EQ_RANGE) ? HA_READ_KEY_EXACT : HA_READ_KEY_OR_NEXT);
+ }
+
+ /**
+ Initalizes a key_range object for communication with storage engine.
+
+ This function facilitates communication with the Storage Engine API by
+ translating the maximum endpoint of the interval represented by this
+ QUICK_RANGE into an index range endpoint specifier for the engine.
+
+ @param Pointer to an uninitialized key_range C struct.
+
+ @param prefix_length The length of the search key prefix to be used for
+ lookup.
+
+ @param keypart_map A set (bitmap) of keyparts to be used.
+ */
+ void make_max_endpoint(key_range *kr, uint prefix_length,
+ key_part_map keypart_map) {
+ make_max_endpoint(kr);
+ kr->length= min(kr->length, prefix_length);
+ kr->keypart_map&= keypart_map;
+ }
+
+ /**
+ Initalizes a key_range object for communication with storage engine.
+
+ This function facilitates communication with the Storage Engine API by
+ translating the maximum endpoint of the interval represented by this
+ QUICK_RANGE into an index range endpoint specifier for the engine.
+
+ @param Pointer to an uninitialized key_range C struct.
+ */
+ void make_max_endpoint(key_range *kr) {
+ kr->key= (const uchar*)max_key;
+ kr->length= max_length;
+ kr->keypart_map= max_keypart_map;
+ /*
+ We use READ_AFTER_KEY here because if we are reading on a key
+ prefix we want to find all keys with this prefix
+ */
+ kr->flag= (flag & NEAR_MAX ? HA_READ_BEFORE_KEY : HA_READ_AFTER_KEY);
+ }
};
@@ -349,7 +428,7 @@ public:
int reset(void);
int get_next();
void range_end();
- int get_next_prefix(uint prefix_length, key_part_map keypart_map,
+ int get_next_prefix(uint prefix_length, uint group_key_parts,
uchar *cur_prefix);
bool reverse_sorted() { return 0; }
bool unique_key_range();
@@ -462,6 +541,7 @@ public:
class QUICK_INDEX_MERGE_SELECT : public QUICK_SELECT_I
{
+ Unique *unique;
public:
QUICK_INDEX_MERGE_SELECT(THD *thd, TABLE *table);
~QUICK_INDEX_MERGE_SELECT();
@@ -649,13 +729,13 @@ private:
class QUICK_GROUP_MIN_MAX_SELECT : public QUICK_SELECT_I
{
private:
- handler *file; /* The handler used to get data. */
+ handler * const file; /* The handler used to get data. */
JOIN *join; /* Descriptor of the current query */
KEY *index_info; /* The index chosen for data access */
uchar *record; /* Buffer where the next record is returned. */
uchar *tmp_record; /* Temporary storage for next_min(), next_max(). */
uchar *group_prefix; /* Key prefix consisting of the GROUP fields. */
- uint group_prefix_len; /* Length of the group prefix. */
+ const uint group_prefix_len; /* Length of the group prefix. */
uint group_key_parts; /* A number of keyparts in the group prefix */
uchar *last_prefix; /* Prefix of the last group for detecting EOF. */
bool have_min; /* Specify whether we are computing */
diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc
index 974eea08871..450ded89653 100644
--- a/sql/opt_sum.cc
+++ b/sql/opt_sum.cc
@@ -89,6 +89,126 @@ static ulonglong get_exact_record_count(TABLE_LIST *tables)
/**
+ Use index to read MIN(field) value.
+
+ @param table Table object
+ @param ref Reference to the structure where we store the key value
+ @item_field Field used in MIN()
+ @range_fl Whether range endpoint is strict less than
+ @prefix_len Length of common key part for the range
+
+ @retval
+ 0 No errors
+ HA_ERR_... Otherwise
+*/
+
+static int get_index_min_value(TABLE *table, TABLE_REF *ref,
+ Item_field *item_field, uint range_fl,
+ uint prefix_len)
+{
+ int error;
+
+ if (!ref->key_length)
+ error= table->file->ha_index_first(table->record[0]);
+ else
+ {
+ /*
+ Use index to replace MIN/MAX functions with their values
+ according to the following rules:
+
+ 1) Insert the minimum non-null values where the WHERE clause still
+ matches, or
+ 2) a NULL value if there are only NULL values for key_part_k.
+ 3) Fail, producing a row of nulls
+
+ Implementation: Read the smallest value using the search key. If
+ the interval is open, read the next value after the search
+ key. If read fails, and we're looking for a MIN() value for a
+ nullable column, test if there is an exact match for the key.
+ */
+ if (!(range_fl & NEAR_MIN))
+ /*
+ Closed interval: Either The MIN argument is non-nullable, or
+ we have a >= predicate for the MIN argument.
+ */
+ error= table->file->ha_index_read_map(table->record[0],
+ ref->key_buff,
+ make_prev_keypart_map(ref->key_parts),
+ HA_READ_KEY_OR_NEXT);
+ else
+ {
+ /*
+ Open interval: There are two cases:
+ 1) We have only MIN() and the argument column is nullable, or
+ 2) there is a > predicate on it, nullability is irrelevant.
+ We need to scan the next bigger record first.
+ Open interval is not used if the search key involves the last keypart,
+ and it would not work.
+ */
+ DBUG_ASSERT(prefix_len < ref->key_length);
+ error= table->file->ha_index_read_map(table->record[0],
+ ref->key_buff,
+ make_prev_keypart_map(ref->key_parts),
+ HA_READ_AFTER_KEY);
+ /*
+ If the found record is outside the group formed by the search
+ prefix, or there is no such record at all, check if all
+ records in that group have NULL in the MIN argument
+ column. If that is the case return that NULL.
+
+ Check if case 1 from above holds. If it does, we should read
+ the skipped tuple.
+ */
+ if (item_field->field->real_maybe_null() &&
+ ref->key_buff[prefix_len] == 1 &&
+ /*
+ Last keypart (i.e. the argument to MIN) is set to NULL by
+ find_key_for_maxmin only if all other keyparts are bound
+ to constants in a conjunction of equalities. Hence, we
+ can detect this by checking only if the last keypart is
+ NULL.
+ */
+ (error == HA_ERR_KEY_NOT_FOUND ||
+ key_cmp_if_same(table, ref->key_buff, ref->key, prefix_len)))
+ {
+ DBUG_ASSERT(item_field->field->real_maybe_null());
+ error= table->file->ha_index_read_map(table->record[0],
+ ref->key_buff,
+ make_prev_keypart_map(ref->key_parts),
+ HA_READ_KEY_EXACT);
+ }
+ }
+ }
+ return error;
+}
+
+
+/**
+ Use index to read MAX(field) value.
+
+ @param table Table object
+ @param ref Reference to the structure where we store the key value
+ @range_fl Whether range endpoint is strict greater than
+
+ @retval
+ 0 No errors
+ HA_ERR_... Otherwise
+*/
+
+static int get_index_max_value(TABLE *table, TABLE_REF *ref, uint range_fl)
+{
+ return (ref->key_length ?
+ table->file->ha_index_read_map(table->record[0], ref->key_buff,
+ make_prev_keypart_map(ref->key_parts),
+ range_fl & NEAR_MAX ?
+ HA_READ_BEFORE_KEY :
+ HA_READ_PREFIX_LAST_OR_PREV) :
+ table->file->ha_index_last(table->record[0]));
+}
+
+
+
+/**
Substitutes constants for some COUNT(), MIN() and MAX() functions.
@param tables list of leaves of join table tree
@@ -220,9 +340,11 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
const_result= 0;
break;
case Item_sum::MIN_FUNC:
+ case Item_sum::MAX_FUNC:
{
+ int is_max= test(item_sum->sum_func() == Item_sum::MAX_FUNC);
/*
- If MIN(expr) is the first part of a key or if all previous
+ If MIN/MAX(expr) is the first part of a key or if all previous
parts of the key is found in the COND, then we can use
indexes to find the key.
*/
@@ -241,89 +363,25 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
Look for a partial key that can be used for optimization.
If we succeed, ref.key_length will contain the length of
this key, while prefix_len will contain the length of
- the beginning of this key without field used in MIN().
+ the beginning of this key without field used in MIN/MAX().
Type of range for the key part for this field will be
returned in range_fl.
*/
if (table->file->inited || (outer_tables & table->map) ||
- !find_key_for_maxmin(0, &ref, item_field->field, conds,
+ !find_key_for_maxmin(is_max, &ref, item_field->field, conds,
&range_fl, &prefix_len))
{
const_result= 0;
break;
}
- error= table->file->ha_index_init((uint) ref.key, 1);
+ if (!(error= table->file->ha_index_init((uint) ref.key, 1)))
+ error= (is_max ?
+ get_index_max_value(table, &ref, range_fl) :
+ get_index_min_value(table, &ref, item_field, range_fl,
+ prefix_len));
- if (!ref.key_length)
- error= table->file->ha_index_first(table->record[0]);
- else
- {
- /*
- Use index to replace MIN/MAX functions with their values
- according to the following rules:
-
- 1) Insert the minimum non-null values where the WHERE clause still
- matches, or
- 2) a NULL value if there are only NULL values for key_part_k.
- 3) Fail, producing a row of nulls
-
- Implementation: Read the smallest value using the search key. If
- the interval is open, read the next value after the search
- key. If read fails, and we're looking for a MIN() value for a
- nullable column, test if there is an exact match for the key.
- */
- if (!(range_fl & NEAR_MIN))
- /*
- Closed interval: Either The MIN argument is non-nullable, or
- we have a >= predicate for the MIN argument.
- */
- error= table->file->ha_index_read_map(table->record[0],
- ref.key_buff,
- make_prev_keypart_map(ref.key_parts),
- HA_READ_KEY_OR_NEXT);
- else
- {
- /*
- Open interval: There are two cases:
- 1) We have only MIN() and the argument column is nullable, or
- 2) there is a > predicate on it, nullability is irrelevant.
- We need to scan the next bigger record first.
- */
- error= table->file->ha_index_read_map(table->record[0],
- ref.key_buff,
- make_prev_keypart_map(ref.key_parts),
- HA_READ_AFTER_KEY);
- /*
- If the found record is outside the group formed by the search
- prefix, or there is no such record at all, check if all
- records in that group have NULL in the MIN argument
- column. If that is the case return that NULL.
-
- Check if case 1 from above holds. If it does, we should read
- the skipped tuple.
- */
- if (item_field->field->real_maybe_null() &&
- ref.key_buff[prefix_len] == 1 &&
- /*
- Last keypart (i.e. the argument to MIN) is set to NULL by
- find_key_for_maxmin only if all other keyparts are bound
- to constants in a conjunction of equalities. Hence, we
- can detect this by checking only if the last keypart is
- NULL.
- */
- (error == HA_ERR_KEY_NOT_FOUND ||
- key_cmp_if_same(table, ref.key_buff, ref.key, prefix_len)))
- {
- DBUG_ASSERT(item_field->field->real_maybe_null());
- error= table->file->ha_index_read_map(table->record[0],
- ref.key_buff,
- make_prev_keypart_map(ref.key_parts),
- HA_READ_KEY_EXACT);
- }
- }
- }
/* Verify that the read tuple indeed matches the search key */
- if (!error && reckey_in_range(0, &ref, item_field->field,
+ if (!error && reckey_in_range(is_max, &ref, item_field->field,
conds, range_fl, prefix_len))
error= HA_ERR_KEY_NOT_FOUND;
table->disable_keyread();
@@ -352,98 +410,16 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
const_result= 0;
break;
}
- if (!count)
- {
- /* If count == 0, then we know that is_exact_count == TRUE. */
- ((Item_sum_min*) item_sum)->clear(); /* Set to NULL. */
- }
- else
- ((Item_sum_min*) item_sum)->reset(); /* Set to the constant value. */
- ((Item_sum_min*) item_sum)->make_const();
- recalc_const_item= 1;
- break;
- }
- case Item_sum::MAX_FUNC:
- {
/*
- If MAX(expr) is the first part of a key or if all previous
- parts of the key is found in the COND, then we can use
- indexes to find the key.
+ If count == 0 (so is_exact_count == TRUE) and
+ there're no outer joins, set to NULL,
+ otherwise set to the constant value.
*/
- Item *expr=item_sum->get_arg(0);
- if (expr->real_item()->type() == Item::FIELD_ITEM)
- {
- uchar key_buff[MAX_KEY_LENGTH];
- TABLE_REF ref;
- uint range_fl, prefix_len;
-
- ref.key_buff= key_buff;
- Item_field *item_field= (Item_field*) (expr->real_item());
- TABLE *table= item_field->field->table;
-
- /*
- Look for a partial key that can be used for optimization.
- If we succeed, ref.key_length will contain the length of
- this key, while prefix_len will contain the length of
- the beginning of this key without field used in MAX().
- Type of range for the key part for this field will be
- returned in range_fl.
- */
- if (table->file->inited || (outer_tables & table->map) ||
- !find_key_for_maxmin(1, &ref, item_field->field, conds,
- &range_fl, &prefix_len))
- {
- const_result= 0;
- break;
- }
- error= table->file->ha_index_init((uint) ref.key, 1);
-
- if (!ref.key_length)
- error= table->file->ha_index_last(table->record[0]);
- else
- error= table->file->ha_index_read_map(table->record[0], key_buff,
- make_prev_keypart_map(ref.key_parts),
- range_fl & NEAR_MAX ?
- HA_READ_BEFORE_KEY :
- HA_READ_PREFIX_LAST_OR_PREV);
- if (!error && reckey_in_range(1, &ref, item_field->field,
- conds, range_fl, prefix_len))
- error= HA_ERR_KEY_NOT_FOUND;
- table->disable_keyread();
- table->file->ha_index_end();
- if (error)
- {
- if (error == HA_ERR_KEY_NOT_FOUND || error == HA_ERR_END_OF_FILE)
- return HA_ERR_KEY_NOT_FOUND; // No rows matching WHERE
- /* HA_ERR_LOCK_DEADLOCK or some other error */
- table->file->print_error(error, MYF(0));
- table->in_use->fatal_error();
- return(error);
- }
- removed_tables|= table->map;
- }
- else if (!expr->const_item() || !is_exact_count)
- {
- /*
- The optimization is not applicable in both cases:
- (a) 'expr' is a non-constant expression. Then we can't
- replace 'expr' by a constant.
- (b) 'expr' is a costant. According to ANSI, MIN/MAX must return
- NULL if the query does not return any rows. Thus, if we are not
- able to determine if the query returns any rows, we can't apply
- the optimization and replace MIN/MAX with a constant.
- */
- const_result= 0;
- break;
- }
- if (!count)
- {
- /* If count != 1, then we know that is_exact_count == TRUE. */
- ((Item_sum_max*) item_sum)->clear(); /* Set to NULL. */
- }
+ if (!count && !outer_tables)
+ item_sum->clear();
else
- ((Item_sum_max*) item_sum)->reset(); /* Set to the constant value. */
- ((Item_sum_max*) item_sum)->make_const();
+ item_sum->reset();
+ item_sum->make_const();
recalc_const_item= 1;
break;
}
@@ -617,18 +593,19 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
key_part_map *key_part_used, uint *range_fl,
uint *prefix_len)
{
+ DBUG_ENTER("matching_cond");
if (!cond)
- return 1;
+ DBUG_RETURN(TRUE);
Field *field= field_part->field;
if (!(cond->used_tables() & field->table->map))
{
/* Condition doesn't restrict the used table */
- return 1;
+ DBUG_RETURN(TRUE);
}
if (cond->type() == Item::COND_ITEM)
{
if (((Item_cond*) cond)->functype() == Item_func::COND_OR_FUNC)
- return 0;
+ DBUG_RETURN(FALSE);
/* AND */
List_iterator_fast<Item> li(*((Item_cond*) cond)->argument_list());
@@ -637,13 +614,13 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
{
if (!matching_cond(max_fl, ref, keyinfo, field_part, item,
key_part_used, range_fl, prefix_len))
- return 0;
+ DBUG_RETURN(FALSE);
}
- return 1;
+ DBUG_RETURN(TRUE);
}
if (cond->type() != Item::FUNC_ITEM)
- return 0; // Not operator, can't optimize
+ DBUG_RETURN(FALSE); // Not operator, can't optimize
bool eq_type= 0; // =, <=> or IS NULL
bool is_null_safe_eq= FALSE; // The operator is NULL safe, e.g. <=>
@@ -677,7 +654,7 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
eq_type= 1;
break;
default:
- return 0; // Can't optimize function
+ DBUG_RETURN(FALSE); // Can't optimize function
}
Item *args[3];
@@ -685,11 +662,11 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
/* Test if this is a comparison of a field and constant */
if (!simple_pred((Item_func*) cond, args, &inv))
- return 0;
+ DBUG_RETURN(FALSE);
if (!is_null_safe_eq && !is_null &&
(args[1]->is_null() || (between && args[2]->is_null())))
- return FALSE;
+ DBUG_RETURN(FALSE);
if (inv && !eq_type)
less_fl= 1-less_fl; // Convert '<' -> '>' (etc)
@@ -701,14 +678,14 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
{
if (part > field_part)
- return 0; // Field is beyond the tested parts
+ DBUG_RETURN(FALSE); // Field is beyond the tested parts
if (part->field->eq(((Item_field*) args[0])->field))
break; // Found a part of the key for the field
}
bool is_field_part= part == field_part;
if (!(is_field_part || eq_type))
- return 0;
+ DBUG_RETURN(FALSE);
key_part_map org_key_part_used= *key_part_used;
if (eq_type || between || max_fl == less_fl)
@@ -728,6 +705,17 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
*key_part_used|= (key_part_map) 1 << (part - keyinfo->key_part);
}
+ if (org_key_part_used == *key_part_used &&
+ /*
+ The current search key is not being extended with a new key part. This
+ means that the a condition is added a key part for which there was a
+ previous condition. We can only overwrite such key parts in some special
+ cases, e.g. a > 2 AND a > 1 (here range_fl must be set to something). In
+ all other cases the WHERE condition is always false anyway.
+ */
+ (eq_type || *range_fl == 0))
+ DBUG_RETURN(FALSE);
+
if (org_key_part_used != *key_part_used ||
(is_field_part &&
(between || eq_type || max_fl == less_fl) && !cond->val_int()))
@@ -773,11 +761,11 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
{
if ((!is_null && !cond->val_int()) ||
(is_null && !test(part->field->is_null())))
- return 0; // Impossible test
+ DBUG_RETURN(FALSE); // Impossible test
}
else if (is_field_part)
*range_fl&= ~(max_fl ? NO_MIN_RANGE : NO_MAX_RANGE);
- return 1;
+ DBUG_RETURN(TRUE);
}
diff --git a/sql/opt_table_elimination.cc b/sql/opt_table_elimination.cc
index e8f6a4fd4b9..1e4e87ebac7 100644
--- a/sql/opt_table_elimination.cc
+++ b/sql/opt_table_elimination.cc
@@ -1544,7 +1544,7 @@ Dep_value_table *Dep_analysis_context::create_table_value(TABLE *table)
for (uint i=0; i < table->s->keys; i++)
{
KEY *key= table->key_info + i;
- if ((key->flags & (HA_NOSAME | HA_END_SPACE_KEY)) == HA_NOSAME)
+ if (key->flags & HA_NOSAME)
{
Dep_module_key *key_dep;
if (!(key_dep= new Dep_module_key(tbl_dep, i, key->key_parts)))
diff --git a/sql/parse_file.h b/sql/parse_file.h
index 84647e45927..1e649657c57 100644
--- a/sql/parse_file.h
+++ b/sql/parse_file.h
@@ -89,12 +89,12 @@ class File_parser: public Sql_alloc
{
char *buff, *start, *end;
LEX_STRING file_type;
- my_bool content_ok;
+ bool content_ok;
public:
File_parser() :buff(0), start(0), end(0), content_ok(0)
{ file_type.str= 0; file_type.length= 0; }
- my_bool ok() { return content_ok; }
+ bool ok() { return content_ok; }
LEX_STRING *type() { return &file_type; }
my_bool parse(uchar* base, MEM_ROOT *mem_root,
struct File_option *parameters, uint required,
diff --git a/sql/partition_info.cc b/sql/partition_info.cc
index 0de8e478f03..9e07d735598 100644
--- a/sql/partition_info.cc
+++ b/sql/partition_info.cc
@@ -103,8 +103,8 @@ char *partition_info::create_default_partition_names(uint part_no,
{
do
{
- my_sprintf(move_ptr, (move_ptr,"p%u", (start_no + i)));
- move_ptr+=MAX_PART_NAME_SIZE;
+ sprintf(move_ptr, "p%u", (start_no + i));
+ move_ptr+= MAX_PART_NAME_SIZE;
} while (++i < no_parts_arg);
}
else
@@ -135,7 +135,7 @@ char *partition_info::create_subpartition_name(uint subpart_no,
if (likely(ptr != NULL))
{
- my_sprintf(ptr, (ptr, "%ssp%u", part_name, subpart_no));
+ my_snprintf(ptr, size_alloc, "%ssp%u", part_name, subpart_no);
}
else
{
@@ -1104,8 +1104,8 @@ void partition_info::print_no_partition_found(TABLE *table)
if (part_expr->null_value)
buf_ptr= (char*)"NULL";
else
- longlong2str(err_value, buf,
- part_expr->unsigned_flag ? 10 : -10);
+ longlong10_to_str(err_value, buf,
+ part_expr->unsigned_flag ? 10 : -10);
my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf_ptr);
dbug_tmp_restore_column_map(table->read_set, old_map);
}
diff --git a/sql/protocol.cc b/sql/protocol.cc
index 7721d43f936..786d6ef8544 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -578,7 +578,11 @@ void Protocol::end_partial_result_set(THD *thd_arg)
bool Protocol::flush()
{
#ifndef EMBEDDED_LIBRARY
- return net_flush(&thd->net);
+ bool error;
+ thd->main_da.can_overwrite_status= TRUE;
+ error= net_flush(&thd->net);
+ thd->main_da.can_overwrite_status= FALSE;
+ return error;
#else
return 0;
#endif
@@ -618,7 +622,8 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
if (flags & SEND_NUM_ROWS)
{ // Packet with number of elements
uchar *pos= net_store_length(buff, list->elements);
- (void) my_net_write(&thd->net, buff, (size_t) (pos-buff));
+ if (my_net_write(&thd->net, buff, (size_t) (pos-buff)))
+ DBUG_RETURN(1);
}
#ifndef DBUG_OFF
@@ -742,7 +747,7 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
if (flags & SEND_DEFAULTS)
item->send(&prot, &tmp); // Send default value
if (prot.write())
- break; /* purecov: inspected */
+ DBUG_RETURN(1);
#ifndef DBUG_OFF
field_types[count++]= field.type;
#endif
@@ -755,7 +760,9 @@ bool Protocol::send_fields(List<Item> *list, uint flags)
to show that there is no cursor.
Send no warning information, as it will be sent at statement end.
*/
- write_eof_packet(thd, &thd->net, thd->server_status, thd->total_warn_count);
+ if (write_eof_packet(thd, &thd->net, thd->server_status,
+ thd->total_warn_count))
+ DBUG_RETURN(1);
}
DBUG_RETURN(prepare_for_send(list));
diff --git a/sql/records.cc b/sql/records.cc
index e2a1ea9b4af..bdb27322a28 100644
--- a/sql/records.cc
+++ b/sql/records.cc
@@ -157,7 +157,8 @@ void init_read_record_idx(READ_RECORD *info, THD *thd, TABLE *table,
This is the most basic access method of a table using rnd_init,
rnd_next and rnd_end. No indexes are used.
*/
-void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
+
+bool init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
SQL_SELECT *select,
int use_record_cache, bool print_error,
bool disable_rr_cache)
@@ -196,7 +197,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
tempfile= &select->file;
else
tempfile= table->sort.io_cache;
- if (tempfile && my_b_inited(tempfile)) // Test if ref-records was used
+ if (tempfile && my_b_inited(tempfile) &&
+ !(select && select->quick))
{
DBUG_PRINT("info",("using rr_from_tempfile"));
info->read_record= (table->sort.addon_field ?
@@ -205,7 +207,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
reinit_io_cache(info->io_cache,READ_CACHE,0L,0,0);
info->ref_pos=table->file->ref;
if (!table->file->inited)
- table->file->ha_rnd_init(0);
+ if (table->file->ha_rnd_init_with_error(0))
+ DBUG_RETURN(1);
/*
table->sort.addon_field is checked because if we use addon fields,
@@ -214,7 +217,6 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
*/
if (!disable_rr_cache &&
!table->sort.addon_field &&
- ! (specialflag & SPECIAL_SAFE_MODE) &&
thd->variables.read_rnd_buff_size &&
!(table->file->ha_table_flags() & HA_FAST_KEY_READ) &&
(table->db_stat & HA_READ_ONLY ||
@@ -242,7 +244,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
else if (table->sort.record_pointers)
{
DBUG_PRINT("info",("using record_pointers"));
- table->file->ha_rnd_init(0);
+ if (table->file->ha_rnd_init_with_error(0))
+ DBUG_RETURN(1);
info->cache_pos=table->sort.record_pointers;
info->cache_end=info->cache_pos+
table->sort.found_records*info->ref_length;
@@ -253,7 +256,8 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
{
DBUG_PRINT("info",("using rr_sequential"));
info->read_record=rr_sequential;
- table->file->ha_rnd_init(1);
+ if (table->file->ha_rnd_init_with_error(1))
+ DBUG_RETURN(1);
/* We can use record cache if we don't update dynamic length tables */
if (!table->no_cache &&
(use_record_cache > 0 ||
@@ -271,7 +275,7 @@ void init_read_record(READ_RECORD *info,THD *thd, TABLE *table,
!table->file->pushed_cond)
table->file->cond_push(select->cond);
- DBUG_VOID_RETURN;
+ DBUG_RETURN(0);
} /* init_read_record */
@@ -327,7 +331,7 @@ static int rr_quick(READ_RECORD *info)
break;
}
}
- update_virtual_fields(info->table);
+ update_virtual_fields(info->thd, info->table);
return tmp;
}
@@ -396,7 +400,7 @@ int rr_sequential(READ_RECORD *info)
}
}
if (!tmp)
- update_virtual_fields(info->table);
+ update_virtual_fields(info->thd, info->table);
return tmp;
}
diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc
index 0fa13949aba..9b1b1f70784 100644
--- a/sql/repl_failsafe.cc
+++ b/sql/repl_failsafe.cc
@@ -976,7 +976,7 @@ bool load_master_data(THD* thd)
host was specified; there could have been a problem when replication
started, which led to relay log's IO_CACHE to not be inited.
*/
- if (flush_master_info(active_mi, 0))
+ if (flush_master_info(active_mi, FALSE, FALSE))
sql_print_error("Failed to flush master info file");
}
mysql_free_result(master_status_res);
diff --git a/sql/rpl_filter.cc b/sql/rpl_filter.cc
index ffae94f733a..8c0523f6766 100644
--- a/sql/rpl_filter.cc
+++ b/sql/rpl_filter.cc
@@ -92,7 +92,7 @@ Rpl_filter::tables_ok(const char* db, TABLE_LIST* tables)
for (; tables; tables= tables->next_global)
{
- char hash_key[2*NAME_LEN+2];
+ char hash_key[SAFE_NAME_LEN*2+2];
char *end;
uint len;
@@ -227,7 +227,7 @@ Rpl_filter::db_ok_with_wild_table(const char *db)
{
DBUG_ENTER("Rpl_filter::db_ok_with_wild_table");
- char hash_key[NAME_LEN+2];
+ char hash_key[SAFE_NAME_LEN+2];
char *end;
int len;
end= strmov(hash_key, db);
diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc
index b8af53849f1..47fc88c9a8a 100644
--- a/sql/rpl_mi.cc
+++ b/sql/rpl_mi.cc
@@ -322,7 +322,7 @@ file '%s')", fname);
mi->inited = 1;
// now change cache READ -> WRITE - must do this before flush_master_info
reinit_io_cache(&mi->file, WRITE_CACHE, 0L, 0, 1);
- if ((error=test(flush_master_info(mi, 1))))
+ if ((error=test(flush_master_info(mi, TRUE, TRUE))))
sql_print_error("Failed to flush master info file");
pthread_mutex_unlock(&mi->data_lock);
DBUG_RETURN(error);
@@ -348,10 +348,13 @@ err:
1 - flush master info failed
0 - all ok
*/
-int flush_master_info(Master_info* mi, bool flush_relay_log_cache)
+int flush_master_info(Master_info* mi,
+ bool flush_relay_log_cache,
+ bool need_lock_relay_log)
{
IO_CACHE* file = &mi->file;
char lbuf[22];
+ int err= 0;
DBUG_ENTER("flush_master_info");
DBUG_PRINT("enter",("master_pos: %ld", (long) mi->master_log_pos));
@@ -368,9 +371,23 @@ int flush_master_info(Master_info* mi, bool flush_relay_log_cache)
When we come to this place in code, relay log may or not be initialized;
the caller is responsible for setting 'flush_relay_log_cache' accordingly.
*/
- if (flush_relay_log_cache &&
- flush_io_cache(mi->rli.relay_log.get_log_file()))
- DBUG_RETURN(2);
+ if (flush_relay_log_cache)
+ {
+ pthread_mutex_t *log_lock= mi->rli.relay_log.get_log_lock();
+ IO_CACHE *log_file= mi->rli.relay_log.get_log_file();
+
+ if (need_lock_relay_log)
+ pthread_mutex_lock(log_lock);
+
+ safe_mutex_assert_owner(log_lock);
+ err= flush_io_cache(log_file);
+
+ if (need_lock_relay_log)
+ pthread_mutex_unlock(log_lock);
+
+ if (err)
+ DBUG_RETURN(2);
+ }
/*
We flushed the relay log BEFORE the master.info file, because if we crash
diff --git a/sql/rpl_mi.h b/sql/rpl_mi.h
index 93fb0a98198..d63432545e5 100644
--- a/sql/rpl_mi.h
+++ b/sql/rpl_mi.h
@@ -66,10 +66,10 @@ class Master_info : public Slave_reporting_capability
char host[HOSTNAME_LENGTH+1];
char user[USERNAME_LENGTH+1];
char password[MAX_PASSWORD_LENGTH+1];
- my_bool ssl; // enables use of SSL connection if true
+ bool ssl; // enables use of SSL connection if true
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
char ssl_cipher[FN_REFLEN], ssl_key[FN_REFLEN];
- my_bool ssl_verify_server_cert;
+ bool ssl_verify_server_cert;
my_off_t master_log_pos;
File fd; // we keep the file open, so we need to remember the file pointer
@@ -108,7 +108,8 @@ int init_master_info(Master_info* mi, const char* master_info_fname,
bool abort_if_no_master_info_file,
int thread_mask);
void end_master_info(Master_info* mi);
-int flush_master_info(Master_info* mi, bool flush_relay_log_cache);
-
+int flush_master_info(Master_info* mi,
+ bool flush_relay_log_cache,
+ bool need_lock_relay_log);
#endif /* HAVE_REPLICATION */
#endif /* RPL_MI_H */
diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc
index 26daac1b629..c37c4735e37 100644
--- a/sql/rpl_rli.cc
+++ b/sql/rpl_rli.cc
@@ -115,7 +115,7 @@ int init_relay_log_info(Relay_log_info* rli,
/*
The relay log will now be opened, as a SEQ_READ_APPEND IO_CACHE.
Note that the I/O thread flushes it to disk after writing every
- event, in flush_master_info(mi, 1).
+ event, in flush_master_info(mi, 1, ?).
*/
/*
@@ -1115,8 +1115,7 @@ bool Relay_log_info::cached_charset_compare(char *charset) const
{
DBUG_ENTER("Relay_log_info::cached_charset_compare");
- if (bcmp((uchar*) cached_charset, (uchar*) charset,
- sizeof(cached_charset)))
+ if (memcmp(cached_charset, charset, sizeof(cached_charset)))
{
memcpy(const_cast<char*>(cached_charset), charset, sizeof(cached_charset));
DBUG_RETURN(1);
diff --git a/sql/set_var.cc b/sql/set_var.cc
index 56ebdbcade1..0eaa450d09c 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -58,7 +58,7 @@
#include <my_getopt.h>
#include <thr_alarm.h>
#include <myisam.h>
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
#include <maria.h>
#endif
#include <my_dir.h>
@@ -95,14 +95,13 @@ TYPELIB delay_key_write_typelib=
delay_key_write_type_names, NULL
};
-const char *slave_exec_mode_names[]=
-{ "STRICT", "IDEMPOTENT", NullS };
-static const unsigned int slave_exec_mode_names_len[]=
-{ sizeof("STRICT") - 1, sizeof("IDEMPOTENT") - 1, 0 };
+static const char *slave_exec_mode_names[]= { "STRICT", "IDEMPOTENT", NullS };
+static unsigned int slave_exec_mode_names_len[]= { sizeof("STRICT") - 1,
+ sizeof("IDEMPOTENT") - 1, 0 };
TYPELIB slave_exec_mode_typelib=
{
array_elements(slave_exec_mode_names)-1, "",
- slave_exec_mode_names, (unsigned int *) slave_exec_mode_names_len
+ slave_exec_mode_names, slave_exec_mode_names_len
};
static int sys_check_ftb_syntax(THD *thd, set_var *var);
@@ -609,9 +608,8 @@ static sys_var_thd_ulong sys_trans_prealloc_size(&vars, "transaction_prealloc_si
&SV::trans_prealloc_size,
0, fix_trans_mem_root);
sys_var_enum_const sys_thread_handling(&vars, "thread_handling",
- &SV::thread_handling,
- &thread_handling_typelib,
- NULL);
+ &thread_handling,
+ &thread_handling_typelib);
#ifdef HAVE_QUERY_CACHE
static sys_var_long_ptr sys_query_cache_limit(&vars, "query_cache_limit",
@@ -974,6 +972,9 @@ static sys_var_readonly sys_myisam_mmap_size(&vars, "myisam_mmap_size",
SHOW_LONGLONG,
get_myisam_mmap_size);
+static sys_var_enum_const sys_plugin_maturity(&vars, "plugin_maturity",
+ &plugin_maturity,
+ &plugin_maturity_values);
bool sys_var::check(THD *thd, set_var *var)
{
@@ -1236,21 +1237,21 @@ extern void fix_delay_key_write(THD *thd, enum_var_type type)
switch ((enum_delay_key_write) delay_key_write_options) {
case DELAY_KEY_WRITE_NONE:
myisam_delay_key_write=0;
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
maria_delay_key_write= 0;
#endif
ha_open_options&= ~HA_OPEN_DELAY_KEY_WRITE;
break;
case DELAY_KEY_WRITE_ON:
myisam_delay_key_write=1;
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
maria_delay_key_write= 1;
#endif
ha_open_options&= ~HA_OPEN_DELAY_KEY_WRITE;
break;
case DELAY_KEY_WRITE_ALL:
myisam_delay_key_write=1;
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
maria_delay_key_write= 1;
#endif
ha_open_options|= HA_OPEN_DELAY_KEY_WRITE;
@@ -1290,7 +1291,7 @@ uchar *sys_var_set::value_ptr(THD *thd, enum_var_type type,
void sys_var_set_slave_mode::set_default(THD *thd, enum_var_type type)
{
- slave_exec_mode_options= (ULL(1) << SLAVE_EXEC_MODE_STRICT);
+ slave_exec_mode_options= SLAVE_EXEC_MODE_STRICT;
}
bool sys_var_set_slave_mode::check(THD *thd, set_var *var)
@@ -1298,8 +1299,7 @@ bool sys_var_set_slave_mode::check(THD *thd, set_var *var)
bool rc= sys_var_set::check(thd, var);
if (!rc &&
test_all_bits(var->save_result.ulong_value,
- ((ULL(1) << SLAVE_EXEC_MODE_STRICT) |
- (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT))))
+ SLAVE_EXEC_MODE_STRICT | SLAVE_EXEC_MODE_IDEMPOTENT))
{
rc= true;
my_error(ER_SLAVE_AMBIGOUS_EXEC_MODE, MYF(0), "");
@@ -1316,21 +1316,18 @@ bool sys_var_set_slave_mode::update(THD *thd, set_var *var)
return rc;
}
-void fix_slave_exec_mode(enum_var_type type)
+void fix_slave_exec_mode(void)
{
DBUG_ENTER("fix_slave_exec_mode");
- compile_time_assert(sizeof(slave_exec_mode_options) * CHAR_BIT
- > SLAVE_EXEC_MODE_LAST_BIT - 1);
+
if (test_all_bits(slave_exec_mode_options,
- ((ULL(1) << SLAVE_EXEC_MODE_STRICT) |
- (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT))))
+ SLAVE_EXEC_MODE_STRICT | SLAVE_EXEC_MODE_IDEMPOTENT))
{
- sql_print_error("Ambiguous slave modes combination."
- " STRICT will be used");
- slave_exec_mode_options&= ~(ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT);
+ sql_print_error("Ambiguous slave modes combination. STRICT will be used");
+ slave_exec_mode_options&= ~SLAVE_EXEC_MODE_IDEMPOTENT;
}
- if (!(slave_exec_mode_options & (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT)))
- slave_exec_mode_options|= (ULL(1)<< SLAVE_EXEC_MODE_STRICT);
+ if (!(slave_exec_mode_options & SLAVE_EXEC_MODE_IDEMPOTENT))
+ slave_exec_mode_options|= SLAVE_EXEC_MODE_STRICT;
DBUG_VOID_RETURN;
}
@@ -1706,12 +1703,6 @@ uchar *sys_var_enum::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base)
return (uchar*) enum_names->type_names[*value];
}
-uchar *sys_var_enum_const::value_ptr(THD *thd, enum_var_type type,
- LEX_STRING *base)
-{
- return (uchar*) enum_names->type_names[global_system_variables.*offset];
-}
-
bool sys_var_thd_ulong::check(THD *thd, set_var *var)
{
if (get_unsigned(thd, var, max_system_variables.*offset, GET_ULONG))
@@ -2850,10 +2841,26 @@ int set_var_collation_client::update(THD *thd)
/****************************************************************************/
+bool sys_var_timestamp::check(THD *thd, set_var *var)
+{
+ time_t val;
+ var->save_result.ulonglong_value= var->value->val_int();
+ val= (time_t) var->save_result.ulonglong_value;
+ if (val < (time_t) MY_TIME_T_MIN || val > (time_t) MY_TIME_T_MAX)
+ {
+ my_message(ER_UNKNOWN_ERROR,
+ "This version of MySQL doesn't support dates later than 2038",
+ MYF(0));
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
bool sys_var_timestamp::update(THD *thd, set_var *var)
{
thd->set_time((time_t) var->save_result.ulonglong_value);
- return 0;
+ return FALSE;
}
@@ -4329,8 +4336,14 @@ bool sys_var_thd_dbug::check(THD *thd, set_var *var)
bool sys_var_thd_dbug::update(THD *thd, set_var *var)
{
-#ifndef DBUG_OFF
- const char *command= var ? var->value->str_value.c_ptr() : "";
+ char buf[256];
+ String str(buf, sizeof(buf), system_charset_info), *res;
+ const char *command;
+
+ res= var->value->val_str(&str);
+ command= res ? res->c_ptr(): 0;
+ if (!command)
+ command= "";
if (var->type == OPT_GLOBAL)
DBUG_SET_INITIAL(command);
@@ -4350,7 +4363,6 @@ bool sys_var_thd_dbug::update(THD *thd, set_var *var)
DBUG_PUSH(command);
}
}
-#endif
return 0;
}
diff --git a/sql/set_var.h b/sql/set_var.h
index 5b8fa1358cb..653f9b5155d 100644
--- a/sql/set_var.h
+++ b/sql/set_var.h
@@ -376,21 +376,14 @@ public:
};
-class sys_var_enum_const :public sys_var
+class sys_var_enum_const :public sys_var_enum
{
- ulong SV::*offset;
- TYPELIB *enum_names;
public:
- sys_var_enum_const(sys_var_chain *chain, const char *name_arg, ulong SV::*offset_arg,
- TYPELIB *typelib, sys_after_update_func func)
- :sys_var(name_arg,func), offset(offset_arg), enum_names(typelib)
- { chain_sys_var(chain); }
- bool check(THD *thd, set_var *var) { return 1; }
- bool update(THD *thd, set_var *var) { return 1; }
- SHOW_TYPE show_type() { return SHOW_CHAR; }
- bool check_update_type(Item_result type) { return 1; }
+ sys_var_enum_const(sys_var_chain *chain, const char *name_arg,
+ uint *value_arg, TYPELIB *typelib)
+ :sys_var_enum(chain, name_arg, value_arg, typelib, 0)
+ { }
bool is_readonly() const { return 1; }
- uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
};
@@ -675,6 +668,7 @@ public:
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
:sys_var(name_arg, NULL, binlog_status_arg)
{ chain_sys_var(chain); }
+ bool check(THD *thd, set_var *var);
bool update(THD *thd, set_var *var);
void set_default(THD *thd, enum_var_type type);
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
@@ -1458,7 +1452,7 @@ sys_var *find_sys_var(THD *thd, const char *str, uint length=0);
int sql_set_variables(THD *thd, List<set_var_base> *var_list);
bool not_all_support_one_shot(List<set_var_base> *var_list);
void fix_delay_key_write(THD *thd, enum_var_type type);
-void fix_slave_exec_mode(enum_var_type type);
+void fix_slave_exec_mode(void);
ulong fix_sql_mode(ulong sql_mode);
extern sys_var_const_str sys_charset_system;
extern sys_var_str sys_init_connect;
diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt
index 117a4b8e1e6..54061931d5f 100644
--- a/sql/share/errmsg.txt
+++ b/sql/share/errmsg.txt
@@ -6207,40 +6207,42 @@ ER_TOO_MANY_CONCURRENT_TRXS
WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
eng "Non-ASCII separator arguments are not fully supported"
+ER_DEBUG_SYNC_TIMEOUT
+ eng "debug sync point wait timed out"
+ ger "Debug Sync Point Wartezeit überschritten"
+ER_DEBUG_SYNC_HIT_LIMIT
+ eng "debug sync point hit limit reached"
+ ger "Debug Sync Point Hit Limit erreicht"
+
ER_VCOL_BASED_ON_VCOL
eng "A computed column cannot be based on a computed column"
ER_VIRTUAL_COLUMN_FUNCTION_IS_NOT_ALLOWED
- eng "Function or expression is not allowed for column '%s'."
+ eng "Function or expression is not allowed for column '%s'"
ER_DATA_CONVERSION_ERROR_FOR_VIRTUAL_COLUMN
- eng "Generated value for computed column '%s' cannot be converted to type '%s'."
+ eng "Generated value for computed column '%s' cannot be converted to type '%s'"
ER_PRIMARY_KEY_BASED_ON_VIRTUAL_COLUMN
- eng "Primary key cannot be defined upon a computed column."
+ eng "Primary key cannot be defined upon a computed column"
ER_KEY_BASED_ON_GENERATED_VIRTUAL_COLUMN
- eng "Key/Index cannot be defined on a non-stored computed column."
+ eng "Key/Index cannot be defined on a non-stored computed column"
ER_WRONG_FK_OPTION_FOR_VIRTUAL_COLUMN
- eng "Cannot define foreign key with %s clause on a computed column."
+ eng "Cannot define foreign key with %s clause on a computed column"
ER_WARNING_NON_DEFAULT_VALUE_FOR_VIRTUAL_COLUMN
- eng "The value specified for computed column '%s' in table '%s' ignored."
+ eng "The value specified for computed column '%s' in table '%s' ignored"
ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
- eng "'%s' is not yet supported for computed columns."
+ eng "'%s' is not yet supported for computed columns"
ER_CONST_EXPR_IN_VCOL
- eng "Constant expression in computed column function is not allowed."
-
-ER_DEBUG_SYNC_TIMEOUT
- eng "debug sync point wait timed out"
- ger "Debug Sync Point Wartezeit überschritten"
-ER_DEBUG_SYNC_HIT_LIMIT
- eng "debug sync point hit limit reached"
- ger "Debug Sync Point Hit Limit erreicht"
+ eng "Constant expression in computed column function is not allowed"
+ER_ROW_EXPR_FOR_VCOL
+ eng "Expression for computed column cannot return a row"
ER_UNKNOWN_OPTION
eng "Unknown option '%-.64s'"
ER_BAD_OPTION_VALUE
diff --git a/sql/slave.cc b/sql/slave.cc
index e92070ebcc1..55bfcceeb47 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -1439,7 +1439,7 @@ static void write_ignored_events_info_to_relay_log(THD *thd, Master_info *mi)
" to the relay log, SHOW SLAVE STATUS may be"
" inaccurate");
rli->relay_log.harvest_bytes_written(&rli->log_space_total);
- if (flush_master_info(mi, 1))
+ if (flush_master_info(mi, TRUE, TRUE))
sql_print_error("Failed to flush master info file");
delete ev;
}
@@ -2073,7 +2073,7 @@ int apply_event_and_update_pos(Log_event* ev, THD* thd, Relay_log_info* rli)
DBUG_PRINT("info", ("thd->options: %s%s; rli->last_event_start_time: %lu",
FLAGSTR(thd->options, OPTION_NOT_AUTOCOMMIT),
FLAGSTR(thd->options, OPTION_BEGIN),
- rli->last_event_start_time));
+ (ulong) rli->last_event_start_time));
/*
Execute the event to change the database and update the binary
@@ -2692,7 +2692,7 @@ Stopping slave I/O thread due to out-of-memory error from master");
"could not queue event from master");
goto err;
}
- if (flush_master_info(mi, 1))
+ if (flush_master_info(mi, TRUE, TRUE))
{
sql_print_error("Failed to flush master info file");
goto err;
@@ -2846,8 +2846,8 @@ pthread_handler_t handle_slave_sql(void *arg)
char llbuff[22],llbuff1[22];
char saved_log_name[FN_REFLEN];
char saved_master_log_name[FN_REFLEN];
- my_off_t saved_log_pos;
- my_off_t saved_master_log_pos;
+ my_off_t UNINIT_VAR(saved_log_pos);
+ my_off_t UNINIT_VAR(saved_master_log_pos);
my_off_t saved_skip= 0;
Relay_log_info* rli = &((Master_info*)arg)->rli;
const char *errmsg;
@@ -3969,11 +3969,11 @@ bool flush_relay_log_info(Relay_log_info* rli)
my_b_seek(file, 0L);
pos=strmov(buff, rli->group_relay_log_name);
*pos++='\n';
- pos=longlong2str(rli->group_relay_log_pos, pos, 10);
+ pos= longlong10_to_str(rli->group_relay_log_pos, pos, 10);
*pos++='\n';
pos=strmov(pos, rli->group_master_log_name);
*pos++='\n';
- pos=longlong2str(rli->group_master_log_pos, pos, 10);
+ pos=longlong10_to_str(rli->group_master_log_pos, pos, 10);
*pos='\n';
if (my_b_write(file, (uchar*) buff, (size_t) (pos-buff)+1))
error=1;
diff --git a/sql/sp.cc b/sql/sp.cc
index ac509a3bb2d..ebf2b3c360d 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -719,7 +719,7 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
{
LEX *old_lex= thd->lex, newlex;
String defstr;
- char saved_cur_db_name_buf[NAME_LEN+1];
+ char saved_cur_db_name_buf[SAFE_NAME_LEN+1];
LEX_STRING saved_cur_db_name=
{ saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) };
bool cur_db_changed;
@@ -784,7 +784,12 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
thd->spcont= NULL;
{
- Parser_state parser_state(thd, defstr.c_ptr(), defstr.length());
+ Parser_state parser_state;
+ if (parser_state.init(thd, defstr.c_ptr(), defstr.length()))
+ {
+ ret= SP_INTERNAL_ERROR;
+ goto end;
+ }
lex_start(thd);
@@ -1634,8 +1639,7 @@ extern "C" uchar* sp_sroutine_key(const uchar *ptr, size_t *plen,
void sp_get_prelocking_info(THD *thd, bool *need_prelocking,
bool *first_no_prelocking)
{
- Sroutine_hash_entry *routine;
- routine= (Sroutine_hash_entry*)thd->lex->sroutines_list.first;
+ Sroutine_hash_entry *routine= thd->lex->sroutines_list.first;
DBUG_ASSERT(routine);
bool first_is_procedure= (routine->key.str[0] == TYPE_ENUM_PROCEDURE);
@@ -1698,7 +1702,7 @@ static bool add_used_routine(LEX *lex, Query_arena *arena,
memcpy(rn->key.str, key->str, key->length + 1);
if (my_hash_insert(&lex->sroutines, (uchar *)rn))
return FALSE;
- lex->sroutines_list.link_in_list((uchar *)rn, (uchar **)&rn->next);
+ lex->sroutines_list.link_in_list(rn, &rn->next);
rn->belong_to_view= belong_to_view;
return TRUE;
}
@@ -1744,7 +1748,7 @@ void sp_add_used_routine(LEX *lex, Query_arena *arena,
void sp_remove_not_own_routines(LEX *lex)
{
Sroutine_hash_entry *not_own_rt, *next_rt;
- for (not_own_rt= *(Sroutine_hash_entry **)lex->sroutines_list_own_last;
+ for (not_own_rt= *lex->sroutines_list_own_last;
not_own_rt; not_own_rt= next_rt)
{
/*
@@ -1755,7 +1759,7 @@ void sp_remove_not_own_routines(LEX *lex)
hash_delete(&lex->sroutines, (uchar *)not_own_rt);
}
- *(Sroutine_hash_entry **)lex->sroutines_list_own_last= NULL;
+ *lex->sroutines_list_own_last= NULL;
lex->sroutines_list.next= lex->sroutines_list_own_last;
lex->sroutines_list.elements= lex->sroutines_list_own_elements;
}
@@ -1836,11 +1840,11 @@ sp_update_stmt_used_routines(THD *thd, LEX *lex, HASH *src,
It will also add elements to end of 'LEX::sroutines_list' list.
*/
-static void sp_update_stmt_used_routines(THD *thd, LEX *lex, SQL_LIST *src,
+static void sp_update_stmt_used_routines(THD *thd, LEX *lex,
+ SQL_I_List<Sroutine_hash_entry> *src,
TABLE_LIST *belong_to_view)
{
- for (Sroutine_hash_entry *rt= (Sroutine_hash_entry *)src->first;
- rt; rt= rt->next)
+ for (Sroutine_hash_entry *rt= src->first; rt; rt= rt->next)
(void)add_used_routine(lex, thd->stmt_arena, &rt->key, belong_to_view);
}
@@ -1928,7 +1932,7 @@ sp_cache_routines_and_add_tables_aux(THD *thd, LEX *lex,
Hence, the overrun happens only if the name is in length > 32 and
uses multibyte (cyrillic, greek, etc.)
*/
- char n[NAME_LEN*2+2];
+ char n[SAFE_NAME_LEN*2+2];
/* m_qname.str is not always \0 terminated */
memcpy(n, name.m_qname.str, name.m_qname.length);
@@ -1975,8 +1979,7 @@ int
sp_cache_routines_and_add_tables(THD *thd, LEX *lex, bool first_no_prelock)
{
return sp_cache_routines_and_add_tables_aux(thd, lex,
- (Sroutine_hash_entry *)lex->sroutines_list.first,
- first_no_prelock);
+ lex->sroutines_list.first, first_no_prelock);
}
@@ -2000,8 +2003,7 @@ sp_cache_routines_and_add_tables(THD *thd, LEX *lex, bool first_no_prelock)
int
sp_cache_routines_and_add_tables_for_view(THD *thd, LEX *lex, TABLE_LIST *view)
{
- Sroutine_hash_entry **last_cached_routine_ptr=
- (Sroutine_hash_entry **)lex->sroutines_list.next;
+ Sroutine_hash_entry **last_cached_routine_ptr= lex->sroutines_list.next;
sp_update_stmt_used_routines(thd, lex, &view->view->sroutines_list,
view->top_table());
return sp_cache_routines_and_add_tables_aux(thd, lex,
@@ -2030,8 +2032,7 @@ sp_cache_routines_and_add_tables_for_triggers(THD *thd, LEX *lex,
{
int ret= 0;
- Sroutine_hash_entry **last_cached_routine_ptr=
- (Sroutine_hash_entry **)lex->sroutines_list.next;
+ Sroutine_hash_entry **last_cached_routine_ptr= lex->sroutines_list.next;
if (static_cast<int>(table->lock_type) >=
static_cast<int>(TL_WRITE_ALLOW_WRITE))
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index f7dc2c83641..2f1aa042c61 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -34,6 +34,36 @@
extern "C" uchar *sp_table_key(const uchar *ptr, size_t *plen, my_bool first);
+/**
+ Helper function which operates on a THD object to set the query start_time to
+ the current time.
+
+ @param[in, out] thd The session object
+
+*/
+
+static void reset_start_time_for_sp(THD *thd)
+{
+ /*
+ Do nothing if the context is a trigger or function because time should be
+ constant during the execution of those.
+ */
+ if (!thd->in_sub_stmt)
+ {
+ /*
+ First investigate if there is a cached time stamp
+ */
+ if (thd->user_time)
+ {
+ thd->start_time= thd->user_time;
+ }
+ else
+ {
+ my_micro_time_and_time(&thd->start_time);
+ }
+ }
+}
+
Item_result
sp_map_result_type(enum enum_field_types type)
{
@@ -1057,7 +1087,7 @@ bool
sp_head::execute(THD *thd)
{
DBUG_ENTER("sp_head::execute");
- char saved_cur_db_name_buf[NAME_LEN+1];
+ char saved_cur_db_name_buf[SAFE_NAME_LEN+1];
LEX_STRING saved_cur_db_name=
{ saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) };
bool cur_db_changed= FALSE;
@@ -1227,10 +1257,13 @@ sp_head::execute(THD *thd)
DBUG_PRINT("execute", ("Instruction %u", ip));
- /* Don't change NOW() in FUNCTION or TRIGGER */
- if (!thd->in_sub_stmt)
- thd->set_time(); // Make current_time() et al work
-
+ /*
+ We need to reset start_time to allow for time to flow inside a stored
+ procedure. This is only done for SP since time is suppose to be constant
+ during execution of triggers and functions.
+ */
+ reset_start_time_for_sp(thd);
+
/*
We have to set thd->stmt_arena before executing the instruction
to store in the instruction free_list all new items, created
@@ -1842,8 +1875,6 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
{
bool err_status= FALSE;
uint params = m_pcont->context_var_count();
- /* Query start time may be reset in a multi-stmt SP; keep this for later. */
- ulonglong utime_before_sp_exec= thd->utime_after_lock;
sp_rcontext *save_spcont, *octx;
sp_rcontext *nctx = NULL;
bool save_enable_slow_log;
@@ -2036,8 +2067,6 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
delete nctx;
thd->spcont= save_spcont;
- thd->utime_after_lock= utime_before_sp_exec;
-
DBUG_RETURN(err_status);
}
@@ -3827,7 +3856,7 @@ sp_head::merge_table_list(THD *thd, TABLE_LIST *table, LEX *lex_for_tmp_check)
for (; table ; table= table->next_global)
if (!table->derived && !table->schema_table)
{
- char tname[(NAME_LEN + 1) * 3]; // db\0table\0alias\0
+ char tname[(SAFE_NAME_LEN + 1) * 3]; // db\0table\0alias\0
uint tlen, alen;
tlen= table->db_length;
diff --git a/sql/sp_rcontext.h b/sql/sp_rcontext.h
index 368a017da21..ecd11453e49 100644
--- a/sql/sp_rcontext.h
+++ b/sql/sp_rcontext.h
@@ -281,7 +281,7 @@ public:
int
close(THD *thd);
- inline my_bool
+ inline bool
is_open()
{
return test(server_side_cursor);
diff --git a/sql/spatial.cc b/sql/spatial.cc
index a23e8ec0d90..2305a8eb97d 100644
--- a/sql/spatial.cc
+++ b/sql/spatial.cc
@@ -53,7 +53,7 @@ static Geometry::Class_info **ci_collection_end=
Geometry::ci_collection+Geometry::wkb_last + 1;
Geometry::Class_info::Class_info(const char *name, int type_id,
- void(*create_func)(void *)):
+ create_geom_t create_func):
m_type_id(type_id), m_create_func(create_func)
{
m_name.str= (char *) name;
@@ -62,39 +62,39 @@ Geometry::Class_info::Class_info(const char *name, int type_id,
ci_collection[type_id]= this;
}
-static void create_point(void *buffer)
+static Geometry *create_point(char *buffer)
{
- new(buffer) Gis_point;
+ return new (buffer) Gis_point;
}
-static void create_linestring(void *buffer)
+static Geometry *create_linestring(char *buffer)
{
- new(buffer) Gis_line_string;
+ return new (buffer) Gis_line_string;
}
-static void create_polygon(void *buffer)
+static Geometry *create_polygon(char *buffer)
{
- new(buffer) Gis_polygon;
+ return new (buffer) Gis_polygon;
}
-static void create_multipoint(void *buffer)
+static Geometry *create_multipoint(char *buffer)
{
- new(buffer) Gis_multi_point;
+ return new (buffer) Gis_multi_point;
}
-static void create_multipolygon(void *buffer)
+static Geometry *create_multipolygon(char *buffer)
{
- new(buffer) Gis_multi_polygon;
+ return new (buffer) Gis_multi_polygon;
}
-static void create_multilinestring(void *buffer)
+static Geometry *create_multilinestring(char *buffer)
{
- new(buffer) Gis_multi_line_string;
+ return new (buffer) Gis_multi_line_string;
}
-static void create_geometrycollection(void *buffer)
+static Geometry *create_geometrycollection(char *buffer)
{
- new(buffer) Gis_geometry_collection;
+ return new (buffer) Gis_geometry_collection;
}
@@ -145,6 +145,15 @@ Geometry::Class_info *Geometry::find_class(const char *name, uint32 len)
}
+Geometry *Geometry::create_by_typeid(Geometry_buffer *buffer, int type_id)
+{
+ Class_info *ci;
+ if (!(ci= find_class(type_id)))
+ return NULL;
+ return (*ci->m_create_func)(buffer->data);
+}
+
+
Geometry *Geometry::construct(Geometry_buffer *buffer,
const char *data, uint32 data_len)
{
@@ -153,6 +162,7 @@ Geometry *Geometry::construct(Geometry_buffer *buffer,
if (data_len < SRID_SIZE + WKB_HEADER_SIZE) // < 4 + (1 + 4)
return NULL;
+ /* + 1 to skip the byte order (stored in position SRID_SIZE). */
geom_type= uint4korr(data + SRID_SIZE + 1);
if (!(result= create_by_typeid(buffer, (int) geom_type)))
return NULL;
@@ -177,9 +187,7 @@ Geometry *Geometry::create_from_wkt(Geometry_buffer *buffer,
if (!(ci= find_class(name.str, name.length)) ||
wkt->reserve(1 + 4, 512))
return NULL;
- (*ci->m_create_func)((void *)buffer);
- Geometry *result= (Geometry *)buffer;
-
+ Geometry *result= (*ci->m_create_func)(buffer->data);
wkt->q_append((char) wkb_ndr);
wkt->q_append((uint32) result->get_class_info()->m_type_id);
if (trs->check_next_symbol('(') ||
diff --git a/sql/spatial.h b/sql/spatial.h
index 86c2ed8c197..f778acd6c34 100644
--- a/sql/spatial.h
+++ b/sql/spatial.h
@@ -225,15 +225,18 @@ public:
{
wkb_xdr= 0, /* Big Endian */
wkb_ndr= 1 /* Little Endian */
- };
+ };
+
+ /** Callback which creates Geometry objects on top of a given placement. */
+ typedef Geometry *(*create_geom_t)(char *);
class Class_info
{
public:
LEX_STRING m_name;
int m_type_id;
- void (*m_create_func)(void *);
- Class_info(const char *name, int type_id, void(*create_func)(void *));
+ create_geom_t m_create_func;
+ Class_info(const char *name, int type_id, create_geom_t create_func);
};
virtual const Class_info *get_class_info() const=0;
@@ -263,15 +266,7 @@ public:
virtual int geometry_n(uint32 num, String *result) const { return -1; }
public:
- static Geometry *create_by_typeid(Geometry_buffer *buffer, int type_id)
- {
- Class_info *ci;
- if (!(ci= find_class((int) type_id)))
- return NULL;
- (*ci->m_create_func)((void *)buffer);
- return my_reinterpret_cast(Geometry *)(buffer);
- }
-
+ static Geometry *create_by_typeid(Geometry_buffer *buffer, int type_id);
static Geometry *construct(Geometry_buffer *buffer,
const char *data, uint32 data_len);
static Geometry *create_from_wkt(Geometry_buffer *buffer,
@@ -528,11 +523,8 @@ public:
const Class_info *get_class_info() const;
};
-const int geometry_buffer_size= sizeof(Gis_point);
-struct Geometry_buffer
-{
- void *arr[(geometry_buffer_size - 1)/sizeof(void *) + 1];
-};
+struct Geometry_buffer : public
+ my_aligned_storage<sizeof(Gis_point), MY_ALIGNOF(Gis_point)> {};
#endif /*HAVE_SPATAIAL*/
#endif
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index db20782037e..496e8c310dd 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -162,7 +162,9 @@ static LEX_STRING old_password_plugin_name= {
LEX_STRING *default_auth_plugin_name= &native_password_plugin_name;
static plugin_ref native_password_plugin;
+#ifndef NO_EMBEDDED_ACCESS_CHECKS
static plugin_ref old_password_plugin;
+#endif
/* Classes */
@@ -292,6 +294,7 @@ static bool compare_hostname(const acl_host_and_ip *host,const char *hostname,
const char *ip);
static my_bool acl_load(THD *thd, TABLE_LIST *tables);
static my_bool grant_load(THD *thd, TABLE_LIST *tables);
+static inline void get_grantor(THD *thd, char* grantor);
/*
Convert scrambled password to binary form, according to scramble type,
@@ -465,7 +468,7 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
READ_RECORD read_record_info;
my_bool return_val= TRUE;
bool check_no_resolve= specialflag & SPECIAL_NO_RESOLVE;
- char tmp_name[NAME_LEN+1];
+ char tmp_name[SAFE_NAME_LEN+1];
int password_length;
ulong old_sql_mode= thd->variables.sql_mode;
DBUG_ENTER("acl_load");
@@ -477,8 +480,10 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
acl_cache->clear(1); // Clear locked hostname cache
init_sql_alloc(&mem, ACL_ALLOC_BLOCK_SIZE, 0);
- init_read_record(&read_record_info,thd,table= tables[0].table,NULL,1,0,
- FALSE);
+ if (init_read_record(&read_record_info,thd,table= tables[0].table,NULL,1,0,
+ FALSE))
+ goto end;
+
table->use_all_columns();
VOID(my_init_dynamic_array(&acl_hosts,sizeof(ACL_HOST),20,50));
while (!(read_record_info.read_record(&read_record_info)))
@@ -527,7 +532,10 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
end_read_record(&read_record_info);
freeze_size(&acl_hosts);
- init_read_record(&read_record_info,thd,table=tables[1].table,NULL,1,0,FALSE);
+ if (init_read_record(&read_record_info,thd,table=tables[1].table,NULL,1,0,
+ FALSE))
+ goto end;
+
table->use_all_columns();
VOID(my_init_dynamic_array(&acl_users,sizeof(ACL_USER),50,100));
password_length= table->field[2]->field_length /
@@ -748,7 +756,10 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
end_read_record(&read_record_info);
freeze_size(&acl_users);
- init_read_record(&read_record_info,thd,table=tables[2].table,NULL,1,0,FALSE);
+ if (init_read_record(&read_record_info,thd,table=tables[2].table,NULL,1,0,
+ FALSE))
+ goto end;
+
table->use_all_columns();
VOID(my_init_dynamic_array(&acl_dbs,sizeof(ACL_DB),50,100));
while (!(read_record_info.read_record(&read_record_info)))
@@ -2471,7 +2482,7 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
const char *user, const char *tname,
bool exact, bool name_tolower)
{
- char helping [NAME_LEN*2+USERNAME_LENGTH+3], *name_ptr;
+ char helping [SAFE_NAME_LEN*2+USERNAME_LENGTH+3], *name_ptr;
uint len;
GRANT_NAME *grant_name,*found=0;
HASH_SEARCH_STATE state;
@@ -2724,6 +2735,20 @@ end:
DBUG_RETURN(result);
}
+static inline void get_grantor(THD *thd, char *grantor)
+{
+ const char *user= thd->security_ctx->user;
+ const char *host= thd->security_ctx->host_or_ip;
+
+#if defined(HAVE_REPLICATION)
+ if (thd->slave_thread && thd->has_invoker())
+ {
+ user= thd->get_invoker_user().str;
+ host= thd->get_invoker_host().str;
+ }
+#endif
+ strxmov(grantor, user, "@", host, NullS);
+}
static int replace_table_table(THD *thd, GRANT_TABLE *grant_table,
TABLE *table, const LEX_USER &combo,
@@ -2738,9 +2763,7 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table,
uchar user_key[MAX_KEY_LENGTH];
DBUG_ENTER("replace_table_table");
- strxmov(grantor, thd->security_ctx->user, "@",
- thd->security_ctx->host_or_ip, NullS);
-
+ get_grantor(thd, grantor);
/*
The following should always succeed as new users are created before
this function is called!
@@ -2870,9 +2893,7 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name,
DBUG_RETURN(-1);
}
- strxmov(grantor, thd->security_ctx->user, "@",
- thd->security_ctx->host_or_ip, NullS);
-
+ get_grantor(thd, grantor);
/*
New users are created before this function is called.
@@ -3439,7 +3460,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
{
List_iterator <LEX_USER> str_list (list);
LEX_USER *Str, *tmp_Str;
- char tmp_db[NAME_LEN+1];
+ char tmp_db[SAFE_NAME_LEN+1];
bool create_new_users=0;
TABLE_LIST tables[2];
bool save_binlog_row_based;
@@ -4326,7 +4347,7 @@ static bool check_grant_db_routine(THD *thd, const char *db, HASH *hash)
bool check_grant_db(THD *thd,const char *db)
{
Security_context *sctx= thd->security_ctx;
- char helping [NAME_LEN+USERNAME_LENGTH+2];
+ char helping [SAFE_NAME_LEN + USERNAME_LENGTH+2];
uint len;
bool error= TRUE;
@@ -7271,7 +7292,7 @@ static bool parse_com_change_user_packet(MPVIO_EXT *mpvio, uint packet_length)
char *passwd= strend(user)+1;
uint user_len= passwd - user - 1;
char *db= passwd;
- char db_buff[NAME_LEN + 1]; // buffer to store db in utf8
+ char db_buff[SAFE_NAME_LEN + 1]; // buffer to store db in utf8
char user_buff[USERNAME_LENGTH + 1]; // buffer to store user in utf8
uint dummy_errors;
@@ -7470,7 +7491,7 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
char *passwd= strend(user)+1;
uint user_len= passwd - user - 1, db_len;
char *db= passwd;
- char db_buff[NAME_LEN + 1]; // buffer to store db in utf8
+ char db_buff[SAFE_NAME_LEN + 1]; // buffer to store db in utf8
char user_buff[USERNAME_LENGTH + 1]; // buffer to store user in utf8
uint dummy_errors;
diff --git a/sql/sql_analyse.h b/sql/sql_analyse.h
index 8807b40857e..b72ff62d592 100644
--- a/sql/sql_analyse.h
+++ b/sql/sql_analyse.h
@@ -71,7 +71,7 @@ class field_info :public Sql_alloc
protected:
ulong treemem, tree_elements, empty, nulls, min_length, max_length;
uint room_in_tree;
- my_bool found;
+ bool found;
TREE tree;
Item *item;
analyse *pc;
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index a93b48bfe94..e8dcc557f05 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -613,7 +613,7 @@ void release_table_share(TABLE_SHARE *share, enum release_type type)
TABLE_SHARE *get_cached_table_share(const char *db, const char *table_name)
{
- char key[NAME_LEN*2+2];
+ char key[SAFE_NAME_LEN*2+2];
TABLE_LIST table_list;
uint key_length;
safe_mutex_assert_owner(&LOCK_open);
@@ -1248,6 +1248,12 @@ void close_thread_tables(THD *thd)
table->s->table_name.str, (long) table));
#endif
+#if defined(ENABLED_DEBUG_SYNC)
+ /* debug_sync may not be initialized for some slave threads */
+ if (thd->debug_sync_control)
+ DEBUG_SYNC(thd, "before_close_thread_tables");
+#endif
+
/*
We are assuming here that thd->derived_tables contains ONLY derived
tables for this substatement. i.e. instead of approach which uses
@@ -2335,7 +2341,8 @@ bool reopen_name_locked_table(THD* thd, TABLE_LIST* table_list, bool link_in)
table->tablenr=thd->current_tablenr++;
table->used_fields=0;
table->const_table=0;
- table->null_row= table->maybe_null= 0;
+ table->null_row= 0;
+ table->maybe_null= 0;
table->force_index= table->force_index_order= table->force_index_group= 0;
table->status=STATUS_NO_RECORD;
DBUG_RETURN(FALSE);
@@ -2522,7 +2529,7 @@ bool check_if_table_exists(THD *thd, TABLE_LIST *table, bool *exists)
put in the thread-open-list.
flags Bitmap of flags to modify how open works:
MYSQL_LOCK_IGNORE_FLUSH - Open table even if
- someone has done a flush or namelock on it.
+ someone has done a flush on it.
No version number checking is done.
MYSQL_OPEN_TEMPORARY_ONLY - Open only temporary
table not the base table or view.
@@ -2812,8 +2819,10 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
("Found table '%s.%s' with different refresh version",
table_list->db, table_list->table_name));
- if (flags & MYSQL_LOCK_IGNORE_FLUSH)
+ /* Ignore FLUSH, but not name locks! */
+ if (flags & MYSQL_LOCK_IGNORE_FLUSH && !table->open_placeholder)
{
+ DBUG_ASSERT(table->db_stat);
/* Force close at once after usage */
thd->version= table->s->version;
continue;
@@ -2999,7 +3008,8 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
table->tablenr=thd->current_tablenr++;
table->used_fields=0;
table->const_table=0;
- table->null_row= table->maybe_null= 0;
+ table->null_row= 0;
+ table->maybe_null= 0;
table->force_index= table->force_index_order= table->force_index_group= 0;
table->status=STATUS_NO_RECORD;
table->insert_values= 0;
@@ -4445,7 +4455,8 @@ bool fix_merge_after_open(TABLE_LIST *old_child_list, TABLE_LIST **old_last,
Return a appropriate read lock type given a table object.
@param thd Thread context
- @param table TABLE object for table to be locked
+ @param lex LEX for the current statement.
+ @param table_list Table list element for table to be locked.
@remark Due to a statement-based replication limitation, statements such as
INSERT INTO .. SELECT FROM .. and CREATE TABLE .. SELECT FROM need
@@ -4454,19 +4465,32 @@ bool fix_merge_after_open(TABLE_LIST *old_child_list, TABLE_LIST **old_last,
source table. If such a statement gets applied on the slave before
the INSERT .. SELECT statement finishes, data on the master could
differ from data on the slave and end-up with a discrepancy between
- the binary log and table state. Furthermore, this does not apply to
- I_S and log tables as it's always unsafe to replicate such tables
- under statement-based replication as the table on the slave might
- contain other data (ie: general_log is enabled on the slave). The
- statement will be marked as unsafe for SBR in decide_logging_format().
+ the binary log and table state.
+ This also applies to SELECT/SET/DO statements which use stored
+ functions. Calls to such functions are going to be logged as a
+ whole and thus should be serialized against concurrent changes
+ to tables used by those functions. This can be avoided if functions
+ only read data but doing so requires more complex analysis than it
+ is done now (unfortunately, due to bug #53921 "Wrong locks for
+ SELECTs used stored functions may lead to broken SBR" this rule
+ is not followed in cases when stored function or trigger use
+ simple SELECT and not a subselect in their body).
+ Furthermore, this does not apply to I_S and log tables as it's
+ always unsafe to replicate such tables under statement-based
+ replication as the table on the slave might contain other data
+ (ie: general_log is enabled on the slave). The statement will
+ be marked as unsafe for SBR in decide_logging_format().
*/
-thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table)
+thr_lock_type read_lock_type_for_table(THD *thd, LEX *lex,
+ TABLE_LIST *table_list)
{
bool log_on= mysql_bin_log.is_open() && (thd->options & OPTION_BIN_LOG);
ulong binlog_format= thd->variables.binlog_format;
if ((log_on == FALSE) || (binlog_format == BINLOG_FORMAT_ROW) ||
- (table->s->table_category == TABLE_CATEGORY_PERFORMANCE))
+ (table_list->table->s->table_category == TABLE_CATEGORY_PERFORMANCE) ||
+ (lex->sql_command == SQLCOM_SELECT &&
+ ! table_list->prelocking_placeholder))
return TL_READ;
else
return TL_READ_NO_INSERT;
@@ -4483,7 +4507,7 @@ thr_lock_type read_lock_type_for_table(THD *thd, TABLE *table)
counter - number of opened tables will be return using this parameter
flags - bitmap of flags to modify how the tables will be open:
MYSQL_LOCK_IGNORE_FLUSH - open table even if someone has
- done a flush or namelock on it.
+ done a flush on it.
NOTE
Unless we are already in prelocked mode, this function will also precache
@@ -4762,7 +4786,7 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags)
tables->table->reginfo.lock_type= thd->update_lock_default;
else if (tables->lock_type == TL_READ_DEFAULT)
tables->table->reginfo.lock_type=
- read_lock_type_for_table(thd, tables->table);
+ read_lock_type_for_table(thd, thd->lex, tables);
else
tables->table->reginfo.lock_type= tables->lock_type;
}
@@ -5082,7 +5106,7 @@ int open_and_lock_tables_derived(THD *thd, TABLE_LIST *tables, bool derived)
tables - list of tables for open
flags - bitmap of flags to modify how the tables will be open:
MYSQL_LOCK_IGNORE_FLUSH - open table even if someone has
- done a flush or namelock on it.
+ done a flush on it.
RETURN
FALSE - ok
@@ -5181,53 +5205,75 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables)
set with all the capabilities bits set and one with no
capabilities bits set.
*/
- handler::Table_flags flags_some_set= 0;
- handler::Table_flags flags_all_set=
+ handler::Table_flags flags_write_some_set= 0;
+ handler::Table_flags flags_access_some_set= 0;
+ handler::Table_flags flags_write_all_set=
HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE;
- my_bool multi_engine= FALSE;
- void* prev_ht= NULL;
+ /*
+ If different types of engines are about to be updated.
+ For example: Innodb and Falcon; Innodb and MyIsam.
+ */
+ my_bool multi_write_engine= FALSE;
+ void* prev_write_ht= NULL;
+
+ /*
+ If different types of engines are about to be accessed
+ and any of them is about to be updated. For example:
+ Innodb and Falcon; Innodb and MyIsam.
+ */
+ my_bool multi_access_engine= FALSE;
+ void* prev_access_ht= NULL;
for (TABLE_LIST *table= tables; table; table= table->next_global)
{
if (table->placeholder())
continue;
if (table->table->s->table_category == TABLE_CATEGORY_PERFORMANCE)
thd->lex->set_stmt_unsafe();
+ ulonglong const flags= table->table->file->ha_table_flags();
if (table->lock_type >= TL_WRITE_ALLOW_WRITE)
{
- ulonglong const flags= table->table->file->ha_table_flags();
DBUG_PRINT("info", ("table: %s; ha_table_flags: %s%s",
table->table_name,
FLAGSTR(flags, HA_BINLOG_STMT_CAPABLE),
FLAGSTR(flags, HA_BINLOG_ROW_CAPABLE)));
- if (prev_ht && prev_ht != table->table->file->ht)
- multi_engine= TRUE;
- prev_ht= table->table->file->ht;
- flags_all_set &= flags;
- flags_some_set |= flags;
+ if (prev_write_ht && prev_write_ht != table->table->file->ht)
+ multi_write_engine= TRUE;
+ prev_write_ht= table->table->file->ht;
+ flags_write_all_set &= flags;
+ flags_write_some_set |= flags;
}
- }
-
- DBUG_PRINT("info", ("flags_all_set: %s%s",
- FLAGSTR(flags_all_set, HA_BINLOG_STMT_CAPABLE),
- FLAGSTR(flags_all_set, HA_BINLOG_ROW_CAPABLE)));
- DBUG_PRINT("info", ("flags_some_set: %s%s",
- FLAGSTR(flags_some_set, HA_BINLOG_STMT_CAPABLE),
- FLAGSTR(flags_some_set, HA_BINLOG_ROW_CAPABLE)));
+ if (prev_access_ht && prev_access_ht != table->table->file->ht)
+ multi_access_engine= TRUE;
+ prev_access_ht= table->table->file->ht;
+ flags_access_some_set |= flags;
+ }
+
+ DBUG_PRINT("info", ("flags_write_all_set: %s%s",
+ FLAGSTR(flags_write_all_set, HA_BINLOG_STMT_CAPABLE),
+ FLAGSTR(flags_write_all_set, HA_BINLOG_ROW_CAPABLE)));
+ DBUG_PRINT("info", ("flags_write_some_set: %s%s",
+ FLAGSTR(flags_write_some_set, HA_BINLOG_STMT_CAPABLE),
+ FLAGSTR(flags_write_some_set, HA_BINLOG_ROW_CAPABLE)));
+ DBUG_PRINT("info", ("flags_access_some_set: %s%s",
+ FLAGSTR(flags_access_some_set, HA_BINLOG_STMT_CAPABLE),
+ FLAGSTR(flags_access_some_set, HA_BINLOG_ROW_CAPABLE)));
+ DBUG_PRINT("info", ("multi_write_engine: %s",
+ multi_write_engine ? "TRUE" : "FALSE"));
+ DBUG_PRINT("info", ("multi_access_engine: %s",
+ multi_access_engine ? "TRUE" : "FALSE"));
DBUG_PRINT("info", ("thd->variables.binlog_format: %ld",
thd->variables.binlog_format));
- DBUG_PRINT("info", ("multi_engine: %s",
- multi_engine ? "TRUE" : "FALSE"));
int error= 0;
- if (flags_all_set == 0)
+ if (flags_write_all_set == 0)
{
my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0),
"Statement cannot be logged to the binary log in"
" row-based nor statement-based format");
}
else if (thd->variables.binlog_format == BINLOG_FORMAT_STMT &&
- (flags_all_set & HA_BINLOG_STMT_CAPABLE) == 0)
+ (flags_write_all_set & HA_BINLOG_STMT_CAPABLE) == 0)
{
my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0),
"Statement-based format required for this statement,"
@@ -5235,7 +5281,7 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables)
}
else if ((thd->variables.binlog_format == BINLOG_FORMAT_ROW ||
thd->lex->is_stmt_unsafe()) &&
- (flags_all_set & HA_BINLOG_ROW_CAPABLE) == 0)
+ (flags_write_all_set & HA_BINLOG_ROW_CAPABLE) == 0)
{
my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0),
"Row-based format required for this statement,"
@@ -5248,8 +5294,8 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables)
statement cannot be logged atomically, so we generate an error
rather than allowing the binlog to become corrupt.
*/
- if (multi_engine &&
- (flags_some_set & HA_HAS_OWN_BINLOGGING))
+ if (multi_write_engine &&
+ (flags_write_some_set & HA_HAS_OWN_BINLOGGING))
{
error= ER_BINLOG_LOGGING_IMPOSSIBLE;
my_error(error, MYF(0),
@@ -5257,6 +5303,16 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables)
" than one engine involved and at least one engine"
" is self-logging");
}
+ /*
+ Reading from a self-logging engine and updating another engine
+ generates changes that are written to the binary log in the
+ statement format and may make slaves to diverge. In the mixed
+ mode, such changes should be written to the binary log in the
+ row format.
+ */
+ else if (multi_access_engine &&
+ (flags_access_some_set & HA_HAS_OWN_BINLOGGING))
+ thd->lex->set_stmt_unsafe();
DBUG_PRINT("info", ("error: %d", error));
@@ -5276,7 +5332,7 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables)
here.
*/
if (thd->lex->is_stmt_unsafe() ||
- (flags_all_set & HA_BINLOG_STMT_CAPABLE) == 0)
+ (flags_write_all_set & HA_BINLOG_STMT_CAPABLE) == 0)
{
thd->set_current_stmt_binlog_row_based_if_mixed();
}
@@ -5384,6 +5440,8 @@ int lock_tables(THD *thd, TABLE_LIST *tables, uint count, bool *need_reopen)
DBUG_RETURN(-1);
}
+ DEBUG_SYNC(thd, "after_lock_tables_takes_lock");
+
if (thd->lex->requires_prelocking() &&
thd->lex->sql_command != SQLCOM_LOCK_TABLES)
{
@@ -5653,7 +5711,7 @@ static void update_field_dependencies(THD *thd, Field *field, TABLE *table)
DBUG_ENTER("update_field_dependencies");
if (thd->mark_used_columns != MARK_COLUMNS_NONE)
{
- MY_BITMAP *current_bitmap;
+ MY_BITMAP *bitmap;
/*
We always want to register the used keys, as the column bitmap may have
@@ -5667,9 +5725,9 @@ static void update_field_dependencies(THD *thd, Field *field, TABLE *table)
table->mark_virtual_col(field);
if (thd->mark_used_columns == MARK_COLUMNS_READ)
- current_bitmap= table->read_set;
+ bitmap= table->read_set;
else
- current_bitmap= table->write_set;
+ bitmap= table->write_set;
/*
The test-and-set mechanism in the bitmap is not reliable during
@@ -5678,7 +5736,7 @@ static void update_field_dependencies(THD *thd, Field *field, TABLE *table)
only those columns that are used in the SET clause. I.e they are being
set here. See multi_update::prepare()
*/
- if (bitmap_fast_test_and_set(current_bitmap, field->field_index))
+ if (bitmap_fast_test_and_set(bitmap, field->field_index))
{
if (thd->mark_used_columns == MARK_COLUMNS_WRITE)
{
@@ -6271,7 +6329,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
const char *table_name= item->table_name;
const char *name= item->field_name;
uint length=(uint) strlen(name);
- char name_buff[NAME_LEN+1];
+ char name_buff[SAFE_NAME_LEN+1];
TABLE_LIST *cur_table= first_table;
TABLE_LIST *actual_table;
bool allow_rowid;
@@ -6437,7 +6495,7 @@ find_field_in_tables(THD *thd, Item_ident *item,
(report_error == REPORT_ALL_ERRORS ||
report_error == REPORT_EXCEPT_NON_UNIQUE))
{
- char buff[NAME_LEN*2 + 2];
+ char buff[SAFE_NAME_LEN*2 + 2];
if (db && db[0])
{
strxnmov(buff,sizeof(buff)-1,db,".",table_name,NullS);
@@ -7823,7 +7881,7 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name,
{
Field_iterator_table_ref field_iterator;
bool found;
- char name_buff[NAME_LEN+1];
+ char name_buff[SAFE_NAME_LEN+1];
DBUG_ENTER("insert_fields");
DBUG_PRINT("arena", ("stmt arena: 0x%lx", (ulong)thd->stmt_arena));
@@ -8222,6 +8280,8 @@ fill_record(THD * thd, List<Item> &fields, List<Item> &values,
table->auto_increment_field_not_null= FALSE;
f.rewind();
}
+ else if (thd->lex->unit.insert_table_with_stored_vcol)
+ tbl_list.push_back(thd->lex->unit.insert_table_with_stored_vcol);
while ((fld= f++))
{
if (!(field= fld->filed_for_view_update()))
@@ -8270,7 +8330,7 @@ fill_record(THD * thd, List<Item> &fields, List<Item> &values,
prev_table= table;
if (table->vfield)
{
- if (update_virtual_fields(table, TRUE))
+ if (update_virtual_fields(thd, table, TRUE))
{
goto err;
}
@@ -8338,7 +8398,7 @@ fill_record_n_invoke_before_triggers(THD *thd, List<Item> &fields,
if (item_field && item_field->field &&
(table= item_field->field->table) &&
table->vfield)
- result= update_virtual_fields(table, TRUE);
+ result= update_virtual_fields(thd, table, TRUE);
}
}
return result;
@@ -8434,7 +8494,7 @@ fill_record(THD *thd, Field **ptr, List<Item> &values, bool ignore_errors,
prev_table= table;
if (table->vfield)
{
- if (update_virtual_fields(table, TRUE))
+ if (update_virtual_fields(thd, table, TRUE))
{
goto err;
}
@@ -8494,7 +8554,7 @@ fill_record_n_invoke_before_triggers(THD *thd, Field **ptr,
{
TABLE *table= (*ptr)->table;
if (table->vfield)
- result= update_virtual_fields(table, TRUE);
+ result= update_virtual_fields(thd, table, TRUE);
}
return result;
@@ -8534,15 +8594,15 @@ my_bool mysql_rm_tmp_tables(void)
(file->name[1] == '.' && !file->name[2])))
continue;
- if (!bcmp((uchar*) file->name, (uchar*) tmp_file_prefix,
- tmp_file_prefix_length))
+ if (!memcmp(file->name, tmp_file_prefix,
+ tmp_file_prefix_length))
{
char *ext= fn_ext(file->name);
uint ext_len= strlen(ext);
uint filePath_len= my_snprintf(filePath, sizeof(filePath),
"%s%c%s", tmpdir, FN_LIBCHAR,
file->name);
- if (!bcmp((uchar*) reg_ext, (uchar*) ext, ext_len))
+ if (!strcmp(reg_ext, ext))
{
handler *handler_file= 0;
/* We should cut file extention before deleting of table */
@@ -8910,7 +8970,7 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b)
/*
SYNOPSIS
- abort_and_upgrade_lock()
+ abort_and_upgrade_lock_and_close_table()
lpt Parameter passing struct
All parameters passed through the ALTER_PARTITION_PARAM_TYPE object
RETURN VALUE
@@ -8919,7 +8979,7 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b)
Remember old lock level (for possible downgrade later on), abort all
waiting threads and ensure that all keeping locks currently are
completed such that we own the lock exclusively and no other interaction
- is ongoing.
+ is ongoing. Close the table and hold the name lock.
thd Thread object
table Table object
@@ -8928,18 +8988,26 @@ bool is_equal(const LEX_STRING *a, const LEX_STRING *b)
old_lock_level Old lock level
*/
-int abort_and_upgrade_lock(ALTER_PARTITION_PARAM_TYPE *lpt)
+int abort_and_upgrade_lock_and_close_table(ALTER_PARTITION_PARAM_TYPE *lpt)
{
uint flags= RTFC_WAIT_OTHER_THREAD_FLAG | RTFC_CHECK_KILLED_FLAG;
- DBUG_ENTER("abort_and_upgrade_locks");
+ const char *db= lpt->db;
+ const char *table_name= lpt->table_name;
+ THD *thd= lpt->thd;
+ DBUG_ENTER("abort_and_upgrade_lock_and_close_table");
lpt->old_lock_type= lpt->table->reginfo.lock_type;
+ safe_mutex_assert_not_owner(&LOCK_open);
VOID(pthread_mutex_lock(&LOCK_open));
/* If MERGE child, forward lock handling to parent. */
- mysql_lock_abort(lpt->thd, lpt->table->parent ? lpt->table->parent :
- lpt->table, TRUE);
- VOID(remove_table_from_cache(lpt->thd, lpt->db, lpt->table_name, flags,
- FALSE));
+ mysql_lock_abort(thd, lpt->table->parent ? lpt->table->parent : lpt->table,
+ TRUE);
+ if (remove_table_from_cache(thd, db, table_name, flags, FALSE))
+ {
+ VOID(pthread_mutex_unlock(&LOCK_open));
+ DBUG_RETURN(1);
+ }
+ close_data_files_and_morph_locks(thd, db, table_name);
VOID(pthread_mutex_unlock(&LOCK_open));
DBUG_RETURN(0);
}
diff --git a/sql/sql_binlog.cc b/sql/sql_binlog.cc
index 07972d9b3e4..da582c37ae9 100644
--- a/sql/sql_binlog.cc
+++ b/sql/sql_binlog.cc
@@ -42,9 +42,13 @@ void mysql_client_binlog_statement(THD* thd)
if (check_global_access(thd, SUPER_ACL))
DBUG_VOID_RETURN;
- size_t coded_len= thd->lex->comment.length + 1;
+ size_t coded_len= thd->lex->comment.length;
+ if (!coded_len)
+ {
+ my_error(ER_SYNTAX_ERROR, MYF(0));
+ DBUG_VOID_RETURN;
+ }
size_t decoded_len= base64_needed_decoded_length(coded_len);
- DBUG_ASSERT(coded_len > 0);
/*
Allocation
@@ -145,14 +149,16 @@ void mysql_client_binlog_statement(THD* thd)
/*
Checking that the first event in the buffer is not truncated.
*/
- ulong event_len= uint4korr(bufptr + EVENT_LEN_OFFSET);
- DBUG_PRINT("info", ("event_len=%lu, bytes_decoded=%d",
- event_len, bytes_decoded));
- if (bytes_decoded < EVENT_LEN_OFFSET || (uint) bytes_decoded < event_len)
+ ulong event_len;
+ if (bytes_decoded < EVENT_LEN_OFFSET + 4 ||
+ (event_len= uint4korr(bufptr + EVENT_LEN_OFFSET)) >
+ (uint) bytes_decoded)
{
my_error(ER_SYNTAX_ERROR, MYF(0));
goto end;
}
+ DBUG_PRINT("info", ("event_len=%lu, bytes_decoded=%d",
+ event_len, bytes_decoded));
/*
If we have not seen any Format_description_event, then we must
@@ -190,17 +196,6 @@ void mysql_client_binlog_statement(THD* thd)
bufptr += event_len;
DBUG_PRINT("info",("ev->get_type_code()=%d", ev->get_type_code()));
-#ifndef HAVE_valgrind
- /*
- This debug printout should not be used for valgrind builds
- since it will read from unassigned memory.
- */
- DBUG_PRINT("info",("bufptr+EVENT_TYPE_OFFSET: 0x%lx",
- (long) (bufptr+EVENT_TYPE_OFFSET)));
- DBUG_PRINT("info", ("bytes_decoded: %d bufptr: 0x%lx buf[EVENT_LEN_OFFSET]: %lu",
- bytes_decoded, (long) bufptr,
- (ulong) uint4korr(bufptr+EVENT_LEN_OFFSET)));
-#endif
ev->thd= thd;
/*
We go directly to the application phase, since we don't need
diff --git a/sql/sql_bitmap.h b/sql/sql_bitmap.h
index e07806a56ab..5385acc934f 100644
--- a/sql/sql_bitmap.h
+++ b/sql/sql_bitmap.h
@@ -60,13 +60,13 @@ public:
}
void subtract(Bitmap& map2) { bitmap_subtract(&map, &map2.map); }
void merge(Bitmap& map2) { bitmap_union(&map, &map2.map); }
- my_bool is_set(uint n) const { return bitmap_is_set(&map, n); }
- my_bool is_prefix(uint n) const { return bitmap_is_prefix(&map, n); }
- my_bool is_clear_all() const { return bitmap_is_clear_all(&map); }
- my_bool is_set_all() const { return bitmap_is_set_all(&map); }
- my_bool is_subset(const Bitmap& map2) const { return bitmap_is_subset(&map, &map2.map); }
- my_bool is_overlapping(const Bitmap& map2) const { return bitmap_is_overlapping(&map, &map2.map); }
- my_bool operator==(const Bitmap& map2) const { return bitmap_cmp(&map, &map2.map); }
+ bool is_set(uint n) const { return bitmap_is_set(&map, n); }
+ bool is_prefix(uint n) const { return bitmap_is_prefix(&map, n); }
+ bool is_clear_all() const { return bitmap_is_clear_all(&map); }
+ bool is_set_all() const { return bitmap_is_set_all(&map); }
+ bool is_subset(const Bitmap& map2) const { return bitmap_is_subset(&map, &map2.map); }
+ bool is_overlapping(const Bitmap& map2) const { return bitmap_is_overlapping(&map, &map2.map); }
+ bool operator==(const Bitmap& map2) const { return bitmap_cmp(&map, &map2.map); }
char *print(char *buf) const
{
char *s=buf;
@@ -155,14 +155,14 @@ public:
void intersect_extended(ulonglong map2) { map&= map2; }
void subtract(Bitmap<64>& map2) { map&= ~map2.map; }
void merge(Bitmap<64>& map2) { map|= map2.map; }
- my_bool is_set(uint n) const { return test(map & (((ulonglong)1) << n)); }
- my_bool is_prefix(uint n) const { return map == (((ulonglong)1) << n)-1; }
- my_bool is_clear_all() const { return map == (ulonglong)0; }
- my_bool is_set_all() const { return map == ~(ulonglong)0; }
- my_bool is_subset(const Bitmap<64>& map2) const { return !(map & ~map2.map); }
- my_bool is_overlapping(const Bitmap<64>& map2) const { return (map & map2.map)!= 0; }
- my_bool operator==(const Bitmap<64>& map2) const { return map == map2.map; }
- char *print(char *buf) const { longlong2str(map,buf,16); return buf; }
+ bool is_set(uint n) const { return test(map & (((ulonglong)1) << n)); }
+ bool is_prefix(uint n) const { return map == (((ulonglong)1) << n)-1; }
+ bool is_clear_all() const { return map == (ulonglong)0; }
+ bool is_set_all() const { return map == ~(ulonglong)0; }
+ bool is_subset(const Bitmap<64>& map2) const { return !(map & ~map2.map); }
+ bool is_overlapping(const Bitmap<64>& map2) const { return (map & map2.map)!= 0; }
+ bool operator==(const Bitmap<64>& map2) const { return map == map2.map; }
+ char *print(char *buf) const { longlong2str(map,buf,16,1); return buf; }
ulonglong to_ulonglong() const { return map; }
class Iterator : public Table_map_iterator
{
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index 302d5e95a28..fb3d201e222 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -740,7 +740,7 @@ inline void Query_cache_query::lock_writing()
remove it.
*/
-my_bool Query_cache_query::try_lock_writing()
+bool Query_cache_query::try_lock_writing()
{
DBUG_ENTER("Query_cache_block::try_lock_writing");
if (rw_trywrlock(&lock)!=0)
@@ -1679,7 +1679,8 @@ def_week_frmt: %lu, in_trans: %d, autocommit: %d",
thd->limit_found_rows = query->found_rows();
thd->status_var.last_query_cost= 0.0;
thd->query_plan_flags= (thd->query_plan_flags & ~QPLAN_QC_NO) | QPLAN_QC;
- thd->main_da.disable_status();
+ if (!thd->main_da.is_set())
+ thd->main_da.disable_status();
BLOCK_UNLOCK_RD(query_block);
DBUG_RETURN(1); // Result sent to client
diff --git a/sql/sql_cache.h b/sql/sql_cache.h
index 44fc3123b98..91666625a12 100644
--- a/sql/sql_cache.h
+++ b/sql/sql_cache.h
@@ -121,7 +121,7 @@ struct Query_cache_block
block_type type;
TABLE_COUNTER_TYPE n_tables; // number of tables in query
- inline my_bool is_free(void) { return type == FREE; }
+ inline bool is_free(void) { return type == FREE; }
void init(ulong length);
void destroy();
inline uint headers_len();
@@ -162,7 +162,7 @@ struct Query_cache_query
}
void lock_writing();
void lock_reading();
- my_bool try_lock_writing();
+ bool try_lock_writing();
void unlock_writing();
void unlock_reading();
};
@@ -312,7 +312,7 @@ protected:
uint mem_bin_num, mem_bin_steps; // See at init_cache & find_bin
- my_bool initialized;
+ bool initialized;
/* Exclude/include from cyclic double linked list */
static void double_linked_list_exclude(Query_cache_block *point,
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index c48a0b0e7fb..28450f7f223 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -803,6 +803,10 @@ THD::THD()
thr_lock_owner_init(&main_lock_id, &lock_info);
m_internal_handler= NULL;
+ arena_for_cached_items= 0;
+ current_user_used= FALSE;
+ memset(&invoker_user, 0, sizeof(invoker_user));
+ memset(&invoker_host, 0, sizeof(invoker_host));
}
@@ -1215,13 +1219,13 @@ void add_diff_to_status(STATUS_VAR *to_var, STATUS_VAR *from_var,
while (to != end)
*(to++)+= *(from++) - *(dec++);
- to_var->bytes_received= (from_var->bytes_received -
- dec_var->bytes_received);
- to_var->bytes_sent+= from_var->bytes_sent - dec_var->bytes_sent;
- to_var->binlog_bytes_written= (from_var->binlog_bytes_written -
- dec_var->binlog_bytes_written);
- to_var->cpu_time+= from_var->cpu_time - dec_var->cpu_time;
- to_var->busy_time+= from_var->busy_time - dec_var->busy_time;
+ to_var->bytes_received+= from_var->bytes_received -
+ dec_var->bytes_received;
+ to_var->bytes_sent+= from_var->bytes_sent - dec_var->bytes_sent;
+ to_var->binlog_bytes_written+= from_var->binlog_bytes_written -
+ dec_var->binlog_bytes_written;
+ to_var->cpu_time+= from_var->cpu_time - dec_var->cpu_time;
+ to_var->busy_time+= from_var->busy_time - dec_var->busy_time;
}
#define SECONDS_TO_WAIT_FOR_KILL 2
@@ -1428,6 +1432,7 @@ void THD::cleanup_after_query()
where= THD::DEFAULT_WHERE;
/* reset table map for multi-table update */
table_map_for_update= 0;
+ clean_current_user_used();
}
@@ -2190,9 +2195,21 @@ bool select_export::send_data(List<Item> &items)
const char *from_end_pos;
const char *error_pos;
uint32 bytes;
- bytes= well_formed_copy_nchars(write_cs, cvt_buff, sizeof(cvt_buff),
+ uint64 estimated_bytes=
+ ((uint64) res->length() / res->charset()->mbminlen + 1) *
+ write_cs->mbmaxlen + 1;
+ set_if_smaller(estimated_bytes, UINT_MAX32);
+ if (cvt_str.realloc((uint32) estimated_bytes))
+ {
+ my_error(ER_OUTOFMEMORY, MYF(0), (uint32) estimated_bytes);
+ goto err;
+ }
+
+ bytes= well_formed_copy_nchars(write_cs, (char *) cvt_str.ptr(),
+ cvt_str.alloced_length(),
res->charset(), res->ptr(), res->length(),
- sizeof(cvt_buff),
+ UINT_MAX32, // copy all input chars,
+ // i.e. ignore nchars parameter
&well_formed_error_pos,
&cannot_convert_error_pos,
&from_end_pos);
@@ -2210,6 +2227,15 @@ bool select_export::send_data(List<Item> &items)
"string", printable_buff,
item->name, (ulong) row_count);
}
+ else if (from_end_pos < res->ptr() + res->length())
+ {
+ /*
+ result is longer than UINT_MAX32 and doesn't fit into String
+ */
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ WARN_DATA_TRUNCATED, ER(WARN_DATA_TRUNCATED),
+ item->full_name(), row_count);
+ }
cvt_str.length(bytes);
res= &cvt_str;
}
@@ -3514,6 +3540,23 @@ void THD::set_query(char *query_arg, uint32 query_length_arg)
pthread_mutex_unlock(&LOCK_thd_data);
}
+void THD::get_definer(LEX_USER *definer)
+{
+ set_current_user_used();
+#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
+ if (slave_thread && has_invoker())
+ {
+ definer->user = invoker_user;
+ definer->host= invoker_host;
+ definer->password= null_lex_str;
+ definer->plugin= empty_lex_str;
+ definer->auth= empty_lex_str;
+ }
+ else
+#endif
+ get_default_definer(this, definer);
+}
+
/**
Mark transaction to rollback and mark error as fatal to a sub-statement.
@@ -3612,9 +3655,13 @@ bool xid_cache_insert(XID *xid, enum xa_states xa_state)
bool xid_cache_insert(XID_STATE *xid_state)
{
pthread_mutex_lock(&LOCK_xid_cache);
- DBUG_ASSERT(hash_search(&xid_cache, xid_state->xid.key(),
- xid_state->xid.key_length())==0);
- my_bool res=my_hash_insert(&xid_cache, (uchar*)xid_state);
+ if (hash_search(&xid_cache, xid_state->xid.key(), xid_state->xid.key_length()))
+ {
+ pthread_mutex_unlock(&LOCK_xid_cache);
+ my_error(ER_XAER_DUPID, MYF(0));
+ return TRUE;
+ }
+ my_bool res= my_hash_insert(&xid_cache, (uchar*)xid_state);
pthread_mutex_unlock(&LOCK_xid_cache);
return res;
}
@@ -4008,7 +4055,6 @@ int THD::binlog_flush_pending_rows_event(bool stmt_end)
if (stmt_end)
{
pending->set_flags(Rows_log_event::STMT_END_F);
- pending->flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F;
binlog_table_maps= 0;
}
@@ -4136,7 +4182,6 @@ int THD::binlog_query(THD::enum_binlog_query_type qtype, char const *query_arg,
{
Query_log_event qinfo(this, query_arg, query_len, is_trans, suppress_use,
errcode);
- qinfo.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F;
/*
Binlog table maps will be irrelevant after a Query_log_event
(they are just removed on the slave side) so after the query
diff --git a/sql/sql_class.h b/sql/sql_class.h
index bf84d12cc58..fc5b15b3916 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -156,9 +156,10 @@ enum enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY, RNEXT_SAME };
enum enum_duplicates { DUP_ERROR, DUP_REPLACE, DUP_UPDATE };
enum enum_delay_key_write { DELAY_KEY_WRITE_NONE, DELAY_KEY_WRITE_ON,
DELAY_KEY_WRITE_ALL };
-enum enum_slave_exec_mode { SLAVE_EXEC_MODE_STRICT,
- SLAVE_EXEC_MODE_IDEMPOTENT,
- SLAVE_EXEC_MODE_LAST_BIT};
+
+#define SLAVE_EXEC_MODE_STRICT (1U << 0)
+#define SLAVE_EXEC_MODE_IDEMPOTENT (1U << 1)
+
enum enum_mark_columns
{ MARK_COLUMNS_NONE, MARK_COLUMNS_READ, MARK_COLUMNS_WRITE};
@@ -365,6 +366,9 @@ struct system_variables
When attempting to access a dynamic variable, if the session version
is out of date, then the session version is updated and realloced if
neccessary and bytes copied from global to make up for missing data.
+
+ Note that one should use my_bool instead of bool here, as the variables
+ are used with my_getopt.c
*/
ulong dynamic_variables_version;
char* dynamic_variables_ptr;
@@ -500,7 +504,11 @@ struct system_variables
};
-/* per thread status variables */
+/**
+ Per thread status variables.
+ Must be long/ulong up to last_system_status_var so that
+ add_to_status/add_diff_to_status can work.
+*/
typedef struct system_status_var
{
@@ -568,17 +576,15 @@ typedef struct system_status_var
Number of statements sent from the client
*/
ulong questions;
- ulong empty_queries;
- ulong access_denied_errors; /* Can only be 0 or 1 */
- ulong lost_connections;
/*
IMPORTANT!
SEE last_system_status_var DEFINITION BELOW.
- Below 'last_system_status_var' are all variables which doesn't make any
- sense to add to the /global/ status variable counter.
- Status variables which it does not make sense to add to
- global status variable counter
+ Below 'last_system_status_var' are all variables that cannot be handled
+ automatically by add_to_status()/add_diff_to_status().
*/
+ ulong empty_queries;
+ ulong access_denied_errors; /* Can only be 0 or 1 */
+ ulong lost_connections;
ulonglong bytes_received;
ulonglong bytes_sent;
ulonglong binlog_bytes_written;
@@ -1842,8 +1848,15 @@ public:
*/
ha_rows sent_row_count;
- /*
- number of rows we read, sent or not, including in create_sort_index()
+ /**
+ Number of rows read and/or evaluated for a statement. Used for
+ slow log reporting.
+
+ An examined row is defined as a row that is read and/or evaluated
+ according to a statement condition, including in
+ create_sort_index(). Rows may be counted more than once, e.g., a
+ statement including ORDER BY could possibly evaluate the row in
+ filesort() before reading it for e.g. update.
*/
ha_rows examined_row_count;
@@ -1977,7 +1990,7 @@ public:
bool no_warnings_for_error; /* no warnings on call to my_error() */
/* set during loop of derived table processing */
bool derived_tables_processing;
- my_bool tablespace_op; /* This is TRUE in DISCARD/IMPORT TABLESPACE */
+ bool tablespace_op; /* This is TRUE in DISCARD/IMPORT TABLESPACE */
sp_rcontext *spcont; // SP runtime context
sp_cache *sp_proc_cache;
@@ -2170,6 +2183,11 @@ public:
start_time= user_time= t;
start_utime= utime_after_lock= my_micro_time();
}
+ /*TODO: this will be obsolete when we have support for 64 bit my_time_t */
+ inline bool is_valid_time()
+ {
+ return (start_time < (time_t) MY_TIME_T_MAX);
+ }
void set_time_after_lock() { utime_after_lock= my_micro_time(); }
ulonglong current_utime() { return my_micro_time(); }
inline ulonglong found_rows(void)
@@ -2476,6 +2494,39 @@ public:
Protected with LOCK_thd_data mutex.
*/
void set_query(char *query_arg, uint32 query_length_arg);
+ void set_current_user_used() { current_user_used= TRUE; }
+ bool is_current_user_used() { return current_user_used; }
+ void clean_current_user_used() { current_user_used= FALSE; }
+ void get_definer(LEX_USER *definer);
+ void set_invoker(const LEX_STRING *user, const LEX_STRING *host)
+ {
+ invoker_user= *user;
+ invoker_host= *host;
+ }
+ LEX_STRING get_invoker_user() { return invoker_user; }
+ LEX_STRING get_invoker_host() { return invoker_host; }
+ bool has_invoker() { return invoker_user.length > 0; }
+
+private:
+ /*
+ This reference points to the table arena when the expression
+ for a virtual column is being evaluated
+ */
+ Query_arena *arena_for_cached_items;
+
+public:
+ void reset_arena_for_cached_items(Query_arena *new_arena)
+ {
+ arena_for_cached_items= new_arena;
+ }
+ Query_arena *switch_to_arena_for_cached_items(Query_arena *backup)
+ {
+ if (!arena_for_cached_items)
+ return 0;
+ set_n_backup_active_arena(arena_for_cached_items, backup);
+ return backup;
+ }
+
private:
/** The current internal error handler for this thread, or NULL. */
Internal_error_handler *m_internal_handler;
@@ -2495,6 +2546,25 @@ private:
tree itself is reused between executions and thus is stored elsewhere.
*/
MEM_ROOT main_mem_root;
+
+ /**
+ It will be set TURE if CURRENT_USER() is called in account management
+ statements or default definer is set in CREATE/ALTER SP, SF, Event,
+ TRIGGER or VIEW statements.
+
+ Current user will be binlogged into Query_log_event if current_user_used
+ is TRUE; It will be stored into invoker_host and invoker_user by SQL thread.
+ */
+ bool current_user_used;
+
+ /**
+ It points to the invoker in the Query_log_event.
+ SQL thread use it as the default definer in CREATE/ALTER SP, SF, Event,
+ TRIGGER or VIEW statements or current user in account management
+ statements if it is not NULL.
+ */
+ LEX_STRING invoker_user;
+ LEX_STRING invoker_host;
};
/** A short cut for thd->main_da.set_ok_status(). */
@@ -2553,7 +2623,7 @@ class select_result :public Sql_alloc {
protected:
THD *thd;
SELECT_LEX_UNIT *unit;
- uint nest_level;
+ int nest_level;
public:
select_result();
virtual ~select_result() {};
@@ -2694,7 +2764,7 @@ public:
Creates a select_export to represent INTO OUTFILE <filename> with a
defined level of subquery nesting.
*/
- select_export(sql_exchange *ex, uint nest_level_arg) :select_to_file(ex)
+ select_export(sql_exchange *ex, int nest_level_arg) :select_to_file(ex)
{
nest_level= nest_level_arg;
}
@@ -2711,7 +2781,7 @@ public:
Creates a select_export to represent INTO DUMPFILE <filename> with a
defined level of subquery nesting.
*/
- select_dump(sql_exchange *ex, uint nest_level_arg) :
+ select_dump(sql_exchange *ex, int nest_level_arg) :
select_to_file(ex)
{
nest_level= nest_level_arg;
@@ -2787,7 +2857,7 @@ public:
};
-#if defined(WITH_MARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
+#if defined(WITH_ARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
#include <maria.h>
#define ENGINE_COLUMNDEF MARIA_COLUMNDEF
#else
@@ -3162,10 +3232,10 @@ class user_var_entry
Item_result type;
bool unsigned_flag;
- double val_real(my_bool *null_value);
- longlong val_int(my_bool *null_value) const;
- String *val_str(my_bool *null_value, String *str, uint decimals);
- my_decimal *val_decimal(my_bool *null_value, my_decimal *result);
+ double val_real(bool *null_value);
+ longlong val_int(bool *null_value) const;
+ String *val_str(bool *null_value, String *str, uint decimals);
+ my_decimal *val_decimal(bool *null_value, my_decimal *result);
DTCollation collation;
};
@@ -3210,13 +3280,16 @@ public:
ulonglong max_in_memory_size)
{
register ulonglong max_elems_in_tree=
- (1 + max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+key_size));
+ max_in_memory_size / ALIGN_SIZE(sizeof(TREE_ELEMENT)+key_size);
return (int) (sizeof(uint)*(1 + nkeys/max_elems_in_tree));
}
void reset();
bool walk(tree_walk_action action, void *walk_action_arg);
+ uint get_size() const { return size; }
+ ulonglong get_max_in_memory_size() const { return max_in_memory_size; }
+
friend int unique_write_to_file(uchar* key, element_count count, Unique *unique);
friend int unique_write_to_ptrs(uchar* key, element_count count, Unique *unique);
};
@@ -3325,7 +3398,7 @@ public:
Creates a select_dumpvar to represent INTO <variable> with a defined
level of subquery nesting.
*/
- select_dumpvar(uint nest_level_arg)
+ select_dumpvar(int nest_level_arg)
{
var_list.empty();
row_count= 0;
diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc
index 30c6c4fc653..1c2ae915259 100644
--- a/sql/sql_connect.cc
+++ b/sql/sql_connect.cc
@@ -257,6 +257,7 @@ end:
#endif /* NO_EMBEDDED_ACCESS_CHECKS */
+
/*
Check for maximum allowable user connections, if the mysqld server is
started with corresponding variable that is greater then 0.
diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc
index ea667543040..308c49fc15c 100644
--- a/sql/sql_cursor.cc
+++ b/sql/sql_cursor.cc
@@ -608,7 +608,7 @@ int Materialized_cursor::open(JOIN *join __attribute__((unused)))
thd->set_n_backup_active_arena(this, &backup_arena);
/* Create a list of fields and start sequential scan */
rc= result->prepare(item_list, &fake_unit);
- if (!rc && !(rc= table->file->ha_rnd_init(TRUE)))
+ if (!rc && !(rc= table->file->ha_rnd_init_with_error(TRUE)))
is_rnd_inited= 1;
thd->restore_active_arena(this, &backup_arena);
@@ -658,7 +658,12 @@ void Materialized_cursor::fetch(ulong num_rows)
if ((res= table->file->ha_rnd_next(table->record[0])))
break;
/* Send data only if the read was successful. */
- result->send_data(item_list);
+ /*
+ If network write failed (i.e. due to a closed socked),
+ the error has already been set. Just return.
+ */
+ if (result->send_data(item_list))
+ return;
}
switch (res) {
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index 94be8a5f240..1dd659283ac 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -642,6 +642,18 @@ int mysql_create_db(THD *thd, char *db, HA_CREATE_INFO *create_info,
goto exit2;
}
+ /*
+ Close and mark for re-open all HANDLER tables which are marked for flush
+ or which there are pending conflicing locks against. This is needed to
+ prevent deadlocks.
+ */
+ if (thd->handler_tables_hash.records)
+ {
+ pthread_mutex_lock(&LOCK_open);
+ mysql_ha_flush(thd);
+ pthread_mutex_unlock(&LOCK_open);
+ }
+
VOID(pthread_mutex_lock(&LOCK_mysql_create_db));
/* Check directory */
@@ -788,6 +800,18 @@ bool mysql_alter_db(THD *thd, const char *db, HA_CREATE_INFO *create_info)
if ((error=wait_if_global_read_lock(thd,0,1)))
goto exit2;
+ /*
+ Close and mark for re-open all HANDLER tables which are marked for flush
+ or which there are pending conflicing locks against. This is needed to
+ prevent deadlocks.
+ */
+ if (thd->handler_tables_hash.records)
+ {
+ pthread_mutex_lock(&LOCK_open);
+ mysql_ha_flush(thd);
+ pthread_mutex_unlock(&LOCK_open);
+ }
+
VOID(pthread_mutex_lock(&LOCK_mysql_create_db));
/*
@@ -886,6 +910,18 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
goto exit2;
}
+ /*
+ Close and mark for re-open all HANDLER tables which are marked for flush
+ or which there are pending conflicing locks against. This is needed to
+ prevent deadlocks.
+ */
+ if (thd->handler_tables_hash.records)
+ {
+ pthread_mutex_lock(&LOCK_open);
+ mysql_ha_flush(thd);
+ pthread_mutex_unlock(&LOCK_open);
+ }
+
VOID(pthread_mutex_lock(&LOCK_mysql_create_db));
length= build_table_filename(path, sizeof(path) - 1, db, "", "", 0);
@@ -1539,12 +1575,9 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
Security_context *sctx= thd->security_ctx;
ulong db_access= sctx->db_access;
CHARSET_INFO *db_default_cl;
-
DBUG_ENTER("mysql_change_db");
- DBUG_PRINT("enter",("name: '%s'", new_db_name->str));
- if (new_db_name == NULL ||
- new_db_name->length == 0)
+ if (new_db_name->length == 0)
{
if (force_switch)
{
@@ -1553,8 +1586,7 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
after loading stored program. The thing is that loading of stored
program can happen when there is no current database.
- TODO: actually, new_db_name and new_db_name->str seem to be always
- non-NULL. In case of stored program, new_db_name->str == "" and
+ In case of stored program, new_db_name->str == "" and
new_db_name->length == 0.
*/
@@ -1569,6 +1601,7 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
DBUG_RETURN(TRUE);
}
}
+ DBUG_PRINT("enter",("name: '%s'", new_db_name->str));
if (is_schema_db(new_db_name->str, new_db_name->length))
{
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index ddb6af97865..5564d628594 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -33,7 +33,7 @@
*/
bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
- SQL_LIST *order, ha_rows limit, ulonglong options,
+ SQL_I_List<ORDER> *order, ha_rows limit, ulonglong options,
bool reset_auto_increment)
{
bool will_batch;
@@ -84,7 +84,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
if (select_lex->setup_ref_array(thd, order->elements) ||
setup_order(thd, select_lex->ref_pointer_array, &tables,
- fields, all_fields, (ORDER*) order->first))
+ fields, all_fields, order->first))
{
delete select;
free_underlaid_joins(thd, &thd->lex->select_lex);
@@ -130,7 +130,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
- there should be no delete triggers associated with the table.
*/
if (!using_limit && const_cond_result &&
- !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) &&
(thd->lex->sql_command == SQLCOM_TRUNCATE ||
(!thd->current_stmt_binlog_row_based &&
!(table->triggers && table->triggers->has_delete_triggers()))))
@@ -230,14 +229,14 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
ha_rows examined_rows;
if ((!select || table->quick_keys.is_clear_all()) && limit != HA_POS_ERROR)
- usable_index= get_index_for_order(table, (ORDER*)(order->first), limit);
+ usable_index= get_index_for_order(table, order->first, limit);
if (usable_index == MAX_KEY)
{
table->sort.io_cache= (IO_CACHE *) my_malloc(sizeof(IO_CACHE),
MYF(MY_FAE | MY_ZEROFILL));
- if (!(sortorder= make_unireg_sortorder((ORDER*) order->first,
+ if (!(sortorder= make_unireg_sortorder(order->first,
&length, NULL)) ||
(table->sort.found_records = filesort(thd, table, sortorder, length,
select, HA_POS_ERROR, 1,
@@ -248,6 +247,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
free_underlaid_joins(thd, &thd->lex->select_lex);
DBUG_RETURN(TRUE);
}
+ thd->examined_row_count+= examined_rows;
/*
Filesort has already found and selected the rows we want to delete,
so we don't need the where clause
@@ -265,8 +265,15 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
free_underlaid_joins(thd, select_lex);
DBUG_RETURN(TRUE);
}
- if (usable_index==MAX_KEY)
- init_read_record(&info, thd, table, select, 1, 1, FALSE);
+ if (usable_index == MAX_KEY || (select && select->quick))
+ {
+ if (init_read_record(&info, thd, table, select, 1, 1, FALSE))
+ {
+ delete select;
+ free_underlaid_joins(thd, select_lex);
+ DBUG_RETURN(TRUE);
+ }
+ }
else
init_read_record_idx(&info, thd, table, 1, usable_index);
@@ -304,6 +311,8 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
while (!(error=info.read_record(&info)) && !thd->killed &&
! thd->is_error())
{
+ update_virtual_fields(thd, table);
+ thd->examined_row_count++;
// thd->is_error() is tested to disallow delete row on error
if (!select || select->skip_record(thd) > 0)
{
@@ -547,7 +556,7 @@ extern "C" int refpos_order_cmp(void* arg, const void *a,const void *b)
int mysql_multi_delete_prepare(THD *thd)
{
LEX *lex= thd->lex;
- TABLE_LIST *aux_tables= (TABLE_LIST *)lex->auxiliary_table_list.first;
+ TABLE_LIST *aux_tables= lex->auxiliary_table_list.first;
TABLE_LIST *target_tbl;
DBUG_ENTER("mysql_multi_delete_prepare");
@@ -943,7 +952,10 @@ int multi_delete::do_table_deletes(TABLE *table, bool ignore)
READ_RECORD info;
ha_rows last_deleted= deleted;
DBUG_ENTER("do_deletes_for_table");
- init_read_record(&info, thd, table, NULL, 0, 1, FALSE);
+
+ if (init_read_record(&info, thd, table, NULL, 0, 1, FALSE))
+ DBUG_RETURN(1);
+
/*
Ignore any rows not found in reference tables as they may already have
been deleted by foreign key handling
diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc
index 22240d3a300..1c1e518e9c9 100644
--- a/sql/sql_derived.cc
+++ b/sql/sql_derived.cc
@@ -282,13 +282,13 @@ bool mysql_derived_filling(THD *thd, LEX *lex, TABLE_LIST *orig_table_list)
lex->current_select= first_select;
res= mysql_select(thd, &first_select->ref_pointer_array,
- (TABLE_LIST*) first_select->table_list.first,
+ first_select->table_list.first,
first_select->with_wild,
first_select->item_list, first_select->where,
(first_select->order_list.elements+
first_select->group_list.elements),
- (ORDER *) first_select->order_list.first,
- (ORDER *) first_select->group_list.first,
+ first_select->order_list.first,
+ first_select->group_list.first,
first_select->having, (ORDER*) NULL,
(first_select->options | thd->options |
SELECT_NO_UNLOCK),
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc
index 2f3ce99ab9c..69be8c8e9b4 100644
--- a/sql/sql_handler.cc
+++ b/sql/sql_handler.cc
@@ -539,6 +539,14 @@ retry:
my_error(ER_KEY_DOES_NOT_EXITS, MYF(0), keyname, tables->alias);
goto err;
}
+ /* Check if the same index involved. */
+ if ((uint) keyno != table->file->get_index())
+ {
+ if (mode == RNEXT)
+ mode= RFIRST;
+ else if (mode == RPREV)
+ mode= RLAST;
+ }
}
if (insert_fields(thd, &thd->lex->select_lex.context,
@@ -561,9 +569,16 @@ retry:
case RNEXT:
if (table->file->inited != handler::NONE)
{
- error=keyname ?
- table->file->ha_index_next(table->record[0]) :
- table->file->ha_rnd_next(table->record[0]);
+ if (keyname)
+ {
+ /* Check if we read from the same index. */
+ DBUG_ASSERT((uint) keyno == table->file->get_index());
+ error= table->file->ha_index_next(table->record[0]);
+ }
+ else
+ {
+ error= table->file->ha_rnd_next(table->record[0]);
+ }
break;
}
/* else fall through */
@@ -584,6 +599,8 @@ retry:
break;
case RPREV:
DBUG_ASSERT(keyname != 0);
+ /* Check if we read from the same index. */
+ DBUG_ASSERT((uint) keyno == table->file->get_index());
if (table->file->inited != handler::NONE)
{
error=table->file->ha_index_prev(table->record[0]);
@@ -664,7 +681,7 @@ retry:
goto ok;
}
/* Generate values for virtual fields */
- update_virtual_fields(table);
+ update_virtual_fields(thd, table);
if (cond && !cond->val_int())
continue;
if (num_rows >= offset_limit_cnt)
diff --git a/sql/sql_help.cc b/sql/sql_help.cc
index 5658a3578ab..916557a46c4 100644
--- a/sql/sql_help.cc
+++ b/sql/sql_help.cc
@@ -182,11 +182,14 @@ int search_topics(THD *thd, TABLE *topics, struct st_find_field *find_fields,
SQL_SELECT *select, List<String> *names,
String *name, String *description, String *example)
{
- DBUG_ENTER("search_topics");
int count= 0;
-
READ_RECORD read_record_info;
- init_read_record(&read_record_info, thd, topics, select, 1, 0, FALSE);
+ DBUG_ENTER("search_topics");
+
+ /* Should never happen. As this is part of help, we can ignore this */
+ if (init_read_record(&read_record_info, thd, topics, select, 1, 0, FALSE))
+ DBUG_RETURN(0);
+
while (!read_record_info.read_record(&read_record_info))
{
if (!select->cond->val_int()) // Doesn't match like
@@ -222,11 +225,13 @@ int search_topics(THD *thd, TABLE *topics, struct st_find_field *find_fields,
int search_keyword(THD *thd, TABLE *keywords, struct st_find_field *find_fields,
SQL_SELECT *select, int *key_id)
{
- DBUG_ENTER("search_keyword");
int count= 0;
-
READ_RECORD read_record_info;
- init_read_record(&read_record_info, thd, keywords, select, 1, 0, FALSE);
+ DBUG_ENTER("search_keyword");
+ /* Should never happen. As this is part of help, we can ignore this */
+ if (init_read_record(&read_record_info, thd, keywords, select, 1, 0, FALSE))
+ DBUG_RETURN(0);
+
while (!read_record_info.read_record(&read_record_info) && count<2)
{
if (!select->cond->val_int()) // Dosn't match like
@@ -347,10 +352,11 @@ int search_categories(THD *thd, TABLE *categories,
Field *pcat_id= find_fields[help_category_help_category_id].field;
int count= 0;
READ_RECORD read_record_info;
-
DBUG_ENTER("search_categories");
- init_read_record(&read_record_info, thd, categories, select,1,0,FALSE);
+ /* Should never happen. As this is part of help, we can ignore this */
+ if (init_read_record(&read_record_info, thd, categories, select,1,0,FALSE))
+ DBUG_RETURN(0);
while (!read_record_info.read_record(&read_record_info))
{
if (select && !select->cond->val_int())
@@ -381,10 +387,13 @@ int search_categories(THD *thd, TABLE *categories,
void get_all_items_for_category(THD *thd, TABLE *items, Field *pfname,
SQL_SELECT *select, List<String> *res)
{
+ READ_RECORD read_record_info;
DBUG_ENTER("get_all_items_for_category");
- READ_RECORD read_record_info;
- init_read_record(&read_record_info, thd, items, select,1,0,FALSE);
+ /* Should never happen. As this is part of help, we can ignore this */
+ if (init_read_record(&read_record_info, thd, items, select,1,0,FALSE))
+ DBUG_VOID_RETURN;
+
while (!read_record_info.read_record(&read_record_info))
{
if (!select->cond->val_int())
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 54234eb8ab4..bab92ca7368 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -273,7 +273,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
}
/* Mark virtual columns used in the insert statement */
if (table->vfield)
- table->mark_virtual_columns_for_write();
+ table->mark_virtual_columns_for_write(TRUE);
// For the values we need select_priv
#ifndef NO_EMBEDDED_ACCESS_CHECKS
table->grant.want_privilege= (SELECT_ACL & ~table->grant.privilege);
@@ -881,7 +881,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
auto_inc values from the delayed_insert thread as they share TABLE.
*/
table->file->ha_release_auto_increment();
- if (using_bulk_insert && table->file->ha_end_bulk_insert(0) && !error)
+ if (using_bulk_insert && table->file->ha_end_bulk_insert() && !error)
{
table->file->print_error(my_errno,MYF(0));
error=1;
@@ -1267,7 +1267,6 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list,
if (mysql_prepare_insert_check_table(thd, table_list, fields, select_insert))
DBUG_RETURN(TRUE);
-
/* Prepare the fields in the statement. */
if (values)
{
@@ -1320,6 +1319,18 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list,
if (!table)
table= table_list->table;
+ if (!fields.elements && table->vfield)
+ {
+ for (Field **vfield_ptr= table->vfield; *vfield_ptr; vfield_ptr++)
+ {
+ if ((*vfield_ptr)->stored_in_db)
+ {
+ thd->lex->unit.insert_table_with_stored_vcol= table;
+ break;
+ }
+ }
+ }
+
if (!select_insert)
{
Item *fake_conds= 0;
@@ -1504,7 +1515,7 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
table->file->adjust_next_insert_id_after_explicit_value(
table->next_number_field->val_int());
info->touched++;
- if ((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ &&
+ if (((table->file->ha_table_flags() & HA_PARTIAL_COLUMN_READ) &&
!bitmap_is_subset(table->write_set, table->read_set)) ||
compare_record(table))
{
@@ -2098,7 +2109,7 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd)
copy= (TABLE*) client_thd->alloc(sizeof(*copy)+
(share->fields+1)*sizeof(Field**)+
share->reclength +
- share->column_bitmap_size*2);
+ share->column_bitmap_size*3);
if (!copy)
goto error;
@@ -2108,7 +2119,7 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd)
/* Assign the pointers for the field pointers array and the record. */
field= copy->field= (Field**) (copy + 1);
bitmap= (uchar*) (field + share->fields + 1);
- copy->record[0]= (bitmap + share->column_bitmap_size * 2);
+ copy->record[0]= (bitmap + share->column_bitmap_size*3);
memcpy((char*) copy->record[0], (char*) table->record[0], share->reclength);
/*
Make a copy of all fields.
@@ -2150,10 +2161,13 @@ TABLE *Delayed_insert::get_local_table(THD* client_thd)
copy->def_read_set.bitmap= (my_bitmap_map*) bitmap;
copy->def_write_set.bitmap= ((my_bitmap_map*)
(bitmap + share->column_bitmap_size));
+ copy->def_vcol_set.bitmap= ((my_bitmap_map*)
+ (bitmap + 2*share->column_bitmap_size));
copy->tmp_set.bitmap= 0; // To catch errors
- bzero((char*) bitmap, share->column_bitmap_size*2);
+ bzero((char*) bitmap, share->column_bitmap_size*3);
copy->read_set= &copy->def_read_set;
copy->write_set= &copy->def_write_set;
+ copy->vcol_set= &copy->def_vcol_set;
DBUG_RETURN(copy);
@@ -3274,7 +3288,7 @@ bool select_insert::send_eof()
DBUG_PRINT("enter", ("trans_table=%d, table_type='%s'",
trans_table, table->file->table_type()));
- error= (!thd->prelocked_mode) ? table->file->ha_end_bulk_insert(0) : 0;
+ error= (!thd->prelocked_mode) ? table->file->ha_end_bulk_insert() : 0;
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
table->file->extra(HA_EXTRA_WRITE_CANNOT_REPLACE);
@@ -3357,7 +3371,7 @@ void select_insert::abort() {
before.
*/
if (!thd->prelocked_mode)
- table->file->ha_end_bulk_insert(0);
+ table->file->ha_end_bulk_insert();
/*
If at least one row has been inserted/modified and will stay in
@@ -3473,7 +3487,8 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
tmp_table.s->db_low_byte_first=
test(create_info->db_type == myisam_hton ||
create_info->db_type == heap_hton);
- tmp_table.null_row=tmp_table.maybe_null=0;
+ tmp_table.null_row= 0;
+ tmp_table.maybe_null= 0;
while ((item=it++))
{
@@ -3910,6 +3925,17 @@ void select_create::abort()
if (table)
{
+ if (thd->lex->sql_command == SQLCOM_CREATE_TABLE &&
+ thd->current_stmt_binlog_row_based &&
+ !(thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) &&
+ mysql_bin_log.is_open())
+ {
+ /*
+ This should be removed after BUG#47899.
+ */
+ mysql_bin_log.reset_gathered_updates(thd);
+ }
+
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
table->file->extra(HA_EXTRA_WRITE_CANNOT_REPLACE);
if (!create_info->table_existed)
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 7b19b4874b1..0a4e112671e 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -110,39 +110,31 @@ st_parsing_options::reset()
allows_derived= TRUE;
}
-Lex_input_stream::Lex_input_stream(THD *thd,
- const char* buffer,
- unsigned int length)
-: m_thd(thd),
- yylineno(1),
- yytoklen(0),
- yylval(NULL),
- m_ptr(buffer),
- m_tok_start(NULL),
- m_tok_end(NULL),
- m_end_of_query(buffer + length),
- m_tok_start_prev(NULL),
- m_buf(buffer),
- m_buf_length(length),
- m_echo(TRUE),
- m_cpp_tok_start(NULL),
- m_cpp_tok_start_prev(NULL),
- m_cpp_tok_end(NULL),
- m_body_utf8(NULL),
- m_cpp_utf8_processed_ptr(NULL),
- next_state(MY_LEX_START),
- found_semicolon(NULL),
- ignore_space(test(thd->variables.sql_mode & MODE_IGNORE_SPACE)),
- stmt_prepare_mode(FALSE),
- in_comment(NO_COMMENT),
- m_underscore_cs(NULL)
+
+bool Lex_input_stream::init(THD *thd, char *buff, unsigned int length)
{
+ DBUG_EXECUTE_IF("bug42064_simulate_oom",
+ DBUG_SET("+d,simulate_out_of_memory"););
+
m_cpp_buf= (char*) thd->alloc(length + 1);
+
+ DBUG_EXECUTE_IF("bug42064_simulate_oom",
+ DBUG_SET("-d,bug42064_simulate_oom"););
+
+ if (m_cpp_buf == NULL)
+ return TRUE;
+
m_cpp_ptr= m_cpp_buf;
+ m_thd= thd;
+ m_ptr= buff;
+ m_end_of_query= buff + length;
+ m_buf= buff;
+ m_buf_length= length;
+ ignore_space= test(thd->variables.sql_mode & MODE_IGNORE_SPACE);
+
+ return FALSE;
}
-Lex_input_stream::~Lex_input_stream()
-{}
/**
The operation is called from the parser in order to
@@ -1311,11 +1303,10 @@ int MYSQLlex(void *arg, void *yythd)
ulong version;
version=strtol(version_str, NULL, 10);
- /* Accept 'M' 'm' 'm' 'd' 'd' */
- lip->yySkipn(5);
-
if (version <= MYSQL_VERSION_ID)
{
+ /* Accept 'M' 'm' 'm' 'd' 'd' */
+ lip->yySkipn(5);
/* Expand the content of the special comment as real code */
lip->set_echo(TRUE);
state=MY_LEX_START;
@@ -1323,7 +1314,16 @@ int MYSQLlex(void *arg, void *yythd)
}
else
{
+ /*
+ Patch and skip the conditional comment to avoid it
+ being propagated infinitely (eg. to a slave).
+ */
+ char *pcom= lip->yyUnput(' ');
comment_closed= ! consume_comment(lip, 1);
+ if (! comment_closed)
+ {
+ *pcom= '!';
+ }
/* version allowed to have one level of comment inside. */
}
}
@@ -1590,6 +1590,7 @@ void st_select_lex_unit::init_query()
item_list.empty();
describe= 0;
found_rows_for_union= 0;
+ insert_table_with_stored_vcol= 0;
}
void st_select_lex::init_query()
@@ -1655,7 +1656,7 @@ void st_select_lex::init_select()
linkage= UNSPECIFIED_TYPE;
order_list.elements= 0;
order_list.first= 0;
- order_list.next= (uchar**) &order_list.first;
+ order_list.next= &order_list.first;
/* Set limit and offset to default values */
select_limit= 0; /* denotes the default limit = HA_POS_ERROR */
offset_limit= 0; /* denotes the default offset = 0 */
@@ -2036,7 +2037,7 @@ uint st_select_lex::get_in_sum_expr()
TABLE_LIST* st_select_lex::get_table_list()
{
- return (TABLE_LIST*) table_list.first;
+ return table_list.first;
}
List<Item>* st_select_lex::get_item_list()
@@ -2093,9 +2094,8 @@ void st_select_lex_unit::print(String *str, enum_query_type query_type)
if (fake_select_lex->order_list.elements)
{
str->append(STRING_WITH_LEN(" order by "));
- fake_select_lex->print_order(
- str,
- (ORDER *) fake_select_lex->order_list.first,
+ fake_select_lex->print_order(str,
+ fake_select_lex->order_list.first,
query_type);
}
fake_select_lex->print_limit(thd, str, query_type);
@@ -2753,7 +2753,7 @@ TABLE_LIST *st_lex::unlink_first_table(bool *link_to_local)
{
select_lex.context.table_list=
select_lex.context.first_name_resolution_table= first->next_local;
- select_lex.table_list.first= (uchar*) (first->next_local);
+ select_lex.table_list.first= first->next_local;
select_lex.table_list.elements--; //safety
first->next_local= 0;
/*
@@ -2785,7 +2785,7 @@ TABLE_LIST *st_lex::unlink_first_table(bool *link_to_local)
void st_lex::first_lists_tables_same()
{
- TABLE_LIST *first_table= (TABLE_LIST*) select_lex.table_list.first;
+ TABLE_LIST *first_table= select_lex.table_list.first;
if (query_tables != first_table && first_table != 0)
{
TABLE_LIST *next;
@@ -2832,9 +2832,9 @@ void st_lex::link_first_table_back(TABLE_LIST *first,
if (link_to_local)
{
- first->next_local= (TABLE_LIST*) select_lex.table_list.first;
+ first->next_local= select_lex.table_list.first;
select_lex.context.table_list= first;
- select_lex.table_list.first= (uchar*) first;
+ select_lex.table_list.first= first;
select_lex.table_list.elements++; //safety
}
}
@@ -3000,7 +3000,7 @@ void st_select_lex::fix_prepare_information(THD *thd, Item **conds,
prep_having= *having_conds;
*having_conds= having= prep_having->copy_andor_structure(thd);
}
- fix_prepare_info_in_table_list(thd, (TABLE_LIST *)table_list.first);
+ fix_prepare_info_in_table_list(thd, table_list.first);
}
}
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index 335aa7f4ed4..8ec50a8b772 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -532,6 +532,13 @@ public:
bool describe; /* union exec() called for EXPLAIN */
Procedure *last_procedure; /* Pointer to procedure, if such exists */
+ /*
+ Insert table with stored virtual columns.
+ This is used only in those rare cases
+ when the list of inserted values is empty.
+ */
+ TABLE *insert_table_with_stored_vcol;
+
void init_query();
st_select_lex_unit* master_unit();
st_select_lex* outer_select();
@@ -590,8 +597,8 @@ public:
st_lex *parent_lex;
enum olap_type olap;
/* FROM clause - points to the beginning of the TABLE_LIST::next_local list. */
- SQL_LIST table_list;
- SQL_LIST group_list; /* GROUP BY clause. */
+ SQL_I_List<TABLE_LIST> table_list;
+ SQL_I_List<ORDER> group_list; /* GROUP BY clause. */
List<Item> item_list; /* list of fields & expressions */
List<String> interval_list;
bool is_item_list_lookup;
@@ -614,8 +621,8 @@ public:
TABLE_LIST *leaf_tables;
const char *type; /* type of select for EXPLAIN */
- SQL_LIST order_list; /* ORDER clause */
- SQL_LIST *gorder_list;
+ SQL_I_List<ORDER> order_list; /* ORDER clause */
+ SQL_I_List<ORDER> *gorder_list;
Item *select_limit, *offset_limit; /* LIMIT clause parameters */
// Arrays of pointers to top elements of all_fields list
Item **ref_pointer_array;
@@ -783,7 +790,7 @@ public:
{
order_list.elements= 0;
order_list.first= 0;
- order_list.next= (uchar**) &order_list.first;
+ order_list.next= &order_list.first;
}
/*
This method created for reiniting LEX in mysql_admin_table() and can be
@@ -964,6 +971,8 @@ enum xa_option_words {XA_NONE, XA_JOIN, XA_RESUME, XA_ONE_PHASE,
extern const LEX_STRING null_lex_str;
extern const LEX_STRING empty_lex_str;
+struct Sroutine_hash_entry;
+
/*
Class representing list of all tables used by statement.
It also contains information about stored functions used by statement
@@ -1004,9 +1013,9 @@ public:
We use these two members for restoring of 'sroutines_list' to the state
in which it was right after query parsing.
*/
- SQL_LIST sroutines_list;
- uchar **sroutines_list_own_last;
- uint sroutines_list_own_elements;
+ SQL_I_List<Sroutine_hash_entry> sroutines_list;
+ Sroutine_hash_entry **sroutines_list_own_last;
+ uint sroutines_list_own_elements;
/*
These constructor and destructor serve for creation/destruction
@@ -1158,9 +1167,38 @@ enum enum_comment_state
class Lex_input_stream
{
public:
- Lex_input_stream(THD *thd, const char* buff, unsigned int length);
- ~Lex_input_stream();
+ Lex_input_stream() :
+ yylineno(1),
+ yytoklen(0),
+ yylval(NULL),
+ m_tok_start(NULL),
+ m_tok_end(NULL),
+ m_tok_start_prev(NULL),
+ m_echo(TRUE),
+ m_cpp_tok_start(NULL),
+ m_cpp_tok_start_prev(NULL),
+ m_cpp_tok_end(NULL),
+ m_body_utf8(NULL),
+ m_cpp_utf8_processed_ptr(NULL),
+ next_state(MY_LEX_START),
+ found_semicolon(NULL),
+ stmt_prepare_mode(FALSE),
+ in_comment(NO_COMMENT),
+ m_underscore_cs(NULL)
+ {
+ }
+ ~Lex_input_stream()
+ {
+ }
+
+ /**
+ Object initializer. Must be called before usage.
+
+ @retval FALSE OK
+ @retval TRUE Error
+ */
+ bool init(THD *thd, char *buff, unsigned int length);
/**
Set the echo mode.
@@ -1275,6 +1313,20 @@ public:
}
/**
+ Puts a character back into the stream, canceling
+ the effect of the last yyGet() or yySkip().
+ Note that the echo mode should not change between calls
+ to unput, get, or skip from the stream.
+ */
+ char *yyUnput(char ch)
+ {
+ *--m_ptr= ch;
+ if (m_echo)
+ m_cpp_ptr--;
+ return m_ptr;
+ }
+
+ /**
End of file indicator for the query text to parse.
@return true if there are no more characters to parse
*/
@@ -1420,7 +1472,7 @@ public:
private:
/** Pointer to the current position in the raw input stream. */
- const char *m_ptr;
+ char *m_ptr;
/** Starting position of the last token parsed, in the raw buffer. */
const char *m_tok_start;
@@ -1611,7 +1663,8 @@ typedef struct st_lex : public Query_tables_list
*/
List<Name_resolution_context> context_stack;
- SQL_LIST proc_list, auxiliary_table_list, save_list;
+ SQL_I_List<ORDER> proc_list;
+ SQL_I_List<TABLE_LIST> auxiliary_table_list, save_list;
Create_field *last_field;
Item_sum *in_sum_func;
udf_func udf;
@@ -1741,7 +1794,7 @@ typedef struct st_lex : public Query_tables_list
fields to TABLE object at table open (altough for latter pointer to table
being opened is probably enough).
*/
- SQL_LIST trg_table_fields;
+ SQL_I_List<Item_trigger_field> trg_table_fields;
/*
stmt_definition_begin is intended to point to the next word after
@@ -1955,10 +2008,21 @@ public:
class Parser_state
{
public:
- Parser_state(THD *thd, const char* buff, unsigned int length)
- : m_lip(thd, buff, length), m_yacc()
+ Parser_state()
+ : m_yacc()
{}
+ /**
+ Object initializer. Must be called before usage.
+
+ @retval FALSE OK
+ @retval TRUE Error
+ */
+ bool init(THD *thd, char *buff, unsigned int length)
+ {
+ return m_lip.init(thd, buff, length);
+ }
+
~Parser_state()
{}
diff --git a/sql/sql_list.h b/sql/sql_list.h
index 93cdd20c299..dc840cefc66 100644
--- a/sql/sql_list.h
+++ b/sql/sql_list.h
@@ -55,6 +55,73 @@ public:
};
+/**
+ Simple intrusive linked list.
+
+ @remark Similar in nature to base_list, but intrusive. It keeps a
+ a pointer to the first element in the list and a indirect
+ reference to the last element.
+*/
+template <typename T>
+class SQL_I_List :public Sql_alloc
+{
+public:
+ uint elements;
+ /** The first element in the list. */
+ T *first;
+ /** A reference to the next element in the list. */
+ T **next;
+
+ SQL_I_List() { empty(); }
+
+ SQL_I_List(const SQL_I_List &tmp) : Sql_alloc()
+ {
+ elements= tmp.elements;
+ first= tmp.first;
+ next= elements ? tmp.next : &first;
+ }
+
+ inline void empty()
+ {
+ elements= 0;
+ first= NULL;
+ next= &first;
+ }
+
+ inline void link_in_list(T *element, T **next_ptr)
+ {
+ elements++;
+ (*next)= element;
+ next= next_ptr;
+ *next= NULL;
+ }
+
+ inline void save_and_clear(SQL_I_List<T> *save)
+ {
+ *save= *this;
+ empty();
+ }
+
+ inline void push_front(SQL_I_List<T> *save)
+ {
+ /* link current list last */
+ *save->next= first;
+ first= save->first;
+ elements+= save->elements;
+ }
+
+ inline void push_back(SQL_I_List<T> *save)
+ {
+ if (save->first)
+ {
+ *next= save->first;
+ next= save->next;
+ elements+= save->elements;
+ }
+ }
+};
+
+
/*
Basic single linked list
Used for item and item_buffs.
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 7399b442573..1b7f690259a 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -128,6 +128,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
bool is_fifo=0;
#ifndef EMBEDDED_LIBRARY
LOAD_FILE_INFO lf_info;
+ THD::killed_state killed_status;
#endif
char *db = table_list->db; // This is never null
/*
@@ -138,7 +139,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
char *tdb= thd->db ? thd->db : db; // Result is never null
ulong skip_lines= ex->skip_lines;
bool transactional_table;
- THD::killed_state killed_status= THD::NOT_KILLED;
DBUG_ENTER("mysql_load");
#ifdef EMBEDDED_LIBRARY
@@ -432,7 +432,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
error= read_sep_field(thd, info, table_list, fields_vars,
set_fields, set_values, read_info,
*enclosed, skip_lines, ignore);
- if (!thd->prelocked_mode && table->file->ha_end_bulk_insert(0) && !error)
+ if (!thd->prelocked_mode && table->file->ha_end_bulk_insert() && !error)
{
table->file->print_error(my_errno, MYF(0));
error= 1;
@@ -455,7 +455,11 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
error=1;
thd->killed= THD::KILL_QUERY;
};);
- killed_status= (error == 0)? THD::NOT_KILLED : thd->killed;
+
+#ifndef EMBEDDED_LIBRARY
+ killed_status= (error == 0) ? THD::NOT_KILLED : thd->killed;
+#endif
+
/*
We must invalidate the table in query cache before binlog writing and
ha_autocommit_...
@@ -511,7 +515,6 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
else
{
Delete_file_log_event d(thd, db, transactional_table);
- d.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F;
(void) mysql_bin_log.write(&d);
}
}
@@ -691,7 +694,6 @@ static bool write_execute_load_query_log_event(THD *thd, sql_exchange* ex,
(duplicates == DUP_REPLACE) ? LOAD_DUP_REPLACE :
(ignore ? LOAD_DUP_IGNORE : LOAD_DUP_ERROR),
transactional_table, FALSE, errcode);
- e.flags|= LOG_EVENT_UPDATE_TABLE_MAP_VERSION_F;
return mysql_bin_log.write(&e);
}
@@ -929,6 +931,10 @@ read_sep_field(THD *thd, COPY_INFO &info, TABLE_LIST *table_list,
DBUG_RETURN(1);
}
}
+
+ if (thd->is_error())
+ read_info.error= 1;
+
if (read_info.error)
break;
if (skip_lines)
@@ -1052,7 +1058,7 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
String &field_term, String &line_start, String &line_term,
String &enclosed_par, int escape, bool get_it_from_net,
bool is_fifo)
- :file(file_par),escape_char(escape)
+ :file(file_par),buffer(0),escape_char(escape)
{
read_charset= cs;
field_term_ptr=(char*) field_term.ptr();
@@ -1101,6 +1107,7 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, CHARSET_INFO *cs,
MYF(MY_WME)))
{
my_free((uchar*) buffer,MYF(0)); /* purecov: inspected */
+ buffer= 0;
error=1;
}
else
@@ -1131,9 +1138,8 @@ READ_INFO::~READ_INFO()
{
if (need_end_io_cache)
::end_io_cache(&cache);
- my_free((uchar*) buffer,MYF(0));
- error=1;
}
+ my_free((uchar*) buffer,MYF(MY_ALLOW_ZERO_PTR));
}
@@ -1200,29 +1206,6 @@ int READ_INFO::read_field()
while ( to < end_of_buff)
{
chr = GET;
-#ifdef USE_MB
- if ((my_mbcharlen(read_charset, chr) > 1) &&
- to+my_mbcharlen(read_charset, chr) <= end_of_buff)
- {
- uchar* p = (uchar*)to;
- *to++ = chr;
- int ml = my_mbcharlen(read_charset, chr);
- int i;
- for (i=1; i<ml; i++) {
- chr = GET;
- if (chr == my_b_EOF)
- goto found_eof;
- *to++ = chr;
- }
- if (my_ismbchar(read_charset,
- (const char *)p,
- (const char *)to))
- continue;
- for (i=0; i<ml; i++)
- PUSH((uchar) *--to);
- chr = GET;
- }
-#endif
if (chr == my_b_EOF)
goto found_eof;
if (chr == escape_char)
@@ -1307,6 +1290,39 @@ int READ_INFO::read_field()
return 0;
}
}
+#ifdef USE_MB
+ if (my_mbcharlen(read_charset, chr) > 1 &&
+ to + my_mbcharlen(read_charset, chr) <= end_of_buff)
+ {
+ uchar* p= (uchar*) to;
+ int ml, i;
+ *to++ = chr;
+
+ ml= my_mbcharlen(read_charset, chr);
+
+ for (i= 1; i < ml; i++)
+ {
+ chr= GET;
+ if (chr == my_b_EOF)
+ {
+ /*
+ Need to back up the bytes already ready from illformed
+ multi-byte char
+ */
+ to-= i;
+ goto found_eof;
+ }
+ *to++ = chr;
+ }
+ if (my_ismbchar(read_charset,
+ (const char *)p,
+ (const char *)to))
+ continue;
+ for (i= 0; i < ml; i++)
+ PUSH((uchar) *--to);
+ chr= GET;
+ }
+#endif
*to++ = (uchar) chr;
}
/*
diff --git a/sql/sql_olap.cc b/sql/sql_olap.cc
index dccfcbaf8ac..21deef8c664 100644
--- a/sql/sql_olap.cc
+++ b/sql/sql_olap.cc
@@ -146,14 +146,14 @@ int handle_olaps(LEX *lex, SELECT_LEX *select_lex)
lex->last_selects=select_lex;
- for (ORDER *order=(ORDER *)select_lex->group_list.first ; order ; order=order->next)
+ for (ORDER *order= select_lex->group_list.first ; order ; order=order->next)
item_list_copy.push_back(*(order->item));
List<Item> all_fields(select_lex->item_list);
if (setup_tables(lex->thd, &select_lex->context, &select_lex->top_join_list,
- (TABLE_LIST *)select_lex->table_list.first
+ select_lex->table_list.first
&select_lex->leaf_tables, FALSE) ||
setup_fields(lex->thd, 0, select_lex->item_list, MARK_COLUMNS_READ,
&all_fields,1) ||
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 971dc7c42d3..73862e79f12 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -28,7 +28,7 @@
#include "events.h"
#include "sql_trigger.h"
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
#include "../storage/maria/ha_maria.h"
#endif
@@ -181,7 +181,7 @@ bool end_active_trans(THD *thd)
thd->server_status&= ~SERVER_STATUS_IN_TRANS;
if (ha_commit(thd))
error=1;
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
ha_maria::implicit_commit(thd, TRUE);
#endif
}
@@ -476,6 +476,7 @@ static void handle_bootstrap_impl(THD *thd)
buff= (char*) thd->net.buff;
if (!fgets(buff + length, thd->net.max_packet - length, file))
{
+ net_end_statement(thd);
bootstrap_error= 1;
break;
}
@@ -658,7 +659,7 @@ void cleanup_items(Item *item)
*/
static
-int mysql_table_dump(THD *thd, LEX_STRING *db, char *tbl_name)
+int mysql_table_dump(THD *thd, LEX_STRING *db, LEX_STRING *table_name)
{
TABLE* table;
TABLE_LIST* table_list;
@@ -672,7 +673,7 @@ int mysql_table_dump(THD *thd, LEX_STRING *db, char *tbl_name)
if (!(table_list = (TABLE_LIST*) thd->calloc(sizeof(TABLE_LIST))))
DBUG_RETURN(1); // out of memory
table_list->db= db->str;
- table_list->table_name= table_list->alias= tbl_name;
+ table_list->table_name= table_list->alias= table_name->str;
table_list->lock_type= TL_READ_NO_INSERT;
table_list->prev_global= &table_list; // can be removed after merge with 4.1
@@ -683,8 +684,16 @@ int mysql_table_dump(THD *thd, LEX_STRING *db, char *tbl_name)
goto err;
/* purecov: end */
}
+ if (!table_name->length ||
+ check_table_name(table_name->str, table_name->length, TRUE))
+ {
+ my_error(ER_WRONG_TABLE_NAME, MYF(0),
+ table_name->str ? table_name->str : "NULL");
+ error= 1;
+ goto err;
+ }
if (lower_case_table_names)
- my_casedn_str(files_charset_info, tbl_name);
+ my_casedn_str(files_charset_info, table_name->str);
if (!(table=open_ltable(thd, table_list, TL_READ_NO_INSERT, 0)))
DBUG_RETURN(1);
@@ -692,7 +701,7 @@ int mysql_table_dump(THD *thd, LEX_STRING *db, char *tbl_name)
if (check_one_table_access(thd, SELECT_ACL, table_list))
goto err;
thd->free_list = 0;
- thd->set_query(tbl_name, (uint) strlen(tbl_name));
+ thd->set_query(table_name->str, table_name->length);
if ((error = mysqld_dump_create_info(thd, table_list, -1)))
{
my_error(ER_GET_ERRNO, MYF(0), my_errno);
@@ -992,7 +1001,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
NET *net= &thd->net;
bool error= 0;
DBUG_ENTER("dispatch_command");
- DBUG_PRINT("info",("packet: '%*.s'; command: %d", packet_length, packet, command));
+ DBUG_PRINT("info", ("command: %d", command));
thd->command=command;
/*
@@ -1003,6 +1012,19 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
thd->query_plan_flags= QPLAN_INIT;
thd->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */
thd->set_time();
+ if (!thd->is_valid_time())
+ {
+ /*
+ If the time has got past 2038 we need to shut this server down
+ We do this by making sure every command is a shutdown and we
+ have enough privileges to shut the server down
+
+ TODO: remove this when we have full 64 bit my_time_t support
+ */
+ thd->security_ctx->master_access|= SHUTDOWN_ACL;
+ command= COM_SHUTDOWN;
+ }
+
VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->query_id= global_query_id;
@@ -1056,8 +1078,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
#endif
case COM_TABLE_DUMP:
{
- char *tbl_name;
- LEX_STRING db;
+ LEX_STRING db, table;
/* Safe because there is always a trailing \0 at the end of the packet */
uint db_len= *(uchar*) packet;
if (db_len + 1 > packet_length || db_len > NAME_LEN)
@@ -1083,9 +1104,10 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
break;
}
db.length= db_len;
- tbl_name= strmake(db.str, packet + 1, db_len)+1;
- strmake(tbl_name, packet + db_len + 2, tbl_len);
- if (mysql_table_dump(thd, &db, tbl_name) == 0)
+ table.length= tbl_len;
+ table.str= strmake(db.str, packet + 1, db_len) + 1;
+ strmake(table.str, packet + db_len + 2, tbl_len);
+ if (mysql_table_dump(thd, &db, &table) == 0)
thd->main_da.disable_status();
break;
}
@@ -1187,7 +1209,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
{
char *beginning_of_next_stmt= (char*) end_of_stmt;
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
ha_maria::implicit_commit(thd, FALSE);
#endif
@@ -1244,7 +1266,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
char *fields, *packet_end= packet + packet_length, *wildcard;
/* Locked closure of all tables */
TABLE_LIST table_list;
- char db_buff[NAME_LEN+1];
+ char db_buff[SAFE_NAME_LEN+1];
uint32 db_length;
uint dummy_errors, query_length;
@@ -1263,7 +1285,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
db_length= wildcard - packet;
wildcard++;
query_length= (uint) (packet_end - wildcard); // Don't count end \0
- if (db_length > NAME_LEN || query_length > NAME_LEN)
+ if (db_length > SAFE_NAME_LEN || query_length > NAME_LEN)
{
my_message(ER_UNKNOWN_COM_ERROR, ER(ER_UNKNOWN_COM_ERROR), MYF(0));
break;
@@ -1305,8 +1327,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
mysql_reset_thd_for_next_command(thd, opt_userstat_running);
thd->lex->
- select_lex.table_list.link_in_list((uchar*) &table_list,
- (uchar**) &table_list.next_local);
+ select_lex.table_list.link_in_list(&table_list,
+ &table_list.next_local);
thd->lex->add_to_query_tables(&table_list);
/* switch on VIEW optimisation: do not fill temporary tables */
@@ -1448,8 +1470,11 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
SHUTDOWN_DEFAULT is 0. If client is >= 4.1.3, the shutdown level is in
packet[0].
*/
- enum mysql_enum_shutdown_level level=
- (enum mysql_enum_shutdown_level) (uchar) packet[0];
+ enum mysql_enum_shutdown_level level;
+ if (!thd->is_valid_time())
+ level= SHUTDOWN_DEFAULT;
+ else
+ level= (enum mysql_enum_shutdown_level) (uchar) packet[0];
if (level == SHUTDOWN_DEFAULT)
level= SHUTDOWN_WAIT_ALL_BUFFERS; // soon default will be configurable
else if (level != SHUTDOWN_WAIT_ALL_BUFFERS)
@@ -1510,13 +1535,13 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
(sf_malloc_max_memory+1023L)/1024L);
}
#endif
-#ifdef EMBEDDED_LIBRARY
- /* Store the buffer in permanent memory */
- my_ok(thd, 0, 0, buff);
-#else
+#ifndef EMBEDDED_LIBRARY
VOID(my_net_write(net, (uchar*) buff, length));
VOID(net_flush(net));
thd->main_da.disable_status();
+#else
+ /* Store the buffer in permanent memory */
+ my_ok(thd, 0, 0, buff);
#endif
break;
}
@@ -1598,7 +1623,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
thd->transaction.stmt.reset();
-#ifdef WITH_MARIA_STORAGE_ENGINE
+#ifdef WITH_ARIA_STORAGE_ENGINE
ha_maria::implicit_commit(thd, FALSE);
#endif
@@ -1819,7 +1844,7 @@ int prepare_schema_table(THD *thd, LEX *lex, Table_ident *table_ident,
{
DBUG_RETURN(1);
}
- TABLE_LIST *table_list= (TABLE_LIST*) select_lex->table_list.first;
+ TABLE_LIST *table_list= select_lex->table_list.first;
table_list->schema_select_lex= schema_select_lex;
table_list->schema_table_reformed= 1;
DBUG_RETURN(0);
@@ -2015,7 +2040,7 @@ mysql_execute_command(THD *thd)
/* first SELECT_LEX (have special meaning for many of non-SELECTcommands) */
SELECT_LEX *select_lex= &lex->select_lex;
/* first table of first SELECT_LEX */
- TABLE_LIST *first_table= (TABLE_LIST*) select_lex->table_list.first;
+ TABLE_LIST *first_table= select_lex->table_list.first;
/* list of all tables in query */
TABLE_LIST *all_tables;
/* most outer SELECT_LEX_UNIT of query */
@@ -2050,7 +2075,7 @@ mysql_execute_command(THD *thd)
all_tables= lex->query_tables;
/* set context for commands which do not use setup_tables */
select_lex->
- context.resolve_in_table_list_only((TABLE_LIST*)select_lex->
+ context.resolve_in_table_list_only(select_lex->
table_list.first);
/*
@@ -2396,7 +2421,7 @@ mysql_execute_command(THD *thd)
thd->enable_slow_log= opt_log_slow_admin_statements;
thd->query_plan_flags|= QPLAN_ADMIN;
res = mysql_backup_table(thd, first_table);
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
lex->query_tables=all_tables;
break;
}
@@ -2409,7 +2434,7 @@ mysql_execute_command(THD *thd)
thd->enable_slow_log= opt_log_slow_admin_statements;
thd->query_plan_flags|= QPLAN_ADMIN;
res = mysql_restore_table(thd, first_table);
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
lex->query_tables=all_tables;
break;
}
@@ -2703,7 +2728,7 @@ mysql_execute_command(THD *thd)
if (create_info.used_fields & HA_CREATE_USED_UNION)
{
TABLE_LIST *tab;
- for (tab= (TABLE_LIST*) create_info.merge_list.first;
+ for (tab= create_info.merge_list.first;
tab;
tab= tab->next_local)
{
@@ -2717,6 +2742,10 @@ mysql_execute_command(THD *thd)
}
}
+ /* So that CREATE TEMPORARY TABLE gets to binlog at commit/rollback */
+ if (create_info.options & HA_LEX_CREATE_TMP_TABLE)
+ thd->options|= OPTION_KEEP_LOG;
+
/*
select_create is currently not re-execution friendly and
needs to be created for every execution of a PS/SP.
@@ -2876,7 +2905,6 @@ end_with_restore_list:
check_access(thd,INSERT_ACL | CREATE_ACL,select_lex->db,&priv,0,0,
is_schema_db(select_lex->db))||
check_merge_table_access(thd, first_table->db,
- (TABLE_LIST *)
create_info.merge_list.first))
goto error; /* purecov: inspected */
if (check_grant(thd, priv_needed, all_tables, 0, UINT_MAX, 0))
@@ -3013,7 +3041,7 @@ end_with_restore_list:
*/
res= write_bin_log(thd, TRUE, thd->query(), thd->query_length());
}
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
lex->query_tables=all_tables;
break;
}
@@ -3026,7 +3054,7 @@ end_with_restore_list:
thd->enable_slow_log= opt_log_slow_admin_statements;
thd->query_plan_flags|= QPLAN_ADMIN;
res = mysql_check_table(thd, first_table, &lex->check_opt);
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
lex->query_tables=all_tables;
break;
}
@@ -3047,7 +3075,7 @@ end_with_restore_list:
*/
res= write_bin_log(thd, TRUE, thd->query(), thd->query_length());
}
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
lex->query_tables=all_tables;
break;
}
@@ -3060,9 +3088,7 @@ end_with_restore_list:
goto error; /* purecov: inspected */
thd->enable_slow_log= opt_log_slow_admin_statements;
thd->query_plan_flags|= QPLAN_ADMIN;
- res= (specialflag & (SPECIAL_SAFE_MODE | SPECIAL_NO_NEW_FUNC)) ?
- mysql_recreate_table(thd, first_table) :
- mysql_optimize_table(thd, first_table, &lex->check_opt);
+ res= mysql_optimize_table(thd, first_table, &lex->check_opt);
/* ! we write after unlocking the table */
if (!res && !lex->no_write_to_binlog)
{
@@ -3071,7 +3097,7 @@ end_with_restore_list:
*/
res= write_bin_log(thd, TRUE, thd->query(), thd->query_length());
}
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
lex->query_tables=all_tables;
break;
}
@@ -3089,7 +3115,7 @@ end_with_restore_list:
lex->value_list,
select_lex->where,
select_lex->order_list.elements,
- (ORDER *) select_lex->order_list.first,
+ select_lex->order_list.first,
unit->select_limit_cnt,
lex->duplicates, lex->ignore));
/* mysql_update return 2 if we need to switch to multi-update */
@@ -3249,7 +3275,7 @@ end_with_restore_list:
{
/* Skip first table, which is the table we are inserting in */
TABLE_LIST *second_table= first_table->next_local;
- select_lex->table_list.first= (uchar*) second_table;
+ select_lex->table_list.first= second_table;
select_lex->context.table_list=
select_lex->context.first_name_resolution_table= second_table;
res= mysql_insert_select_prepare(thd);
@@ -3280,7 +3306,7 @@ end_with_restore_list:
delete sel_result;
}
/* revert changes for SP */
- select_lex->table_list.first= (uchar*) first_table;
+ select_lex->table_list.first= first_table;
}
/*
@@ -3342,8 +3368,7 @@ end_with_restore_list:
case SQLCOM_DELETE_MULTI:
{
DBUG_ASSERT(first_table == all_tables && first_table != 0);
- TABLE_LIST *aux_tables=
- (TABLE_LIST *)thd->lex->auxiliary_table_list.first;
+ TABLE_LIST *aux_tables= thd->lex->auxiliary_table_list.first;
multi_delete *del_result;
if (!thd->locked_tables &&
@@ -4716,7 +4741,7 @@ create_sp_error:
my_error(ER_XAER_NOTA, MYF(0));
break;
}
- thd->transaction.xid_state.xa_state=XA_ACTIVE;
+ thd->transaction.xid_state.xa_state= XA_ACTIVE;
my_ok(thd);
break;
}
@@ -4736,16 +4761,16 @@ create_sp_error:
my_error(ER_XAER_OUTSIDE, MYF(0));
break;
}
- if (xid_cache_search(thd->lex->xid))
- {
- my_error(ER_XAER_DUPID, MYF(0));
- break;
- }
DBUG_ASSERT(thd->transaction.xid_state.xid.is_null());
- thd->transaction.xid_state.xa_state=XA_ACTIVE;
+ thd->transaction.xid_state.xa_state= XA_ACTIVE;
thd->transaction.xid_state.rm_error= 0;
thd->transaction.xid_state.xid.set(thd->lex->xid);
- xid_cache_insert(&thd->transaction.xid_state);
+ if (xid_cache_insert(&thd->transaction.xid_state))
+ {
+ thd->transaction.xid_state.xa_state= XA_NOTR;
+ thd->transaction.xid_state.xid.null();
+ break;
+ }
thd->transaction.all.modified_non_trans_table= FALSE;
thd->options= ((thd->options & ~(OPTION_KEEP_LOG)) | OPTION_BEGIN);
thd->server_status|= SERVER_STATUS_IN_TRANS;
@@ -4799,6 +4824,16 @@ create_sp_error:
case SQLCOM_XA_COMMIT:
if (!thd->transaction.xid_state.xid.eq(thd->lex->xid))
{
+ /*
+ xid_state.in_thd is always true beside of xa recovery
+ procedure. Note, that there is no race condition here
+ between xid_cache_search and xid_cache_delete, since we're always
+ deleting our own XID (thd->lex->xid == thd->transaction.xid_state.xid).
+ The only case when thd->lex->xid != thd->transaction.xid_state.xid
+ and xid_state->in_thd == 0 is in ha_recover() functionality,
+ which is called before starting client connections, and thus is
+ always single-threaded.
+ */
XID_STATE *xs=xid_cache_search(thd->lex->xid);
if (!xs || xs->in_thd)
my_error(ER_XAER_NOTA, MYF(0));
@@ -5364,7 +5399,7 @@ static bool check_show_access(THD *thd, TABLE_LIST *table)
case SCH_STATISTICS:
{
TABLE_LIST *dst_table;
- dst_table= (TABLE_LIST *) table->schema_select_lex->table_list.first;
+ dst_table= table->schema_select_lex->table_list.first;
DBUG_ASSERT(dst_table);
@@ -5947,13 +5982,13 @@ void mysql_init_multi_delete(LEX *lex)
Parse a query.
@param thd Current thread
- @param inBuf Begining of the query text
+ @param rawbuf Begining of the query text
@param length Length of the query text
@param[out] found_semicolon For multi queries, position of the character of
the next query in the query text.
*/
-void mysql_parse(THD *thd, const char *inBuf, uint length,
+void mysql_parse(THD *thd, char *rawbuf, uint length,
const char ** found_semicolon)
{
DBUG_ENTER("mysql_parse");
@@ -5978,17 +6013,22 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
lex_start(thd);
mysql_reset_thd_for_next_command(thd, opt_userstat_running);
- if (query_cache_send_result_to_client(thd, (char*) inBuf, length) <= 0)
+ if (query_cache_send_result_to_client(thd, rawbuf, length) <= 0)
{
LEX *lex= thd->lex;
sp_cache_flush_obsolete(&thd->sp_proc_cache);
sp_cache_flush_obsolete(&thd->sp_func_cache);
- Parser_state parser_state(thd, inBuf, length);
-
- bool err= parse_sql(thd, & parser_state, NULL);
- *found_semicolon= parser_state.m_lip.found_semicolon;
+ Parser_state parser_state;
+ bool err;
+ if (!(err= parser_state.init(thd, rawbuf, length)))
+ {
+ err= parse_sql(thd, & parser_state, NULL);
+ *found_semicolon= parser_state.m_lip.found_semicolon;
+ }
+ else
+ *found_semicolon= NULL;
if (!err)
{
@@ -6069,20 +6109,23 @@ void mysql_parse(THD *thd, const char *inBuf, uint length,
1 can be ignored
*/
-bool mysql_test_parse_for_slave(THD *thd, char *inBuf, uint length)
+bool mysql_test_parse_for_slave(THD *thd, char *rawbuf, uint length)
{
LEX *lex= thd->lex;
bool error= 0;
DBUG_ENTER("mysql_test_parse_for_slave");
- Parser_state parser_state(thd, inBuf, length);
- lex_start(thd);
- mysql_reset_thd_for_next_command(thd, 0);
+ Parser_state parser_state;
+ if (!(error= parser_state.init(thd, rawbuf, length)))
+ {
+ lex_start(thd);
+ mysql_reset_thd_for_next_command(thd, opt_userstat_running);
- if (!parse_sql(thd, & parser_state, NULL) &&
- all_tables_not_ok(thd,(TABLE_LIST*) lex->select_lex.table_list.first))
- error= 1; /* Ignore question */
- thd->end_statement();
+ if (!parse_sql(thd, & parser_state, NULL) &&
+ all_tables_not_ok(thd, lex->select_lex.table_list.first))
+ error= 1; /* Ignore question */
+ thd->end_statement();
+ }
thd->cleanup_after_query();
DBUG_RETURN(error);
}
@@ -6221,7 +6264,7 @@ add_proc_to_list(THD* thd, Item *item)
*item_ptr= item;
order->item=item_ptr;
order->free_me=0;
- thd->lex->proc_list.link_in_list((uchar*) order,(uchar**) &order->next);
+ thd->lex->proc_list.link_in_list(order, &order->next);
return 0;
}
@@ -6230,7 +6273,7 @@ add_proc_to_list(THD* thd, Item *item)
save order by and tables in own lists.
*/
-bool add_to_list(THD *thd, SQL_LIST &list,Item *item,bool asc)
+bool add_to_list(THD *thd, SQL_I_List<ORDER> &list, Item *item,bool asc)
{
ORDER *order;
DBUG_ENTER("add_to_list");
@@ -6242,7 +6285,7 @@ bool add_to_list(THD *thd, SQL_LIST &list,Item *item,bool asc)
order->free_me=0;
order->used=0;
order->counter_used= 0;
- list.link_in_list((uchar*) order,(uchar**) &order->next);
+ list.link_in_list(order, &order->next);
DBUG_RETURN(0);
}
@@ -6356,7 +6399,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
/* check that used name is unique */
if (lock_type != TL_IGNORE)
{
- TABLE_LIST *first_table= (TABLE_LIST*) table_list.first;
+ TABLE_LIST *first_table= table_list.first;
if (lex->sql_command == SQLCOM_CREATE_VIEW)
first_table= first_table ? first_table->next_local : NULL;
for (TABLE_LIST *tables= first_table ;
@@ -6398,7 +6441,7 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
previous table reference to 'ptr'. Here we also add one element to the
list 'table_list'.
*/
- table_list.link_in_list((uchar*) ptr, (uchar**) &ptr->next_local);
+ table_list.link_in_list(ptr, &ptr->next_local);
ptr->next_name_resolution_table= NULL;
/* Link table in global list (all used tables) */
lex->add_to_query_tables(ptr);
@@ -6631,7 +6674,7 @@ void st_select_lex::set_lock_for_tables(thr_lock_type lock_type)
DBUG_ENTER("set_lock_for_tables");
DBUG_PRINT("enter", ("lock_type: %d for_update: %d", lock_type,
for_update));
- for (TABLE_LIST *tables= (TABLE_LIST*) table_list.first;
+ for (TABLE_LIST *tables= table_list.first;
tables;
tables= tables->next_local)
{
@@ -7358,8 +7401,7 @@ bool multi_update_precheck(THD *thd, TABLE_LIST *tables)
bool multi_delete_precheck(THD *thd, TABLE_LIST *tables)
{
SELECT_LEX *select_lex= &thd->lex->select_lex;
- TABLE_LIST *aux_tables=
- (TABLE_LIST *)thd->lex->auxiliary_table_list.first;
+ TABLE_LIST *aux_tables= thd->lex->auxiliary_table_list.first;
TABLE_LIST **save_query_tables_own_last= thd->lex->query_tables_own_last;
DBUG_ENTER("multi_delete_precheck");
@@ -7405,13 +7447,13 @@ bool multi_delete_precheck(THD *thd, TABLE_LIST *tables)
bool multi_delete_set_locks_and_link_aux_tables(LEX *lex)
{
- TABLE_LIST *tables= (TABLE_LIST*)lex->select_lex.table_list.first;
+ TABLE_LIST *tables= lex->select_lex.table_list.first;
TABLE_LIST *target_tbl;
DBUG_ENTER("multi_delete_set_locks_and_link_aux_tables");
lex->table_count= 0;
- for (target_tbl= (TABLE_LIST *)lex->auxiliary_table_list.first;
+ for (target_tbl= lex->auxiliary_table_list.first;
target_tbl; target_tbl= target_tbl->next_local)
{
lex->table_count++;
@@ -7581,8 +7623,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables,
&create_table->grant.privilege, 0, 0,
test(create_table->schema_table)) ||
check_merge_table_access(thd, create_table->db,
- (TABLE_LIST *)
- lex->create_info.merge_list.first))
+ lex->create_info.merge_list.first))
goto err;
if (want_priv != CREATE_TMP_ACL &&
check_grant(thd, want_priv, create_table, 0, 1, 0))
@@ -7703,7 +7744,7 @@ LEX_USER *create_default_definer(THD *thd)
if (! (definer= (LEX_USER*) thd->alloc(sizeof(LEX_USER))))
return 0;
- get_default_definer(thd, definer);
+ thd->get_definer(definer);
return definer;
}
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index 65a58ba2f5a..551f19694ef 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -1905,7 +1905,7 @@ static int add_int(File fptr, longlong number)
static int add_uint(File fptr, ulonglong number)
{
char buff[32];
- longlong2str(number, buff, 10);
+ longlong2str(number, buff, 10, 1);
return add_string(fptr, buff);
}
@@ -3877,7 +3877,7 @@ void get_partition_set(const TABLE *table, uchar *buf, const uint index,
*/
bool mysql_unpack_partition(THD *thd,
- const char *part_buf, uint part_info_len,
+ char *part_buf, uint part_info_len,
const char *part_state, uint part_state_len,
TABLE* table, bool is_create_table_ind,
handlerton *default_db_type,
@@ -3893,7 +3893,9 @@ bool mysql_unpack_partition(THD *thd,
thd->lex= &lex;
thd->variables.character_set_client= system_charset_info;
- Parser_state parser_state(thd, part_buf, part_info_len);
+ Parser_state parser_state;
+ if (parser_state.init(thd, part_buf, part_info_len))
+ goto end;
lex_start(thd);
*work_part_info_used= false;
@@ -5956,32 +5958,6 @@ static void alter_partition_lock_handling(ALTER_PARTITION_PARAM_TYPE *lpt)
}
}
-/*
- Unlock and close table before renaming and dropping partitions
- SYNOPSIS
- alter_close_tables()
- lpt Struct carrying parameters
- RETURN VALUES
- 0
-*/
-
-static int alter_close_tables(ALTER_PARTITION_PARAM_TYPE *lpt)
-{
- THD *thd= lpt->thd;
- const char *db= lpt->db;
- const char *table_name= lpt->table_name;
- DBUG_ENTER("alter_close_tables");
- /*
- We need to also unlock tables and close all handlers.
- We set lock to zero to ensure we don't do this twice
- and we set db_stat to zero to ensure we don't close twice.
- */
- pthread_mutex_lock(&LOCK_open);
- close_data_files_and_morph_locks(thd, db, table_name);
- pthread_mutex_unlock(&LOCK_open);
- DBUG_RETURN(0);
-}
-
/*
Handle errors for ALTER TABLE for partitioning
@@ -6279,9 +6255,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table,
write_log_drop_partition(lpt) ||
ERROR_INJECT_CRASH("crash_drop_partition_3") ||
(not_completed= FALSE) ||
- abort_and_upgrade_lock(lpt) || /* Always returns 0 */
- ERROR_INJECT_CRASH("crash_drop_partition_4") ||
- alter_close_tables(lpt) ||
+ abort_and_upgrade_lock_and_close_table(lpt) ||
ERROR_INJECT_CRASH("crash_drop_partition_5") ||
((!thd->lex->no_write_to_binlog) &&
(write_bin_log(thd, FALSE,
@@ -6346,9 +6320,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table,
ERROR_INJECT_CRASH("crash_add_partition_2") ||
mysql_change_partitions(lpt) ||
ERROR_INJECT_CRASH("crash_add_partition_3") ||
- abort_and_upgrade_lock(lpt) || /* Always returns 0 */
- ERROR_INJECT_CRASH("crash_add_partition_4") ||
- alter_close_tables(lpt) ||
+ abort_and_upgrade_lock_and_close_table(lpt) ||
ERROR_INJECT_CRASH("crash_add_partition_5") ||
((!thd->lex->no_write_to_binlog) &&
(write_bin_log(thd, FALSE,
@@ -6436,9 +6408,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table,
write_log_final_change_partition(lpt) ||
ERROR_INJECT_CRASH("crash_change_partition_4") ||
(not_completed= FALSE) ||
- abort_and_upgrade_lock(lpt) || /* Always returns 0 */
- ERROR_INJECT_CRASH("crash_change_partition_5") ||
- alter_close_tables(lpt) ||
+ abort_and_upgrade_lock_and_close_table(lpt) ||
ERROR_INJECT_CRASH("crash_change_partition_6") ||
((!thd->lex->no_write_to_binlog) &&
(write_bin_log(thd, FALSE,
diff --git a/sql/sql_partition.h b/sql/sql_partition.h
index b9efbf25a00..02a5ead1117 100644
--- a/sql/sql_partition.h
+++ b/sql/sql_partition.h
@@ -78,7 +78,7 @@ void get_full_part_id_from_key(const TABLE *table, uchar *buf,
KEY *key_info,
const key_range *key_spec,
part_id_range *part_spec);
-bool mysql_unpack_partition(THD *thd, const char *part_buf,
+bool mysql_unpack_partition(THD *thd, char *part_buf,
uint part_info_len,
const char *part_state, uint part_state_len,
TABLE *table, bool is_create_table_ind,
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index 658688d7159..dd908e1b60e 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -37,6 +37,18 @@ static TYPELIB global_plugin_typelib=
char *opt_plugin_load= NULL;
char *opt_plugin_dir_ptr;
char opt_plugin_dir[FN_REFLEN];
+uint plugin_maturity;
+
+/*
+ not really needed now, this map will become essential when we add more
+ maturity levels. We cannot change existing maturity constants,
+ so the next value - even if it will be MariaDB_PLUGIN_MATURITY_VERY_BUGGY -
+ will inevitably be larger than MariaDB_PLUGIN_MATURITY_STABLE.
+ To be able to compare them we use this mapping array
+*/
+uint plugin_maturity_map[]=
+{ 0, 1, 2, 3, 4, 5, 6 };
+
/*
When you ad a new plugin type, add both a string and make sure that the
init and deinit array are correctly updated.
@@ -460,32 +472,32 @@ static my_bool read_mysql_plugin_info(struct st_plugin_dl *plugin_dl,
i++)
{
- cur->type= old->type;
- cur->info= old->info;
- cur->name= old->name;
- cur->author= old->author;
- cur->descr= old->descr;
- cur->license= old->license;
- cur->init= old->init;
- cur->deinit= old->deinit;
- cur->version= old->version;
- cur->status_vars= old->status_vars;
- cur->system_vars= old->system_vars;
+ cur[i].type= old->type;
+ cur[i].info= old->info;
+ cur[i].name= old->name;
+ cur[i].author= old->author;
+ cur[i].descr= old->descr;
+ cur[i].license= old->license;
+ cur[i].init= old->init;
+ cur[i].deinit= old->deinit;
+ cur[i].version= old->version;
+ cur[i].status_vars= old->status_vars;
+ cur[i].system_vars= old->system_vars;
/*
Something like this should be added to process
new mysql plugin versions:
if (plugin_dl->mysqlversion > 0x0101)
{
- cur->newfield= CONSTANT_MEANS_UNKNOWN;
+ cur[i].newfield= CONSTANT_MEANS_UNKNOWN;
}
else
{
- cur->newfield= old->newfield;
+ cur[i].newfield= old->newfield;
}
*/
/* Maria only fields */
- cur->version_info= "Unknown";
- cur->maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN;
+ cur[i].version_info= "Unknown";
+ cur[i].maturity= MariaDB_PLUGIN_MATURITY_UNKNOWN;
}
plugin_dl->allocated= true;
plugin_dl->plugins= (struct st_maria_plugin *)cur;
@@ -953,6 +965,17 @@ static bool plugin_add(MEM_ROOT *tmp_root,
report_error(report, ER_CANT_OPEN_LIBRARY, dl->str, 0, buf);
goto err;
}
+ if (plugin_maturity_map[plugin->maturity] < plugin_maturity)
+ {
+ char buf[256];
+ strxnmov(buf, sizeof(buf) - 1, "Loading of ",
+ plugin_maturity_names[plugin->maturity],
+ " plugins is prohibited by --plugin-maturity=",
+ plugin_maturity_names[plugin_maturity],
+ NullS);
+ report_error(report, ER_CANT_OPEN_LIBRARY, dl->str, 0, buf);
+ goto err;
+ }
tmp.plugin= plugin;
tmp.name.str= (char *)plugin->name;
tmp.name.length= name_len;
@@ -1598,7 +1621,12 @@ static void plugin_load(MEM_ROOT *tmp_root, int *argc, char **argv)
goto end;
}
table= tables.table;
- init_read_record(&read_record_info, new_thd, table, NULL, 1, 0, FALSE);
+ if (init_read_record(&read_record_info, new_thd, table, NULL, 1, 0, FALSE))
+ {
+ sql_print_error("Could not initialize init_read_record; Plugins not "
+ "loaded");
+ goto end;
+ }
table->use_all_columns();
/*
there're no other threads running yet, so we don't need a mutex.
@@ -2112,10 +2140,6 @@ typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_uint_t, uint);
typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulong_t, ulong);
typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulonglong_t, ulonglong);
-#define SET_PLUGIN_VAR_RESOLVE(opt)\
- *(mysql_sys_var_ptr_p*)&((opt)->resolve)= mysql_sys_var_ptr
-typedef uchar *(*mysql_sys_var_ptr_p)(void* a_thd, int offset);
-
/****************************************************************************
default variable data check and update functions
@@ -2644,11 +2668,49 @@ static uchar *intern_sys_var_ptr(THD* thd, int offset, bool global_lock)
return (uchar*)thd->variables.dynamic_variables_ptr + offset;
}
-static uchar *mysql_sys_var_ptr(void* a_thd, int offset)
+
+/**
+ For correctness and simplicity's sake, a pointer to a function
+ must be compatible with pointed-to type, that is, the return and
+ parameters types must be the same. Thus, a callback function is
+ defined for each scalar type. The functions are assigned in
+ construct_options to their respective types.
+*/
+
+static char *mysql_sys_var_char(THD* thd, int offset)
+{
+ return (char *) intern_sys_var_ptr(thd, offset, true);
+}
+
+static int *mysql_sys_var_int(THD* thd, int offset)
+{
+ return (int *) intern_sys_var_ptr(thd, offset, true);
+}
+
+static long *mysql_sys_var_long(THD* thd, int offset)
+{
+ return (long *) intern_sys_var_ptr(thd, offset, true);
+}
+
+static unsigned long *mysql_sys_var_ulong(THD* thd, int offset)
{
- return intern_sys_var_ptr((THD *)a_thd, offset, true);
+ return (unsigned long *) intern_sys_var_ptr(thd, offset, true);
}
+static long long *mysql_sys_var_longlong(THD* thd, int offset)
+{
+ return (long long *) intern_sys_var_ptr(thd, offset, true);
+}
+
+static unsigned long long *mysql_sys_var_ulonglong(THD* thd, int offset)
+{
+ return (unsigned long long *) intern_sys_var_ptr(thd, offset, true);
+}
+
+static char **mysql_sys_var_str(THD* thd, int offset)
+{
+ return (char **) intern_sys_var_ptr(thd, offset, true);
+}
void plugin_thdvar_init(THD *thd)
{
@@ -3219,25 +3281,25 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
continue;
switch (opt->flags & PLUGIN_VAR_TYPEMASK) {
case PLUGIN_VAR_BOOL:
- SET_PLUGIN_VAR_RESOLVE((thdvar_bool_t *) opt);
+ ((thdvar_bool_t *) opt)->resolve= mysql_sys_var_char;
break;
case PLUGIN_VAR_INT:
- SET_PLUGIN_VAR_RESOLVE((thdvar_int_t *) opt);
+ ((thdvar_int_t *) opt)->resolve= mysql_sys_var_int;
break;
case PLUGIN_VAR_LONG:
- SET_PLUGIN_VAR_RESOLVE((thdvar_long_t *) opt);
+ ((thdvar_long_t *) opt)->resolve= mysql_sys_var_long;
break;
case PLUGIN_VAR_LONGLONG:
- SET_PLUGIN_VAR_RESOLVE((thdvar_longlong_t *) opt);
+ ((thdvar_longlong_t *) opt)->resolve= mysql_sys_var_longlong;
break;
case PLUGIN_VAR_STR:
- SET_PLUGIN_VAR_RESOLVE((thdvar_str_t *) opt);
+ ((thdvar_str_t *) opt)->resolve= mysql_sys_var_str;
break;
case PLUGIN_VAR_ENUM:
- SET_PLUGIN_VAR_RESOLVE((thdvar_enum_t *) opt);
+ ((thdvar_enum_t *) opt)->resolve= mysql_sys_var_ulong;
break;
case PLUGIN_VAR_SET:
- SET_PLUGIN_VAR_RESOLVE((thdvar_set_t *) opt);
+ ((thdvar_set_t *) opt)->resolve= mysql_sys_var_ulonglong;
break;
default:
sql_print_error("Unknown variable type code 0x%x in plugin '%s'.",
@@ -3589,8 +3651,7 @@ void my_print_help_inc_plugins(my_option *main_options, uint size)
{
p= *dynamic_element(&plugin_array, idx, struct st_plugin_int **);
- if (!p->plugin->system_vars ||
- !(opt= construct_help_options(&mem_root, p)))
+ if (!(opt= construct_help_options(&mem_root, p)))
continue;
/* Only options with a non-NULL comment are displayed in help text */
diff --git a/sql/sql_plugin.h b/sql/sql_plugin.h
index 5822b096fa0..149b7e0cbb1 100644
--- a/sql/sql_plugin.h
+++ b/sql/sql_plugin.h
@@ -107,6 +107,9 @@ extern char *opt_plugin_load;
extern char *opt_plugin_dir_ptr;
extern char opt_plugin_dir[FN_REFLEN];
extern const LEX_STRING plugin_type_names[];
+extern uint plugin_maturity;
+extern TYPELIB plugin_maturity_values;
+extern const char *plugin_maturity_names[];
extern int plugin_init(int *argc, char **argv, int init_flags);
extern void plugin_shutdown(void);
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index 863e7a36aab..7185b8ffdda 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -263,8 +263,11 @@ static bool send_prep_stmt(Prepared_statement *stmt, uint columns)
&stmt->lex->param_list,
Protocol::SEND_EOF);
}
- /* Flag that a response has already been sent */
- thd->main_da.disable_status();
+
+ if (!error)
+ /* Flag that a response has already been sent */
+ thd->main_da.disable_status();
+
DBUG_RETURN(error);
}
#else
@@ -702,6 +705,19 @@ static void setup_one_conversion_function(THD *thd, Item_param *param,
}
#ifndef EMBEDDED_LIBRARY
+
+/**
+ Check whether this parameter data type is compatible with long data.
+ Used to detect whether a long data stream has been supplied to a
+ incompatible data type.
+*/
+inline bool is_param_long_data_type(Item_param *param)
+{
+ return ((param->param_type >= MYSQL_TYPE_TINY_BLOB) &&
+ (param->param_type <= MYSQL_TYPE_STRING));
+}
+
+
/**
Routines to assign parameters from data supplied by the client.
@@ -771,6 +787,14 @@ static bool insert_params_with_log(Prepared_statement *stmt, uchar *null_array,
DBUG_RETURN(1);
}
}
+ /*
+ A long data stream was supplied for this parameter marker.
+ This was done after prepare, prior to providing a placeholder
+ type (the types are supplied at execute). Check that the
+ supplied type of placeholder can accept a data stream.
+ */
+ else if (! is_param_long_data_type(param))
+ DBUG_RETURN(1);
res= param->query_val_str(&str);
if (param->convert_str_value(thd))
DBUG_RETURN(1); /* out of memory */
@@ -809,6 +833,14 @@ static bool insert_params(Prepared_statement *stmt, uchar *null_array,
DBUG_RETURN(1);
}
}
+ /*
+ A long data stream was supplied for this parameter marker.
+ This was done after prepare, prior to providing a placeholder
+ type (the types are supplied at execute). Check that the
+ supplied type of placeholder can accept a data stream.
+ */
+ else if (! is_param_long_data_type(param))
+ DBUG_RETURN(1);
if (param->convert_str_value(stmt->thd))
DBUG_RETURN(1); /* out of memory */
}
@@ -1242,7 +1274,7 @@ static int mysql_test_update(Prepared_statement *stmt,
if (mysql_prepare_update(thd, table_list, &select->where,
select->order_list.elements,
- (ORDER *) select->order_list.first))
+ select->order_list.first))
goto error;
#ifndef NO_EMBEDDED_ACCESS_CHECKS
@@ -1751,11 +1783,10 @@ error:
static int mysql_insert_select_prepare_tester(THD *thd)
{
SELECT_LEX *first_select= &thd->lex->select_lex;
- TABLE_LIST *second_table= ((TABLE_LIST*)first_select->table_list.first)->
- next_local;
+ TABLE_LIST *second_table= first_select->table_list.first->next_local;
/* Skip first table, which is the table we are inserting in */
- first_select->table_list.first= (uchar *) second_table;
+ first_select->table_list.first= second_table;
thd->lex->select_lex.context.table_list=
thd->lex->select_lex.context.first_name_resolution_table= second_table;
@@ -1792,7 +1823,7 @@ static bool mysql_test_insert_select(Prepared_statement *stmt,
return 1;
/* store it, because mysql_insert_select_prepare_tester change it */
- first_local_table= (TABLE_LIST *)lex->select_lex.table_list.first;
+ first_local_table= lex->select_lex.table_list.first;
DBUG_ASSERT(first_local_table != 0);
res=
@@ -1800,7 +1831,7 @@ static bool mysql_test_insert_select(Prepared_statement *stmt,
&mysql_insert_select_prepare_tester,
OPTION_SETUP_TABLES_DONE);
/* revert changes made by mysql_insert_select_prepare_tester */
- lex->select_lex.table_list.first= (uchar*) first_local_table;
+ lex->select_lex.table_list.first= first_local_table;
return res;
}
@@ -2158,7 +2189,7 @@ static const char *get_dynamic_sql_string(LEX *lex, uint *query_len)
lex->prepared_stmt_code.length))
&& entry->value)
{
- my_bool is_var_null;
+ bool is_var_null;
var_value= entry->val_str(&is_var_null, &str, NOT_FIXED_DEC);
/*
NULL value of variable checked early as entry->value so here
@@ -2344,10 +2375,10 @@ void reinit_stmt_before_use(THD *thd, LEX *lex)
DBUG_ASSERT(sl->join == 0);
ORDER *order;
/* Fix GROUP list */
- for (order= (ORDER *)sl->group_list.first; order; order= order->next)
+ for (order= sl->group_list.first; order; order= order->next)
order->item= &order->item_ptr;
/* Fix ORDER list */
- for (order= (ORDER *)sl->order_list.first; order; order= order->next)
+ for (order= sl->order_list.first; order; order= order->next)
order->item= &order->item_ptr;
/* clear the no_error flag for INSERT/UPDATE IGNORE */
@@ -2384,7 +2415,7 @@ void reinit_stmt_before_use(THD *thd, LEX *lex)
(multi-delete). We do a full clean up, although at the moment all we
need to clean in the tables of MULTI-DELETE list is 'table' member.
*/
- for (TABLE_LIST *tables= (TABLE_LIST*) lex->auxiliary_table_list.first;
+ for (TABLE_LIST *tables= lex->auxiliary_table_list.first;
tables;
tables= tables->next_global)
{
@@ -3039,13 +3070,21 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len)
old_stmt_arena= thd->stmt_arena;
thd->stmt_arena= this;
- Parser_state parser_state(thd, thd->query(), thd->query_length());
+ Parser_state parser_state;
+ if (parser_state.init(thd, thd->query(), thd->query_length()))
+ {
+ thd->restore_backup_statement(this, &stmt_backup);
+ thd->restore_active_arena(this, &stmt_backup);
+ thd->stmt_arena= old_stmt_arena;
+ DBUG_RETURN(TRUE);
+ }
+
parser_state.m_lip.stmt_prepare_mode= TRUE;
lex_start(thd);
error= parse_sql(thd, & parser_state, NULL) ||
- thd->is_error() ||
- init_param_array(this);
+ thd->is_error() ||
+ init_param_array(this);
lex->set_trg_event_type_for_tables();
@@ -3301,7 +3340,7 @@ reexecute:
bool
Prepared_statement::reprepare()
{
- char saved_cur_db_name_buf[NAME_LEN+1];
+ char saved_cur_db_name_buf[SAFE_NAME_LEN+1];
LEX_STRING saved_cur_db_name=
{ saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) };
LEX_STRING stmt_db_name= { db, db_length };
@@ -3462,7 +3501,7 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor)
Query_arena *old_stmt_arena;
bool error= TRUE;
- char saved_cur_db_name_buf[NAME_LEN+1];
+ char saved_cur_db_name_buf[SAFE_NAME_LEN+1];
LEX_STRING saved_cur_db_name=
{ saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) };
bool cur_db_changed;
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index 7772b4d1ed2..95e48c531be 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -218,8 +218,7 @@ bool log_in_use(const char* log_name)
if ((linfo = tmp->current_linfo))
{
pthread_mutex_lock(&linfo->lock);
- result = !bcmp((uchar*) log_name, (uchar*) linfo->log_file_name,
- log_name_len);
+ result = !memcmp(log_name, linfo->log_file_name, log_name_len);
pthread_mutex_unlock(&linfo->lock);
if (result)
break;
@@ -357,6 +356,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos,
#ifndef DBUG_OFF
int left_events = max_binlog_dump_events;
#endif
+ int old_max_allowed_packet= thd->variables.max_allowed_packet;
DBUG_ENTER("mysql_binlog_send");
DBUG_PRINT("enter",("log_ident: '%s' pos: %ld", log_ident, (long) pos));
@@ -762,6 +762,7 @@ end:
pthread_mutex_lock(&LOCK_thread_count);
thd->current_linfo = 0;
pthread_mutex_unlock(&LOCK_thread_count);
+ thd->variables.max_allowed_packet= old_max_allowed_packet;
DBUG_VOID_RETURN;
err:
@@ -779,6 +780,7 @@ err:
pthread_mutex_unlock(&LOCK_thread_count);
if (file >= 0)
(void) my_close(file, MYF(MY_WME));
+ thd->variables.max_allowed_packet= old_max_allowed_packet;
my_message(my_errno, errmsg, MYF(0));
DBUG_VOID_RETURN;
@@ -1279,7 +1281,7 @@ bool change_master(THD* thd, Master_info* mi)
Relay log's IO_CACHE may not be inited, if rli->inited==0 (server was never
a slave before).
*/
- if (flush_master_info(mi, 0))
+ if (flush_master_info(mi, FALSE, FALSE))
{
my_error(ER_RELAY_LOG_INIT, MYF(0), "Failed to flush master info file");
unlock_slave_threads(mi);
@@ -1419,6 +1421,7 @@ bool mysql_show_binlog_events(THD* thd)
bool ret = TRUE;
IO_CACHE log;
File file = -1;
+ int old_max_allowed_packet= thd->variables.max_allowed_packet;
DBUG_ENTER("mysql_show_binlog_events");
Log_event::init_show_field_list(&field_list);
@@ -1557,6 +1560,7 @@ err:
pthread_mutex_lock(&LOCK_thread_count);
thd->current_linfo = 0;
pthread_mutex_unlock(&LOCK_thread_count);
+ thd->variables.max_allowed_packet= old_max_allowed_packet;
DBUG_RETURN(ret);
}
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 09d8be97eb4..d2a72bcb86b 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -38,6 +38,12 @@
#include <my_bit.h>
#include <hash.h>
#include <ft_global.h>
+//#if defined(WITH_ARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
+//#include "../storage/maria/ha_maria.h"
+//#define TMP_ENGINE_HTON maria_hton
+//#else
+//#define TMP_ENGINE_HTON myisam_hton
+//#endif
const char *join_type_str[]={ "UNKNOWN","system","const","eq_ref","ref",
"MAYBE_REF","ALL","range","index","fulltext",
@@ -262,15 +268,15 @@ bool handle_select(THD *thd, LEX *lex, select_result *result,
setup_tables_done_option changed for next rexecution
*/
res= mysql_select(thd, &select_lex->ref_pointer_array,
- (TABLE_LIST*) select_lex->table_list.first,
+ select_lex->table_list.first,
select_lex->with_wild, select_lex->item_list,
select_lex->where,
select_lex->order_list.elements +
select_lex->group_list.elements,
- (ORDER*) select_lex->order_list.first,
- (ORDER*) select_lex->group_list.first,
+ select_lex->order_list.first,
+ select_lex->group_list.first,
select_lex->having,
- (ORDER*) lex->proc_list.first,
+ lex->proc_list.first,
select_lex->options | thd->options |
setup_tables_done_option,
result, unit, select_lex);
@@ -561,13 +567,21 @@ JOIN::prepare(Item ***rref_pointer_array,
{
Item *item= *ord->item;
/*
- Disregard sort order if there's only "{VAR}CHAR(0) NOT NULL" fields
- there. Such fields don't contain any data to sort.
+ Disregard sort order if there's only
+ zero length NOT NULL fields (e.g. {VAR}CHAR(0) NOT NULL") or
+ zero length NOT NULL string functions there.
+ Such tuples don't contain any data to sort.
*/
if (!real_order &&
- (item->type() != Item::FIELD_ITEM ||
- ((Item_field *) item)->field->maybe_null() ||
- ((Item_field *) item)->field->sort_length()))
+ /* Not a zero length NOT NULL field */
+ ((item->type() != Item::FIELD_ITEM ||
+ ((Item_field *) item)->field->maybe_null() ||
+ ((Item_field *) item)->field->sort_length()) &&
+ /* AND not a zero length NOT NULL string function. */
+ (item->type() != Item::FUNC_ITEM ||
+ item->maybe_null ||
+ item->result_type() != STRING_RESULT ||
+ item->max_length)))
real_order= TRUE;
if (item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM)
@@ -1038,6 +1052,30 @@ JOIN::optimize()
{
conds=new Item_int((longlong) 0,1); // Always false
}
+
+ /*
+ It's necessary to check const part of HAVING cond as there is a
+ chance that some cond parts may become const items after
+ make_join_statistics() (for example when Item is a reference to
+ cost table field from outer join).
+
+ This check is performed only for those conditions which do not use
+ aggregate functions. In such case temporary table may not be used
+ and const condition elements may be lost during further having
+ condition transformation in JOIN::exec.
+ */
+ if (having && const_table_map && !having->with_sum_func)
+ {
+ having->update_used_tables();
+ having= remove_eq_conds(thd, having, &having_value);
+ if (having_value == Item::COND_FALSE)
+ {
+ having= new Item_int((longlong) 0,1);
+ zero_result_cause= "Impossible HAVING noticed after reading const tables";
+ DBUG_RETURN(0);
+ }
+ }
+
if (make_join_select(this, select, conds))
{
zero_result_cause=
@@ -1664,6 +1702,16 @@ JOIN::reinit()
func->clear();
}
+ if (no_rows_in_result_called)
+ {
+ /* Reset effect of possible no_rows_in_result() */
+ List_iterator_fast<Item> it(fields_list);
+ Item *item;
+
+ no_rows_in_result_called= 0;
+ while ((item= it++))
+ item->restore_to_before_no_rows_in_result();
+ }
DBUG_RETURN(0);
}
@@ -2755,15 +2803,29 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables_arg, COND *conds,
as well as allow us to catch illegal cross references/
Warshall's algorithm is used to build the transitive closure.
As we use bitmaps to represent the relation the complexity
- of the algorithm is O((number of tables)^2).
+ of the algorithm is O((number of tables)^2).
+
+ The classic form of the Warshall's algorithm would look like:
+ for (i= 0; i < table_count; i++)
+ {
+ for (j= 0; j < table_count; j++)
+ {
+ for (k= 0; k < table_count; k++)
+ {
+ if (bitmap_is_set(stat[j].dependent, i) &&
+ bitmap_is_set(stat[i].dependent, k))
+ bitmap_set_bit(stat[j].dependent, k);
+ }
+ }
*/
- for (i= 0, s= stat ; i < table_count ; i++, s++)
+
+ for (s= stat ; s < stat_end ; s++)
{
- for (uint j= 0 ; j < table_count ; j++)
+ table= s->table;
+ for (JOIN_TAB *t= stat ; t < stat_end ; t++)
{
- table= stat[j].table;
- if (s->dependent & table->map)
- s->dependent |= table->reginfo.join_tab->dependent;
+ if (t->dependent & table->map)
+ t->dependent |= table->reginfo.join_tab->dependent;
}
if (outer_join & s->table->map)
s->table->maybe_null= 1;
@@ -2926,8 +2988,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables_arg, COND *conds,
!table->fulltext_searched &&
(!embedding || (embedding->sj_on_expr && !embedding->embedding)))
{
- if ((table->key_info[key].flags & (HA_NOSAME | HA_END_SPACE_KEY))
- == HA_NOSAME)
+ if (table->key_info[key].flags & HA_NOSAME)
{
if (const_ref == eq_part)
{ // Found everything for ref.
@@ -6154,8 +6215,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
DBUG_RETURN(0);
if (j->type == JT_CONST)
j->table->const_table= 1;
- else if (((keyinfo->flags & (HA_NOSAME | HA_NULL_PART_KEY |
- HA_END_SPACE_KEY)) != HA_NOSAME) ||
+ else if (((keyinfo->flags & (HA_NOSAME | HA_NULL_PART_KEY)) != HA_NOSAME) ||
keyparts != keyinfo->key_parts || null_ref_key)
{
/* Must read with repeat */
@@ -6962,6 +7022,9 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
if (tmp_cond)
{
JOIN_TAB *cond_tab= tab < first_inner_tab ? first_inner_tab : tab;
+ Item **sel_cond_ref= tab < first_inner_tab ?
+ &first_inner_tab->on_precond :
+ &tab->select_cond;
/*
First add the guards for match variables of
all embedding outer join operations.
@@ -6984,15 +7047,15 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
tmp_cond->quick_fix_field();
/* Add the predicate to other pushed down predicates */
DBUG_PRINT("info", ("Item_cond_and"));
- cond_tab->select_cond= !cond_tab->select_cond ? tmp_cond :
- new Item_cond_and(cond_tab->select_cond,
- tmp_cond);
+ *sel_cond_ref= !(*sel_cond_ref) ?
+ tmp_cond :
+ new Item_cond_and(*sel_cond_ref, tmp_cond);
DBUG_PRINT("info", ("Item_cond_and 0x%lx",
- (ulong)cond_tab->select_cond));
- if (!cond_tab->select_cond)
- DBUG_RETURN(1);
- cond_tab->select_cond->update_used_tables();
- cond_tab->select_cond->quick_fix_field();
+ (ulong)(*sel_cond_ref)));
+ if (!(*sel_cond_ref))
+ DBUG_RETURN(1);
+ (*sel_cond_ref)->update_used_tables();
+ (*sel_cond_ref)->quick_fix_field();
if (cond_tab->select)
cond_tab->select->cond= cond_tab->select_cond;
}
@@ -8126,8 +8189,6 @@ eq_ref_table(JOIN *join, ORDER *start_order, JOIN_TAB *tab)
static bool
only_eq_ref_tables(JOIN *join,ORDER *order,table_map tables)
{
- if (specialflag & SPECIAL_SAFE_MODE)
- return 0; // skip this optimize /* purecov: inspected */
tables&= ~PSEUDO_TABLE_BITS;
for (JOIN_TAB **tab=join->map2table ; tables ; tab++, tables>>=1)
{
@@ -8248,7 +8309,8 @@ remove_const(JOIN *join,ORDER *first_order, COND *cond,
*simple_order=0; // Must do a temp table to sort
else if (!(order_tables & not_const_tables))
{
- if (order->item[0]->with_subselect)
+ if (order->item[0]->with_subselect &&
+ !(join->select_lex->options & SELECT_DESCRIBE))
order->item[0]->val_str(&order->item[0]->str_value);
DBUG_PRINT("info",("removing: %s", order->item[0]->full_name()));
continue; // skip const item
@@ -9791,6 +9853,7 @@ simplify_joins(JOIN *join, List<TABLE_LIST> *join_list, COND *conds, bool top,
NESTED_JOIN *nested_join;
TABLE_LIST *prev_table= 0;
List_iterator<TABLE_LIST> li(*join_list);
+ bool straight_join= test(join->select_options & SELECT_STRAIGHT_JOIN);
DBUG_ENTER("simplify_joins");
/*
@@ -9904,7 +9967,7 @@ simplify_joins(JOIN *join, List<TABLE_LIST> *join_list, COND *conds, bool top,
if (prev_table)
{
/* The order of tables is reverse: prev_table follows table */
- if (prev_table->straight)
+ if (prev_table->straight || straight_join)
prev_table->dep_tables|= used_tables;
if (prev_table->on_expr)
{
@@ -10177,28 +10240,31 @@ static bool check_interleaving_with_nj(JOIN_TAB *next_tab)
Do update counters for "pairs of brackets" that we've left (marked as
X,Y,Z in the above picture)
*/
- for (;next_emb; next_emb= next_emb->embedding)
+ for (;next_emb && next_emb != join->emb_sjm_nest; next_emb= next_emb->embedding)
{
- next_emb->nested_join->counter++;
- if (next_emb->nested_join->counter == 1)
+ if (!next_emb->sj_on_expr)
{
- /*
- next_emb is the first table inside a nested join we've "entered". In
- the picture above, we're looking at the 'X' bracket. Don't exit yet as
- X bracket might have Y pair bracket.
+ next_emb->nested_join->counter++;
+ if (next_emb->nested_join->counter == 1)
+ {
+ /*
+ next_emb is the first table inside a nested join we've "entered". In
+ the picture above, we're looking at the 'X' bracket. Don't exit yet as
+ X bracket might have Y pair bracket.
+ */
+ join->cur_embedding_map |= next_emb->nested_join->nj_map;
+ }
+
+ if (next_emb->nested_join->n_tables !=
+ next_emb->nested_join->counter)
+ break;
+
+ /*
+ We're currently at Y or Z-bracket as depicted in the above picture.
+ Mark that we've left it and continue walking up the brackets hierarchy.
*/
- join->cur_embedding_map |= next_emb->nested_join->nj_map;
+ join->cur_embedding_map &= ~next_emb->nested_join->nj_map;
}
-
- if (next_emb->nested_join->n_tables !=
- next_emb->nested_join->counter)
- break;
-
- /*
- We're currently at Y or Z-bracket as depicted in the above picture.
- Mark that we've left it and continue walking up the brackets hierarchy.
- */
- join->cur_embedding_map &= ~next_emb->nested_join->nj_map;
}
return FALSE;
}
@@ -10207,6 +10273,46 @@ static bool check_interleaving_with_nj(JOIN_TAB *next_tab)
/**
Nested joins perspective: Remove the last table from the join order.
+ The algorithm is the reciprocal of check_interleaving_with_nj(), hence
+ parent join nest nodes are updated only when the last table in its child
+ node is removed. The ASCII graphic below will clarify.
+
+ %A table nesting such as <tt> t1 x [ ( t2 x t3 ) x ( t4 x t5 ) ] </tt>is
+ represented by the below join nest tree.
+
+ @verbatim
+ NJ1
+ _/ / \
+ _/ / NJ2
+ _/ / / \
+ / / / \
+ t1 x [ (t2 x t3) x (t4 x t5) ]
+ @endverbatim
+
+ At the point in time when check_interleaving_with_nj() adds the table t5 to
+ the query execution plan, QEP, it also directs the node named NJ2 to mark
+ the table as covered. NJ2 does so by incrementing its @c counter
+ member. Since all of NJ2's tables are now covered by the QEP, the algorithm
+ proceeds up the tree to NJ1, incrementing its counter as well. All join
+ nests are now completely covered by the QEP.
+
+ restore_prev_nj_state() does the above in reverse. As seen above, the node
+ NJ1 contains the nodes t2, t3, and NJ2. Its counter being equal to 3 means
+ that the plan covers t2, t3, and NJ2, @e and that the sub-plan (t4 x t5)
+ completely covers NJ2. The removal of t5 from the partial plan will first
+ decrement NJ2's counter to 1. It will then detect that NJ2 went from being
+ completely to partially covered, and hence the algorithm must continue
+ upwards to NJ1 and decrement its counter to 2. %A subsequent removal of t4
+ will however not influence NJ1 since it did not un-cover the last table in
+ NJ2.
+
+ SYNOPSIS
+ restore_prev_nj_state()
+ last join table to remove, it is assumed to be the last in current
+ partial join order.
+
+ DESCRIPTION
+
Remove the last table from the partial join order and update the nested
joins counters and join->cur_embedding_map. It is ok to call this
function for the first table in join order (for which
@@ -10220,19 +10326,24 @@ static void restore_prev_nj_state(JOIN_TAB *last)
{
TABLE_LIST *last_emb= last->table->pos_in_table_list->embedding;
JOIN *join= last->join;
- while (last_emb)
+ for (;last_emb != NULL && last_emb != join->emb_sjm_nest;
+ last_emb= last_emb->embedding)
{
- if (!(--last_emb->nested_join->counter))
- join->cur_embedding_map&= ~last_emb->nested_join->nj_map;
- else if (last_emb->nested_join->n_tables-1 ==
- last_emb->nested_join->counter)
+ if (!last_emb->sj_on_expr)
{
- join->cur_embedding_map|= last_emb->nested_join->nj_map;
- break;
+ NESTED_JOIN *nest= last_emb->nested_join;
+ DBUG_ASSERT(nest->counter > 0);
+
+ bool was_fully_covered= nest->is_fully_covered();
+
+ if (--nest->counter == 0)
+ join->cur_embedding_map&= ~nest->nj_map;
+
+ if (!was_fully_covered)
+ break;
+
+ join->cur_embedding_map|= nest->nj_map;
}
- else
- break;
- last_emb= last_emb->embedding;
}
}
@@ -10332,7 +10443,10 @@ optimize_cond(JOIN *join, COND *conds, List<TABLE_LIST> *join_list,
DBUG_ENTER("optimize_cond");
if (!conds)
+ {
*cond_value= Item::COND_TRUE;
+ build_equal_items(join->thd, NULL, NULL, join_list, &join->cond_equal);
+ }
else
{
/*
@@ -10690,6 +10804,8 @@ Field *create_tmp_field_from_field(THD *thd, Field *org_field,
table->s->db_create_options|= HA_OPTION_PACK_RECORD;
else if (org_field->type() == FIELD_TYPE_DOUBLE)
((Field_double *) new_field)->not_fixed= TRUE;
+ new_field->vcol_info= 0;
+ new_field->stored_in_db= TRUE;
}
return new_field;
}
@@ -11005,11 +11121,11 @@ void setup_tmp_table_column_bitmaps(TABLE *table, uchar *bitmaps)
uint field_count= table->s->fields;
bitmap_init(&table->def_read_set, (my_bitmap_map*) bitmaps, field_count,
FALSE);
- bitmap_init(&table->tmp_set,
+ bitmap_init(&table->def_vcol_set,
(my_bitmap_map*) (bitmaps+ bitmap_buffer_size(field_count)),
field_count, FALSE);
- bitmap_init(&table->vcol_set,
- (my_bitmap_map*) (bitmaps+ 2+bitmap_buffer_size(field_count)),
+ bitmap_init(&table->tmp_set,
+ (my_bitmap_map*) (bitmaps+ 2*bitmap_buffer_size(field_count)),
field_count, FALSE);
/* write_set and all_set are copies of read_set */
@@ -11107,7 +11223,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
/*
No need to change table name to lower case as we are only creating
- MyISAM, Maria or HEAP tables here
+ MyISAM, Aria or HEAP tables here
*/
fn_format(path, tmp_table_name, mysql_tmpdir, "",
MY_REPLACE_EXT|MY_UNPACK_FILENAME);
@@ -11474,7 +11590,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
table->null_flags= (uchar*) table->record[0];
share->null_fields= null_count+ hidden_null_count;
- share->null_bytes= null_pack_length;
+ share->null_bytes= share->null_bytes_for_compare= null_pack_length;
}
null_count= (blob_count == 0) ? 1 : 0;
hidden_field_count=param->hidden_field_count;
@@ -11872,7 +11988,7 @@ TABLE *create_virtual_tmp_table(THD *thd, List<Create_field> &field_list)
{
table->null_flags= (uchar*) table->record[0];
share->null_fields= null_count;
- share->null_bytes= null_pack_length;
+ share->null_bytes= share->null_bytes_for_compare= null_pack_length;
}
table->in_use= thd; /* field->reset() may access table->in_use */
@@ -11926,7 +12042,7 @@ bool open_tmp_table(TABLE *table)
}
-#if defined(WITH_MARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
+#if defined(WITH_ARIA_STORAGE_ENGINE) && defined(USE_MARIA_FOR_TMP_TABLES)
/*
Create internal (MyISAM or Maria) temporary table
@@ -11958,7 +12074,6 @@ bool open_tmp_table(TABLE *table)
TRUE - Error
*/
-/* Create internal Maria temporary table */
bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
ENGINE_COLUMNDEF *start_recinfo,
@@ -12039,7 +12154,7 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
seg->null_pos= (uint) (field->null_ptr - (uchar*) table->record[0]);
/*
We are using a GROUP BY on something that contains NULL
- In this case we have to tell Maria that two NULL should
+ In this case we have to tell Aria that two NULL should
on INSERT be regarded at the same value
*/
if (!using_unique_constraint)
@@ -12087,7 +12202,7 @@ bool create_internal_tmp_table_from_heap(THD *thd, TABLE *table,
start_recinfo, recinfo, error,
ignore_last_dupp_key_error,
maria_hton,
- "converting HEAP to Maria");
+ "converting HEAP to Aria");
}
#else
@@ -12308,7 +12423,8 @@ create_internal_tmp_table_from_heap2(THD *thd, TABLE *table,
if (table->file->indexes_are_disabled())
new_table.file->ha_disable_indexes(HA_KEY_SWITCH_ALL);
table->file->ha_index_or_rnd_end();
- table->file->ha_rnd_init(1);
+ if (table->file->ha_rnd_init_with_error(1))
+ DBUG_RETURN(1);
if (table->no_rows)
{
new_table.file->extra(HA_EXTRA_NO_ROWS);
@@ -12985,7 +13101,7 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
DBUG_RETURN(nls);
}
int error;
- enum_nested_loop_state rc;
+ enum_nested_loop_state rc= NESTED_LOOP_OK;
READ_RECORD *info= &join_tab->read_record;
if (join_tab->flush_weedout_table)
@@ -13018,18 +13134,23 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records)
/* Set first_unmatched for the last inner table of this group */
join_tab->last_inner->first_unmatched= join_tab;
+ if (join_tab->on_precond && !join_tab->on_precond->val_int())
+ rc= NESTED_LOOP_NO_MORE_ROWS;
}
join->thd->row_count= 0;
if (join_tab->loosescan_match_tab)
join_tab->loosescan_match_tab->found_match= FALSE;
+ if (rc != NESTED_LOOP_NO_MORE_ROWS)
+ {
- error= (*join_tab->read_first_record)(join_tab);
+ error= (*join_tab->read_first_record)(join_tab);
if (join_tab->keep_current_rowid)
join_tab->table->file->position(join_tab->table->record[0]);
- rc= evaluate_join_record(join, join_tab, error);
+ rc= evaluate_join_record(join, join_tab, error);
+ }
}
/*
@@ -13119,7 +13240,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
DBUG_RETURN(NESTED_LOOP_KILLED); /* purecov: inspected */
}
- update_virtual_fields(join_tab->table);
+ update_virtual_fields(join->thd, join_tab->table);
if (select_cond)
{
@@ -13137,6 +13258,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
condition is true => a match is found.
*/
bool found= 1;
+ bool use_not_exists_opt= 0;
while (join_tab->first_unmatched && found)
{
/*
@@ -13153,7 +13275,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
for (JOIN_TAB *tab= first_unmatched; tab <= join_tab; tab++)
{
if (tab->table->reginfo.not_exists_optimize)
- DBUG_RETURN(NESTED_LOOP_NO_MORE_ROWS);
+ use_not_exists_opt= 1;
/* Check all predicates that has just been activated. */
/*
Actually all predicates non-guarded by first_unmatched->found
@@ -13186,6 +13308,8 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
join_tab->first_unmatched= first_unmatched;
}
+ if (use_not_exists_opt)
+ DBUG_RETURN(NESTED_LOOP_NO_MORE_ROWS);
JOIN_TAB *return_tab= join->return_tab;
join_tab->found_match= TRUE;
@@ -13320,13 +13444,22 @@ evaluate_null_complemented_join_record(JOIN *join, JOIN_TAB *join_tab)
#ifdef MERGE_JUNK
//psergey3-merge: remove:
+ SQL_SELECT *select;
+ select= join_tab->select;
+
int err= 0;
(err= join_tab->cache.select->skip_record(join->thd)) != 0 ))
+ {
+ reset_cache_write(&join_tab->cache);
return NESTED_LOOP_ERROR;
- rc= NESTED_LOOP_OK;
+ }
+
if (!select || (err= select->skip_record(join->thd)) != 0)
if (err < 0)
+ {
+ reset_cache_write(&join_tab->cache);
return NESTED_LOOP_ERROR;
+ }
rc= NESTED_LOOP_OK;
#endif
@@ -13476,7 +13609,7 @@ join_read_system(JOIN_TAB *tab)
empty_record(table); // Make empty record
return -1;
}
- update_virtual_fields(table);
+ update_virtual_fields(tab->join->thd, table);
store_record(table,record[1]);
}
else if (!table->status) // Only happens with left join
@@ -13525,7 +13658,7 @@ join_read_const(JOIN_TAB *tab)
return report_error(table, error);
return -1;
}
- update_virtual_fields(table);
+ update_virtual_fields(tab->join->thd, table);
store_record(table,record[1]);
}
else if (!(table->status & ~STATUS_NULL_ROW)) // Only happens with left join
@@ -13783,7 +13916,7 @@ join_init_quick_read_record(JOIN_TAB *tab)
int init_read_record_seq(JOIN_TAB *tab)
{
tab->read_record.read_record= rr_sequential;
- if (tab->read_record.file->ha_rnd_init(1))
+ if (tab->read_record.file->ha_rnd_init_with_error(1))
return 1;
return (*tab->read_record.read_record)(&tab->read_record);
}
@@ -13809,8 +13942,9 @@ int join_init_read_record(JOIN_TAB *tab)
{
if (tab->select && tab->select->quick && tab->select->quick->reset())
return 1;
- init_read_record(&tab->read_record, tab->join->thd, tab->table,
- tab->select,1,1, FALSE);
+ if (init_read_record(&tab->read_record, tab->join->thd, tab->table,
+ tab->select,1,1, FALSE))
+ return 1;
return (*tab->read_record.read_record)(&tab->read_record);
}
@@ -14103,8 +14237,11 @@ end_send_group(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
{
List_iterator_fast<Item> it(*join->fields);
Item *item;
+ DBUG_PRINT("info", ("no matching rows"));
+
/* No matching rows for group function */
join->clear();
+ join->no_rows_in_result_called= 1;
while ((item= it++))
item->no_rows_in_result();
@@ -15297,6 +15434,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
uint nr;
key_map keys;
uint best_key_parts;
+ uint saved_best_key_parts= 0;
int best_key_direction;
ha_rows best_records;
double read_time;
@@ -15498,6 +15636,7 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
{
best_key= nr;
best_key_parts= keyinfo->key_parts;
+ saved_best_key_parts= used_key_parts;
best_records= quick_records;
is_best_covering= is_covering;
best_key_direction= direction;
@@ -15596,8 +15735,15 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
*/
}
}
- used_key_parts= best_key_parts;
order_direction= best_key_direction;
+ /*
+ saved_best_key_parts is actual number of used keyparts found by the
+ test_if_order_by_key function. It could differ from keyinfo->key_parts,
+ thus we have to restore it in case of desc order as it affects
+ QUICK_SELECT_DESC behaviour.
+ */
+ used_key_parts= (order_direction == -1) ?
+ saved_best_key_parts : best_key_parts;
}
else
goto use_filesort;
@@ -15952,7 +16098,9 @@ static int remove_dup_with_compare(THD *thd, TABLE *table, Field **first_field,
org_record=(char*) (record=table->record[0])+offset;
new_record=(char*) table->record[1]+offset;
- file->ha_rnd_init(1);
+ if (file->ha_rnd_init_with_error(1))
+ DBUG_RETURN(1);
+
error= file->ha_rnd_next(record);
for (;;)
{
@@ -16081,7 +16229,9 @@ static int remove_dup_with_hash_index(THD *thd, TABLE *table,
DBUG_RETURN(1);
}
- file->ha_rnd_init(1);
+ if ((error= file->ha_rnd_init(1)))
+ goto err;
+
key_pos=key_buffer;
for (;;)
{
@@ -18103,7 +18253,7 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
the UNION to provide precise EXPLAIN information will hardly be
appreciated :)
*/
- char table_name_buffer[NAME_LEN];
+ char table_name_buffer[SAFE_NAME_LEN];
item_list.empty();
/* id */
item_list.push_back(new Item_null);
@@ -18185,7 +18335,7 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
char keylen_str_buf[64];
my_bool key_read;
String extra(buff, sizeof(buff),cs);
- char table_name_buffer[NAME_LEN];
+ char table_name_buffer[SAFE_NAME_LEN];
String tmp1(buff1,sizeof(buff1),cs);
String tmp2(buff2,sizeof(buff2),cs);
String tmp3(buff3,sizeof(buff3),cs);
@@ -18247,7 +18397,7 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
item_list.push_back(new Item_string("unique_key", strlen("unique_key"), cs));
/* key_len */
uint klen= tab->emb_sj_nest->sj_mat_info->table->key_info[0].key_length;
- uint buflen= longlong2str(klen, keylen_str_buf, 10) - keylen_str_buf;
+ uint buflen= longlong10_to_str(klen, keylen_str_buf, 10) - keylen_str_buf;
item_list.push_back(new Item_string(keylen_str_buf, buflen, cs));
/* ref */
item_list.push_back(new Item_string("func", strlen("func"), cs));
@@ -18367,8 +18517,8 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
item_list.push_back(new Item_string(key_info->name,
strlen(key_info->name),
system_charset_info));
- length= longlong2str(tab->ref.key_length, keylen_str_buf, 10) -
- keylen_str_buf;
+ length= (longlong10_to_str(tab->ref.key_length, keylen_str_buf, 10) -
+ keylen_str_buf);
item_list.push_back(new Item_string(keylen_str_buf, length,
system_charset_info));
for (store_key **ref=tab->ref.key_copy ; *ref ; ref++)
@@ -18386,8 +18536,8 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
register uint length;
item_list.push_back(new Item_string(key_info->name,
strlen(key_info->name),cs));
- length= longlong2str(key_info->key_length, keylen_str_buf, 10) -
- keylen_str_buf;
+ length= (longlong10_to_str(key_info->key_length, keylen_str_buf, 10) -
+ keylen_str_buf);
item_list.push_back(new Item_string(keylen_str_buf,
length,
system_charset_info));
@@ -18765,15 +18915,15 @@ bool mysql_explain_union(THD *thd, SELECT_LEX_UNIT *unit, select_result *result)
thd->lex->current_select= first;
unit->set_limit(unit->global_parameters);
res= mysql_select(thd, &first->ref_pointer_array,
- (TABLE_LIST*) first->table_list.first,
+ first->table_list.first,
first->with_wild, first->item_list,
first->where,
first->order_list.elements +
first->group_list.elements,
- (ORDER*) first->order_list.first,
- (ORDER*) first->group_list.first,
+ first->order_list.first,
+ first->group_list.first,
first->having,
- (ORDER*) thd->lex->proc_list.first,
+ thd->lex->proc_list.first,
first->options | thd->options | SELECT_DESCRIBE,
result, unit, first);
}
@@ -19113,7 +19263,7 @@ void st_select_lex::print(THD *thd, String *str, enum_query_type query_type)
if (group_list.elements)
{
str->append(STRING_WITH_LEN(" group by "));
- print_order(str, (ORDER *) group_list.first, query_type);
+ print_order(str, group_list.first, query_type);
switch (olap)
{
case CUBE_TYPE:
@@ -19144,7 +19294,7 @@ void st_select_lex::print(THD *thd, String *str, enum_query_type query_type)
if (order_list.elements)
{
str->append(STRING_WITH_LEN(" order by "));
- print_order(str, (ORDER *) order_list.first, query_type);
+ print_order(str, order_list.first, query_type);
}
// limit
diff --git a/sql/sql_select.h b/sql/sql_select.h
index affa0fd3ed4..76c7715e68f 100644
--- a/sql/sql_select.h
+++ b/sql/sql_select.h
@@ -160,7 +160,9 @@ typedef struct st_join_table {
TABLE *table;
KEYUSE *keyuse; /**< pointer to first used key */
SQL_SELECT *select;
- COND *select_cond;
+ COND *select_cond;
+ COND *on_precond; /**< part of on condition to check before
+ accessing the first inner table */
QUICK_SELECT_I *quick;
/*
The value of select_cond before we've attempted to do Index Condition
@@ -1497,24 +1499,31 @@ public:
the number of rows in it may vary from one subquery execution to another.
*/
bool no_const_tables;
+ /*
+ This flag is set if we call no_rows_in_result() as par of end_group().
+ This is used as a simple speed optimization to avoiding calling
+ restore_no_rows_in_result() in ::reinit()
+ */
+ bool no_rows_in_result_called;
/**
Copy of this JOIN to be used with temporary tables.
- tmp_join is used when the JOIN needs to be "reusable" (e.g. in a subquery
- that gets re-executed several times) and we know will use temporary tables
- for materialization. The materialization to a temporary table overwrites the
- JOIN structure to point to the temporary table after the materialization is
- done. This is where tmp_join is used : it's a copy of the JOIN before the
- materialization and is used in restoring before re-execution by overwriting
- the current JOIN structure with the saved copy.
- Because of this we should pay extra care of not freeing up helper structures
- that are referenced by the original contents of the JOIN. We can check for
- this by making sure the "current" join is not the temporary copy, e.g.
- !tmp_join || tmp_join != join
+ tmp_join is used when the JOIN needs to be "reusable" (e.g. in a
+ subquery that gets re-executed several times) and we know will use
+ temporary tables for materialization. The materialization to a
+ temporary table overwrites the JOIN structure to point to the
+ temporary table after the materialization is done. This is where
+ tmp_join is used : it's a copy of the JOIN before the
+ materialization and is used in restoring before re-execution by
+ overwriting the current JOIN structure with the saved copy.
+ Because of this we should pay extra care of not freeing up helper
+ structures that are referenced by the original contents of the
+ JOIN. We can check for this by making sure the "current" join is
+ not the temporary copy, e.g. !tmp_join || tmp_join != join
- We should free these sub-structures at JOIN::destroy() if the "current" join
- has a copy is not that copy.
+ We should free these sub-structures at JOIN::destroy() if the
+ "current" join has a copy is not that copy.
*/
JOIN *tmp_join;
ROLLUP rollup; ///< Used with rollup
@@ -1651,6 +1660,7 @@ public:
optimized= 0;
cond_equal= 0;
group_optimized_away= 0;
+ no_rows_in_result_called= 0;
all_fields= fields_arg;
if (&fields_list != &fields_arg) /* Avoid valgrind-warning */
diff --git a/sql/sql_servers.cc b/sql/sql_servers.cc
index b88320ed2bf..ba4dbaacbb9 100644
--- a/sql/sql_servers.cc
+++ b/sql/sql_servers.cc
@@ -182,8 +182,9 @@ static bool servers_load(THD *thd, TABLE_LIST *tables)
free_root(&mem, MYF(0));
init_alloc_root(&mem, ACL_ALLOC_BLOCK_SIZE, 0);
- init_read_record(&read_record_info,thd,table=tables[0].table,NULL,1,0,
- FALSE);
+ if (init_read_record(&read_record_info,thd,table=tables[0].table,NULL,1,0,
+ FALSE))
+ DBUG_RETURN(1);
while (!(read_record_info.read_record(&read_record_info)))
{
/* return_val is already TRUE, so no need to set */
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 44e0f726b2d..29fdf4dc58d 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -1,4 +1,4 @@
-/* Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
+/* Copyright 2000, 2010 Oracle and/or its affiliates. All rights reserved.
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
@@ -9,9 +9,9 @@
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+ 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 Street, Fifth Floor, Boston, MA 02110-1301 USA */
/* Function with list databases, tables or fields */
@@ -31,6 +31,7 @@
#include "event_data_objects.h"
#endif
#include <my_dir.h>
+#include "debug_sync.h"
#define STR_OR_NIL(S) ((S) ? (S) : "<nil>")
@@ -510,8 +511,6 @@ find_files(THD *thd, List<LEX_STRING> *files, const char *db,
wild_length= strlen(wild);
}
-
-
bzero((char*) &table_list,sizeof(table_list));
if (!(dirp = my_dir(path,MYF(dir ? MY_WANT_STAT : 0))))
@@ -525,7 +524,7 @@ find_files(THD *thd, List<LEX_STRING> *files, const char *db,
for (i=0 ; i < (uint) dirp->number_off_files ; i++)
{
- char uname[NAME_LEN + 1]; /* Unencoded name */
+ char uname[SAFE_NAME_LEN + 1]; /* Unencoded name */
file=dirp->dir_entry+i;
if (dir)
{ /* Return databases */
@@ -553,9 +552,20 @@ find_files(THD *thd, List<LEX_STRING> *files, const char *db,
continue;
file_name_len= filename_to_tablename(file->name, uname, sizeof(uname));
- if (wild && wild_compare(uname, wild, 0))
- continue;
- if (!(file_name=
+ if (wild)
+ {
+ if (lower_case_table_names)
+ {
+ if (my_wildcmp(files_charset_info,
+ uname, uname + file_name_len,
+ wild, wild + wild_length,
+ wild_prefix, wild_one, wild_many))
+ continue;
+ }
+ else if (wild_compare(uname, wild, 0))
+ continue;
+ }
+ if (!(file_name=
thd->make_lex_string(file_name, uname, file_name_len, TRUE)))
{
my_dirend(dirp);
@@ -1170,7 +1180,7 @@ static bool get_field_default_value(THD *thd, TABLE *table,
if (field_type == MYSQL_TYPE_BIT)
{
longlong dec= field->val_int();
- char *ptr= longlong2str(dec, tmp + 2, 2);
+ char *ptr= longlong2str(dec, tmp + 2, 2, 1);
uint32 length= (uint32) (ptr - tmp);
tmp[0]= 'b';
tmp[1]= '\'';
@@ -1348,19 +1358,6 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
field->sql_type(type);
packet->append(type.ptr(), type.length(), system_charset_info);
- if (field->vcol_info)
- {
- packet->append(STRING_WITH_LEN(" AS ("));
- packet->append(field->vcol_info->expr_str.str,
- field->vcol_info->expr_str.length,
- system_charset_info);
- packet->append(STRING_WITH_LEN(")"));
- if (field->stored_in_db)
- packet->append(STRING_WITH_LEN(" PERSISTENT"));
- else
- packet->append(STRING_WITH_LEN(" VIRTUAL"));
- }
-
if (field->has_charset() &&
!(thd->variables.sql_mode & (MODE_MYSQL323 | MODE_MYSQL40)))
{
@@ -1380,6 +1377,19 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
}
}
+ if (field->vcol_info)
+ {
+ packet->append(STRING_WITH_LEN(" AS ("));
+ packet->append(field->vcol_info->expr_str.str,
+ field->vcol_info->expr_str.length,
+ system_charset_info);
+ packet->append(STRING_WITH_LEN(")"));
+ if (field->stored_in_db)
+ packet->append(STRING_WITH_LEN(" PERSISTENT"));
+ else
+ packet->append(STRING_WITH_LEN(" VIRTUAL"));
+ }
+
if (flags & NOT_NULL_FLAG)
packet->append(STRING_WITH_LEN(" NOT NULL"));
else if (field->type() == MYSQL_TYPE_TIMESTAMP)
@@ -2318,8 +2328,8 @@ static bool show_status_array(THD *thd, const char *wild,
bool ucase_names,
COND *cond)
{
- MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, long);
- char * const buff= (char *) &buff_data;
+ my_aligned_storage<SHOW_VAR_FUNC_BUFF_SIZE, MY_ALIGNOF(long)> buffer;
+ char * const buff= buffer.data;
char *prefix_end;
/* the variable name should not be longer than 64 characters */
char name_buffer[64];
@@ -3124,36 +3134,54 @@ bool get_lookup_field_values(THD *thd, COND *cond, TABLE_LIST *tables,
{
LEX *lex= thd->lex;
const char *wild= lex->wild ? lex->wild->ptr() : NullS;
+ bool rc= 0;
+
bzero((char*) lookup_field_values, sizeof(LOOKUP_FIELD_VALUES));
switch (lex->sql_command) {
case SQLCOM_SHOW_DATABASES:
if (wild)
{
- lookup_field_values->db_value.str= (char*) wild;
- lookup_field_values->db_value.length= strlen(wild);
+ thd->make_lex_string(&lookup_field_values->db_value,
+ wild, strlen(wild), 0);
lookup_field_values->wild_db_value= 1;
}
- return 0;
+ break;
case SQLCOM_SHOW_TABLES:
case SQLCOM_SHOW_TABLE_STATUS:
case SQLCOM_SHOW_TRIGGERS:
case SQLCOM_SHOW_EVENTS:
- lookup_field_values->db_value.str= lex->select_lex.db;
- lookup_field_values->db_value.length=strlen(lex->select_lex.db);
+ thd->make_lex_string(&lookup_field_values->db_value,
+ lex->select_lex.db, strlen(lex->select_lex.db), 0);
if (wild)
{
- lookup_field_values->table_value.str= (char*)wild;
- lookup_field_values->table_value.length= strlen(wild);
+ thd->make_lex_string(&lookup_field_values->table_value,
+ wild, strlen(wild), 0);
lookup_field_values->wild_table_value= 1;
}
- return 0;
+ break;
default:
/*
The "default" is for queries over I_S.
All previous cases handle SHOW commands.
*/
- return calc_lookup_values_from_cond(thd, cond, tables, lookup_field_values);
+ rc= calc_lookup_values_from_cond(thd, cond, tables, lookup_field_values);
+ break;
+ }
+
+ if (lower_case_table_names && !rc)
+ {
+ /*
+ We can safely do in-place upgrades here since all of the above cases
+ are allocating a new memory buffer for these strings.
+ */
+ if (lookup_field_values->db_value.str && lookup_field_values->db_value.str[0])
+ my_casedn_str(system_charset_info, lookup_field_values->db_value.str);
+ if (lookup_field_values->table_value.str &&
+ lookup_field_values->table_value.str[0])
+ my_casedn_str(system_charset_info, lookup_field_values->table_value.str);
}
+
+ return rc;
}
@@ -3355,9 +3383,15 @@ make_table_name_list(THD *thd, List<LEX_STRING> *table_names, LEX *lex,
{
if (with_i_schema)
{
- if (find_schema_table(thd, lookup_field_vals->table_value.str))
+ LEX_STRING *name;
+ ST_SCHEMA_TABLE *schema_table=
+ find_schema_table(thd, lookup_field_vals->table_value.str);
+ if (schema_table && !schema_table->hidden)
{
- if (table_names->push_back(&lookup_field_vals->table_value))
+ if (!(name=
+ thd->make_lex_string(NULL, schema_table->table_name,
+ strlen(schema_table->table_name), TRUE)) ||
+ table_names->push_back(name))
return 1;
}
}
@@ -3396,7 +3430,7 @@ make_table_name_list(THD *thd, List<LEX_STRING> *table_names, LEX *lex,
*/
if (res == FIND_FILES_DIR)
{
- if (lex->sql_command != SQLCOM_SELECT)
+ if (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND)
return 1;
thd->clear_error();
return 2;
@@ -3432,8 +3466,7 @@ fill_schema_show_cols_or_idxs(THD *thd, TABLE_LIST *tables,
bool res;
LEX_STRING tmp_lex_string, tmp_lex_string1, *db_name, *table_name;
enum_sql_command save_sql_command= lex->sql_command;
- TABLE_LIST *show_table_list= (TABLE_LIST*) tables->schema_select_lex->
- table_list.first;
+ TABLE_LIST *show_table_list= tables->schema_select_lex->table_list.first;
TABLE *table= tables->table;
int error= 1;
DBUG_ENTER("fill_schema_show");
@@ -3757,6 +3790,7 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
error= 0;
goto err;
}
+
DBUG_PRINT("INDEX VALUES",("db_name='%s', table_name='%s'",
STR_OR_NIL(lookup_field_vals.db_value.str),
STR_OR_NIL(lookup_field_vals.table_value.str)));
@@ -3879,12 +3913,13 @@ int get_all_tables(THD *thd, TABLE_LIST *tables, COND *cond)
goto err;
if (make_table_list(thd, &sel, db_name, table_name))
goto err;
- TABLE_LIST *show_table_list= (TABLE_LIST*) sel.table_list.first;
+ TABLE_LIST *show_table_list= sel.table_list.first;
lex->all_selects_list= &sel;
lex->derived_tables= 0;
lex->sql_command= SQLCOM_SHOW_FIELDS;
show_table_list->i_s_requested_object=
schema_table->i_s_requested_object;
+ DEBUG_SYNC(thd, "before_open_in_get_all_tables");
res= open_normal_and_derived_tables(thd, show_table_list,
MYSQL_LOCK_IGNORE_FLUSH);
lex->sql_command= save_sql_command;
@@ -3981,9 +4016,9 @@ int fill_schema_schemata(THD *thd, TABLE_LIST *tables, COND *cond)
if (get_lookup_field_values(thd, cond, tables, &lookup_field_vals))
DBUG_RETURN(0);
- DBUG_PRINT("INDEX VALUES",("db_name='%s', table_name='%s'",
- lookup_field_vals.db_value.str,
- lookup_field_vals.table_value.str));
+ DBUG_PRINT("INDEX VALUES",("db_name: %s table_name: %s",
+ val_or_null(lookup_field_vals.db_value.str),
+ val_or_null(lookup_field_vals.table_value.str)));
if (make_db_list(thd, &db_names, &lookup_field_vals,
&with_i_schema))
DBUG_RETURN(1);
@@ -4283,7 +4318,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
uint flags=field->flags;
char tmp[MAX_FIELD_WIDTH];
String type(tmp,sizeof(tmp), system_charset_info);
- char *end;
int decimals, field_length;
if (wild && wild[0] &&
@@ -4304,7 +4338,7 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
field->field_name) & COL_ACLS;
if (!tables->schema_table && !col_access)
continue;
- end= tmp;
+ char *end= tmp;
for (uint bitnr=0; col_access ; col_access>>=1,bitnr++)
{
if (col_access & 1)
@@ -4380,10 +4414,13 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
case MYSQL_TYPE_TINY:
case MYSQL_TYPE_SHORT:
case MYSQL_TYPE_LONG:
- case MYSQL_TYPE_LONGLONG:
case MYSQL_TYPE_INT24:
field_length= field->max_display_length() - 1;
break;
+ case MYSQL_TYPE_LONGLONG:
+ field_length= field->max_display_length() -
+ ((field->flags & UNSIGNED_FLAG) ? 0 : 1);
+ break;
case MYSQL_TYPE_BIT:
field_length= field->max_display_length();
decimals= -1; // return NULL
@@ -4427,7 +4464,6 @@ static int get_schema_column_record(THD *thd, TABLE_LIST *tables,
table->field[15]->store((const char*) pos,
strlen((const char*) pos), cs);
- end= tmp;
if (field->unireg_check == Field::NEXT_NUMBER)
table->field[16]->store(STRING_WITH_LEN("auto_increment"), cs);
if (show_table->timestamp_field == field &&
@@ -4623,24 +4659,37 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond)
}
+static inline void copy_field_as_string(Field *to_field, Field *from_field)
+{
+ char buff[MAX_FIELD_WIDTH];
+ String tmp_str(buff, sizeof(buff), system_charset_info);
+ from_field->val_str(&tmp_str);
+ to_field->store(tmp_str.ptr(), tmp_str.length(), system_charset_info);
+}
+
+
bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
const char *wild, bool full_access, const char *sp_user)
{
- String tmp_string;
- String sp_db, sp_name, definer;
MYSQL_TIME time;
LEX *lex= thd->lex;
CHARSET_INFO *cs= system_charset_info;
- get_field(thd->mem_root, proc_table->field[0], &sp_db);
- get_field(thd->mem_root, proc_table->field[1], &sp_name);
- get_field(thd->mem_root, proc_table->field[11], &definer);
+ char sp_db_buff[SAFE_NAME_LEN + 1], sp_name_buff[SAFE_NAME_LEN + 1],
+ definer_buff[USERNAME_LENGTH + HOSTNAME_LENGTH + 2];
+ String sp_db(sp_db_buff, sizeof(sp_db_buff), cs);
+ String sp_name(sp_name_buff, sizeof(sp_name_buff), cs);
+ String definer(definer_buff, sizeof(definer_buff), cs);
+
+ proc_table->field[0]->val_str(&sp_db);
+ proc_table->field[1]->val_str(&sp_name);
+ proc_table->field[11]->val_str(&definer);
+
if (!full_access)
- full_access= !strcmp(sp_user, definer.ptr());
- if (!full_access && check_some_routine_access(thd, sp_db.ptr(),
- sp_name.ptr(),
- proc_table->field[2]->
- val_int() ==
- TYPE_ENUM_PROCEDURE))
+ full_access= !strcmp(sp_user, definer.c_ptr_safe());
+ if (!full_access &&
+ check_some_routine_access(thd, sp_db.c_ptr_safe(), sp_name.c_ptr_safe(),
+ proc_table->field[2]->val_int() ==
+ TYPE_ENUM_PROCEDURE))
return 0;
if ((lex->sql_command == SQLCOM_SHOW_STATUS_PROC &&
@@ -4650,55 +4699,42 @@ bool store_schema_proc(THD *thd, TABLE *table, TABLE *proc_table,
(sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0)
{
restore_record(table, s->default_values);
- if (!wild || !wild[0] || !wild_compare(sp_name.ptr(), wild, 0))
+ if (!wild || !wild[0] || !wild_compare(sp_name.c_ptr_safe(), wild, 0))
{
int enum_idx= (int) proc_table->field[5]->val_int();
table->field[3]->store(sp_name.ptr(), sp_name.length(), cs);
- get_field(thd->mem_root, proc_table->field[3], &tmp_string);
- table->field[0]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[0], proc_table->field[3]);
table->field[2]->store(sp_db.ptr(), sp_db.length(), cs);
- get_field(thd->mem_root, proc_table->field[2], &tmp_string);
- table->field[4]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[4], proc_table->field[2]);
if (proc_table->field[2]->val_int() == TYPE_ENUM_FUNCTION)
{
- get_field(thd->mem_root, proc_table->field[9], &tmp_string);
- table->field[5]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[5], proc_table->field[9]);
table->field[5]->set_notnull();
}
if (full_access)
{
- get_field(thd->mem_root, proc_table->field[19], &tmp_string);
- table->field[7]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[7], proc_table->field[19]);
table->field[7]->set_notnull();
}
table->field[6]->store(STRING_WITH_LEN("SQL"), cs);
table->field[10]->store(STRING_WITH_LEN("SQL"), cs);
- get_field(thd->mem_root, proc_table->field[6], &tmp_string);
- table->field[11]->store(tmp_string.ptr(), tmp_string.length(), cs);
- table->field[12]->store(sp_data_access_name[enum_idx].str,
+ copy_field_as_string(table->field[11], proc_table->field[6]);
+ table->field[12]->store(sp_data_access_name[enum_idx].str,
sp_data_access_name[enum_idx].length , cs);
- get_field(thd->mem_root, proc_table->field[7], &tmp_string);
- table->field[14]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[14], proc_table->field[7]);
+
bzero((char *)&time, sizeof(time));
((Field_timestamp *) proc_table->field[12])->get_time(&time);
table->field[15]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
bzero((char *)&time, sizeof(time));
((Field_timestamp *) proc_table->field[13])->get_time(&time);
table->field[16]->store_time(&time, MYSQL_TIMESTAMP_DATETIME);
- get_field(thd->mem_root, proc_table->field[14], &tmp_string);
- table->field[17]->store(tmp_string.ptr(), tmp_string.length(), cs);
- get_field(thd->mem_root, proc_table->field[15], &tmp_string);
- table->field[18]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[17], proc_table->field[14]);
+ copy_field_as_string(table->field[18], proc_table->field[15]);
table->field[19]->store(definer.ptr(), definer.length(), cs);
-
- get_field(thd->mem_root, proc_table->field[16], &tmp_string);
- table->field[20]->store(tmp_string.ptr(), tmp_string.length(), cs);
-
- get_field(thd->mem_root, proc_table->field[17], &tmp_string);
- table->field[21]->store(tmp_string.ptr(), tmp_string.length(), cs);
-
- get_field(thd->mem_root, proc_table->field[18], &tmp_string);
- table->field[22]->store(tmp_string.ptr(), tmp_string.length(), cs);
+ copy_field_as_string(table->field[20], proc_table->field[16]);
+ copy_field_as_string(table->field[21], proc_table->field[17]);
+ copy_field_as_string(table->field[22], proc_table->field[18]);
return schema_table_store_record(thd, table);
}
@@ -5993,56 +6029,56 @@ struct schema_table_ref
ST_FIELD_INFO user_stats_fields_info[]=
{
{"USER", USERNAME_LENGTH, MYSQL_TYPE_STRING, 0, 0, "User", SKIP_OPEN_TABLE},
- {"TOTAL_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE},
- {"CONCURRENT_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE},
- {"CONNECTED_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE},
+ {"TOTAL_CONNECTIONS", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE},
+ {"CONCURRENT_CONNECTIONS", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE},
+ {"CONNECTED_TIME", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE},
{"BUSY_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Busy_time",SKIP_OPEN_TABLE},
{"CPU_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Cpu_time",SKIP_OPEN_TABLE},
- {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE},
- {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE},
- {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE},
- {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
- {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE},
- {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE},
- {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE},
- {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE},
- {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE},
- {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE},
- {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE},
- {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE},
- {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE},
- {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE},
- {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE},
- {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE},
- {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE},
+ {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE},
+ {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE},
+ {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE},
+ {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
+ {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE},
+ {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE},
+ {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE},
+ {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE},
+ {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE},
+ {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE},
+ {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE},
+ {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE},
+ {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE},
+ {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE},
+ {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE},
+ {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE},
+ {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0}
};
ST_FIELD_INFO client_stats_fields_info[]=
{
{"CLIENT", LIST_PROCESS_HOST_LEN, MYSQL_TYPE_STRING, 0, 0, "Client",SKIP_OPEN_TABLE},
- {"TOTAL_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE},
- {"CONCURRENT_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE},
- {"CONNECTED_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE},
+ {"TOTAL_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Total_connections",SKIP_OPEN_TABLE},
+ {"CONCURRENT_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Concurrent_connections",SKIP_OPEN_TABLE},
+ {"CONNECTED_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Connected_time",SKIP_OPEN_TABLE},
{"BUSY_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Busy_time",SKIP_OPEN_TABLE},
{"CPU_TIME", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_DOUBLE, 0, 0, "Cpu_time",SKIP_OPEN_TABLE},
- {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE},
- {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE},
- {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE},
- {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
- {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE},
- {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE},
- {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE},
- {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE},
- {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE},
- {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE},
- {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE},
- {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE},
- {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE},
- {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE},
- {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE},
- {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE},
- {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE},
+ {"BYTES_RECEIVED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_received",SKIP_OPEN_TABLE},
+ {"BYTES_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Bytes_sent",SKIP_OPEN_TABLE},
+ {"BINLOG_BYTES_WRITTEN", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Binlog_bytes_written",SKIP_OPEN_TABLE},
+ {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
+ {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_sent",SKIP_OPEN_TABLE},
+ {"ROWS_DELETED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_deleted",SKIP_OPEN_TABLE},
+ {"ROWS_INSERTED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_inserted",SKIP_OPEN_TABLE},
+ {"ROWS_UPDATED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_updated",SKIP_OPEN_TABLE},
+ {"SELECT_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Select_commands",SKIP_OPEN_TABLE},
+ {"UPDATE_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Update_commands",SKIP_OPEN_TABLE},
+ {"OTHER_COMMANDS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Other_commands",SKIP_OPEN_TABLE},
+ {"COMMIT_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Commit_transactions",SKIP_OPEN_TABLE},
+ {"ROLLBACK_TRANSACTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rollback_transactions",SKIP_OPEN_TABLE},
+ {"DENIED_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Denied_connections",SKIP_OPEN_TABLE},
+ {"LOST_CONNECTIONS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Lost_connections",SKIP_OPEN_TABLE},
+ {"ACCESS_DENIED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Access_denied",SKIP_OPEN_TABLE},
+ {"EMPTY_QUERIES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Empty_queries",SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0}
};
@@ -6051,9 +6087,9 @@ ST_FIELD_INFO table_stats_fields_info[]=
{
{"TABLE_SCHEMA", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_schema",SKIP_OPEN_TABLE},
{"TABLE_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_name",SKIP_OPEN_TABLE},
- {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
- {"ROWS_CHANGED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_changed",SKIP_OPEN_TABLE},
- {"ROWS_CHANGED_X_INDEXES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_changed_x_#indexes",SKIP_OPEN_TABLE},
+ {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
+ {"ROWS_CHANGED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_changed",SKIP_OPEN_TABLE},
+ {"ROWS_CHANGED_X_INDEXES", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_changed_x_#indexes",SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0}
};
@@ -6062,7 +6098,7 @@ ST_FIELD_INFO index_stats_fields_info[]=
{"TABLE_SCHEMA", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_schema",SKIP_OPEN_TABLE},
{"TABLE_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_name",SKIP_OPEN_TABLE},
{"INDEX_NAME", NAME_LEN, MYSQL_TYPE_STRING, 0, 0, "Index_name",SKIP_OPEN_TABLE},
- {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
+ {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Rows_read",SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0,0}
};
@@ -6907,7 +6943,7 @@ ST_FIELD_INFO engines_fields_info[]=
{
{"ENGINE", 64, MYSQL_TYPE_STRING, 0, 0, "Engine", SKIP_OPEN_TABLE},
{"SUPPORT", 8, MYSQL_TYPE_STRING, 0, 0, "Support", SKIP_OPEN_TABLE},
- {"COMMENT", 80, MYSQL_TYPE_STRING, 0, 0, "Comment", SKIP_OPEN_TABLE},
+ {"COMMENT", 160, MYSQL_TYPE_STRING, 0, 0, "Comment", SKIP_OPEN_TABLE},
{"TRANSACTIONS", 3, MYSQL_TYPE_STRING, 0, 1, "Transactions", SKIP_OPEN_TABLE},
{"XA", 3, MYSQL_TYPE_STRING, 0, 1, "XA", SKIP_OPEN_TABLE},
{"SAVEPOINTS", 3 ,MYSQL_TYPE_STRING, 0, 1, "Savepoints", SKIP_OPEN_TABLE},
@@ -7132,8 +7168,8 @@ ST_FIELD_INFO table_names_fields_info[]=
{
{"TABLE_CATALOG", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
{"TABLE_SCHEMA",NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
- {"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Tables_in_",
- SKIP_OPEN_TABLE},
+ {"TABLE_NAME", NAME_CHAR_LEN + MYSQL50_TABLE_NAME_PREFIX_LENGTH,
+ MYSQL_TYPE_STRING, 0, 0, "Tables_in_", SKIP_OPEN_TABLE},
{"TABLE_TYPE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Table_type",
OPEN_FRM_ONLY},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 624aab93e33..0ef18a237dd 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -48,6 +48,7 @@ static int mysql_prepare_create_table(THD *, HA_CREATE_INFO *, Alter_info *,
bool, uint *, handler *, KEY **, uint *, int);
static bool mysql_prepare_alter_table(THD *, TABLE *, HA_CREATE_INFO *,
Alter_info *);
+static bool admin_recreate_table(THD *thd, TABLE_LIST *table_list);
#ifndef DBUG_OFF
@@ -386,6 +387,25 @@ uint filename_to_tablename(const char *from, char *to, uint to_length)
/**
+ Check if given string begins with "#mysql50#" prefix
+
+ @param name string to check cut
+
+ @retval
+ FALSE no prefix found
+ @retval
+ TRUE prefix found
+*/
+
+bool check_mysql50_prefix(const char *name)
+{
+ return (name[0] == '#' &&
+ !strncmp(name, MYSQL50_TABLE_NAME_PREFIX,
+ MYSQL50_TABLE_NAME_PREFIX_LENGTH));
+}
+
+
+/**
Check if given string begins with "#mysql50#" prefix, cut it if so.
@param from string to check and cut
@@ -400,9 +420,7 @@ uint filename_to_tablename(const char *from, char *to, uint to_length)
uint check_n_cut_mysql50_prefix(const char *from, char *to, uint to_length)
{
- if (from[0] == '#' &&
- !strncmp(from, MYSQL50_TABLE_NAME_PREFIX,
- MYSQL50_TABLE_NAME_PREFIX_LENGTH))
+ if (check_mysql50_prefix(from))
return (uint) (strmake(to, from + MYSQL50_TABLE_NAME_PREFIX_LENGTH,
to_length - 1) - to);
return 0;
@@ -2232,10 +2250,10 @@ static int sort_keys(KEY *a, KEY *b)
{
if (!(b_flags & HA_NOSAME))
return -1;
- if ((a_flags ^ b_flags) & (HA_NULL_PART_KEY | HA_END_SPACE_KEY))
+ if ((a_flags ^ b_flags) & HA_NULL_PART_KEY)
{
/* Sort NOT NULL keys before other keys */
- return (a_flags & (HA_NULL_PART_KEY | HA_END_SPACE_KEY)) ? 1 : -1;
+ return (a_flags & HA_NULL_PART_KEY) ? 1 : -1;
}
if (a->name == primary_key_name)
return -1;
@@ -4202,7 +4220,7 @@ mysql_rename_table(handlerton *base, const char *old_db,
char from[FN_REFLEN + 1], to[FN_REFLEN + 1],
lc_from[FN_REFLEN + 1], lc_to[FN_REFLEN + 1];
char *from_base= from, *to_base= to;
- char tmp_name[NAME_LEN+1];
+ char tmp_name[SAFE_NAME_LEN+1];
handler *file;
int error=0;
DBUG_ENTER("mysql_rename_table");
@@ -4597,6 +4615,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
Protocol *protocol= thd->protocol;
LEX *lex= thd->lex;
int result_code;
+ bool need_repair_or_alter= 0;
DBUG_ENTER("mysql_admin_table");
if (end_active_trans(thd))
@@ -4617,7 +4636,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
for (table= tables; table; table= table->next_local)
{
- char table_name[NAME_LEN*2+2];
+ char table_name[SAFE_NAME_LEN*2+2];
char* db = table->db;
bool fatal_error=0;
@@ -4633,7 +4652,7 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
table->next_global= 0;
save_next_local= table->next_local;
table->next_local= 0;
- select->table_list.first= (uchar*)table;
+ select->table_list.first= table;
/*
Time zone tables and SP tables can be add to lex->query_tables list,
so it have to be prepared.
@@ -4825,32 +4844,38 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
if (operator_func == &handler::ha_repair &&
!(check_opt->sql_flags & TT_USEFRM))
{
- if ((table->table->file->check_old_types() == HA_ADMIN_NEEDS_ALTER) ||
- (table->table->file->ha_check_for_upgrade(check_opt) ==
- HA_ADMIN_NEEDS_ALTER))
+ handler *file= table->table->file;
+ int check_old_types= file->check_old_types();
+ int check_for_upgrade= file->ha_check_for_upgrade(check_opt);
+
+ if (check_old_types == HA_ADMIN_NEEDS_ALTER ||
+ check_for_upgrade == HA_ADMIN_NEEDS_ALTER)
{
- DBUG_PRINT("admin", ("recreating table"));
- ha_autocommit_or_rollback(thd, 1);
- close_thread_tables(thd);
- tmp_disable_binlog(thd); // binlogging is done by caller if wanted
- result_code= mysql_recreate_table(thd, table);
- reenable_binlog(thd);
- /*
- mysql_recreate_table() can push OK or ERROR.
- Clear 'OK' status. If there is an error, keep it:
- we will store the error message in a result set row
- and then clear.
- */
- if (thd->main_da.is_ok())
- thd->main_da.reset_diagnostics_area();
+ /* We use extra_open_options to be able to open crashed tables */
+ thd->open_options|= extra_open_options;
+ result_code= admin_recreate_table(thd, table);
+ thd->open_options= ~extra_open_options;
goto send_result;
}
+ if (check_old_types || check_for_upgrade)
+ {
+ /* If repair is not implemented for the engine, run ALTER TABLE */
+ need_repair_or_alter= 1;
+ }
}
DBUG_PRINT("admin", ("calling operator_func '%s'", operator_name));
result_code = (table->table->file->*operator_func)(thd, check_opt);
DBUG_PRINT("admin", ("operator_func returned: %d", result_code));
+ if (result_code == HA_ADMIN_NOT_IMPLEMENTED && need_repair_or_alter)
+ {
+ /*
+ repair was not implemented and we need to upgrade the table
+ to a new version so we recreate the table with ALTER TABLE
+ */
+ result_code= admin_recreate_table(thd, table);
+ }
send_result:
lex->cleanup_after_one_table_open();
@@ -4950,23 +4975,13 @@ send_result_message:
system_charset_info);
if (protocol->write())
goto err;
- ha_autocommit_or_rollback(thd, 0);
- close_thread_tables(thd);
DBUG_PRINT("info", ("HA_ADMIN_TRY_ALTER, trying analyze..."));
TABLE_LIST *save_next_local= table->next_local,
*save_next_global= table->next_global;
table->next_local= table->next_global= 0;
- tmp_disable_binlog(thd); // binlogging is done by caller if wanted
- result_code= mysql_recreate_table(thd, table);
- reenable_binlog(thd);
- /*
- mysql_recreate_table() can push OK or ERROR.
- Clear 'OK' status. If there is an error, keep it:
- we will store the error message in a result set row
- and then clear.
- */
- if (thd->main_da.is_ok())
- thd->main_da.reset_diagnostics_area();
+
+ result_code= admin_recreate_table(thd, table);
+
ha_autocommit_or_rollback(thd, 0);
close_thread_tables(thd);
if (!result_code) // recreation went ok
@@ -5347,6 +5362,11 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
*/
if (create_info->options & HA_LEX_CREATE_TMP_TABLE)
{
+ if (src_table->table->file->ht == partition_hton)
+ {
+ my_error(ER_PARTITION_NO_TEMPORARY, MYF(0));
+ goto err;
+ }
if (find_temporary_table(thd, db, table_name))
goto table_exists;
dst_path_length= build_tmptable_filename(thd, dst_path, sizeof(dst_path));
@@ -5411,14 +5431,15 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table,
/*
For partitioned tables we need to copy the .par file as well since
it is used in open_table_def to even be able to create a new handler.
- There is no way to find out here if the original table is a
- partitioned table so we copy the file and ignore any errors.
*/
- fn_format(tmp_path, dst_path, reg_ext, ".par", MYF(MY_REPLACE_EXT));
- strmov(dst_path, tmp_path);
- fn_format(tmp_path, src_path, reg_ext, ".par", MYF(MY_REPLACE_EXT));
- strmov(src_path, tmp_path);
- my_copy(src_path, dst_path, MYF(MY_DONT_OVERWRITE_FILE));
+ if (src_table->table->file->ht == partition_hton)
+ {
+ fn_format(tmp_path, dst_path, reg_ext, ".par", MYF(MY_REPLACE_EXT));
+ strmov(dst_path, tmp_path);
+ fn_format(tmp_path, src_path, reg_ext, ".par", MYF(MY_REPLACE_EXT));
+ strmov(src_path, tmp_path);
+ my_copy(src_path, dst_path, MYF(MY_DONT_OVERWRITE_FILE));
+ }
#endif
DBUG_EXECUTE_IF("sleep_create_like_before_ha_create", my_sleep(6000000););
@@ -6604,6 +6625,7 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
uint *index_add_buffer= NULL;
uint candidate_key_count= 0;
bool no_pk;
+ ulong explicit_used_fields= 0;
DBUG_ENTER("mysql_alter_table");
/*
@@ -6874,6 +6896,7 @@ view_err:
change the row format in update_create_info().
*/
create_info->used_fields|= HA_CREATE_USED_ROW_FORMAT;
+ explicit_used_fields|= HA_CREATE_USED_ROW_FORMAT;
}
DBUG_PRINT("info", ("old type: %s new type: %s",
@@ -6948,6 +6971,20 @@ view_err:
if (!error && (new_name != table_name || new_db != db))
{
thd_proc_info(thd, "rename");
+
+ /*
+ Workaround InnoDB ending the transaction when the table instance
+ is unlocked/closed (close_cached_table below), otherwise the trx
+ state will differ between the server and storage engine layers.
+
+ We have to unlock LOCK_open here as otherwise we can get deadlock
+ in wait_if_global_readlock(). This is still safe as we have a
+ name lock on the table object.
+ */
+ VOID(pthread_mutex_unlock(&LOCK_open));
+ ha_autocommit_or_rollback(thd, 0);
+ VOID(pthread_mutex_lock(&LOCK_open));
+
/*
Then do a 'simple' rename of the table. First we need to close all
instances of 'source' table.
@@ -7034,6 +7071,9 @@ view_err:
if (mysql_prepare_alter_table(thd, table, create_info, alter_info))
goto err;
+ /* Remove markers set for update_create_info */
+ create_info->used_fields&= ~explicit_used_fields;
+
if (need_copy_table == ALTER_TABLE_METADATA_ONLY)
need_copy_table= alter_info->change_level;
@@ -7492,6 +7532,11 @@ view_err:
mysql_unlock_tables(thd, thd->lock);
thd->lock=0;
}
+ /*
+ If LOCK TABLES list is not empty and contains this table,
+ unlock the table and remove the table from this list.
+ */
+ mysql_lock_remove(thd, thd->locked_tables, table, FALSE);
/* Remove link to old table and rename the new one */
close_temporary_table(thd, table, 1, 1);
/* Should pass the 'new_name' as we store table name in the cache */
@@ -7876,8 +7921,9 @@ copy_data_between_tables(TABLE *from,TABLE *to,
/* Tell handler that we have values for all columns in the to table */
to->use_all_columns();
- to->mark_virtual_columns_for_write();
- init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1, 1, FALSE);
+ to->mark_virtual_columns_for_write(TRUE);
+ if (init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1, 1, FALSE))
+ goto err;
errpos= 4;
if (ignore)
to->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
@@ -7891,7 +7937,7 @@ copy_data_between_tables(TABLE *from,TABLE *to,
error= 1;
break;
}
- update_virtual_fields(from);
+ update_virtual_fields(thd, from);
thd->row_count++;
/* Return error if source table isn't empty. */
if (error_if_not_empty)
@@ -7912,7 +7958,7 @@ copy_data_between_tables(TABLE *from,TABLE *to,
copy_ptr->do_copy(copy_ptr);
}
prev_insert_id= to->file->next_insert_id;
- update_virtual_fields(to, TRUE);
+ update_virtual_fields(thd, to, TRUE);
if (thd->is_error())
{
error= 1;
@@ -7958,7 +8004,7 @@ err:
if (error > 0)
to->file->extra(HA_EXTRA_PREPARE_FOR_DROP);
- if (errpos >= 3 && to->file->ha_end_bulk_insert(error > 1) && error <= 0)
+ if (errpos >= 3 && to->file->ha_end_bulk_insert() && error <= 0)
{
to->file->print_error(my_errno,MYF(0));
error= 1;
@@ -7990,6 +8036,30 @@ err:
}
+/* Prepare, run and cleanup for mysql_recreate_table() */
+
+static bool admin_recreate_table(THD *thd, TABLE_LIST *table_list)
+{
+ bool result_code;
+ DBUG_ENTER("admin_recreate_table");
+
+ ha_autocommit_or_rollback(thd, 1);
+ close_thread_tables(thd);
+ tmp_disable_binlog(thd); // binlogging is done by caller if wanted
+ result_code= mysql_recreate_table(thd, table_list);
+ reenable_binlog(thd);
+ /*
+ mysql_recreate_table() can push OK or ERROR.
+ Clear 'OK' status. If there is an error, keep it:
+ we will store the error message in a result set row
+ and then clear.
+ */
+ if (thd->main_da.is_ok())
+ thd->main_da.reset_diagnostics_area();
+ DBUG_RETURN(result_code);
+}
+
+
/*
Recreates tables by calling mysql_alter_table().
@@ -8046,7 +8116,7 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables,
/* Open one table after the other to keep lock time as short as possible. */
for (table= tables; table; table= table->next_local)
{
- char table_name[NAME_LEN*2+2];
+ char table_name[SAFE_NAME_LEN*2+2];
TABLE *t;
strxmov(table_name, table->db ,".", table->table_name, NullS);
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc
index aafb25013f6..e8a382ca8f6 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -653,7 +653,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables,
*/
old_field= new_field= table->field;
- for (trg_field= (Item_trigger_field *)(lex->trg_table_fields.first);
+ for (trg_field= lex->trg_table_fields.first;
trg_field; trg_field= trg_field->next_trg_field)
{
/*
@@ -1297,9 +1297,9 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
thd->variables.sql_mode= (ulong)*trg_sql_mode;
- Parser_state parser_state(thd,
- trg_create_str->str,
- trg_create_str->length);
+ Parser_state parser_state;
+ if (parser_state.init(thd, trg_create_str->str, trg_create_str->length))
+ goto err_with_lex_cleanup;
Trigger_creation_ctx *creation_ctx=
Trigger_creation_ctx::create(thd,
@@ -1391,7 +1391,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
To remove this prefix we use check_n_cut_mysql50_prefix().
*/
- char fname[NAME_LEN + 1];
+ char fname[SAFE_NAME_LEN + 1];
DBUG_ASSERT((!my_strcasecmp(table_alias_charset, lex.query_tables->db, db) ||
(check_n_cut_mysql50_prefix(db, fname, sizeof(fname)) &&
!my_strcasecmp(table_alias_charset, lex.query_tables->db, fname))) &&
@@ -1413,7 +1413,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
*/
triggers->trigger_fields[lex.trg_chistics.event]
[lex.trg_chistics.action_time]=
- (Item_trigger_field *)(lex.trg_table_fields.first);
+ lex.trg_table_fields.first;
/*
Also let us bind these objects to Field objects in table being
opened.
@@ -1423,8 +1423,7 @@ bool Table_triggers_list::check_n_load(THD *thd, const char *db,
SELECT)...
Anyway some things can be checked only during trigger execution.
*/
- for (Item_trigger_field *trg_field=
- (Item_trigger_field *)(lex.trg_table_fields.first);
+ for (Item_trigger_field *trg_field= lex.trg_table_fields.first;
trg_field;
trg_field= trg_field->next_trg_field)
{
@@ -1918,7 +1917,7 @@ bool Table_triggers_list::change_table_name(THD *thd, const char *db,
*/
if (my_strcasecmp(table_alias_charset, db, new_db))
{
- char dbname[NAME_LEN + 1];
+ char dbname[SAFE_NAME_LEN + 1];
if (check_n_cut_mysql50_prefix(db, dbname, sizeof(dbname)) &&
!my_strcasecmp(table_alias_charset, dbname, new_db))
{
diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc
index b18f0c28bdf..754a6f18536 100644
--- a/sql/sql_udf.cc
+++ b/sql/sql_udf.cc
@@ -152,7 +152,13 @@ void udf_init()
}
table= tables.table;
- init_read_record(&read_record_info, new_thd, table, NULL,1,0,FALSE);
+ if (init_read_record(&read_record_info, new_thd, table, NULL,1,0,FALSE))
+ {
+ sql_print_error("Could not initialize init_read_record; udf's not "
+ "loaded");
+ goto end;
+ }
+
table->use_all_columns();
while (!(error= read_record_info.read_record(&read_record_info)))
{
@@ -209,7 +215,7 @@ void udf_init()
}
tmp->dlhandle = dl;
{
- char buf[NAME_LEN+16], *missing;
+ char buf[SAFE_NAME_LEN+16], *missing;
if ((missing= init_syms(tmp, buf)))
{
sql_print_error(ER(ER_CANT_FIND_DL_ENTRY), missing);
@@ -463,7 +469,7 @@ int mysql_create_function(THD *thd,udf_func *udf)
}
udf->dlhandle=dl;
{
- char buf[NAME_LEN+16], *missing;
+ char buf[SAFE_NAME_LEN+16], *missing;
if ((missing= init_syms(udf, buf)))
{
my_error(ER_CANT_FIND_DL_ENTRY, MYF(0), missing);
diff --git a/sql/sql_union.cc b/sql/sql_union.cc
index 374e92c6a52..33fedb67ac4 100644
--- a/sql/sql_union.cc
+++ b/sql/sql_union.cc
@@ -167,20 +167,19 @@ void
st_select_lex_unit::init_prepare_fake_select_lex(THD *thd_arg)
{
thd_arg->lex->current_select= fake_select_lex;
- fake_select_lex->table_list.link_in_list((uchar *)&result_table_list,
- (uchar **)
- &result_table_list.next_local);
+ fake_select_lex->table_list.link_in_list(&result_table_list,
+ &result_table_list.next_local);
fake_select_lex->context.table_list=
fake_select_lex->context.first_name_resolution_table=
fake_select_lex->get_table_list();
if (!fake_select_lex->first_execution)
{
- for (ORDER *order= (ORDER *) global_parameters->order_list.first;
+ for (ORDER *order= global_parameters->order_list.first;
order;
order= order->next)
order->item= &order->item_ptr;
}
- for (ORDER *order= (ORDER *)global_parameters->order_list.first;
+ for (ORDER *order= global_parameters->order_list.first;
order;
order=order->next)
{
@@ -272,18 +271,18 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
can_skip_order_by= is_union_select && !(sl->braces && sl->explicit_limit);
saved_error= join->prepare(&sl->ref_pointer_array,
- (TABLE_LIST*) sl->table_list.first,
+ sl->table_list.first,
sl->with_wild,
sl->where,
(can_skip_order_by ? 0 :
sl->order_list.elements) +
sl->group_list.elements,
can_skip_order_by ?
- (ORDER*) 0 : (ORDER *)sl->order_list.first,
- (ORDER*) sl->group_list.first,
+ NULL : sl->order_list.first,
+ sl->group_list.first,
sl->having,
- (is_union_select ? (ORDER*) 0 :
- (ORDER*) thd_arg->lex->proc_list.first),
+ (is_union_select ? NULL :
+ thd_arg->lex->proc_list.first),
sl, this);
/* There are no * in the statement anymore (for PS) */
sl->with_wild= 0;
@@ -377,7 +376,7 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
{
ORDER *ord;
Item_func::Functype ft= Item_func::FT_FUNC;
- for (ord= (ORDER*)global_parameters->order_list.first; ord; ord= ord->next)
+ for (ord= global_parameters->order_list.first; ord; ord= ord->next)
if ((*ord->item)->walk (&Item::find_function_processor, FALSE,
(uchar *) &ft))
{
@@ -439,12 +438,11 @@ bool st_select_lex_unit::prepare(THD *thd_arg, select_result *sel_result,
thd_arg->lex->current_select= fake_select_lex;
saved_error= fake_select_lex->join->
prepare(&fake_select_lex->ref_pointer_array,
- (TABLE_LIST*) fake_select_lex->table_list.first,
+ fake_select_lex->table_list.first,
0, 0,
fake_select_lex->order_list.elements,
- (ORDER*) fake_select_lex->order_list.first,
- (ORDER*) NULL, NULL,
- (ORDER*) NULL,
+ fake_select_lex->order_list.first,
+ NULL, NULL, NULL,
fake_select_lex, this);
fake_select_lex->table_list.empty();
}
@@ -620,8 +618,8 @@ bool st_select_lex_unit::exec()
&result_table_list,
0, item_list, NULL,
global_parameters->order_list.elements,
- (ORDER*)global_parameters->order_list.first,
- (ORDER*) NULL, NULL, (ORDER*) NULL,
+ global_parameters->order_list.first,
+ NULL, NULL, NULL,
fake_select_lex->options | SELECT_NO_UNLOCK,
result, this, fake_select_lex);
}
@@ -643,8 +641,8 @@ bool st_select_lex_unit::exec()
&result_table_list,
0, item_list, NULL,
global_parameters->order_list.elements,
- (ORDER*)global_parameters->order_list.first,
- (ORDER*) NULL, NULL, (ORDER*) NULL,
+ global_parameters->order_list.first,
+ NULL, NULL, NULL,
fake_select_lex->options | SELECT_NO_UNLOCK,
result, this, fake_select_lex);
}
@@ -720,7 +718,7 @@ bool st_select_lex_unit::cleanup()
if (global_parameters->order_list.elements)
{
ORDER *ord;
- for (ord= (ORDER*)global_parameters->order_list.first; ord; ord= ord->next)
+ for (ord= global_parameters->order_list.first; ord; ord= ord->next)
(*ord->item)->walk (&Item::cleanup_processor, 0, 0);
}
}
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index a7d12ce6efd..531227eb76f 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -29,12 +29,12 @@
bool compare_record(TABLE *table)
{
- if (table->s->blob_fields + table->s->varchar_fields == 0)
+ if (table->s->can_cmp_whole_record)
return cmp_record(table,record[1]);
/* Compare null bits */
if (memcmp(table->null_flags,
table->null_flags+table->s->rec_buff_length,
- table->s->null_bytes))
+ table->s->null_bytes_for_compare))
return TRUE; // Diff in NULL value
/* Compare updated fields */
for (Field **ptr= table->field ; *ptr ; ptr++)
@@ -394,7 +394,7 @@ int mysql_update(THD *thd,
matching rows before updating the table!
*/
if (used_index < MAX_KEY && old_covering_keys.is_set(used_index))
- table->mark_columns_used_by_index(used_index);
+ table->add_read_columns_used_by_index(used_index);
else
{
table->use_all_columns();
@@ -422,6 +422,7 @@ int mysql_update(THD *thd,
{
goto err;
}
+ thd->examined_row_count+= examined_rows;
/*
Filesort has already found and selected the rows we want to update,
so we don't need the where clause
@@ -459,17 +460,21 @@ int mysql_update(THD *thd,
*/
if (used_index == MAX_KEY || (select && select->quick))
- init_read_record(&info, thd, table, select, 0, 1, FALSE);
+ {
+ if (init_read_record(&info, thd, table, select, 0, 1, FALSE))
+ goto err;
+ }
else
init_read_record_idx(&info, thd, table, 1, used_index);
thd_proc_info(thd, "Searching rows for update");
ha_rows tmp_limit= limit;
- while (!(error=info.read_record(&info)) &&
- !thd->killed && !thd->is_error())
+ while (!(error=info.read_record(&info)) && !thd->killed)
{
- if (!select || select->skip_record(thd) > 0)
+ update_virtual_fields(thd, table);
+ thd->examined_row_count++;
+ if (!select || (error= select->skip_record(thd)) > 0)
{
if (table->file->was_semi_consistent_read())
continue; /* repeat the read of the same row if it still exists */
@@ -488,7 +493,15 @@ int mysql_update(THD *thd,
}
}
else
+ {
table->file->unlock_row();
+ if (error < 0)
+ {
+ /* Fatal error from select->skip_record() */
+ error= 1;
+ break;
+ }
+ }
}
if (thd->killed && !error)
error= 1; // Aborted
@@ -526,7 +539,8 @@ int mysql_update(THD *thd,
if (select && select->quick && select->quick->reset())
goto err;
table->file->try_semi_consistent_read(1);
- init_read_record(&info, thd, table, select, 0, 1, FALSE);
+ if (init_read_record(&info, thd, table, select, 0, 1, FALSE))
+ goto err;
updated= found= 0;
/*
@@ -575,6 +589,8 @@ int mysql_update(THD *thd,
while (!(error=info.read_record(&info)) && !thd->killed)
{
+ update_virtual_fields(thd, table);
+ thd->examined_row_count++;
if (!select || select->skip_record(thd) > 0)
{
if (table->file->was_semi_consistent_read())
@@ -1048,7 +1064,7 @@ reopen_tables:
correct order of statements. Otherwise, we use a TL_READ lock to
improve performance.
*/
- tl->lock_type= read_lock_type_for_table(thd, table);
+ tl->lock_type= read_lock_type_for_table(thd, lex, tl);
tl->updating= 0;
/* Update TABLE::lock_type accordingly. */
if (!tl->placeholder() && !using_lock_tables)
@@ -1326,7 +1342,7 @@ int multi_update::prepare(List<Item> &not_used_values,
SELECT_LEX_UNIT *lex_unit)
{
TABLE_LIST *table_ref;
- SQL_LIST update;
+ SQL_I_List<TABLE_LIST> update;
table_map tables_to_update;
Item_field *item;
List_iterator_fast<Item> field_it(*fields);
@@ -1406,11 +1422,11 @@ int multi_update::prepare(List<Item> &not_used_values,
leaf_table_count++;
if (tables_to_update & table->map)
{
- TABLE_LIST *tl= (TABLE_LIST*) thd->memdup((char*) table_ref,
+ TABLE_LIST *tl= (TABLE_LIST*) thd->memdup(table_ref,
sizeof(*tl));
if (!tl)
DBUG_RETURN(1);
- update.link_in_list((uchar*) tl, (uchar**) &tl->next_local);
+ update.link_in_list(tl, &tl->next_local);
tl->shared= table_count++;
table->no_keyread=1;
table->covering_keys.clear_all();
@@ -1431,7 +1447,7 @@ int multi_update::prepare(List<Item> &not_used_values,
table_count= update.elements;
- update_tables= (TABLE_LIST*) update.first;
+ update_tables= update.first;
tmp_tables = (TABLE**) thd->calloc(sizeof(TABLE *) * table_count);
tmp_table_param = (TMP_TABLE_PARAM*) thd->calloc(sizeof(TMP_TABLE_PARAM) *
@@ -1954,7 +1970,7 @@ int multi_update::do_updates()
TABLE_LIST *cur_table;
int local_error= 0;
ha_rows org_updated;
- TABLE *table, *tmp_table;
+ TABLE *table, *tmp_table, *err_table;
List_iterator_fast<TABLE> check_opt_it(unupdated_check_opt_tables);
DBUG_ENTER("multi_update::do_updates");
@@ -1972,14 +1988,21 @@ int multi_update::do_updates()
org_updated= updated;
tmp_table= tmp_tables[cur_table->shared];
tmp_table->file->extra(HA_EXTRA_CACHE); // Change to read cache
- (void) table->file->ha_rnd_init(0);
+ if ((local_error= table->file->ha_rnd_init(0)))
+ {
+ err_table= table;
+ goto err;
+ }
table->file->extra(HA_EXTRA_NO_CACHE);
check_opt_it.rewind();
while(TABLE *tbl= check_opt_it++)
{
- if (tbl->file->ha_rnd_init(1))
+ if ((local_error= tbl->file->ha_rnd_init(1)))
+ {
+ err_table= tbl;
goto err;
+ }
tbl->file->extra(HA_EXTRA_CACHE);
}
@@ -1987,9 +2010,11 @@ int multi_update::do_updates()
Setup copy functions to copy fields from temporary table
*/
List_iterator_fast<Item> field_it(*fields_for_table[offset]);
- Field **field= tmp_table->field +
- 1 + unupdated_check_opt_tables.elements; // Skip row pointers
+ Field **field;
Copy_field *copy_field_ptr= copy_field, *copy_field_end;
+
+ /* Skip row pointers */
+ field= tmp_table->field + 1 + unupdated_check_opt_tables.elements;
for ( ; *field ; field++)
{
Item_field *item= (Item_field* ) field_it++;
@@ -1997,8 +2022,11 @@ int multi_update::do_updates()
}
copy_field_end=copy_field_ptr;
- if ((local_error = tmp_table->file->ha_rnd_init(1)))
+ if ((local_error= tmp_table->file->ha_rnd_init(1)))
+ {
+ err_table= tmp_table;
goto err;
+ }
can_compare_record= (!(table->file->ha_table_flags() &
HA_PARTIAL_COLUMN_READ) ||
@@ -2008,13 +2036,17 @@ int multi_update::do_updates()
for (;;)
{
if (thd->killed && trans_safe)
- goto err;
+ {
+ thd->fatal_error();
+ goto err2;
+ }
if ((local_error= tmp_table->file->ha_rnd_next(tmp_table->record[0])))
{
if (local_error == HA_ERR_END_OF_FILE)
break;
if (local_error == HA_ERR_RECORD_DELETED)
continue; // May happen on dup key
+ err_table= tmp_table;
goto err;
}
@@ -2027,7 +2059,10 @@ int multi_update::do_updates()
if ((local_error=
tbl->file->ha_rnd_pos(tbl->record[0],
(uchar*) tmp_table->field[field_num]->ptr)))
+ {
+ err_table= tbl;
goto err;
+ }
field_num++;
} while ((tbl= check_opt_it++));
@@ -2054,7 +2089,10 @@ int multi_update::do_updates()
if (error == VIEW_CHECK_SKIP)
continue;
else if (error == VIEW_CHECK_ERROR)
- goto err;
+ {
+ thd->fatal_error();
+ goto err2;
+ }
}
if ((local_error=table->file->ha_update_row(table->record[1],
table->record[0])) &&
@@ -2062,7 +2100,10 @@ int multi_update::do_updates()
{
if (!ignore ||
table->file->is_fatal_error(local_error, HA_CHECK_DUP_KEY))
+ {
+ err_table= table;
goto err;
+ }
}
if (local_error != HA_ERR_RECORD_IS_THE_SAME)
updated++;
diff --git a/sql/sql_view.cc b/sql/sql_view.cc
index 5381ce94411..204100f6034 100644
--- a/sql/sql_view.cc
+++ b/sql/sql_view.cc
@@ -887,7 +887,7 @@ static int mysql_register_view(THD *thd, TABLE_LIST *view,
view->algorithm != VIEW_ALGORITHM_TMPTABLE)))
{
/* TODO: change here when we will support UNIONs */
- for (TABLE_LIST *tbl= (TABLE_LIST *)lex->select_lex.table_list.first;
+ for (TABLE_LIST *tbl= lex->select_lex.table_list.first;
tbl;
tbl= tbl->next_local)
{
@@ -1006,7 +1006,7 @@ loop_out:
*/
if (view->updatable_view &&
!lex->select_lex.master_unit()->is_union() &&
- !((TABLE_LIST*)lex->select_lex.table_list.first)->next_local &&
+ !(lex->select_lex.table_list.first)->next_local &&
find_table_in_global_list(lex->query_tables->next_global,
lex->query_tables->db,
lex->query_tables->table_name))
@@ -1189,12 +1189,13 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
table->view= lex= thd->lex= (LEX*) new(thd->mem_root) st_lex_local;
{
- char old_db_buf[NAME_LEN+1];
+ char old_db_buf[SAFE_NAME_LEN+1];
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
bool dbchanged;
- Parser_state parser_state(thd,
- table->select_stmt.str,
- table->select_stmt.length);
+ Parser_state parser_state;
+ if (parser_state.init(thd, table->select_stmt.str,
+ table->select_stmt.length))
+ goto err;
/*
Use view db name as thread default database, in order to ensure
@@ -1351,8 +1352,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
This may change in future, for example if we enable merging of
views with subqueries in select list.
*/
- view_main_select_tables=
- (TABLE_LIST*)lex->select_lex.table_list.first;
+ view_main_select_tables= lex->select_lex.table_list.first;
/*
Let us set proper lock type for tables of the view's main
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index b63fc0eae4a..75a16e19d83 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -516,8 +516,7 @@ set_trigger_new_row(THD *thd, LEX_STRING *name, Item *val)
Let us add this item to list of all Item_trigger_field
objects in trigger.
*/
- lex->trg_table_fields.link_in_list((uchar *) trg_fld,
- (uchar **) &trg_fld->next_trg_field);
+ lex->trg_table_fields.link_in_list(trg_fld, &trg_fld->next_trg_field);
return lex->sphead->add_instr(sp_fld);
}
@@ -4710,11 +4709,9 @@ create_table_option:
TABLE_LIST *table_list= lex->select_lex.get_table_list();
lex->create_info.merge_list= lex->select_lex.table_list;
lex->create_info.merge_list.elements--;
- lex->create_info.merge_list.first=
- (uchar*) (table_list->next_local);
+ lex->create_info.merge_list.first= table_list->next_local;
lex->select_lex.table_list.elements=1;
- lex->select_lex.table_list.next=
- (uchar**) &(table_list->next_local);
+ lex->select_lex.table_list.next= &(table_list->next_local);
table_list->next_local= 0;
lex->create_info.used_fields|= HA_CREATE_USED_UNION;
}
@@ -5847,8 +5844,7 @@ alter:
lex->alter_info.reset();
lex->col_list.empty();
lex->select_lex.init_order();
- lex->select_lex.db=
- ((TABLE_LIST*) lex->select_lex.table_list.first)->db;
+ lex->select_lex.db= (lex->select_lex.table_list.first)->db;
bzero((char*) &lex->create_info,sizeof(lex->create_info));
lex->create_info.db_type= 0;
lex->create_info.default_table_charset= NULL;
@@ -6761,8 +6757,6 @@ cache_keys_spec:
{
Lex->select_lex.alloc_index_hints(YYTHD);
Select->set_index_hint_type(INDEX_HINT_USE,
- global_system_variables.old_mode ?
- INDEX_HINT_MASK_JOIN :
INDEX_HINT_MASK_ALL);
}
cache_key_list_or_empty
@@ -8560,9 +8554,8 @@ opt_gorder_clause:
| order_clause
{
SELECT_LEX *select= Select;
- select->gorder_list=
- (SQL_LIST*) sql_memdup((char*) &select->order_list,
- sizeof(st_sql_list));
+ select->gorder_list= new (YYTHD->mem_root)
+ SQL_I_List<ORDER>(select->order_list);
if (select->gorder_list == NULL)
MYSQL_YYABORT;
select->order_list.empty();
@@ -9512,7 +9505,7 @@ procedure_clause:
}
lex->proc_list.elements=0;
lex->proc_list.first=0;
- lex->proc_list.next= (uchar**) &lex->proc_list.first;
+ lex->proc_list.next= &lex->proc_list.first;
Item_field *item= new (YYTHD->mem_root)
Item_field(&lex->current_select->context,
NULL, NULL, $2.str);
@@ -11500,8 +11493,8 @@ simple_ident_q:
Let us add this item to list of all Item_trigger_field objects
in trigger.
*/
- lex->trg_table_fields.link_in_list((uchar*) trg_fld,
- (uchar**) &trg_fld->next_trg_field);
+ lex->trg_table_fields.link_in_list(trg_fld,
+ &trg_fld->next_trg_field);
$$= trg_fld;
}
@@ -11587,7 +11580,7 @@ field_ident:
ident { $$=$1;}
| ident '.' ident '.' ident
{
- TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first;
+ TABLE_LIST *table= Select->table_list.first;
if (my_strcasecmp(table_alias_charset, $1.str, table->db))
{
my_error(ER_WRONG_DB_NAME, MYF(0), $1.str);
@@ -11603,7 +11596,7 @@ field_ident:
}
| ident '.' ident
{
- TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first;
+ TABLE_LIST *table= Select->table_list.first;
if (my_strcasecmp(table_alias_charset, $1.str, table->alias))
{
my_error(ER_WRONG_TABLE_NAME, MYF(0), $1.str);
diff --git a/sql/table.cc b/sql/table.cc
index 2b1a85a74ea..302c5090925 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -54,6 +54,8 @@ static uint find_field(Field **fields, uchar *record, uint start, uint length);
inline bool is_system_table_name(const char *name, uint length);
+static ulong get_form_pos(File file, uchar *head);
+
/**************************************************************************
Object_creation_ctx implementation.
**************************************************************************/
@@ -306,13 +308,6 @@ TABLE_SHARE *alloc_table_share(TABLE_LIST *table_list, char *key,
share->version= refresh_version;
/*
- This constant is used to mark that no table map version has been
- assigned. No arithmetic is done on the value: it will be
- overwritten with a value taken from MYSQL_BIN_LOG.
- */
- share->table_map_version= ~(ulonglong)0;
-
- /*
Since alloc_table_share() can be called without any locking (for
example, ha_create_table... functions), we do not assign a table
map id here. Instead we assign a value that is not used
@@ -375,11 +370,6 @@ void init_tmp_table_share(THD *thd, TABLE_SHARE *share, const char *key,
share->path.length= share->normalized_path.length= strlen(path);
share->frm_version= FRM_VER_TRUE_VARCHAR;
- /*
- Temporary tables are not replicated, but we set up these fields
- anyway to be able to catch errors.
- */
- share->table_map_version= ~(ulonglong)0;
share->cached_row_logging_check= -1;
/*
@@ -708,15 +698,20 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
const char **interval_array;
enum legacy_db_type legacy_db_type;
my_bitmap_map *bitmaps;
+ bool null_bits_are_used;
DBUG_ENTER("open_binary_frm");
+ LINT_INIT(options);
+ LINT_INIT(options_len);
+
new_field_pack_flag= head[27];
new_frm_ver= (head[2] - FRM_VER);
field_pack_length= new_frm_ver < 2 ? 11 : 17;
disk_buff= 0;
error= 3;
- if (!(pos=get_form_pos(file,head,(TYPELIB*) 0)))
+ /* Position of the form in the form file. */
+ if (!(pos= get_form_pos(file, head)))
goto err; /* purecov: inspected */
share->frm_version= head[2];
@@ -885,7 +880,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
/* Read extra data segment */
uchar *next_chunk, *buff_end;
DBUG_PRINT("info", ("extra segment size is %u bytes", n_length));
- if (!(next_chunk= buff= (uchar*) my_malloc(n_length, MYF(MY_WME))))
+ if (!(next_chunk= buff= (uchar*) my_malloc(n_length+1, MYF(MY_WME))))
goto err;
if (my_pread(file, buff, n_length, record_offset + share->reclength,
MYF(MY_NABP)))
@@ -960,6 +955,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
{
/* purecov: begin inspected */
error= 8;
+ name.str[name.length]= 0;
my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), name.str);
goto free_and_err;
/* purecov: end */
@@ -1154,6 +1150,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
goto free_and_err;
record= share->default_values-1; /* Fieldstart = 1 */
+ null_bits_are_used= share->null_fields != 0;
if (share->null_field_first)
{
null_flags= null_pos= (uchar*) record+1;
@@ -1372,6 +1369,7 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
reg_field->stored_in_db= fld_stored_in_db;
if (field_type == MYSQL_TYPE_BIT && !f_bit_as_char(pack_flag))
{
+ null_bits_are_used= 1;
if ((null_bit_pos+= field_length & 7) > 7)
{
null_pos++;
@@ -1505,12 +1503,6 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
keyinfo->extra_length+=HA_KEY_BLOB_LENGTH;
key_part->store_length+=HA_KEY_BLOB_LENGTH;
keyinfo->key_length+= HA_KEY_BLOB_LENGTH;
- /*
- Mark that there may be many matching values for one key
- combination ('a', 'a ', 'a '...)
- */
- if (!(field->flags & BINARY_FLAG))
- keyinfo->flags|= HA_END_SPACE_KEY;
}
if (field->type() == MYSQL_TYPE_BIT)
key_part->key_part_flag|= HA_BIT_PART;
@@ -1694,6 +1686,9 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
share->null_bytes= (null_pos - (uchar*) null_flags +
(null_bit_pos + 7) / 8);
share->last_null_bit_pos= null_bit_pos;
+ share->null_bytes_for_compare= null_bits_are_used ? share->null_bytes : 0;
+ share->can_cmp_whole_record= (share->blob_fields == 0 &&
+ share->varchar_fields == 0);
share->db_low_byte_first= handler_file->low_byte_first();
share->column_bitmap_size= bitmap_buffer_size(share->fields);
@@ -1851,6 +1846,11 @@ bool fix_vcol_expr(THD *thd,
goto end;
}
thd->where= save_where;
+ if (unlikely(func_expr->result_type() == ROW_RESULT))
+ {
+ my_error(ER_ROW_EXPR_FOR_VCOL, MYF(0));
+ goto end;
+ }
#ifdef PARANOID
/*
Walk through the Item tree checking if all items are valid
@@ -1915,10 +1915,8 @@ end:
parses it, building an item object for it. The pointer to this item is
placed into in field->vcol_info.expr_item. After this the function performs
semantic analysis of the item by calling the the function fix_vcol_expr.
- Since the defining expression is part of the table definition the item
- for it is created in table->memroot within a separate Query_arena.
- The free_list of this arena is saved in field->vcol_info.item_free_list
- to be freed when the table defition is removed from the TABLE_SHARE cache.
+ Since the defining expression is part of the table definition the item for
+ it is created in table->memroot within the special arena TABLE::expr_arena.
@note
Before passing 'vcol_expr" to the parser the function embraces it in
@@ -1935,18 +1933,25 @@ bool unpack_vcol_info_from_frm(THD *thd,
LEX_STRING *vcol_expr,
bool *error_reported)
{
- bool rc= FALSE;
+ bool rc;
+ char *vcol_expr_str;
+ int str_len;
+ CHARSET_INFO *old_character_set_client;
+ Query_arena *backup_stmt_arena_ptr;
+ Query_arena backup_arena;
+ Query_arena *vcol_arena= 0;
+ Parser_state parser_state;
DBUG_ENTER("unpack_vcol_info_from_frm");
DBUG_ASSERT(vcol_expr);
+ old_character_set_client= thd->variables.character_set_client;
+ backup_stmt_arena_ptr= thd->stmt_arena;
+
/*
Step 1: Construct the input string for the parser.
The string to be parsed has to be of the following format:
"PARSE_VCOL_EXPR (<expr_string_from_frm>)".
*/
- char *vcol_expr_str;
- int str_len= 0;
- CHARSET_INFO *old_character_set_client;
if (!(vcol_expr_str= (char*) alloc_root(&table->mem_root,
vcol_expr->length +
@@ -1968,19 +1973,27 @@ bool unpack_vcol_info_from_frm(THD *thd,
str_len++;
memcpy(vcol_expr_str + str_len, "\0", 1);
str_len++;
- Parser_state parser_state(thd, vcol_expr_str, str_len);
+
+ if (parser_state.init(thd, vcol_expr_str, str_len))
+ goto err;
/*
Step 2: Setup thd for parsing.
*/
- Query_arena *backup_stmt_arena_ptr= thd->stmt_arena;
- Query_arena backup_arena;
- Query_arena vcol_arena(&table->mem_root, Query_arena::INITIALIZED);
- thd->set_n_backup_active_arena(&vcol_arena, &backup_arena);
- thd->stmt_arena= &vcol_arena;
+ vcol_arena= table->expr_arena;
+ if (!vcol_arena)
+ {
+ Query_arena expr_arena(&table->mem_root, Query_arena::INITIALIZED);
+ if (!(vcol_arena= (Query_arena *) alloc_root(&table->mem_root,
+ sizeof(Query_arena))))
+ goto err;
+ *vcol_arena= expr_arena;
+ table->expr_arena= vcol_arena;
+ }
+ thd->set_n_backup_active_arena(vcol_arena, &backup_arena);
+ thd->stmt_arena= vcol_arena;
thd->lex->parse_vcol_expr= TRUE;
- old_character_set_client= thd->variables.character_set_client;
/*
Step 3: Use the parser to build an Item object from vcol_expr_str.
@@ -1999,7 +2012,7 @@ bool unpack_vcol_info_from_frm(THD *thd,
field->vcol_info= 0;
goto err;
}
- field->vcol_info->item_free_list= thd->free_list;
+ rc= FALSE;
goto end;
err:
@@ -2008,7 +2021,8 @@ err:
thd->free_items();
end:
thd->stmt_arena= backup_stmt_arena_ptr;
- thd->restore_active_arena(&vcol_arena, &backup_arena);
+ if (vcol_arena)
+ thd->restore_active_arena(vcol_arena, &backup_arena);
thd->variables.character_set_client= old_character_set_client;
DBUG_RETURN(rc);
@@ -2323,9 +2337,9 @@ partititon_err:
(my_bitmap_map*) bitmaps, share->fields, FALSE);
bitmap_init(&outparam->def_write_set,
(my_bitmap_map*) (bitmaps+bitmap_size), share->fields, FALSE);
- bitmap_init(&outparam->tmp_set,
+ bitmap_init(&outparam->def_vcol_set,
(my_bitmap_map*) (bitmaps+bitmap_size*2), share->fields, FALSE);
- bitmap_init(&outparam->vcol_set,
+ bitmap_init(&outparam->tmp_set,
(my_bitmap_map*) (bitmaps+bitmap_size*3), share->fields, FALSE);
outparam->default_column_bitmaps();
@@ -2431,12 +2445,12 @@ int closefrm(register TABLE *table, bool free_share)
}
my_free((char*) table->alias, MYF(MY_ALLOW_ZERO_PTR));
table->alias= 0;
+ if (table->expr_arena)
+ table->expr_arena->free_items();
if (table->field)
{
for (Field **ptr=table->field ; *ptr ; ptr++)
{
- if ((*ptr)->vcol_info)
- free_items((*ptr)->vcol_info->item_free_list);
delete *ptr;
}
table->field= 0;
@@ -2497,55 +2511,46 @@ void free_field_buffers_larger_than(TABLE *table, uint32 size)
}
}
- /* Find where a form starts */
- /* if formname is NullS then only formnames is read */
+/**
+ Find where a form starts.
+
+ @param head The start of the form file.
+
+ @remark If formname is NULL then only formnames is read.
+
+ @retval The form position.
+*/
-ulong get_form_pos(File file, uchar *head, TYPELIB *save_names)
+static ulong get_form_pos(File file, uchar *head)
{
- uint a_length,names,length;
- uchar *pos,*buf;
+ uchar *pos, *buf;
+ uint names, length;
ulong ret_value=0;
DBUG_ENTER("get_form_pos");
- LINT_INIT(buf);
+ names= uint2korr(head+8);
- names=uint2korr(head+8);
- a_length=(names+2)*sizeof(char *); /* Room for two extra */
+ if (!(names= uint2korr(head+8)))
+ DBUG_RETURN(0);
- if (!save_names)
- a_length=0;
- else
- save_names->type_names=0; /* Clear if error */
-
- if (names)
- {
- length=uint2korr(head+4);
- VOID(my_seek(file,64L,MY_SEEK_SET,MYF(0)));
- if (!(buf= (uchar*) my_malloc((size_t) length+a_length+names*4,
- MYF(MY_WME))) ||
- my_read(file, buf+a_length, (size_t) (length+names*4),
- MYF(MY_NABP)))
- { /* purecov: inspected */
- x_free((uchar*) buf); /* purecov: inspected */
- DBUG_RETURN(0L); /* purecov: inspected */
- }
- pos= buf+a_length+length;
- ret_value=uint4korr(pos);
- }
- if (! save_names)
- {
- if (names)
- my_free((uchar*) buf,MYF(0));
- }
- else if (!names)
- bzero((char*) save_names,sizeof(save_names));
- else
+ length= uint2korr(head+4);
+
+ my_seek(file, 64L, MY_SEEK_SET, MYF(0));
+
+ if (!(buf= (uchar*) my_malloc(length+names*4, MYF(MY_WME))))
+ DBUG_RETURN(0);
+
+ if (my_read(file, buf, length+names*4, MYF(MY_NABP)))
{
- char *str;
- const char **tmp = (const char**) buf;
- str=(char *) (buf+a_length);
- fix_type_pointers(&tmp, save_names, 1, &str);
+ x_free(buf);
+ DBUG_RETURN(0);
}
+
+ pos= buf+length;
+ ret_value= uint4korr(pos);
+
+ my_free(buf, MYF(0));
+
DBUG_RETURN(ret_value);
}
@@ -3143,6 +3148,13 @@ bool check_db_name(LEX_STRING *org_name)
{
char *name= org_name->str;
uint name_length= org_name->length;
+ bool check_for_path_chars;
+
+ if ((check_for_path_chars= check_mysql50_prefix(name)))
+ {
+ name+= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
+ name_length-= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
+ }
if (!name_length || name_length > NAME_LEN)
return 1;
@@ -3150,41 +3162,29 @@ bool check_db_name(LEX_STRING *org_name)
if (lower_case_table_names && name != any_db)
my_casedn_str(files_charset_info, name);
-#if defined(USE_MB) && defined(USE_MB_IDENT)
- if (use_mb(system_charset_info))
- {
- name_length= 0;
- bool last_char_is_space= TRUE;
- char *end= name + org_name->length;
- while (name < end)
- {
- int len;
- last_char_is_space= my_isspace(system_charset_info, *name);
- len= my_ismbchar(system_charset_info, name, end);
- if (!len)
- len= 1;
- name+= len;
- name_length++;
- }
- return (last_char_is_space || name_length > NAME_CHAR_LEN);
- }
- else
-#endif
- return ((org_name->str[org_name->length - 1] != ' ') ||
- (name_length > NAME_CHAR_LEN)); /* purecov: inspected */
+ return check_table_name(name, name_length, check_for_path_chars);
}
+
/*
Allow anything as a table name, as long as it doesn't contain an
' ' at the end
returns 1 on error
*/
-
bool check_table_name(const char *name, uint length, bool check_for_path_chars)
{
uint name_length= 0; // name length in symbols
const char *end= name+length;
+
+
+ if (!check_for_path_chars &&
+ (check_for_path_chars= check_mysql50_prefix(name)))
+ {
+ name+= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
+ length-= MYSQL50_TABLE_NAME_PREFIX_LENGTH;
+ }
+
if (!length || length > NAME_LEN)
return 1;
#if defined(USE_MB) && defined(USE_MB_IDENT)
@@ -3208,10 +3208,10 @@ bool check_table_name(const char *name, uint length, bool check_for_path_chars)
continue;
}
}
+#endif
if (check_for_path_chars &&
(*name == '/' || *name == '\\' || *name == '~' || *name == FN_EXTCHAR))
return 1;
-#endif
name++;
name_length++;
}
@@ -4789,10 +4789,10 @@ void st_table::clear_column_bitmaps()
Reset column read/write usage. It's identical to:
bitmap_clear_all(&table->def_read_set);
bitmap_clear_all(&table->def_write_set);
+ bitmap_clear_all(&table->def_vcol_set);
*/
- bzero((char*) def_read_set.bitmap, s->column_bitmap_size*2);
- bzero((char*) def_read_set.bitmap, s->column_bitmap_size*4);
- column_bitmaps_set(&def_read_set, &def_write_set);
+ bzero((char*) def_read_set.bitmap, s->column_bitmap_size*3);
+ column_bitmaps_set(&def_read_set, &def_write_set, &def_vcol_set);
}
@@ -4844,6 +4844,27 @@ void st_table::mark_columns_used_by_index(uint index)
/*
+ Add fields used by a specified index to the table's read_set.
+
+ NOTE:
+ The original state can be restored with
+ restore_column_maps_after_mark_index().
+*/
+
+void st_table::add_read_columns_used_by_index(uint index)
+{
+ MY_BITMAP *bitmap= &tmp_set;
+ DBUG_ENTER("st_table::add_read_columns_used_by_index");
+
+ enable_keyread();
+ bitmap_copy(bitmap, read_set);
+ mark_columns_used_by_index_no_reset(index, bitmap);
+ column_bitmaps_set(bitmap, write_set);
+ DBUG_VOID_RETURN;
+}
+
+
+/*
Restore to use normal column maps after key read
NOTES
@@ -5011,7 +5032,7 @@ void st_table::mark_columns_needed_for_update()
}
}
/* Mark all virtual columns needed for update */
- mark_virtual_columns_for_write();
+ mark_virtual_columns_for_write(FALSE);
DBUG_VOID_RETURN;
}
@@ -5039,7 +5060,7 @@ void st_table::mark_columns_needed_for_insert()
if (found_next_number_field)
mark_auto_increment_column();
/* Mark virtual columns for insert */
- mark_virtual_columns_for_write();
+ mark_virtual_columns_for_write(TRUE);
}
@@ -5065,7 +5086,7 @@ bool st_table::mark_virtual_col(Field *field)
{
bool res;
DBUG_ASSERT(field->vcol_info);
- if (!(res= bitmap_fast_test_and_set(&vcol_set, field->field_index)))
+ if (!(res= bitmap_fast_test_and_set(vcol_set, field->field_index)))
{
Item *vcol_item= field->vcol_info->expr_item;
DBUG_ASSERT(vcol_item);
@@ -5077,10 +5098,14 @@ bool st_table::mark_virtual_col(Field *field)
/*
@brief Mark virtual columns for update/insert commands
+
+ @param insert_fl <-> virtual columns are marked for insert command
@details
The function marks virtual columns used in a update/insert commands
in the vcol_set bitmap.
+ For an insert command a virtual column is always marked in write_set if
+ it is a stored column.
If a virtual column is from write_set it is always marked in vcol_set.
If a stored virtual column is not from write_set but it is computed
through columns from write_set it is also marked in vcol_set, and,
@@ -5099,7 +5124,7 @@ bool st_table::mark_virtual_col(Field *field)
be added to read_set either.
*/
-void st_table::mark_virtual_columns_for_write(void)
+void st_table::mark_virtual_columns_for_write(bool insert_fl)
{
Field **vfield_ptr, *tmp_vfield;
bool bitmap_updated= FALSE;
@@ -5111,16 +5136,21 @@ void st_table::mark_virtual_columns_for_write(void)
bitmap_updated= mark_virtual_col(tmp_vfield);
else if (tmp_vfield->stored_in_db)
{
- MY_BITMAP *save_read_set;
- Item *vcol_item= tmp_vfield->vcol_info->expr_item;
- DBUG_ASSERT(vcol_item);
- bitmap_clear_all(&tmp_set);
- save_read_set= read_set;
- read_set= &tmp_set;
- vcol_item->walk(&Item::register_field_in_read_map, 1, (uchar *) 0);
- read_set= save_read_set;
- bitmap_intersect(&tmp_set, write_set);
- if (!bitmap_is_clear_all(&tmp_set))
+ bool mark_fl= insert_fl;
+ if (!mark_fl)
+ {
+ MY_BITMAP *save_read_set;
+ Item *vcol_item= tmp_vfield->vcol_info->expr_item;
+ DBUG_ASSERT(vcol_item);
+ bitmap_clear_all(&tmp_set);
+ save_read_set= read_set;
+ read_set= &tmp_set;
+ vcol_item->walk(&Item::register_field_in_read_map, 1, (uchar *) 0);
+ read_set= save_read_set;
+ bitmap_intersect(&tmp_set, write_set);
+ mark_fl= !bitmap_is_clear_all(&tmp_set);
+ }
+ if (mark_fl)
{
bitmap_set_bit(write_set, tmp_vfield->field_index);
mark_virtual_col(tmp_vfield);
@@ -5529,6 +5559,7 @@ size_t max_row_length(TABLE *table, const uchar *data)
/*
@brief Compute values for virtual columns used in query
+ @param thd Thread handle
@param table The TABLE object
@param for_write Requests to compute only fields needed for write
@@ -5545,7 +5576,7 @@ size_t max_row_length(TABLE *table, const uchar *data)
>0 Error occurred when storing a virtual field value
*/
-int update_virtual_fields(TABLE *table, bool for_write)
+int update_virtual_fields(THD *thd, TABLE *table, bool for_write)
{
DBUG_ENTER("update_virtual_fields");
Field **vfield_ptr, *vfield;
@@ -5553,13 +5584,14 @@ int update_virtual_fields(TABLE *table, bool for_write)
if (!table || !table->vfield)
DBUG_RETURN(0);
+ thd->reset_arena_for_cached_items(table->expr_arena);
/* Iterate over virtual fields in the table */
for (vfield_ptr= table->vfield; *vfield_ptr; vfield_ptr++)
{
vfield= (*vfield_ptr);
DBUG_ASSERT(vfield->vcol_info && vfield->vcol_info->expr_item);
/* Only update those fields that are marked in the vcol_set bitmap */
- if (bitmap_is_set(&table->vcol_set, vfield->field_index) &&
+ if (bitmap_is_set(table->vcol_set, vfield->field_index) &&
(for_write || !vfield->stored_in_db))
{
/* Compute the actual value of the virtual fields */
@@ -5571,6 +5603,7 @@ int update_virtual_fields(TABLE *table, bool for_write)
DBUG_PRINT("info", ("field '%s' - skipped", vfield->field_name));
}
}
+ thd->reset_arena_for_cached_items(0);
DBUG_RETURN(0);
}
diff --git a/sql/table.h b/sql/table.h
index 3922e1dd6bd..99b5601c307 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -27,6 +27,7 @@ class st_select_lex;
class partition_info;
class COND_EQUAL;
class Security_context;
+class Query_arena;
/*************************************************************************/
@@ -57,7 +58,6 @@ typedef struct st_order {
struct st_order *next;
Item **item; /* Point at item in select fields */
Item *item_ptr; /* Storage for initial item */
- Item **item_copy; /* For SPs; the original item ptr */
int counter; /* position in SELECT list, correct
only if counter_used is true*/
bool asc; /* true if ascending */
@@ -407,6 +407,11 @@ typedef struct st_table_share
uint blob_ptr_size; /* 4 or 8 */
uint key_block_size; /* create key_block_size, if used */
uint null_bytes, last_null_bit_pos;
+ /*
+ Same as null_bytes, except that if there is only a 'delete-marker' in
+ the record then this value is 0.
+ */
+ uint null_bytes_for_compare;
uint fields; /* Number of fields */
/* Number of stored fields, generated-only virtual fields are not included */
uint stored_fields;
@@ -441,8 +446,8 @@ typedef struct st_table_share
bool name_lock, replace_with_name_lock;
bool waiting_on_cond; /* Protection against free */
bool deleting; /* going to delete this table */
+ bool can_cmp_whole_record;
ulong table_map_id; /* for row-based replication */
- ulonglong table_map_version;
/*
Cache for row-based replication table share checks that does not
@@ -455,7 +460,7 @@ typedef struct st_table_share
#ifdef WITH_PARTITION_STORAGE_ENGINE
/** @todo: Move into *ha_data for partitioning */
bool auto_partitioned;
- const char *partition_info;
+ char *partition_info;
uint partition_info_len;
uint partition_info_buffer_size;
const char *part_state;
@@ -718,9 +723,8 @@ struct st_table {
const char *alias; /* alias or table name */
uchar *null_flags;
my_bitmap_map *bitmap_init_value;
- MY_BITMAP def_read_set, def_write_set, tmp_set; /* containers */
- MY_BITMAP vcol_set; /* set of used virtual columns */
- MY_BITMAP *read_set, *write_set; /* Active column sets */
+ MY_BITMAP def_read_set, def_write_set, def_vcol_set, tmp_set;
+ MY_BITMAP *read_set, *write_set, *vcol_set; /* Active column sets */
/*
The ID of the query that opened and is using this table. Has different
meanings depending on the table type.
@@ -789,7 +793,7 @@ struct st_table {
/* number of select if it is derived table */
uint derived_select_number;
int current_lock; /* Type of lock on table */
- my_bool copy_blobs; /* copy_blobs when storing */
+ bool copy_blobs; /* copy_blobs when storing */
/*
0 or JOIN_TYPE_{LEFT|RIGHT}. Currently this is only compared to 0.
@@ -801,34 +805,34 @@ struct st_table {
If true, the current table row is considered to have all columns set to
NULL, including columns declared as "not null" (see maybe_null).
*/
- my_bool null_row;
+ bool null_row;
/*
TODO: Each of the following flags take up 8 bits. They can just as easily
be put into one single unsigned long and instead of taking up 18
bytes, it would take up 4.
*/
- my_bool force_index;
+ bool force_index;
/**
Flag set when the statement contains FORCE INDEX FOR ORDER BY
See TABLE_LIST::process_index_hints().
*/
- my_bool force_index_order;
+ bool force_index_order;
/**
Flag set when the statement contains FORCE INDEX FOR GROUP BY
See TABLE_LIST::process_index_hints().
*/
- my_bool force_index_group;
- my_bool distinct,const_table,no_rows;
+ bool force_index_group;
+ bool distinct,const_table,no_rows;
/**
If set, the optimizer has found that row retrieval should access index
tree only.
*/
- my_bool key_read;
- my_bool no_keyread;
+ bool key_read;
+ bool no_keyread;
/*
Placeholder for an open table which prevents other connections
from taking name-locks on this table. Typically used with
@@ -846,30 +850,38 @@ struct st_table {
object associated with it (db_stat is always 0), but please do
not rely on that.
*/
- my_bool open_placeholder;
- my_bool locked_by_logger;
- my_bool no_replicate;
- my_bool locked_by_name;
- my_bool fulltext_searched;
- my_bool no_cache;
+ bool open_placeholder;
+ bool locked_by_logger;
+ bool no_replicate;
+ bool locked_by_name;
+ bool fulltext_searched;
+ bool no_cache;
/* To signal that the table is associated with a HANDLER statement */
- my_bool open_by_handler;
+ bool open_by_handler;
/*
To indicate that a non-null value of the auto_increment field
was provided by the user or retrieved from the current record.
Used only in the MODE_NO_AUTO_VALUE_ON_ZERO mode.
*/
- my_bool auto_increment_field_not_null;
- my_bool insert_or_update; /* Can be used by the handler */
- my_bool alias_name_used; /* true if table_name is alias */
- my_bool get_fields_in_item_tree; /* Signal to fix_field */
+ bool auto_increment_field_not_null;
+ bool insert_or_update; /* Can be used by the handler */
+ bool alias_name_used; /* true if table_name is alias */
+ bool get_fields_in_item_tree; /* Signal to fix_field */
/* If MERGE children attached to parent. See top comment in ha_myisammrg.cc */
- my_bool children_attached;
+ bool children_attached;
REGINFO reginfo; /* field connections */
MEM_ROOT mem_root;
GRANT_INFO grant;
FILESORT_INFO sort;
+ /*
+ The arena which the items for expressions from the table definition
+ are associated with.
+ Currently only the items of the expressions for virtual columns are
+ associated with this arena.
+ TODO: To attach the partitioning expressions to this arena.
+ */
+ Query_arena *expr_arena;
#ifdef WITH_PARTITION_STORAGE_ENGINE
partition_info *part_info; /* Partition related information */
bool no_partitions_used; /* If true, all partitions have been pruned away */
@@ -881,13 +893,14 @@ struct st_table {
void prepare_for_position(void);
void mark_columns_used_by_index_no_reset(uint index, MY_BITMAP *map);
void mark_columns_used_by_index(uint index);
+ void add_read_columns_used_by_index(uint index);
void restore_column_maps_after_mark_index();
void mark_auto_increment_column(void);
void mark_columns_needed_for_update(void);
void mark_columns_needed_for_delete(void);
void mark_columns_needed_for_insert(void);
bool mark_virtual_col(Field *field);
- void mark_virtual_columns_for_write(void);
+ void mark_virtual_columns_for_write(bool insert_fl);
inline void column_bitmaps_set(MY_BITMAP *read_set_arg,
MY_BITMAP *write_set_arg)
{
@@ -896,12 +909,30 @@ struct st_table {
if (file)
file->column_bitmaps_signal();
}
+ inline void column_bitmaps_set(MY_BITMAP *read_set_arg,
+ MY_BITMAP *write_set_arg,
+ MY_BITMAP *vcol_set_arg)
+ {
+ read_set= read_set_arg;
+ write_set= write_set_arg;
+ vcol_set= vcol_set_arg;
+ if (file)
+ file->column_bitmaps_signal();
+ }
inline void column_bitmaps_set_no_signal(MY_BITMAP *read_set_arg,
MY_BITMAP *write_set_arg)
{
read_set= read_set_arg;
write_set= write_set_arg;
}
+ inline void column_bitmaps_set_no_signal(MY_BITMAP *read_set_arg,
+ MY_BITMAP *write_set_arg,
+ MY_BITMAP *vcol_set_arg)
+ {
+ read_set= read_set_arg;
+ write_set= write_set_arg;
+ vcol_set= vcol_set_arg;
+ }
inline void use_all_columns()
{
column_bitmaps_set(&s->all_set, &s->all_set);
@@ -910,6 +941,7 @@ struct st_table {
{
read_set= &def_read_set;
write_set= &def_write_set;
+ vcol_set= &def_vcol_set;
}
/* Is table open or should be treated as such by name-locking? */
inline bool is_name_opened() { return db_stat || open_placeholder; }
@@ -1200,7 +1232,7 @@ struct TABLE_LIST
}
/*
- List of tables local to a subquery (used by SQL_LIST). Considers
+ List of tables local to a subquery (used by SQL_I_List). Considers
views as leaves (unlike 'next_leaf' below). Created at parse time
in st_select_lex::add_table_to_list() -> table_list.link_in_list().
*/
@@ -1745,7 +1777,11 @@ typedef struct st_nested_join
*/
table_map used_tables;
table_map not_null_tables; /* tables that rejects nulls */
- struct st_join_table *first_nested;/* the first nested table in the plan */
+ /**
+ Used for pointing out the first table in the plan being covered by this
+ join nest. It is used exclusively within make_outerjoin_info().
+ */
+ struct st_join_table *first_nested;
/*
Used to count tables in the nested join in 2 isolated places:
1. In make_outerjoin_info().
@@ -1768,6 +1804,15 @@ typedef struct st_nested_join
/* Outer non-trivially correlated tables */
table_map sj_corr_tables;
List<Item> sj_outer_expr_list;
+ /**
+ True if this join nest node is completely covered by the query execution
+ plan. This means two things.
+
+ 1. All tables on its @c join_list are covered by the plan.
+
+ 2. All child join nest nodes are fully covered.
+ */
+ bool is_fully_covered() const { return join_list.elements == counter; }
} NESTED_JOIN;
diff --git a/sql/thr_malloc.cc b/sql/thr_malloc.cc
index 83c4a8ee2a0..da0c25b54dd 100644
--- a/sql/thr_malloc.cc
+++ b/sql/thr_malloc.cc
@@ -21,8 +21,6 @@
extern "C" {
void sql_alloc_error_handler(void)
{
- sql_print_error("%s", ER(ER_OUT_OF_RESOURCES));
-
THD *thd= current_thd;
if (thd)
{
@@ -49,6 +47,12 @@ extern "C" {
ER(ER_OUT_OF_RESOURCES));
}
}
+
+ /* Skip writing to the error log to avoid mtr complaints */
+ DBUG_EXECUTE_IF("simulate_out_of_memory", return;);
+
+ sql_print_error("%s", ER(ER_OUT_OF_RESOURCES));
+
}
}
diff --git a/sql/tztime.cc b/sql/tztime.cc
index ee151b1e515..3f3060fbc10 100644
--- a/sql/tztime.cc
+++ b/sql/tztime.cc
@@ -1814,6 +1814,7 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
my_time_t ttime;
char buff[MAX_FIELD_WIDTH];
uchar keybuff[32];
+ Field *field;
String abbr(buff, sizeof(buff), &my_charset_latin1);
char *alloc_buff, *tz_name_buff;
/*
@@ -1891,8 +1892,12 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
*/
table= tz_tables->table;
tz_tables= tz_tables->next_local;
- table->field[0]->store((longlong) tzid, TRUE);
- table->field[0]->get_key_image(keybuff, table->field[0]->pack_length(), Field::itRAW);
+ field= table->field[0];
+ field->store((longlong) tzid, TRUE);
+ DBUG_ASSERT(field->key_length() <= sizeof(keybuff));
+ field->get_key_image(keybuff,
+ min(field->key_length(), sizeof(keybuff)),
+ Field::itRAW);
(void)table->file->ha_index_init(0, 1);
if (table->file->ha_index_read_map(table->record[0], keybuff,
@@ -1919,8 +1924,12 @@ tz_load_from_open_tables(const String *tz_name, TABLE_LIST *tz_tables)
*/
table= tz_tables->table;
tz_tables= tz_tables->next_local;
- table->field[0]->store((longlong) tzid, TRUE);
- table->field[0]->get_key_image(keybuff, sizeof(keybuff), Field::itRAW);
+ field= table->field[0];
+ field->store((longlong) tzid, TRUE);
+ DBUG_ASSERT(field->key_length() <= sizeof(keybuff));
+ field->get_key_image(keybuff,
+ min(field->key_length(), sizeof(keybuff)),
+ Field::itRAW);
(void)table->file->ha_index_init(0, 1);
res= table->file->ha_index_read_map(table->record[0], keybuff,
diff --git a/sql/udf_example.c b/sql/udf_example.c
index 788582e32b6..979aebd4b23 100644
--- a/sql/udf_example.c
+++ b/sql/udf_example.c
@@ -1067,7 +1067,7 @@ char *myfunc_argument_name(UDF_INIT *initid __attribute__((unused)),
{
if (!args->attributes[0])
{
- null_value= 0;
+ *null_value= 1;
return 0;
}
(*length)--; /* space for ending \0 (for debugging purposes) */
diff --git a/sql/unireg.cc b/sql/unireg.cc
index a048adbef72..9859d27dd3b 100644
--- a/sql/unireg.cc
+++ b/sql/unireg.cc
@@ -113,7 +113,6 @@ bool mysql_create_frm(THD *thd, const char *file_name,
ulong filepos, data_offset;
uint options_len;
uchar fileinfo[64],forminfo[288],*keybuff;
- TYPELIB formnames;
uchar *screen_buff;
char buff[128];
#ifdef WITH_PARTITION_STORAGE_ENGINE
@@ -124,7 +123,7 @@ bool mysql_create_frm(THD *thd, const char *file_name,
DBUG_ENTER("mysql_create_frm");
DBUG_ASSERT(*fn_rext((char*)file_name)); // Check .frm extension
- formnames.type_names=0;
+
if (!(screen_buff=pack_screens(create_fields,&info_length,&screens,0)))
DBUG_RETURN(1);
DBUG_ASSERT(db_file != NULL);
@@ -210,8 +209,15 @@ bool mysql_create_frm(THD *thd, const char *file_name,
key_buff_length= uint4korr(fileinfo+47);
keybuff=(uchar*) my_malloc(key_buff_length, MYF(0));
key_info_length= pack_keys(keybuff, keys, key_info, data_offset);
- VOID(get_form_pos(file,fileinfo,&formnames));
- if (!(filepos=make_new_entry(file,fileinfo,&formnames,"")))
+
+ /*
+ Ensure that there are no forms in this newly created form file.
+ Even if the form file exists, create_frm must truncate it to
+ ensure one form per form file.
+ */
+ DBUG_ASSERT(uint2korr(fileinfo+8) == 0);
+
+ if (!(filepos= make_new_entry(file, fileinfo, NULL, "")))
goto err;
maxlength=(uint) next_io_size((ulong) (uint2korr(forminfo)+1000));
int2store(forminfo+2,maxlength);
diff --git a/sql/unireg.h b/sql/unireg.h
index ec4ecf6a10f..57a9038d5f7 100644
--- a/sql/unireg.h
+++ b/sql/unireg.h
@@ -129,8 +129,8 @@
#define SPECIAL_LOG_QUERIES_NOT_USING_INDEXES 4096 /* Obsolete */
/* Extern defines */
-#define store_record(A,B) bmove_align((A)->B,(A)->record[0],(size_t) (A)->s->reclength)
-#define restore_record(A,B) bmove_align((A)->record[0],(A)->B,(size_t) (A)->s->reclength)
+#define store_record(A,B) memcpy((A)->B,(A)->record[0],(size_t) (A)->s->reclength)
+#define restore_record(A,B) memcpy((A)->record[0],(A)->B,(size_t) (A)->s->reclength)
#define cmp_record(A,B) memcmp((A)->record[0],(A)->B,(size_t) (A)->s->reclength)
#define empty_record(A) { \
restore_record((A),s->default_values); \
diff --git a/storage/Makefile.am b/storage/Makefile.am
index 8aa1e4f7dc6..e232547139d 100644
--- a/storage/Makefile.am
+++ b/storage/Makefile.am
@@ -21,6 +21,3 @@ AUTOMAKE_OPTIONS = foreign
EXTRA_DIST = mysql_storage_engine.cmake
SUBDIRS = @mysql_se_dirs@
DIST_SUBDIRS = @mysql_se_distdirs@
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/storage/archive/Makefile.am b/storage/archive/Makefile.am
index d092f091798..254c95bf68b 100644
--- a/storage/archive/Makefile.am
+++ b/storage/archive/Makefile.am
@@ -36,14 +36,14 @@ noinst_PROGRAMS = archive_test archive_reader
EXTRA_LTLIBRARIES = ha_archive.la
pkgplugin_LTLIBRARIES = @plugin_archive_shared_target@
ha_archive_la_LDFLAGS = -module -rpath $(pkgplugindir)
-ha_archive_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_archive_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_archive_la_CXXFLAGS= -shared $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_archive_la_CFLAGS = -shared $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_archive_la_SOURCES = ha_archive.cc azio.c
EXTRA_LIBRARIES = libarchive.a
noinst_LIBRARIES = @plugin_archive_static_target@
-libarchive_a_CXXFLAGS = $(AM_CFLAGS)
+libarchive_a_CXXFLAGS = $(AM_CXXFLAGS)
libarchive_a_CFLAGS = $(AM_CFLAGS)
libarchive_a_SOURCES = ha_archive.cc azio.c
diff --git a/storage/archive/archive_reader.c b/storage/archive/archive_reader.c
index 84d4e318b49..0cf795cefdf 100644
--- a/storage/archive/archive_reader.c
+++ b/storage/archive/archive_reader.c
@@ -355,15 +355,14 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"set-auto-increment", 'A',
"Force auto_increment to start at this or higher value. If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.",
- (uchar**) &new_auto_increment,
- (uchar**) &new_auto_increment,
+ &new_auto_increment, &new_auto_increment,
0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"silent", 's',
"Only print errors. One can use two -s to make archive_reader very silent.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"tmpdir", 't',
"Path for temporary files.",
- (uchar**) &opt_tmpdir,
+ &opt_tmpdir,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V',
"Print version and exit.",
diff --git a/storage/archive/azio.c b/storage/archive/azio.c
index a24350dd454..fc54d98ab15 100644
--- a/storage/archive/azio.c
+++ b/storage/archive/azio.c
@@ -150,6 +150,17 @@ int az_open (azio_stream *s, const char *path, int Flags, File fd)
}
else
{
+ /* Reset values in case of old version of archive file */
+ s->rows= 0;
+ s->forced_flushes= 0;
+ s->shortest_row= 0;
+ s->longest_row= 0;
+ s->auto_increment= 0;
+ s->check_point= 0;
+ s->comment_start_pos= 0;
+ s->comment_length= 0;
+ s->frm_start_pos= 0;
+ s->frm_length= 0;
check_header(s); /* skip the .az header */
}
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc
index e3151d35e23..f3f5788360a 100644
--- a/storage/archive/ha_archive.cc
+++ b/storage/archive/ha_archive.cc
@@ -293,7 +293,7 @@ int ha_archive::read_data_header(azio_stream *file_to_read)
DBUG_PRINT("ha_archive", ("Version %u", data_buffer[1]));
if ((data_buffer[0] != (uchar)ARCHIVE_CHECK_HEADER) &&
- (data_buffer[1] != (uchar)ARCHIVE_VERSION))
+ (data_buffer[1] == 1 || data_buffer[1] == 2))
DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE);
DBUG_RETURN(0);
@@ -360,9 +360,19 @@ ARCHIVE_SHARE *ha_archive::get_share(const char *table_name, int *rc)
my_free(share, MYF(0));
DBUG_RETURN(NULL);
}
- stats.auto_increment_value= archive_tmp.auto_increment + 1;
- share->rows_recorded= (ha_rows)archive_tmp.rows;
- share->crashed= archive_tmp.dirty;
+ share->version= archive_tmp.version;
+ if (archive_tmp.version == ARCHIVE_VERSION)
+ {
+ stats.auto_increment_value= archive_tmp.auto_increment + 1;
+ share->rows_recorded= (ha_rows)archive_tmp.rows;
+ share->crashed= archive_tmp.dirty;
+ }
+ else
+ {
+ /* Used by repair */
+ share->rows_recorded= ~(ha_rows) 0;
+ stats.auto_increment_value= 0;
+ }
/*
If archive version is less than 3, It should be upgraded before
use.
@@ -512,10 +522,19 @@ int ha_archive::open(const char *name, int mode, uint open_options)
case 0:
break;
case HA_ERR_CRASHED_ON_USAGE:
+ DBUG_PRINT("ha_archive", ("archive table was crashed"));
if (open_options & HA_OPEN_FOR_REPAIR)
+ {
+ rc= 0;
break;
+ }
/* fall through */
case HA_ERR_TABLE_NEEDS_UPGRADE:
+ if (open_options & HA_OPEN_FOR_REPAIR)
+ {
+ rc= 0;
+ break;
+ }
free_share();
/* fall through */
default:
@@ -535,13 +554,6 @@ int ha_archive::open(const char *name, int mode, uint open_options)
thr_lock_data_init(&share->lock, &lock, NULL);
- DBUG_PRINT("ha_archive", ("archive table was crashed %s",
- rc == HA_ERR_CRASHED_ON_USAGE ? "yes" : "no"));
- if (rc == HA_ERR_CRASHED_ON_USAGE && open_options & HA_OPEN_FOR_REPAIR)
- {
- DBUG_RETURN(0);
- }
-
DBUG_RETURN(rc);
}
@@ -1267,6 +1279,14 @@ int ha_archive::rnd_pos(uchar * buf, uchar *pos)
DBUG_RETURN(get_row(&archive, buf));
}
+int ha_archive::check_for_upgrade(HA_CHECK_OPT *check_opt)
+{
+ if (share->version < ARCHIVE_VERSION)
+ return HA_ADMIN_NEEDS_ALTER;
+ return 0;
+}
+
+
/*
This method repairs the meta file. It does this by walking the datafile and
rewriting the meta file. If EXTENDED repair is requested, we attempt to
@@ -1290,10 +1310,11 @@ int ha_archive::repair(THD* thd, HA_CHECK_OPT* check_opt)
*/
int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt)
{
- DBUG_ENTER("ha_archive::optimize");
int rc= 0;
azio_stream writer;
char writer_filename[FN_REFLEN];
+ char* frm_string;
+ DBUG_ENTER("ha_archive::optimize");
init_archive_reader();
@@ -1304,12 +1325,28 @@ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt)
share->archive_write_open= FALSE;
}
+ if (!(frm_string= (char*) malloc(archive.frm_length)))
+ return ENOMEM;
+
+ azread_frm(&archive, frm_string);
+
/* Lets create a file to contain the new data */
fn_format(writer_filename, share->table_name, "", ARN,
MY_REPLACE_EXT | MY_UNPACK_FILENAME);
if (!(azopen(&writer, writer_filename, O_CREAT|O_RDWR|O_BINARY)))
- DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE);
+ {
+ free(frm_string);
+ DBUG_RETURN(HA_ERR_CRASHED_ON_USAGE);
+ }
+
+ rc= azwrite_frm(&writer, frm_string, archive.frm_length);
+ free(frm_string);
+ if (rc)
+ {
+ rc= HA_ERR_CRASHED_ON_USAGE;
+ goto error;
+ }
/*
An extended rebuild is a lot more effort. We open up each row and re-record it.
@@ -1387,7 +1424,6 @@ int ha_archive::optimize(THD* thd, HA_CHECK_OPT* check_opt)
// make the file we just wrote be our data file
rc = my_rename(writer_filename,share->data_file_name,MYF(0));
-
DBUG_RETURN(rc);
error:
DBUG_PRINT("ha_archive", ("Failed to recover, error was %d", rc));
@@ -1539,7 +1575,7 @@ void ha_archive::start_bulk_insert(ha_rows rows)
Other side of start_bulk_insert, is end_bulk_insert. Here we turn off the bulk insert
flag, and set the share dirty so that the next select will call sync for us.
*/
-int ha_archive::end_bulk_insert(bool table_will_be_deleted)
+int ha_archive::end_bulk_insert()
{
DBUG_ENTER("ha_archive::end_bulk_insert");
bulk_insert= FALSE;
diff --git a/storage/archive/ha_archive.h b/storage/archive/ha_archive.h
index 22f8302982d..653a13b242d 100644
--- a/storage/archive/ha_archive.h
+++ b/storage/archive/ha_archive.h
@@ -35,7 +35,7 @@ typedef struct st_archive_record_buffer {
typedef struct st_archive_share {
char *table_name;
char data_file_name[FN_REFLEN];
- uint table_name_length,use_count;
+ uint table_name_length,use_count, version;
pthread_mutex_t mutex;
THR_LOCK lock;
azio_stream archive_write; /* Archive file we are working with */
@@ -133,8 +133,9 @@ public:
int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info);
int optimize(THD* thd, HA_CHECK_OPT* check_opt);
int repair(THD* thd, HA_CHECK_OPT* check_opt);
+ int check_for_upgrade(HA_CHECK_OPT *check_opt);
void start_bulk_insert(ha_rows rows);
- int end_bulk_insert(bool table_will_be_deleted);
+ int end_bulk_insert();
enum row_type get_row_type() const
{
return ROW_TYPE_COMPRESSED;
diff --git a/storage/blackhole/Makefile.am b/storage/blackhole/Makefile.am
index db4f67cf847..148746a9336 100644
--- a/storage/blackhole/Makefile.am
+++ b/storage/blackhole/Makefile.am
@@ -35,15 +35,13 @@ noinst_HEADERS = ha_blackhole.h
EXTRA_LTLIBRARIES = ha_blackhole.la
pkgplugin_LTLIBRARIES = @plugin_blackhole_shared_target@
ha_blackhole_la_LDFLAGS=-module -rpath $(pkgplugindir)
-ha_blackhole_la_CXXFLAGS=$(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_blackhole_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_blackhole_la_CXXFLAGS=-shared $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_blackhole_la_SOURCES=ha_blackhole.cc
EXTRA_LIBRARIES = libblackhole.a
noinst_LIBRARIES = @plugin_blackhole_static_target@
-libblackhole_a_CXXFLAGS=$(AM_CFLAGS)
-libblackhole_a_CFLAGS = $(AM_CFLAGS)
+libblackhole_a_CXXFLAGS=$(AM_CXXFLAGS)
libblackhole_a_SOURCES= ha_blackhole.cc
diff --git a/storage/csv/Makefile.am b/storage/csv/Makefile.am
index 07ffac88a96..75ad9062984 100644
--- a/storage/csv/Makefile.am
+++ b/storage/csv/Makefile.am
@@ -32,12 +32,12 @@ noinst_HEADERS = ha_tina.h transparent_file.h
EXTRA_LTLIBRARIES = ha_csv.la
pkglib_LTLIBRARIES = @plugin_csv_shared_target@
ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
-ha_csv_la_CXXFLAGS = $(AM_CFLAGS) -DMYSQL_PLUGIN
+ha_csv_la_CXXFLAGS = -shared $(AM_CXXFLAGS) -DMYSQL_PLUGIN
ha_csv_la_SOURCES = transparent_file.cc ha_tina.cc
EXTRA_LIBRARIES = libcsv.a
noinst_LIBRARIES = @plugin_csv_static_target@
-libcsv_a_CXXFLAGS = $(AM_CFLAGS)
+libcsv_a_CXXFLAGS = $(AM_CXXFLAGS)
libcsv_a_SOURCES = transparent_file.cc ha_tina.cc
EXTRA_DIST = CMakeLists.txt plug.in
diff --git a/storage/csv/ha_tina.cc b/storage/csv/ha_tina.cc
index ffc59140629..8ba425c86cb 100644
--- a/storage/csv/ha_tina.cc
+++ b/storage/csv/ha_tina.cc
@@ -468,7 +468,7 @@ int ha_tina::encode_quote(uchar *buf)
const char *ptr;
const char *end_ptr;
const bool was_null= (*field)->is_null();
-
+
/*
assistance for backwards compatibility in production builds.
note: this will not work for ENUM columns.
@@ -480,7 +480,7 @@ int ha_tina::encode_quote(uchar *buf)
}
(*field)->val_str(&attribute,&attribute);
-
+
if (was_null)
(*field)->set_null();
@@ -489,36 +489,39 @@ int ha_tina::encode_quote(uchar *buf)
ptr= attribute.ptr();
end_ptr= attribute.length() + ptr;
+ /*
+ Ensure that buffer is big enough. This will also speed things up
+ as we don't have to do any new allocation in the loop below
+ */
+ if (buffer.realloc(buffer.length() + attribute.length()*2+2))
+ return 0; // Failure
+
buffer.append('"');
- while (ptr < end_ptr)
+ for (; ptr < end_ptr; ptr++)
{
if (*ptr == '"')
{
buffer.append('\\');
buffer.append('"');
- *ptr++;
}
else if (*ptr == '\r')
{
buffer.append('\\');
buffer.append('r');
- *ptr++;
}
else if (*ptr == '\\')
{
buffer.append('\\');
buffer.append('\\');
- *ptr++;
}
else if (*ptr == '\n')
{
buffer.append('\\');
buffer.append('n');
- *ptr++;
}
else
- buffer.append(*ptr++);
+ buffer.append(*ptr);
}
buffer.append('"');
}
diff --git a/storage/example/Makefile.am b/storage/example/Makefile.am
index 10163e307b1..dc499e2f9dd 100644
--- a/storage/example/Makefile.am
+++ b/storage/example/Makefile.am
@@ -35,15 +35,12 @@ noinst_HEADERS = ha_example.h
EXTRA_LTLIBRARIES = ha_example.la
pkgplugin_LTLIBRARIES = @plugin_example_shared_target@
ha_example_la_LDFLAGS = -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices
-ha_example_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_example_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_example_la_CXXFLAGS= -shared $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_example_la_SOURCES = ha_example.cc
-
EXTRA_LIBRARIES = libexample.a
noinst_LIBRARIES = @plugin_example_static_target@
-libexample_a_CXXFLAGS = $(AM_CFLAGS)
-libexample_a_CFLAGS = $(AM_CFLAGS)
+libexample_a_CXXFLAGS = $(AM_CXXFLAGS)
libexample_a_SOURCES= ha_example.cc
diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc
index 5059c729ae9..f2aee1de70c 100644
--- a/storage/example/ha_example.cc
+++ b/storage/example/ha_example.cc
@@ -225,7 +225,7 @@ static int example_done_func(void *p)
hash_free(&example_open_tables);
pthread_mutex_destroy(&example_mutex);
- DBUG_RETURN(0);
+ DBUG_RETURN(error);
}
@@ -367,6 +367,7 @@ int ha_example::open(const char *name, int mode, uint test_if_locked)
DBUG_RETURN(1);
thr_lock_data_init(&share->lock,&lock,NULL);
+#ifndef DBUG_OFF
example_table_options_struct *options=
(example_table_options_struct *)table->s->option_struct;
@@ -375,6 +376,7 @@ int ha_example::open(const char *name, int mode, uint test_if_locked)
"boolparam: %u",
(options->strparam ? options->strparam : "<NULL>"),
options->ullparam, options->enumparam, options->boolparam));
+#endif
DBUG_RETURN(0);
}
@@ -588,7 +590,7 @@ int ha_example::index_last(uchar *buf)
int ha_example::rnd_init(bool scan)
{
DBUG_ENTER("ha_example::rnd_init");
- DBUG_RETURN(HA_ERR_WRONG_COMMAND);
+ DBUG_RETURN(0);
}
int ha_example::rnd_end()
@@ -896,6 +898,7 @@ ha_rows ha_example::records_in_range(uint inx, key_range *min_key,
int ha_example::create(const char *name, TABLE *table_arg,
HA_CREATE_INFO *create_info)
{
+#ifndef DBUG_OFF
example_table_options_struct *options=
(example_table_options_struct *)table_arg->s->option_struct;
DBUG_ENTER("ha_example::create");
@@ -918,9 +921,8 @@ int ha_example::create(const char *name, TABLE *table_arg,
(field_options->compex_param_to_parse_it_in_engine ?
field_options->compex_param_to_parse_it_in_engine :
"<NULL>")));
-
}
-
+#endif
DBUG_RETURN(0);
}
diff --git a/storage/federated/Makefile.am b/storage/federated/Makefile.am
index 64ea0207017..7853ccedd21 100644
--- a/storage/federated/Makefile.am
+++ b/storage/federated/Makefile.am
@@ -26,24 +26,22 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
-I$(srcdir)
WRAPLIBS=
-LDADD =
-
DEFS = @DEFS@
noinst_HEADERS = ha_federated.h
EXTRA_LTLIBRARIES = ha_federated.la
pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@
-ha_federated_la_LDFLAGS = -module -rpath $(pkgplugindir)
-ha_federated_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_federated_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_federated_la_SOURCES = ha_federated.cc
+ha_federated_la_LDFLAGS = -module -rpath $(pkgplugindir) \
+ -L$(top_builddir)/libservices -lmysqlservices
+ha_federated_la_CXXFLAGS= -shared $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_federated_la_CFLAGS = -shared $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_federated_la_SOURCES = ha_federated.cc $(top_srcdir)/mysys/string.c
EXTRA_LIBRARIES = libfederated.a
noinst_LIBRARIES = @plugin_federated_static_target@
-libfederated_a_CXXFLAGS = $(AM_CFLAGS)
-libfederated_a_CFLAGS = $(AM_CFLAGS)
+libfederated_a_CXXFLAGS = $(AM_CXXFLAGS)
libfederated_a_SOURCES= ha_federated.cc
diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc
index 2dbac485fbc..fcc178b09a6 100644
--- a/storage/federated/ha_federated.cc
+++ b/storage/federated/ha_federated.cc
@@ -561,7 +561,6 @@ static int parse_url_error(FEDERATED_SHARE *share, TABLE *table, int error_num)
int get_connection(MEM_ROOT *mem_root, FEDERATED_SHARE *share)
{
int error_num= ER_FOREIGN_SERVER_DOESNT_EXIST;
- char error_buffer[FEDERATED_QUERY_BUFFER_SIZE];
FOREIGN_SERVER *server, server_buffer;
DBUG_ENTER("ha_federated::get_connection");
@@ -613,10 +612,8 @@ int get_connection(MEM_ROOT *mem_root, FEDERATED_SHARE *share)
DBUG_RETURN(0);
error:
- my_sprintf(error_buffer,
- (error_buffer, "server name: '%s' doesn't exist!",
- share->connection_string));
- my_error(error_num, MYF(0), error_buffer);
+ my_printf_error(error_num, "server name: '%s' doesn't exist!",
+ MYF(0), share->connection_string);
DBUG_RETURN(error_num);
}
@@ -1983,12 +1980,12 @@ void ha_federated::start_bulk_insert(ha_rows rows)
@retval != 0 Error occured at remote server. Also sets my_errno.
*/
-int ha_federated::end_bulk_insert(bool abort)
+int ha_federated::end_bulk_insert()
{
int error= 0;
DBUG_ENTER("ha_federated::end_bulk_insert");
- if (!abort && bulk_insert.str && bulk_insert.length)
+ if (!table_will_be_deleted && bulk_insert.str && bulk_insert.length)
{
if (real_query(bulk_insert.str, bulk_insert.length))
error= stash_remote_error();
@@ -2405,8 +2402,8 @@ int ha_federated::index_read_idx_with_result_set(uchar *buf, uint index,
if (real_query(sql_query.ptr(), sql_query.length()))
{
- my_sprintf(error_buffer, (error_buffer, "error: %d '%s'",
- mysql_errno(mysql), mysql_error(mysql)));
+ sprintf(error_buffer, "error: %d '%s'",
+ mysql_errno(mysql), mysql_error(mysql));
retval= ER_QUERY_ON_FOREIGN_DATA_SOURCE;
goto error;
}
@@ -2775,7 +2772,6 @@ int ha_federated::rnd_pos(uchar *buf, uchar *pos)
int ha_federated::info(uint flag)
{
- char error_buffer[FEDERATED_QUERY_BUFFER_SIZE];
char status_buf[FEDERATED_QUERY_BUFFER_SIZE];
int error;
uint error_code;
@@ -2859,9 +2855,8 @@ error:
mysql_free_result(result);
if (mysql)
{
- my_sprintf(error_buffer, (error_buffer, ": %d : %s",
- mysql_errno(mysql), mysql_error(mysql)));
- my_error(error_code, MYF(0), error_buffer);
+ my_printf_error(error_code, ": %d : %s", MYF(0),
+ mysql_errno(mysql), mysql_error(mysql));
}
else
if (remote_error_number != -1 /* error already reported */)
@@ -2905,6 +2900,8 @@ int ha_federated::extra(ha_extra_function operation)
case HA_EXTRA_INSERT_WITH_UPDATE:
insert_dup_update= TRUE;
break;
+ case HA_EXTRA_PREPARE_FOR_DROP:
+ table_will_be_deleted = TRUE;
default:
/* do nothing */
DBUG_PRINT("info",("unhandled operation: %d", (uint) operation));
@@ -3305,6 +3302,7 @@ int ha_federated::external_lock(THD *thd, int lock_type)
}
}
#endif /* XXX_SUPERCEDED_BY_WL2952 */
+ table_will_be_deleted = FALSE;
DBUG_RETURN(error);
}
diff --git a/storage/federated/ha_federated.h b/storage/federated/ha_federated.h
index ab31e3c1680..142e0e95e2b 100644
--- a/storage/federated/ha_federated.h
+++ b/storage/federated/ha_federated.h
@@ -88,7 +88,7 @@ class ha_federated: public handler
Array of all stored results we get during a query execution.
*/
DYNAMIC_ARRAY results;
- bool position_called;
+ bool position_called, table_will_be_deleted;
uint fetch_num; // stores the fetch num
MYSQL_ROW_OFFSET current_position; // Current position used by ::position()
int remote_error_number;
@@ -210,7 +210,7 @@ public:
int close(void); // required
void start_bulk_insert(ha_rows rows);
- int end_bulk_insert(bool abort);
+ int end_bulk_insert();
int write_row(uchar *buf);
int update_row(const uchar *old_data, uchar *new_data);
int delete_row(const uchar *buf);
diff --git a/storage/federated/plug.in.disabled b/storage/federated/plug.in
index 23b607d699b..714888b2ebf 100644
--- a/storage/federated/plug.in.disabled
+++ b/storage/federated/plug.in
@@ -1,5 +1,5 @@
MYSQL_STORAGE_ENGINE(federated,,[Federated Storage Engine],
- [Connects to tables on remote MySQL servers], [max,max-no-ndb])
+ [Connects to tables on remote MySQL servers], [])
MYSQL_PLUGIN_STATIC(federated, [libfederated.a])
MYSQL_PLUGIN_DYNAMIC(federated, [ha_federated.la])
MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(federated, [ha_federated.cc])
diff --git a/storage/federatedx/Makefile.am b/storage/federatedx/Makefile.am
index ad1328247ec..0e3249866ea 100644
--- a/storage/federatedx/Makefile.am
+++ b/storage/federatedx/Makefile.am
@@ -18,16 +18,16 @@ DEFS = @DEFS@
noinst_HEADERS = ha_federatedx.h federatedx_probes.h
EXTRA_LTLIBRARIES = ha_federatedx.la
-pkgplugin_LTLIBRARIES = @plugin_federated_shared_target@
-ha_federatedx_la_LDFLAGS = -module -rpath $(pkgplugindir)
-ha_federatedx_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-ha_federatedx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+pkgplugin_LTLIBRARIES = @plugin_federatedx_shared_target@
+ha_federatedx_la_LDFLAGS = -module -rpath $(pkgplugindir) \
+ -L$(top_builddir)/libservices -lmysqlservices
+ha_federatedx_la_CXXFLAGS= -shared $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_federatedx_la_CFLAGS = -shared $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
EXTRA_LIBRARIES = libfederatedx.a
-noinst_LIBRARIES = @plugin_federated_static_target@
-libfederatedx_a_CXXFLAGS = $(AM_CFLAGS)
-libfederatedx_a_CFLAGS = $(AM_CFLAGS)
+noinst_LIBRARIES = @plugin_federatedx_static_target@
+libfederatedx_a_CXXFLAGS = $(AM_CXXFLAGS)
libfederatedx_a_SOURCES= ha_federatedx.cc federatedx_txn.cc \
federatedx_io.cc federatedx_io_null.cc \
federatedx_io_mysql.cc
diff --git a/storage/federatedx/federatedx_io_mysql.cc b/storage/federatedx/federatedx_io_mysql.cc
index 5245395b060..d6844fab2c6 100644
--- a/storage/federatedx/federatedx_io_mysql.cc
+++ b/storage/federatedx/federatedx_io_mysql.cc
@@ -1,4 +1,4 @@
-/*
+/*
Copyright (c) 2007, Antony T Curtis
All rights reserved.
@@ -51,6 +51,12 @@ typedef struct federatedx_savepoint
uint flags;
} SAVEPT;
+struct mysql_position
+{
+ MYSQL_RES* result;
+ MYSQL_ROW_OFFSET offset;
+};
+
class federatedx_io_mysql :public federatedx_io
{
@@ -76,16 +82,16 @@ public:
virtual int error_code();
virtual const char *error_str();
-
+
void reset();
int commit();
int rollback();
-
+
int savepoint_set(ulong sp);
ulong savepoint_release(ulong sp);
ulong savepoint_rollback(ulong sp);
void savepoint_restrict(ulong sp);
-
+
ulong last_savepoint() const;
ulong actual_savepoint() const;
bool is_autocommit() const;
@@ -94,7 +100,7 @@ public:
uint table_name_length, uint flag);
/* resultset operations */
-
+
virtual void free_result(FEDERATEDX_IO_RESULT *io_result);
virtual unsigned int get_num_fields(FEDERATEDX_IO_RESULT *io_result);
virtual my_ulonglong get_num_rows(FEDERATEDX_IO_RESULT *io_result);
@@ -104,6 +110,12 @@ public:
unsigned int column);
virtual bool is_column_null(const FEDERATEDX_IO_ROW *row,
unsigned int column) const;
+
+ virtual size_t get_ref_length() const;
+ virtual void mark_position(FEDERATEDX_IO_RESULT *io_result,
+ void *ref);
+ virtual int seek_position(FEDERATEDX_IO_RESULT **io_result,
+ const void *ref);
};
@@ -466,14 +478,13 @@ const char *federatedx_io_mysql::error_str()
return mysql_error(&mysql);
}
-
FEDERATEDX_IO_RESULT *federatedx_io_mysql::store_result()
{
FEDERATEDX_IO_RESULT *result;
DBUG_ENTER("federatedx_io_mysql::store_result");
-
+
result= (FEDERATEDX_IO_RESULT *) mysql_store_result(&mysql);
-
+
DBUG_RETURN(result);
}
@@ -590,3 +601,45 @@ error:
free_result(result);
return 1;
}
+
+
+
+size_t federatedx_io_mysql::get_ref_length() const
+{
+ return sizeof(mysql_position);
+}
+
+
+void federatedx_io_mysql::mark_position(FEDERATEDX_IO_RESULT *io_result,
+ void *ref)
+{
+ MYSQL_ROWS *tmp= 0;
+ mysql_position& pos= *reinterpret_cast<mysql_position*>(ref);
+ pos.result= (MYSQL_RES *) io_result;
+
+ if (pos.result && pos.result->data)
+ {
+ for (tmp= pos.result->data->data;
+ tmp && (tmp->next != pos.result->data_cursor);
+ tmp= tmp->next)
+ {}
+ }
+
+ pos.offset= tmp;
+}
+
+int federatedx_io_mysql::seek_position(FEDERATEDX_IO_RESULT **io_result,
+ const void *ref)
+{
+ const mysql_position& pos= *reinterpret_cast<const mysql_position*>(ref);
+
+ if (!pos.result || !pos.offset)
+ return HA_ERR_END_OF_FILE;
+
+ pos.result->current_row= 0;
+ pos.result->data_cursor= pos.offset;
+ *io_result= (FEDERATEDX_IO_RESULT*) pos.result;
+
+ return 0;
+}
+
diff --git a/storage/federatedx/federatedx_io_null.cc b/storage/federatedx/federatedx_io_null.cc
index cd8fc3eaf85..49f93ab6546 100644
--- a/storage/federatedx/federatedx_io_null.cc
+++ b/storage/federatedx/federatedx_io_null.cc
@@ -96,6 +96,11 @@ public:
unsigned int column);
virtual bool is_column_null(const FEDERATEDX_IO_ROW *row,
unsigned int column) const;
+ virtual size_t get_ref_length() const;
+ virtual void mark_position(FEDERATEDX_IO_RESULT *io_result,
+ void *ref);
+ virtual int seek_position(FEDERATEDX_IO_RESULT **io_result,
+ const void *ref);
};
@@ -275,3 +280,20 @@ bool federatedx_io_null::table_metadata(ha_statistics *stats,
return 0;
}
+
+size_t federatedx_io_null::get_ref_length() const
+{
+ return sizeof(int);
+}
+
+
+void federatedx_io_null::mark_position(FEDERATEDX_IO_RESULT *io_result,
+ void *ref)
+{
+}
+
+int federatedx_io_null::seek_position(FEDERATEDX_IO_RESULT **io_result,
+ const void *ref)
+{
+ return 0;
+}
diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc
index 9ba1e25a367..2749034cba2 100644
--- a/storage/federatedx/ha_federatedx.cc
+++ b/storage/federatedx/ha_federatedx.cc
@@ -1717,14 +1717,14 @@ federatedx_txn *ha_federatedx::get_txn(THD *thd, bool no_create)
return *txnp;
}
-
+
int ha_federatedx::disconnect(handlerton *hton, MYSQL_THD thd)
{
federatedx_txn *txn= (federatedx_txn *) thd_get_ha_data(thd, hton);
delete txn;
return 0;
}
-
+
/*
Used for opening tables. The name will be the name of the file.
@@ -1756,14 +1756,15 @@ int ha_federatedx::open(const char *name, int mode, uint test_if_locked)
free_share(txn, share);
DBUG_RETURN(error);
}
-
+
+ ref_length= io->get_ref_length();
+
txn->release(&io);
-
- ref_length= (table->s->primary_key != MAX_KEY ?
- table->key_info[table->s->primary_key].key_length :
- table->s->reclength);
+
DBUG_PRINT("info", ("ref_length: %u", ref_length));
+ my_init_dynamic_array(&results, sizeof(FEDERATEDX_IO_RESULT*), 4, 4);
+
reset();
DBUG_RETURN(0);
@@ -1788,8 +1789,9 @@ int ha_federatedx::close(void)
DBUG_ENTER("ha_federatedx::close");
/* free the result set */
- if (stored_result)
- retval= free_result();
+ reset();
+
+ delete_dynamic(&results);
/* Disconnect from mysql */
if (!thd || !(txn= get_txn(thd, true)))
@@ -1799,7 +1801,7 @@ int ha_federatedx::close(void)
tmp_txn.release(&io);
DBUG_ASSERT(io == NULL);
-
+
if ((error= free_share(&tmp_txn, share)))
retval= error;
}
@@ -2143,12 +2145,12 @@ void ha_federatedx::start_bulk_insert(ha_rows rows)
@retval != 0 Error occured at remote server. Also sets my_errno.
*/
-int ha_federatedx::end_bulk_insert(bool abort)
+int ha_federatedx::end_bulk_insert()
{
int error= 0;
DBUG_ENTER("ha_federatedx::end_bulk_insert");
- if (bulk_insert.str && bulk_insert.length && !abort)
+ if (bulk_insert.str && bulk_insert.length && !table_will_be_deleted)
{
if ((error= txn->acquire(share, FALSE, &io)))
DBUG_RETURN(error);
@@ -2525,7 +2527,7 @@ int ha_federatedx::index_read_idx(uchar *buf, uint index, const uchar *key,
uint key_len, enum ha_rkey_function find_flag)
{
int retval;
- FEDERATEDX_IO_RESULT *io_result;
+ FEDERATEDX_IO_RESULT *io_result= 0;
DBUG_ENTER("ha_federatedx::index_read_idx");
if ((retval= index_read_idx_with_result_set(buf, index, key,
@@ -2601,7 +2603,7 @@ int ha_federatedx::index_read_idx_with_result_set(uchar *buf, uint index,
if (!(retval= read_next(buf, *result)))
DBUG_RETURN(retval);
- io->free_result(*result);
+ insert_dynamic(&results, (uchar*) result);
*result= 0;
table->status= STATUS_NOT_FOUND;
DBUG_RETURN(retval);
@@ -2669,10 +2671,7 @@ int ha_federatedx::read_range_first(const key_range *start_key,
DBUG_RETURN(retval);
if (stored_result)
- {
- io->free_result(stored_result);
- stored_result= 0;
- }
+ (void) free_result();
if (io->query(sql_query.ptr(), sql_query.length()))
{
@@ -2773,10 +2772,7 @@ int ha_federatedx::rnd_init(bool scan)
DBUG_RETURN(error);
if (stored_result)
- {
- io->free_result(stored_result);
- stored_result= 0;
- }
+ (void) free_result();
if (io->query(share->select_query,
strlen(share->select_query)))
@@ -2803,17 +2799,35 @@ int ha_federatedx::rnd_end()
int ha_federatedx::free_result()
{
int error;
- federatedx_io *tmp_io= 0, **iop;
+ DBUG_ENTER("ha_federatedx::free_result");
DBUG_ASSERT(stored_result);
- if (!*(iop= &io) && (error= txn->acquire(share, TRUE, (iop= &tmp_io))))
+ for (uint i= 0; i < results.elements; ++i)
+ {
+ FEDERATEDX_IO_RESULT *result= 0;
+ get_dynamic(&results, (uchar*) &result, i);
+ if (result == stored_result)
+ goto end;
+ }
+ if (position_called)
{
- DBUG_ASSERT(0); // Fail when testing
- return error;
+ insert_dynamic(&results, (uchar*) &stored_result);
}
- (*iop)->free_result(stored_result);
+ else
+ {
+ federatedx_io *tmp_io= 0, **iop;
+ if (!*(iop= &io) && (error= txn->acquire(share, TRUE, (iop= &tmp_io))))
+ {
+ DBUG_ASSERT(0); // Fail when testing
+ insert_dynamic(&results, (uchar*) &stored_result);
+ goto end;
+ }
+ (*iop)->free_result(stored_result);
+ txn->release(&tmp_io);
+ }
+end:
stored_result= 0;
- txn->release(&tmp_io);
- return 0;
+ position_called= FALSE;
+ DBUG_RETURN(0);
}
int ha_federatedx::index_end(void)
@@ -2862,8 +2876,8 @@ int ha_federatedx::rnd_next(uchar *buf)
SYNOPSIS
field_in_record_is_null()
- buf byte pointer to record
- result mysql result set
+ buf byte pointer to record
+ result mysql result set
DESCRIPTION
This method is a wrapper method that reads one record from a result
@@ -2896,24 +2910,43 @@ int ha_federatedx::read_next(uchar *buf, FEDERATEDX_IO_RESULT *result)
}
-/*
- store reference to current row so that we can later find it for
- a re-read, update or delete.
-
- In case of federatedx, a reference is either a primary key or
- the whole record.
+/**
+ @brief Store a reference to current row.
+
+ @details During a query execution we may have different result sets (RS),
+ e.g. for different ranges. All the RS's used are stored in
+ memory and placed in @c results dynamic array. At the end of
+ execution all stored RS's are freed at once in the
+ @c ha_federated::reset().
+ So, in case of federated, a reference to current row is a
+ stored result address and current data cursor position.
+ As we keep all RS in memory during a query execution,
+ we can get any record using the reference any time until
+ @c ha_federated::reset() is called.
+ TODO: we don't have to store all RS's rows but only those
+ we call @c ha_federated::position() for, so we can free memory
+ where we store other rows in the @c ha_federated::index_end().
+
+ @param[in] record record data (unused)
- Called from filesort.cc, sql_select.cc, sql_delete.cc and sql_update.cc.
*/
-void ha_federatedx::position(const uchar *record)
+void ha_federatedx::position(const uchar *record __attribute__ ((unused)))
{
DBUG_ENTER("ha_federatedx::position");
- if (table->s->primary_key != MAX_KEY)
- key_copy(ref, (uchar *)record, table->key_info + table->s->primary_key,
- ref_length);
- else
- memcpy(ref, record, ref_length);
+
+ bzero(ref, ref_length);
+
+ if (!stored_result)
+ DBUG_VOID_RETURN;
+
+ if (txn->acquire(share, TRUE, &io))
+ DBUG_VOID_RETURN;
+
+ io->mark_position(stored_result, ref);
+
+ position_called= TRUE;
+
DBUG_VOID_RETURN;
}
@@ -2929,23 +2962,26 @@ void ha_federatedx::position(const uchar *record)
int ha_federatedx::rnd_pos(uchar *buf, uchar *pos)
{
- int result;
+ int retval;
+ FEDERATEDX_IO_RESULT *result= stored_result;
DBUG_ENTER("ha_federatedx::rnd_pos");
ha_statistic_increment(&SSV::ha_read_rnd_count);
- if (table->s->primary_key != MAX_KEY)
- {
- /* We have a primary key, so use index_read_idx to find row */
- result= index_read_idx(buf, table->s->primary_key, pos,
- ref_length, HA_READ_KEY_EXACT);
- }
- else
- {
- /* otherwise, get the old record ref as obtained in ::position */
- memcpy(buf, pos, ref_length);
- result= 0;
- }
- table->status= result ? STATUS_NOT_FOUND : 0;
- DBUG_RETURN(result);
+
+ /* We have to move this to 'ref' to get things aligned */
+ bmove(ref, pos, ref_length);
+
+ if ((retval= txn->acquire(share, TRUE, &io)))
+ goto error;
+
+ if ((retval= io->seek_position(&result, ref)))
+ goto error;
+
+ retval= read_next(buf, result);
+ DBUG_RETURN(retval);
+
+error:
+ table->status= STATUS_NOT_FOUND;
+ DBUG_RETURN(retval);
}
@@ -2995,17 +3031,21 @@ int ha_federatedx::rnd_pos(uchar *buf, uchar *pos)
int ha_federatedx::info(uint flag)
{
- char error_buffer[FEDERATEDX_QUERY_BUFFER_SIZE];
uint error_code;
+ THD *thd= current_thd;
+ federatedx_txn *tmp_txn;
federatedx_io *tmp_io= 0, **iop= 0;
DBUG_ENTER("ha_federatedx::info");
error_code= ER_QUERY_ON_FOREIGN_DATA_SOURCE;
+ // external_lock may not have been called so txn may not be set
+ tmp_txn= get_txn(thd);
+
/* we want not to show table status if not needed to do so */
if (flag & (HA_STATUS_VARIABLE | HA_STATUS_CONST | HA_STATUS_AUTO))
{
- if (!*(iop= &io) && (error_code= txn->acquire(share, TRUE, (iop= &tmp_io))))
+ if (!*(iop= &io) && (error_code= tmp_txn->acquire(share, TRUE, (iop= &tmp_io))))
goto fail;
}
@@ -3030,25 +3070,23 @@ int ha_federatedx::info(uint flag)
If ::info created it's own transaction, close it. This happens in case
of show table status;
*/
- txn->release(&tmp_io);
+ tmp_txn->release(&tmp_io);
DBUG_RETURN(0);
error:
if (iop && *iop)
{
- my_sprintf(error_buffer, (error_buffer, ": %d : %s",
- (*iop)->error_code(), (*iop)->error_str()));
- my_error(error_code, MYF(0), error_buffer);
+ my_printf_error((*iop)->error_code(), "Received error: %d : %s", MYF(0),
+ (*iop)->error_code(), (*iop)->error_str());
}
- else
- if (remote_error_number != -1 /* error already reported */)
+ else if (remote_error_number != -1 /* error already reported */)
{
error_code= remote_error_number;
my_error(error_code, MYF(0), ER(error_code));
}
fail:
- txn->release(&tmp_io);
+ tmp_txn->release(&tmp_io);
DBUG_RETURN(error_code);
}
@@ -3085,6 +3123,9 @@ int ha_federatedx::extra(ha_extra_function operation)
case HA_EXTRA_INSERT_WITH_UPDATE:
insert_dup_update= TRUE;
break;
+ case HA_EXTRA_PREPARE_FOR_DROP:
+ table_will_be_deleted = TRUE;
+ break;
default:
/* do nothing */
DBUG_PRINT("info",("unhandled operation: %d", (uint) operation));
@@ -3105,12 +3146,44 @@ int ha_federatedx::extra(ha_extra_function operation)
int ha_federatedx::reset(void)
{
+ int error = 0;
+
insert_dup_update= FALSE;
ignore_duplicates= FALSE;
replace_duplicates= FALSE;
- return 0;
-}
+ position_called= FALSE;
+ if (stored_result)
+ insert_dynamic(&results, (uchar*) &stored_result);
+ stored_result= 0;
+
+ if (results.elements)
+ {
+ federatedx_txn *tmp_txn;
+ federatedx_io *tmp_io= 0, **iop;
+
+ // external_lock may not have been called so txn may not be set
+ tmp_txn= get_txn(current_thd);
+
+ if (!*(iop= &io) && (error= tmp_txn->acquire(share, TRUE, (iop= &tmp_io))))
+ {
+ DBUG_ASSERT(0); // Fail when testing
+ return error;
+ }
+
+ for (uint i= 0; i < results.elements; ++i)
+ {
+ FEDERATEDX_IO_RESULT *result= 0;
+ get_dynamic(&results, (uchar*) &result, i);
+ (*iop)->free_result(result);
+ }
+ tmp_txn->release(&tmp_io);
+ reset_dynamic(&results);
+ }
+
+ return error;
+
+}
/*
Used to delete all rows in a table. Both for cases of truncate and
@@ -3237,7 +3310,7 @@ static int test_connection(MYSQL_THD thd, federatedx_io *io,
str.length(0);
str.append(STRING_WITH_LEN("SELECT * FROM "));
- append_identifier(thd, &str, share->table_name,
+ append_identifier(thd, &str, share->table_name,
share->table_name_length);
str.append(STRING_WITH_LEN(" WHERE 1=0"));
@@ -3288,14 +3361,14 @@ int ha_federatedx::create(const char *name, TABLE *table_arg,
pthread_mutex_lock(&federatedx_mutex);
tmp_share.s= get_server(&tmp_share, NULL);
pthread_mutex_unlock(&federatedx_mutex);
-
+
if (tmp_share.s)
{
tmp_txn= get_txn(thd);
if (!(retval= tmp_txn->acquire(&tmp_share, TRUE, &tmp_io)))
{
retval= test_connection(thd, tmp_io, &tmp_share);
- tmp_txn->release(&tmp_io);
+ tmp_txn->release(&tmp_io);
}
free_server(tmp_txn, tmp_share.s);
}
@@ -3394,6 +3467,7 @@ int ha_federatedx::external_lock(MYSQL_THD thd, int lock_type)
txn->release(&io);
else
{
+ table_will_be_deleted = FALSE;
txn= get_txn(thd);
if (!(error= txn->acquire(share, lock_type == F_RDLCK, &io)) &&
(lock_type == F_WRLCK || !io->is_autocommit()))
@@ -3495,7 +3569,7 @@ int ha_federatedx::rollback(handlerton *hton, MYSQL_THD thd, bool all)
struct st_mysql_storage_engine federatedx_storage_engine=
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
-mysql_declare_plugin(federated)
+mysql_declare_plugin(federatedx)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&federatedx_storage_engine,
@@ -3511,7 +3585,7 @@ mysql_declare_plugin(federated)
NULL /* config options */
}
mysql_declare_plugin_end;
-maria_declare_plugin(federated)
+maria_declare_plugin(federatedx)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&federatedx_storage_engine,
diff --git a/storage/federatedx/ha_federatedx.h b/storage/federatedx/ha_federatedx.h
index 0fa9df25895..2820f8a6c29 100644
--- a/storage/federatedx/ha_federatedx.h
+++ b/storage/federatedx/ha_federatedx.h
@@ -1,5 +1,5 @@
-/*
-Copyright (c) 2008, Patrick Galbraith
+/*
+Copyright (c) 2008, Patrick Galbraith
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -43,7 +43,7 @@ class federatedx_io;
typedef struct st_fedrated_server {
MEM_ROOT mem_root;
uint use_count, io_count;
-
+
uchar *key;
uint key_length;
@@ -74,10 +74,10 @@ typedef struct st_fedrated_server {
#include <mysql.h>
-/*
+/*
handler::print_error has a case statement for error numbers.
- This value is (10000) is far out of range and will envoke the
- default: case.
+ This value is (10000) is far out of range and will envoke the
+ default: case.
(Current error range is 120-159 from include/my_base.h)
*/
#define HA_FEDERATEDX_ERROR_WITH_REMOTE_SYSTEM 10000
@@ -158,7 +158,7 @@ public:
const char * get_database() const { return server->database; }
ushort get_port() const { return server->port; }
const char * get_socket() const { return server->socket; }
-
+
static bool handles_scheme(const char *scheme);
static federatedx_io *construct(MEM_ROOT *server_root,
FEDERATEDX_SERVER *server);
@@ -167,7 +167,7 @@ public:
{ return alloc_root(mem_root, size); }
static void operator delete(void *ptr, size_t size)
{ TRASH(ptr, size); }
-
+
virtual int query(const char *buffer, uint length)=0;
virtual FEDERATEDX_IO_RESULT *store_result()=0;
@@ -178,25 +178,25 @@ public:
virtual int error_code()=0;
virtual const char *error_str()=0;
-
+
virtual void reset()=0;
virtual int commit()=0;
virtual int rollback()=0;
-
+
virtual int savepoint_set(ulong sp)=0;
virtual ulong savepoint_release(ulong sp)=0;
virtual ulong savepoint_rollback(ulong sp)=0;
virtual void savepoint_restrict(ulong sp)=0;
-
+
virtual ulong last_savepoint() const=0;
virtual ulong actual_savepoint() const=0;
virtual bool is_autocommit() const=0;
virtual bool table_metadata(ha_statistics *stats, const char *table_name,
uint table_name_length, uint flag) = 0;
-
+
/* resultset operations */
-
+
virtual void free_result(FEDERATEDX_IO_RESULT *io_result)=0;
virtual unsigned int get_num_fields(FEDERATEDX_IO_RESULT *io_result)=0;
virtual my_ulonglong get_num_rows(FEDERATEDX_IO_RESULT *io_result)=0;
@@ -206,6 +206,13 @@ public:
unsigned int column)=0;
virtual bool is_column_null(const FEDERATEDX_IO_ROW *row,
unsigned int column) const=0;
+
+ virtual size_t get_ref_length() const=0;
+ virtual void mark_position(FEDERATEDX_IO_RESULT *io_result,
+ void *ref)=0;
+ virtual int seek_position(FEDERATEDX_IO_RESULT **io_result,
+ const void *ref)=0;
+
};
@@ -215,12 +222,12 @@ class federatedx_txn
ulong savepoint_level;
ulong savepoint_stmt;
ulong savepoint_next;
-
+
void release_scan();
public:
federatedx_txn();
~federatedx_txn();
-
+
bool has_connections() const { return txn_list != NULL; }
bool in_transaction() const { return savepoint_next != 0; }
int acquire(FEDERATEDX_SHARE *share, bool readonly, federatedx_io **io);
@@ -254,12 +261,16 @@ class ha_federatedx: public handler
federatedx_txn *txn;
federatedx_io *io;
FEDERATEDX_IO_RESULT *stored_result;
+ /**
+ Array of all stored results we get during a query execution.
+ */
+ DYNAMIC_ARRAY results;
+ bool position_called;
uint fetch_num; // stores the fetch num
- FEDERATEDX_IO_OFFSET current_position; // Current position used by ::position()
int remote_error_number;
char remote_error_buf[FEDERATEDX_QUERY_BUFFER_SIZE];
bool ignore_duplicates, replace_duplicates;
- bool insert_dup_update;
+ bool insert_dup_update, table_will_be_deleted;
DYNAMIC_STRING bulk_insert;
private:
@@ -269,7 +280,7 @@ private:
*/
uint convert_row_to_internal_format(uchar *buf, FEDERATEDX_IO_ROW *row,
FEDERATEDX_IO_RESULT *result);
- bool create_where_from_key(String *to, KEY *key_info,
+ bool create_where_from_key(String *to, KEY *key_info,
const key_range *start_key,
const key_range *end_key,
bool records_in_range, bool eq_range);
@@ -348,18 +359,18 @@ public:
Talk to Kostja about this - how to get the
number of rows * ...
disk scan time on other side (block size, size of the row) + network time ...
- The reason for "records * 1000" is that such a large number forces
+ The reason for "records * 1000" is that such a large number forces
this to use indexes "
*/
double scan_time()
{
DBUG_PRINT("info", ("records %lu", (ulong) stats.records));
- return (double)(stats.records*1000);
+ return (double)(stats.records*1000);
}
/*
The next method will never be called if you do not implement indexes.
*/
- double read_time(uint index, uint ranges, ha_rows rows)
+ double read_time(uint index, uint ranges, ha_rows rows)
{
/*
Per Brian, this number is bugus, but this method must be implemented,
@@ -379,7 +390,7 @@ public:
int close(void); // required
void start_bulk_insert(ha_rows rows);
- int end_bulk_insert(bool abort);
+ int end_bulk_insert();
int write_row(uchar *buf);
int update_row(const uchar *old_data, uchar *new_data);
int delete_row(const uchar *buf);
diff --git a/storage/federatedx/plug.in b/storage/federatedx/plug.in
index ee2e6af0e94..95afe270f4c 100644
--- a/storage/federatedx/plug.in
+++ b/storage/federatedx/plug.in
@@ -1,5 +1,5 @@
-MYSQL_STORAGE_ENGINE(federated,,[FederatedX Storage Engine],
+MYSQL_STORAGE_ENGINE(federatedx,,[FederatedX Storage Engine],
[FederatedX Storage Engine], [max,max-no-ndb])
-MYSQL_PLUGIN_DYNAMIC(federated, [ha_federatedx.la])
-MYSQL_PLUGIN_STATIC(federated, [libfederatedx.a])
-MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(federated, [ha_federatedx.cc])
+MYSQL_PLUGIN_DYNAMIC(federatedx, [ha_federatedx.la])
+MYSQL_PLUGIN_STATIC(federatedx, [libfederatedx.a])
+MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(federatedx, [ha_federatedx.cc])
diff --git a/storage/heap/hp_create.c b/storage/heap/hp_create.c
index b6814fc1614..bc8183bf777 100644
--- a/storage/heap/hp_create.c
+++ b/storage/heap/hp_create.c
@@ -85,8 +85,6 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
keyinfo->seg[j].type= HA_KEYTYPE_VARTEXT1;
/* fall_through */
case HA_KEYTYPE_VARTEXT1:
- if (!my_binary_compare(keyinfo->seg[j].charset))
- keyinfo->flag|= HA_END_SPACE_KEY;
keyinfo->flag|= HA_VAR_LENGTH_KEY;
length+= 2;
/* Save number of bytes used to store length */
@@ -96,8 +94,6 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
/* Case-insensitiveness is handled in coll->hash_sort */
/* fall_through */
case HA_KEYTYPE_VARTEXT2:
- if (!my_binary_compare(keyinfo->seg[j].charset))
- keyinfo->flag|= HA_END_SPACE_KEY;
keyinfo->flag|= HA_VAR_LENGTH_KEY;
length+= 2;
/* Save number of bytes used to store length */
@@ -111,8 +107,6 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
default:
break;
}
- if (keyinfo->seg[j].flag & HA_END_SPACE_ARE_EQUAL)
- keyinfo->flag|= HA_END_SPACE_KEY;
}
keyinfo->length= length;
length+= keyinfo->rb_tree.size_of_element +
diff --git a/storage/heap/hp_rkey.c b/storage/heap/hp_rkey.c
index 6eeac6acd7b..27d1114770e 100644
--- a/storage/heap/hp_rkey.c
+++ b/storage/heap/hp_rkey.c
@@ -63,7 +63,7 @@ int heap_rkey(HP_INFO *info, uchar *record, int inx, const uchar *key,
info->update= 0;
DBUG_RETURN(my_errno);
}
- if (!(keyinfo->flag & HA_NOSAME) || (keyinfo->flag & HA_END_SPACE_KEY))
+ if (!(keyinfo->flag & HA_NOSAME))
memcpy(info->lastkey, key, (size_t) keyinfo->length);
}
memcpy(record, pos, (size_t) share->reclength);
diff --git a/storage/heap/hp_test2.c b/storage/heap/hp_test2.c
index 5c548b6be74..bf06cf03035 100644
--- a/storage/heap/hp_test2.c
+++ b/storage/heap/hp_test2.c
@@ -406,7 +406,7 @@ int main(int argc, char *argv[])
bmove(record2,record,reclength);
if (heap_rsame(file,record,-1) || heap_rsame(file,record2,2))
goto err;
- if (bcmp(record2,record,reclength))
+ if (memcmp(record2,record,reclength))
{
puts("heap_rsame didn't find right record");
goto end;
@@ -415,7 +415,7 @@ int main(int argc, char *argv[])
puts("- Test of read through position");
if (heap_rrnd(file,record,position))
goto err;
- if (bcmp(record3,record,reclength))
+ if (memcmp(record3,record,reclength))
{
puts("heap_frnd didn't find right record");
goto end;
diff --git a/storage/ibmdb2i/Makefile.am b/storage/ibmdb2i/Makefile.am
index 768ca15f4cf..b9602e392e0 100644
--- a/storage/ibmdb2i/Makefile.am
+++ b/storage/ibmdb2i/Makefile.am
@@ -34,7 +34,7 @@ EXTRA_LTLIBRARIES = ha_ibmdb2i.la
pkgplugin_LTLIBRARIES = @plugin_ibmdb2i_shared_target@
ha_ibmdb2i_la_LIBADD = -liconv
ha_ibmdb2i_la_LDFLAGS = -module -rpath $(MYSQLLIBdir)
-ha_ibmdb2i_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_ibmdb2i_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_ibmdb2i_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_ibmdb2i_la_SOURCES = ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc \
db2i_blobCollection.cc db2i_file.cc db2i_charsetSupport.cc \
@@ -44,7 +44,7 @@ ha_ibmdb2i_la_SOURCES = ha_ibmdb2i.cc db2i_ileBridge.cc db2i_conversion.cc \
EXTRA_LIBRARIES = libibmdb2i.a
noinst_LIBRARIES = @plugin_ibmdb2i_static_target@
-libibmdb2i_a_CXXFLAGS = $(AM_CFLAGS)
+libibmdb2i_a_CXXFLAGS = $(AM_CXXFLAGS)
libibmdb2i_a_CFLAGS = $(AM_CFLAGS)
libibmdb2i_a_SOURCES= $(ha_ibmdb2i_la_SOURCES)
diff --git a/storage/ibmdb2i/db2i_file.h b/storage/ibmdb2i/db2i_file.h
index ff35a473b05..7b63b18c315 100644
--- a/storage/ibmdb2i/db2i_file.h
+++ b/storage/ibmdb2i/db2i_file.h
@@ -40,7 +40,6 @@ OF SUCH DAMAGE.
#include "db2i_global.h"
#include "db2i_ileBridge.h"
#include "db2i_validatedPointer.h"
-#include "my_atomic.h"
#include "db2i_iconv.h"
#include "db2i_charsetSupport.h"
diff --git a/storage/ibmdb2i/ha_ibmdb2i.cc b/storage/ibmdb2i/ha_ibmdb2i.cc
index c007cbaf3e3..f77927421d2 100644
--- a/storage/ibmdb2i/ha_ibmdb2i.cc
+++ b/storage/ibmdb2i/ha_ibmdb2i.cc
@@ -1158,9 +1158,7 @@ int ha_ibmdb2i::rnd_init(bool scan)
rrnAssocHandle= 0;
- DBUG_RETURN(0); // MySQL sometimes does not check the return code, causing
- // an assert in ha_rnd_end later on if we return a non-zero
- // value here.
+ DBUG_RETURN(0);
}
int ha_ibmdb2i::rnd_end()
diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt.disabled
index 5918db7ab11..5918db7ab11 100644
--- a/storage/innobase/CMakeLists.txt
+++ b/storage/innobase/CMakeLists.txt.disabled
diff --git a/storage/innobase/Makefile.am b/storage/innobase/Makefile.am
index a597e3c24e4..29ba83c0668 100644
--- a/storage/innobase/Makefile.am
+++ b/storage/innobase/Makefile.am
@@ -156,15 +156,15 @@ libinnobase_a_SOURCES= btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c \
ut/ut0ut.c ut/ut0vec.c ut/ut0wqueue.c \
handler/ha_innodb.cc
-libinnobase_a_CXXFLAGS= $(AM_CFLAGS)
+libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS)
libinnobase_a_CFLAGS= $(AM_CFLAGS)
EXTRA_LTLIBRARIES= ha_innodb.la
pkgplugin_LTLIBRARIES= @plugin_innobase_shared_target@
ha_innodb_la_LDFLAGS= -module -rpath $(pkgplugindir)
-ha_innodb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
-ha_innodb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
+ha_innodb_la_CXXFLAGS= -shared $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS)
+ha_innodb_la_CFLAGS= -shared $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES)
EXTRA_DIST= CMakeLists.txt plug.in \
diff --git a/storage/innobase/buf/buf0flu.c b/storage/innobase/buf/buf0flu.c
index 423c08c0569..7533205d695 100644
--- a/storage/innobase/buf/buf0flu.c
+++ b/storage/innobase/buf/buf0flu.c
@@ -55,6 +55,7 @@ buf_flush_insert_into_flush_list(
|| (ut_dulint_cmp((UT_LIST_GET_FIRST(buf_pool->flush_list))
->oldest_modification,
block->oldest_modification) <= 0));
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
UT_LIST_ADD_FIRST(flush_list, buf_pool->flush_list, block);
@@ -75,6 +76,7 @@ buf_flush_insert_sorted_into_flush_list(
buf_block_t* b;
ut_ad(mutex_own(&(buf_pool->mutex)));
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
prev_b = NULL;
b = UT_LIST_GET_FIRST(buf_pool->flush_list);
@@ -423,6 +425,7 @@ try_again:
goto try_again;
}
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
ut_memcpy(trx_doublewrite->write_buf
+ UNIV_PAGE_SIZE * trx_doublewrite->first_free,
block->frame, UNIV_PAGE_SIZE);
diff --git a/storage/innobase/dict/dict0dict.c b/storage/innobase/dict/dict0dict.c
index b8251a99105..d2b59469cdc 100644
--- a/storage/innobase/dict/dict0dict.c
+++ b/storage/innobase/dict/dict0dict.c
@@ -618,13 +618,11 @@ dict_table_get_on_id(
if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0
|| trx->dict_operation_lock_mode == RW_X_LATCH) {
- /* It is a system table which will always exist in the table
- cache: we avoid acquiring the dictionary mutex, because
- if we are doing a rollback to handle an error in TABLE
- CREATE, for example, we already have the mutex! */
- ut_ad(mutex_own(&(dict_sys->mutex))
- || trx->dict_operation_lock_mode == RW_X_LATCH);
+ /* Note: An X latch implies that the transaction
+ already owns the dictionary mutex. */
+
+ ut_ad(mutex_own(&dict_sys->mutex));
return(dict_table_get_on_id_low(table_id));
}
@@ -2586,25 +2584,28 @@ dict_strip_comments(
/* out, own: SQL string stripped from
comments; the caller must free this
with mem_free()! */
- const char* sql_string) /* in: SQL string */
+ const char* sql_string, /* in: SQL string */
+ size_t sql_length) /* in: length of sql_string */
{
char* str;
const char* sptr;
+ const char* eptr = sql_string + sql_length;
char* ptr;
/* unclosed quote character (0 if none) */
char quote = 0;
- str = mem_alloc(strlen(sql_string) + 1);
+ str = mem_alloc(sql_length + 1);
sptr = sql_string;
ptr = str;
for (;;) {
scan_more:
- if (*sptr == '\0') {
+ if (sptr >= eptr || *sptr == '\0') {
+end_of_string:
*ptr = '\0';
- ut_a(ptr <= str + strlen(sql_string));
+ ut_a(ptr <= str + sql_length);
return(str);
}
@@ -2623,30 +2624,35 @@ scan_more:
|| (sptr[0] == '-' && sptr[1] == '-'
&& sptr[2] == ' ')) {
for (;;) {
+ if (++sptr >= eptr) {
+ goto end_of_string;
+ }
+
/* In Unix a newline is 0x0A while in Windows
it is 0x0D followed by 0x0A */
- if (*sptr == (char)0x0A
- || *sptr == (char)0x0D
- || *sptr == '\0') {
-
+ switch (*sptr) {
+ case (char) 0X0A:
+ case (char) 0x0D:
+ case '\0':
goto scan_more;
}
-
- sptr++;
}
} else if (!quote && *sptr == '/' && *(sptr + 1) == '*') {
+ sptr += 2;
for (;;) {
- if (*sptr == '*' && *(sptr + 1) == '/') {
-
- sptr += 2;
-
- goto scan_more;
+ if (sptr >= eptr) {
+ goto end_of_string;
}
- if (*sptr == '\0') {
-
+ switch (*sptr) {
+ case '\0':
goto scan_more;
+ case '*':
+ if (sptr[1] == '/') {
+ sptr += 2;
+ goto scan_more;
+ }
}
sptr++;
@@ -3348,6 +3354,7 @@ dict_create_foreign_constraints(
name before it: test.table2; the
default database id the database of
parameter name */
+ size_t sql_length, /* in: length of sql_string */
const char* name, /* in: table full name in the
normalized form
database_name/table_name */
@@ -3362,7 +3369,7 @@ dict_create_foreign_constraints(
ut_a(trx);
ut_a(trx->mysql_thd);
- str = dict_strip_comments(sql_string);
+ str = dict_strip_comments(sql_string, sql_length);
heap = mem_heap_create(10000);
err = dict_create_foreign_constraints_low(
@@ -3411,7 +3418,8 @@ dict_foreign_parse_drop_constraints(
*constraints_to_drop = mem_heap_alloc(heap, 1000 * sizeof(char*));
- str = dict_strip_comments(*(trx->mysql_query_str));
+ str = dict_strip_comments(*trx->mysql_query_str,
+ *trx->mysql_query_len);
ptr = str;
ut_ad(mutex_own(&(dict_sys->mutex)));
diff --git a/storage/innobase/dict/dict0load.c b/storage/innobase/dict/dict0load.c
index 65f1c9536bd..d5e7600f4d0 100644
--- a/storage/innobase/dict/dict0load.c
+++ b/storage/innobase/dict/dict0load.c
@@ -927,6 +927,8 @@ dict_load_table_on_id(
ut_ad(mutex_own(&(dict_sys->mutex)));
+ table = NULL;
+
/* NOTE that the operation of this function is protected by
the dictionary mutex, and therefore no deadlocks can occur
with other dictionary operations. */
@@ -953,15 +955,17 @@ dict_load_table_on_id(
BTR_SEARCH_LEAF, &pcur, &mtr);
rec = btr_pcur_get_rec(&pcur);
- if (!btr_pcur_is_on_user_rec(&pcur, &mtr)
- || rec_get_deleted_flag(rec, 0)) {
+ if (!btr_pcur_is_on_user_rec(&pcur, &mtr)) {
/* Not found */
+ goto func_exit;
+ }
- btr_pcur_close(&pcur);
- mtr_commit(&mtr);
- mem_heap_free(heap);
-
- return(NULL);
+ /* Find the first record that is not delete marked */
+ while (rec_get_deleted_flag(rec, 0)) {
+ if (!btr_pcur_move_to_next_user_rec(&pcur, &mtr)) {
+ goto func_exit;
+ }
+ rec = btr_pcur_get_rec(&pcur);
}
/*---------------------------------------------------*/
@@ -974,19 +978,14 @@ dict_load_table_on_id(
/* Check if the table id in record is the one searched for */
if (ut_dulint_cmp(table_id, mach_read_from_8(field)) != 0) {
-
- btr_pcur_close(&pcur);
- mtr_commit(&mtr);
- mem_heap_free(heap);
-
- return(NULL);
+ goto func_exit;
}
/* Now we get the table name from the record */
field = rec_get_nth_field_old(rec, 1, &len);
/* Load the table definition to memory */
table = dict_load_table(mem_heap_strdupl(heap, (char*) field, len));
-
+func_exit:
btr_pcur_close(&pcur);
mtr_commit(&mtr);
mem_heap_free(heap);
diff --git a/storage/innobase/fsp/fsp0fsp.c b/storage/innobase/fsp/fsp0fsp.c
index e1074933fe8..1ec1c262a52 100644
--- a/storage/innobase/fsp/fsp0fsp.c
+++ b/storage/innobase/fsp/fsp0fsp.c
@@ -802,12 +802,7 @@ fsp_init_file_page_low(
buf_block_align(page)->check_index_page_at_flush = FALSE;
-#ifdef UNIV_BASIC_LOG_DEBUG
- memset(page, 0xff, UNIV_PAGE_SIZE);
-#endif
- mach_write_to_8(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM,
- ut_dulint_zero);
- mach_write_to_8(page + FIL_PAGE_LSN, ut_dulint_zero);
+ memset(page, 0, UNIV_PAGE_SIZE);
}
/***************************************************************
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index ebf01fbc296..d10fcb8d31e 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -583,13 +583,13 @@ thd_is_select(
/************************************************************************
Obtain the InnoDB transaction of a MySQL thread. */
inline
-trx_t*&
+trx_t*
thd_to_trx(
/*=======*/
/* out: reference to transaction pointer */
THD* thd) /* in: MySQL thread */
{
- return(*(trx_t**) thd_ha_data(thd, innodb_hton_ptr));
+ return((trx_t*) thd_get_ha_data(thd, innodb_hton_ptr));
}
/************************************************************************
@@ -759,6 +759,10 @@ convert_error_code_to_mysql(
} else if (error == DB_UNSUPPORTED) {
return(HA_ERR_UNSUPPORTED);
+ } else if (error == DB_INTERRUPTED) {
+
+ my_error(ER_QUERY_INTERRUPTED, MYF(0));
+ return(-1);
} else {
return(-1); // Unknown error
}
@@ -1140,6 +1144,15 @@ innobase_next_autoinc(
return(next_value);
}
+/** Copy the current SQL statement.
+* @param[in] thd MySQL client connection
+* @param[in/out] trx InnoDB transaction */
+#define INNOBASE_COPY_STMT(thd, trx) do { \
+ LEX_STRING* stmt = thd_query_string(thd); \
+ (trx)->mysql_query_str = &stmt->str; \
+ (trx)->mysql_query_len = &stmt->length; \
+} while (0)
+
/*************************************************************************
Gets the InnoDB transaction handle for a MySQL handler object, creates
an InnoDB transaction struct if the corresponding MySQL thread struct still
@@ -1151,7 +1164,7 @@ check_trx_exists(
/* out: InnoDB transaction handle */
THD* thd) /* in: user thread handle */
{
- trx_t*& trx = thd_to_trx(thd);
+ trx_t* trx = thd_to_trx(thd);
ut_ad(thd == current_thd);
@@ -1160,11 +1173,14 @@ check_trx_exists(
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
+ INNOBASE_COPY_STMT(thd, trx);
/* Update the info whether we should skip XA steps that eat
CPU time */
trx->support_xa = THDVAR(thd, support_xa);
+
+ /* We have a new trx, register with the thread handle */
+ thd_set_ha_data(thd, innodb_hton_ptr, trx);
} else {
if (trx->magic_n != TRX_MAGIC_N) {
mem_analyze_corruption(trx);
@@ -2469,6 +2485,9 @@ innobase_close_connection(
innobase_rollback_trx(trx);
+ /* Release the lock in thread handler */
+ thd_set_ha_data(thd, hton, NULL);
+
thr_local_free(trx->mysql_thread_id);
trx_free_for_mysql(trx);
@@ -3223,6 +3242,11 @@ get_innobase_type_from_mysql_type(
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_LONG_BLOB:
return(DATA_BLOB);
+ case MYSQL_TYPE_NULL:
+ /* MySQL currently accepts "NULL" datatype, but will
+ reject such datatype in the next release. We will cope
+ with it and not trigger assertion failure in 5.1 */
+ break;
default:
assert(0);
}
@@ -5244,7 +5268,22 @@ create_table_def(
field = form->field[i];
col_type = get_innobase_type_from_mysql_type(&unsigned_type,
- field);
+ field);
+
+ if (!col_type) {
+ push_warning_printf(
+ (THD*) trx->mysql_thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_CANT_CREATE_TABLE,
+ "Error creating table '%s' with "
+ "column '%s'. Please check its "
+ "column type and try to re-create "
+ "the table with an appropriate "
+ "column type.",
+ table->name, (char*) field->field_name);
+ goto err_col;
+ }
+
if (field->null_ptr) {
nulls_allowed = 0;
} else {
@@ -5301,7 +5340,7 @@ create_table_def(
"different column name.",
table->name, (char*) field->field_name,
(char*) field->field_name);
-
+err_col:
dict_mem_table_free(table);
trx_commit_for_mysql(trx);
@@ -5578,7 +5617,7 @@ ha_innobase::create(
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
+ INNOBASE_COPY_STMT(thd, trx);
if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) {
trx->check_foreigns = FALSE;
@@ -5674,8 +5713,10 @@ ha_innobase::create(
}
if (*trx->mysql_query_str) {
- error = row_table_add_foreign_constraints(trx,
- *trx->mysql_query_str, norm_name,
+ error = row_table_add_foreign_constraints(
+ trx,
+ *trx->mysql_query_str, *trx->mysql_query_len,
+ norm_name,
create_info->options & HA_LEX_CREATE_TMP_TABLE);
error = convert_error_code_to_mysql(error, NULL);
@@ -5866,7 +5907,7 @@ ha_innobase::delete_table(
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
+ INNOBASE_COPY_STMT(thd, trx);
if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) {
trx->check_foreigns = FALSE;
@@ -5955,7 +5996,7 @@ innobase_drop_database(
#endif
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
+ INNOBASE_COPY_STMT(thd, trx);
if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) {
trx->check_foreigns = FALSE;
@@ -6025,7 +6066,7 @@ ha_innobase::rename_table(
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
+ INNOBASE_COPY_STMT(thd, trx);
if (thd_test_options(thd, OPTION_NO_FOREIGN_KEY_CHECKS)) {
trx->check_foreigns = FALSE;
diff --git a/storage/innobase/handler/ha_innodb.h b/storage/innobase/handler/ha_innodb.h
index 5b3df16875a..eb9199b8955 100644
--- a/storage/innobase/handler/ha_innodb.h
+++ b/storage/innobase/handler/ha_innodb.h
@@ -210,7 +210,7 @@ the definitions are bracketed with #ifdef INNODB_COMPATIBILITY_HOOKS */
extern "C" {
struct charset_info_st *thd_charset(MYSQL_THD thd);
-char **thd_query(MYSQL_THD thd);
+LEX_STRING *thd_query_string(MYSQL_THD thd);
/** Get the file name of the MySQL binlog.
* @return the name of the binlog file
diff --git a/storage/innobase/include/db0err.h b/storage/innobase/include/db0err.h
index ed7ce151718..2be6005622d 100644
--- a/storage/innobase/include/db0err.h
+++ b/storage/innobase/include/db0err.h
@@ -10,6 +10,8 @@ Created 5/24/1996 Heikki Tuuri
#define db0err_h
+#define DB_SUCCESS_LOCKED_REC 9 /* like DB_SUCCESS, but a new
+ explicit record lock was created */
#define DB_SUCCESS 10
/* The following are error codes */
@@ -69,6 +71,9 @@ Created 5/24/1996 Heikki Tuuri
a feature that it can't recoginize or
work with e.g., FT indexes created by
a later version of the engine. */
+#define DB_INTERRUPTED 49 /* the query has been interrupted with
+ "KILL QUERY N;" */
+
/* The following are partial failure codes */
#define DB_FAIL 1000
#define DB_OVERFLOW 1001
diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h
index 7d5ff09c7a6..e76f23d0767 100644
--- a/storage/innobase/include/dict0dict.h
+++ b/storage/innobase/include/dict0dict.h
@@ -309,6 +309,7 @@ dict_create_foreign_constraints(
name before it: test.table2; the
default database id the database of
parameter name */
+ size_t sql_length, /* in: length of sql_string */
const char* name, /* in: table full name in the
normalized form
database_name/table_name */
diff --git a/storage/innobase/include/lock0lock.h b/storage/innobase/include/lock0lock.h
index beaf17eda01..70b141eafeb 100644
--- a/storage/innobase/include/lock0lock.h
+++ b/storage/innobase/include/lock0lock.h
@@ -292,14 +292,15 @@ lock_sec_rec_modify_check_and_lock(
dict_index_t* index, /* in: secondary index */
que_thr_t* thr); /* in: query thread */
/*************************************************************************
-Like the counterpart for a clustered index below, but now we read a
+Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record. */
ulint
lock_sec_rec_read_check_and_lock(
/*=============================*/
- /* out: DB_SUCCESS, DB_LOCK_WAIT,
- DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ DB_LOCK_WAIT, DB_DEADLOCK,
+ or DB_QUE_THR_SUSPENDED */
ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set,
does nothing */
rec_t* rec, /* in: user record or page supremum record
@@ -324,8 +325,9 @@ lock on the record. */
ulint
lock_clust_rec_read_check_and_lock(
/*===============================*/
- /* out: DB_SUCCESS, DB_LOCK_WAIT,
- DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ DB_LOCK_WAIT, DB_DEADLOCK,
+ or DB_QUE_THR_SUSPENDED */
ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set,
does nothing */
rec_t* rec, /* in: user record or page supremum record
diff --git a/storage/innobase/include/mach0data.ic b/storage/innobase/include/mach0data.ic
index dc7918c287b..fceb8017121 100644
--- a/storage/innobase/include/mach0data.ic
+++ b/storage/innobase/include/mach0data.ic
@@ -19,7 +19,7 @@ mach_write_to_1(
ulint n) /* in: ulint integer to be stored, >= 0, < 256 */
{
ut_ad(b);
- ut_ad(n <= 0xFFUL);
+ ut_ad((n | 0xFFUL) <= 0xFFUL);
b[0] = (byte)n;
}
@@ -48,7 +48,7 @@ mach_write_to_2(
ulint n) /* in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFUL);
+ ut_ad((n | 0xFFFFUL) <= 0xFFFFUL);
b[0] = (byte)(n >> 8);
b[1] = (byte)(n);
@@ -64,10 +64,7 @@ mach_read_from_2(
/* out: ulint integer */
byte* b) /* in: pointer to 2 bytes */
{
- ut_ad(b);
- return( ((ulint)(b[0]) << 8)
- + (ulint)(b[1])
- );
+ return(((ulint)(b[0]) << 8) | (ulint)(b[1]));
}
/************************************************************
@@ -112,7 +109,7 @@ mach_write_to_3(
ulint n) /* in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFFFUL);
+ ut_ad((n | 0xFFFFFFUL) <= 0xFFFFFFUL);
b[0] = (byte)(n >> 16);
b[1] = (byte)(n >> 8);
@@ -131,8 +128,8 @@ mach_read_from_3(
{
ut_ad(b);
return( ((ulint)(b[0]) << 16)
- + ((ulint)(b[1]) << 8)
- + (ulint)(b[2])
+ | ((ulint)(b[1]) << 8)
+ | (ulint)(b[2])
);
}
@@ -166,9 +163,9 @@ mach_read_from_4(
{
ut_ad(b);
return( ((ulint)(b[0]) << 24)
- + ((ulint)(b[1]) << 16)
- + ((ulint)(b[2]) << 8)
- + (ulint)(b[3])
+ | ((ulint)(b[1]) << 16)
+ | ((ulint)(b[2]) << 8)
+ | (ulint)(b[3])
);
}
@@ -670,7 +667,7 @@ mach_read_from_2_little_endian(
/* out: unsigned long int */
byte* buf) /* in: from where to read */
{
- return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256);
+ return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8));
}
/*************************************************************
diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h
index 5430190fa51..488177791a4 100644
--- a/storage/innobase/include/row0mysql.h
+++ b/storage/innobase/include/row0mysql.h
@@ -246,22 +246,20 @@ row_update_for_mysql(
row_prebuilt_t* prebuilt); /* in: prebuilt struct in MySQL
handle */
/*************************************************************************
-This can only be used when srv_locks_unsafe_for_binlog is TRUE or
-session is using a READ COMMITTED isolation level. Before
-calling this function we must use trx_reset_new_rec_lock_info() and
-trx_register_new_rec_lock() to store the information which new record locks
-really were set. This function removes a newly set lock under prebuilt->pcur,
-and also under prebuilt->clust_pcur. Currently, this is only used and tested
-in the case of an UPDATE or a DELETE statement, where the row lock is of the
-LOCK_X type.
-Thus, this implements a 'mini-rollback' that releases the latest record
-locks we set. */
+This can only be used when srv_locks_unsafe_for_binlog is TRUE or this
+session is using a READ COMMITTED or READ UNCOMMITTED isolation level.
+Before calling this function row_search_for_mysql() must have
+initialized prebuilt->new_rec_locks to store the information which new
+record locks really were set. This function removes a newly set
+clustered index record lock under prebuilt->pcur or
+prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that
+releases the latest clustered index record lock we set. */
int
row_unlock_for_mysql(
/*=================*/
/* out: error code or DB_SUCCESS */
- row_prebuilt_t* prebuilt, /* in: prebuilt struct in MySQL
+ row_prebuilt_t* prebuilt, /* in/out: prebuilt struct in MySQL
handle */
ibool has_latches_on_recs);/* TRUE if called so that we have
the latches on the records under pcur
@@ -366,6 +364,7 @@ row_table_add_foreign_constraints(
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the
database name before it: test.table2 */
+ size_t sql_length, /* in: length of sql_string */
const char* name, /* in: table full name in the
normalized form
database_name/table_name */
@@ -659,18 +658,17 @@ struct row_prebuilt_struct {
ulint new_rec_locks; /* normally 0; if
srv_locks_unsafe_for_binlog is
TRUE or session is using READ
- COMMITTED isolation level, in a
- cursor search, if we set a new
- record lock on an index, this is
- incremented; this is used in
- releasing the locks under the
- cursors if we are performing an
- UPDATE and we determine after
- retrieving the row that it does
- not need to be locked; thus,
- these can be used to implement a
- 'mini-rollback' that releases
- the latest record locks */
+ COMMITTED or READ UNCOMMITTED
+ isolation level, set in
+ row_search_for_mysql() if we set a new
+ record lock on the secondary
+ or clustered index; this is
+ used in row_unlock_for_mysql()
+ when releasing the lock under
+ the cursor if we determine
+ after retrieving the row that
+ it does not need to be locked
+ ('mini-rollback') */
ulint mysql_prefix_len;/* byte offset of the end of
the last requested column */
ulint mysql_row_len; /* length in bytes of a row in the
diff --git a/storage/innobase/include/sync0sync.h b/storage/innobase/include/sync0sync.h
index 6a61330f97e..9430d4cb723 100644
--- a/storage/innobase/include/sync0sync.h
+++ b/storage/innobase/include/sync0sync.h
@@ -401,7 +401,7 @@ or row lock! */
locked; see e.g.
ibuf_bitmap_get_map_page(). */
#define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve
- this in X-mode, implicit or backround
+ this in X-mode; implicit or backround
operations purge, rollback, foreign
key checks reserve this in S-mode */
#define SYNC_DICT 1000
diff --git a/storage/innobase/include/trx0trx.h b/storage/innobase/include/trx0trx.h
index cdbf1970715..97a47d9f46e 100644
--- a/storage/innobase/include/trx0trx.h
+++ b/storage/innobase/include/trx0trx.h
@@ -444,6 +444,8 @@ struct trx_struct{
char** mysql_query_str;/* pointer to the field in mysqld_thd
which contains the pointer to the
current SQL query string */
+ size_t* mysql_query_len;/* pointer to the length of the
+ current SQL query string */
const char* mysql_log_file_name;
/* if MySQL binlog is used, this field
contains a pointer to the latest file
diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i
index ee3a0b27b20..97d022d284e 100644
--- a/storage/innobase/include/univ.i
+++ b/storage/innobase/include/univ.i
@@ -82,9 +82,9 @@ memory is read outside the allocated blocks. */
/* Make a non-inline debug version */
-#ifdef HAVE_purify
+#if defined HAVE_VALGRIND
# define UNIV_DEBUG_VALGRIND
-#endif /* HAVE_purify */
+#endif /* HAVE_VALGRIND */
#if 0
#define UNIV_DEBUG_VALGRIND /* Enable extra
Valgrind instrumentation */
@@ -126,11 +126,6 @@ by one. */
/* the above option prevents forcing of log to disk
at a buffer page write: it should be tested with this
option off; also some ibuf tests are suppressed */
-/*
-#define UNIV_BASIC_LOG_DEBUG
-*/
- /* the above option enables basic recovery debugging:
- new allocated file pages are reset */
#if (!defined(UNIV_DEBUG) && !defined(INSIDE_HA_INNOBASE_CC) && !defined(UNIV_MUST_NOT_INLINE))
/* Definition for inline version */
diff --git a/storage/innobase/lock/lock0lock.c b/storage/innobase/lock/lock0lock.c
index 7df8ea50887..04240960b3a 100644
--- a/storage/innobase/lock/lock0lock.c
+++ b/storage/innobase/lock/lock0lock.c
@@ -1739,11 +1739,12 @@ ulint
lock_rec_enqueue_waiting(
/*=====================*/
/* out: DB_LOCK_WAIT, DB_DEADLOCK, or
- DB_QUE_THR_SUSPENDED, or DB_SUCCESS;
- DB_SUCCESS means that there was a deadlock,
- but another transaction was chosen as a
- victim, and we got the lock immediately:
- no need to wait then */
+ DB_QUE_THR_SUSPENDED, or DB_SUCCESS_LOCKED_REC;
+ DB_SUCCESS_LOCKED_REC means that there
+ was a deadlock, but another
+ transaction was chosen as a victim,
+ and we got the lock immediately: no
+ need to wait then */
ulint type_mode,/* in: lock mode this transaction is
requesting: LOCK_S or LOCK_X, possibly ORed
with LOCK_GAP or LOCK_REC_NOT_GAP, ORed
@@ -1804,7 +1805,7 @@ lock_rec_enqueue_waiting(
if (trx->wait_lock == NULL) {
- return(DB_SUCCESS);
+ return(DB_SUCCESS_LOCKED_REC);
}
trx->que_state = TRX_QUE_LOCK_WAIT;
@@ -1903,6 +1904,16 @@ lock_rec_add_to_queue(
return(lock_rec_create(type_mode, rec, index, trx));
}
+/** Record locking request status */
+enum lock_rec_req_status {
+ /** Failed to acquire a lock */
+ LOCK_REC_FAIL,
+ /** Succeeded in acquiring a lock (implicit or already acquired) */
+ LOCK_REC_SUCCESS,
+ /** Explicitly created a new lock */
+ LOCK_REC_SUCCESS_CREATED
+};
+
/*************************************************************************
This is a fast routine for locking a record in the most common cases:
there are no explicit locks on the page, or there is just one lock, owned
@@ -1911,10 +1922,10 @@ which does NOT look at implicit locks! Checks lock compatibility within
explicit locks. This function sets a normal next-key lock, or in the case of
a page supremum record, a gap type lock. */
UNIV_INLINE
-ibool
+enum lock_rec_req_status
lock_rec_lock_fast(
/*===============*/
- /* out: TRUE if locking succeeded */
+ /* out: whether the locking succeeded */
ibool impl, /* in: if TRUE, no lock is set if no wait
is necessary: we assume that the caller will
set an implicit lock */
@@ -1950,19 +1961,19 @@ lock_rec_lock_fast(
lock_rec_create(mode, rec, index, trx);
}
- return(TRUE);
+ return(LOCK_REC_SUCCESS_CREATED);
}
if (lock_rec_get_next_on_page(lock)) {
- return(FALSE);
+ return(LOCK_REC_FAIL);
}
if (lock->trx != trx
|| lock->type_mode != (mode | LOCK_REC)
|| lock_rec_get_n_bits(lock) <= heap_no) {
- return(FALSE);
+ return(LOCK_REC_FAIL);
}
if (!impl) {
@@ -1971,10 +1982,11 @@ lock_rec_lock_fast(
if (!lock_rec_get_nth_bit(lock, heap_no)) {
lock_rec_set_nth_bit(lock, heap_no);
+ return(LOCK_REC_SUCCESS_CREATED);
}
}
- return(TRUE);
+ return(LOCK_REC_SUCCESS);
}
/*************************************************************************
@@ -1986,8 +1998,9 @@ static
ulint
lock_rec_lock_slow(
/*===============*/
- /* out: DB_SUCCESS, DB_LOCK_WAIT, or error
- code */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ DB_LOCK_WAIT, DB_DEADLOCK,
+ or DB_QUE_THR_SUSPENDED */
ibool impl, /* in: if TRUE, no lock is set if no wait is
necessary: we assume that the caller will set
an implicit lock */
@@ -1998,7 +2011,6 @@ lock_rec_lock_slow(
que_thr_t* thr) /* in: query thread */
{
trx_t* trx;
- ulint err;
ut_ad(mutex_own(&kernel_mutex));
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
@@ -2017,26 +2029,21 @@ lock_rec_lock_slow(
/* The trx already has a strong enough lock on rec: do
nothing */
- err = DB_SUCCESS;
} else if (lock_rec_other_has_conflicting(mode, rec, trx)) {
/* If another transaction has a non-gap conflicting request in
the queue, as this transaction does not have a lock strong
enough already granted on the record, we have to wait. */
- err = lock_rec_enqueue_waiting(mode, rec, index, thr);
- } else {
- if (!impl) {
- /* Set the requested lock on the record */
+ return(lock_rec_enqueue_waiting(mode, rec, index, thr));
+ } else if (!impl) {
+ /* Set the requested lock on the record */
- lock_rec_add_to_queue(LOCK_REC | mode, rec, index,
- trx);
- }
-
- err = DB_SUCCESS;
+ lock_rec_add_to_queue(LOCK_REC | mode, rec, index, trx);
+ return(DB_SUCCESS_LOCKED_REC);
}
- return(err);
+ return(DB_SUCCESS);
}
/*************************************************************************
@@ -2049,8 +2056,9 @@ static
ulint
lock_rec_lock(
/*==========*/
- /* out: DB_SUCCESS, DB_LOCK_WAIT, or error
- code */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ DB_LOCK_WAIT, DB_DEADLOCK, or
+ DB_QUE_THR_SUSPENDED */
ibool impl, /* in: if TRUE, no lock is set if no wait is
necessary: we assume that the caller will set
an implicit lock */
@@ -2060,8 +2068,6 @@ lock_rec_lock(
dict_index_t* index, /* in: index of record */
que_thr_t* thr) /* in: query thread */
{
- ulint err;
-
ut_ad(mutex_own(&kernel_mutex));
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
|| lock_table_has(thr_get_trx(thr), index->table, LOCK_IS));
@@ -2073,17 +2079,19 @@ lock_rec_lock(
|| mode - (LOCK_MODE_MASK & mode) == LOCK_REC_NOT_GAP
|| mode - (LOCK_MODE_MASK & mode) == 0);
- if (lock_rec_lock_fast(impl, mode, rec, index, thr)) {
-
- /* We try a simplified and faster subroutine for the most
- common cases */
-
- err = DB_SUCCESS;
- } else {
- err = lock_rec_lock_slow(impl, mode, rec, index, thr);
+ /* We try a simplified and faster subroutine for the most
+ common cases */
+ switch (lock_rec_lock_fast(impl, mode, rec, index, thr)) {
+ case LOCK_REC_SUCCESS:
+ return(DB_SUCCESS);
+ case LOCK_REC_SUCCESS_CREATED:
+ return(DB_SUCCESS_LOCKED_REC);
+ case LOCK_REC_FAIL:
+ return(lock_rec_lock_slow(impl, mode, rec, index, thr));
}
- return(err);
+ ut_error;
+ return(DB_ERROR);
}
/*************************************************************************
@@ -4832,7 +4840,7 @@ lock_rec_insert_check_and_lock(
lock = lock_rec_get_first(next_rec);
- if (lock == NULL) {
+ if (UNIV_LIKELY(lock == NULL)) {
/* We optimize CPU time usage in the simplest case */
lock_mutex_exit_kernel();
@@ -4840,8 +4848,7 @@ lock_rec_insert_check_and_lock(
if (!(index->type & DICT_CLUSTERED)) {
/* Update the page max trx id field */
- page_update_max_trx_id(buf_frame_align(rec),
- thr_get_trx(thr)->id);
+ page_update_max_trx_id(buf_frame_align(rec), trx->id);
}
return(DB_SUCCESS);
@@ -4873,11 +4880,16 @@ lock_rec_insert_check_and_lock(
lock_mutex_exit_kernel();
- if (!(index->type & DICT_CLUSTERED) && (err == DB_SUCCESS)) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ /* fall through */
+ case DB_SUCCESS:
+ if (index->type & DICT_CLUSTERED) {
+ break;
+ }
/* Update the page max trx id field */
- page_update_max_trx_id(buf_frame_align(rec),
- thr_get_trx(thr)->id);
+ page_update_max_trx_id(buf_frame_align(rec), trx->id);
}
#ifdef UNIV_DEBUG
@@ -4984,6 +4996,10 @@ lock_clust_rec_modify_check_and_lock(
ut_ad(lock_rec_queue_validate(rec, index, offsets));
+ if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) {
+ err = DB_SUCCESS;
+ }
+
return(err);
}
@@ -5043,25 +5059,29 @@ lock_sec_rec_modify_check_and_lock(
}
#endif /* UNIV_DEBUG */
- if (err == DB_SUCCESS) {
+ if (err == DB_SUCCESS || err == DB_SUCCESS_LOCKED_REC) {
/* Update the page max trx id field */
-
+ /* It might not be necessary to do this if
+ err == DB_SUCCESS (no new lock created),
+ but it should not cost too much performance. */
page_update_max_trx_id(buf_frame_align(rec),
thr_get_trx(thr)->id);
+ err = DB_SUCCESS;
}
return(err);
}
/*************************************************************************
-Like the counterpart for a clustered index below, but now we read a
+Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record. */
ulint
lock_sec_rec_read_check_and_lock(
/*=============================*/
- /* out: DB_SUCCESS, DB_LOCK_WAIT,
- DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ DB_LOCK_WAIT, DB_DEADLOCK,
+ or DB_QUE_THR_SUSPENDED */
ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set,
does nothing */
rec_t* rec, /* in: user record or page supremum record
@@ -5126,8 +5146,9 @@ lock on the record. */
ulint
lock_clust_rec_read_check_and_lock(
/*===============================*/
- /* out: DB_SUCCESS, DB_LOCK_WAIT,
- DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ DB_LOCK_WAIT, DB_DEADLOCK,
+ or DB_QUE_THR_SUSPENDED */
ulint flags, /* in: if BTR_NO_LOCKING_FLAG bit is set,
does nothing */
rec_t* rec, /* in: user record or page supremum record
@@ -5206,16 +5227,21 @@ lock_clust_rec_read_check_and_lock_alt(
mem_heap_t* tmp_heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
- ulint ret;
+ ulint err;
*offsets_ = (sizeof offsets_) / sizeof *offsets_;
offsets = rec_get_offsets(rec, index, offsets,
ULINT_UNDEFINED, &tmp_heap);
- ret = lock_clust_rec_read_check_and_lock(flags, rec, index,
+ err = lock_clust_rec_read_check_and_lock(flags, rec, index,
offsets, mode, gap_mode, thr);
if (tmp_heap) {
mem_heap_free(tmp_heap);
}
- return(ret);
+
+ if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) {
+ err = DB_SUCCESS;
+ }
+
+ return(err);
}
diff --git a/storage/innobase/os/os0file.c b/storage/innobase/os/os0file.c
index 7373a97cfb0..3396d1adf2f 100644
--- a/storage/innobase/os/os0file.c
+++ b/storage/innobase/os/os0file.c
@@ -3974,6 +3974,9 @@ os_aio_simulated_handle(
ulint n;
ulint i;
+ /* Fix compiler warning */
+ *consecutive_ios = NULL;
+
segment = os_aio_get_array_and_local_segment(&array, global_segment);
restart:
diff --git a/storage/innobase/row/row0ins.c b/storage/innobase/row/row0ins.c
index 51c295b5098..9786f90fd39 100644
--- a/storage/innobase/row/row0ins.c
+++ b/storage/innobase/row/row0ins.c
@@ -1114,7 +1114,8 @@ static
ulint
row_ins_set_shared_rec_lock(
/*========================*/
- /* out: DB_SUCCESS or error code */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ or error code */
ulint type, /* in: LOCK_ORDINARY, LOCK_GAP, or
LOCK_REC_NOT_GAP type lock */
rec_t* rec, /* in: record */
@@ -1145,7 +1146,8 @@ static
ulint
row_ins_set_exclusive_rec_lock(
/*===========================*/
- /* out: DB_SUCCESS or error code */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ or error code */
ulint type, /* in: LOCK_ORDINARY, LOCK_GAP, or
LOCK_REC_NOT_GAP type lock */
rec_t* rec, /* in: record */
@@ -1195,9 +1197,7 @@ row_ins_check_foreign_constraint(
dict_table_t* check_table;
dict_index_t* check_index;
ulint n_fields_cmp;
- rec_t* rec;
btr_pcur_t pcur;
- ibool moved;
int cmp;
ulint err;
ulint i;
@@ -1328,12 +1328,12 @@ run_again:
/* Scan index records and check if there is a matching record */
- for (;;) {
- rec = btr_pcur_get_rec(&pcur);
+ do {
+ rec_t* rec = btr_pcur_get_rec(&pcur);
if (page_rec_is_infimum(rec)) {
- goto next_rec;
+ continue;
}
offsets = rec_get_offsets(rec, check_index,
@@ -1343,12 +1343,13 @@ run_again:
err = row_ins_set_shared_rec_lock(
LOCK_ORDINARY, rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
-
- break;
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ continue;
+ default:
+ goto end_scan;
}
-
- goto next_rec;
}
cmp = cmp_dtuple_rec(entry, rec, offsets);
@@ -1359,9 +1360,12 @@ run_again:
err = row_ins_set_shared_rec_lock(
LOCK_ORDINARY, rec, check_index,
offsets, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
} else {
/* Found a matching record. Lock only
@@ -1372,15 +1376,18 @@ run_again:
LOCK_REC_NOT_GAP, rec, check_index,
offsets, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
if (check_ref) {
err = DB_SUCCESS;
- break;
+ goto end_scan;
} else if (foreign->type != 0) {
/* There is an ON UPDATE or ON DELETE
condition: check them in a separate
@@ -1406,7 +1413,7 @@ run_again:
err = DB_FOREIGN_DUPLICATE_KEY;
}
- break;
+ goto end_scan;
}
} else {
row_ins_foreign_report_err(
@@ -1414,48 +1421,39 @@ run_again:
thr, foreign, rec, entry);
err = DB_ROW_IS_REFERENCED;
- break;
+ goto end_scan;
}
}
- }
+ } else {
+ ut_a(cmp < 0);
- if (cmp < 0) {
err = row_ins_set_shared_rec_lock(
LOCK_GAP, rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
-
- break;
- }
-
- if (check_ref) {
- err = DB_NO_REFERENCED_ROW;
- row_ins_foreign_report_add_err(
- trx, foreign, rec, entry);
- } else {
- err = DB_SUCCESS;
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ if (check_ref) {
+ err = DB_NO_REFERENCED_ROW;
+ row_ins_foreign_report_add_err(
+ trx, foreign, rec, entry);
+ } else {
+ err = DB_SUCCESS;
+ }
}
- break;
+ goto end_scan;
}
+ } while (btr_pcur_move_to_next(&pcur, &mtr));
- ut_a(cmp == 0);
-next_rec:
- moved = btr_pcur_move_to_next(&pcur, &mtr);
-
- if (!moved) {
- if (check_ref) {
- rec = btr_pcur_get_rec(&pcur);
- row_ins_foreign_report_add_err(
- trx, foreign, rec, entry);
- err = DB_NO_REFERENCED_ROW;
- } else {
- err = DB_SUCCESS;
- }
-
- break;
- }
+ if (check_ref) {
+ row_ins_foreign_report_add_err(
+ trx, foreign, btr_pcur_get_rec(&pcur), entry);
+ err = DB_NO_REFERENCED_ROW;
+ } else {
+ err = DB_SUCCESS;
}
+end_scan:
btr_pcur_close(&pcur);
mtr_commit(&mtr);
@@ -1641,10 +1639,8 @@ row_ins_scan_sec_index_for_duplicate(
ulint i;
int cmp;
ulint n_fields_cmp;
- rec_t* rec;
btr_pcur_t pcur;
ulint err = DB_SUCCESS;
- ibool moved;
unsigned allow_duplicates;
mtr_t mtr;
mem_heap_t* heap = NULL;
@@ -1680,12 +1676,12 @@ row_ins_scan_sec_index_for_duplicate(
/* Scan index records and check if there is a duplicate */
- for (;;) {
- rec = btr_pcur_get_rec(&pcur);
+ do {
+ rec_t* rec = btr_pcur_get_rec(&pcur);
if (page_rec_is_infimum(rec)) {
- goto next_rec;
+ continue;
}
offsets = rec_get_offsets(rec, index, offsets,
@@ -1706,14 +1702,18 @@ row_ins_scan_sec_index_for_duplicate(
LOCK_ORDINARY, rec, index, offsets, thr);
}
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
if (page_rec_is_supremum(rec)) {
- goto next_rec;
+ continue;
}
cmp = cmp_dtuple_rec(entry, rec, offsets);
@@ -1725,23 +1725,15 @@ row_ins_scan_sec_index_for_duplicate(
thr_get_trx(thr)->error_info = index;
- break;
+ goto end_scan;
}
+ } else {
+ ut_a(cmp < 0);
+ goto end_scan;
}
+ } while (btr_pcur_move_to_next(&pcur, &mtr));
- if (cmp < 0) {
- break;
- }
-
- ut_a(cmp == 0);
-next_rec:
- moved = btr_pcur_move_to_next(&pcur, &mtr);
-
- if (!moved) {
- break;
- }
- }
-
+end_scan:
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
@@ -1837,7 +1829,11 @@ row_ins_duplicate_error_in_clust(
cursor->index, offsets, thr);
}
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto func_exit;
}
@@ -1875,7 +1871,11 @@ row_ins_duplicate_error_in_clust(
cursor->index, offsets, thr);
}
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto func_exit;
}
diff --git a/storage/innobase/row/row0mysql.c b/storage/innobase/row/row0mysql.c
index a0e0ee99775..4a834c4efc2 100644
--- a/storage/innobase/row/row0mysql.c
+++ b/storage/innobase/row/row0mysql.c
@@ -483,6 +483,7 @@ handle_new_error:
} else if (err == DB_ROW_IS_REFERENCED
|| err == DB_NO_REFERENCED_ROW
|| err == DB_CANNOT_ADD_CONSTRAINT
+ || err == DB_INTERRUPTED
|| err == DB_TOO_MANY_CONCURRENT_TRXS) {
if (savept) {
/* Roll back the latest, possibly incomplete
@@ -1454,22 +1455,20 @@ run_again:
}
/*************************************************************************
-This can only be used when srv_locks_unsafe_for_binlog is TRUE or
-this session is using a READ COMMITTED isolation level. Before
-calling this function we must use trx_reset_new_rec_lock_info() and
-trx_register_new_rec_lock() to store the information which new record locks
-really were set. This function removes a newly set lock under prebuilt->pcur,
-and also under prebuilt->clust_pcur. Currently, this is only used and tested
-in the case of an UPDATE or a DELETE statement, where the row lock is of the
-LOCK_X type.
-Thus, this implements a 'mini-rollback' that releases the latest record
-locks we set. */
+This can only be used when srv_locks_unsafe_for_binlog is TRUE or this
+session is using a READ COMMITTED or READ UNCOMMITTED isolation level.
+Before calling this function row_search_for_mysql() must have
+initialized prebuilt->new_rec_locks to store the information which new
+record locks really were set. This function removes a newly set
+clustered index record lock under prebuilt->pcur or
+prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that
+releases the latest clustered index record lock we set. */
int
row_unlock_for_mysql(
/*=================*/
/* out: error code or DB_SUCCESS */
- row_prebuilt_t* prebuilt, /* in: prebuilt struct in MySQL
+ row_prebuilt_t* prebuilt, /* in/out: prebuilt struct in MySQL
handle */
ibool has_latches_on_recs)/* TRUE if called so that we have
the latches on the records under pcur
@@ -2103,6 +2102,7 @@ row_table_add_foreign_constraints(
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the
database name before it: test.table2 */
+ size_t sql_length, /* in: length of sql_string */
const char* name, /* in: table full name in the
normalized form
database_name/table_name */
@@ -2124,8 +2124,8 @@ row_table_add_foreign_constraints(
trx->dict_operation = TRUE;
- err = dict_create_foreign_constraints(trx, sql_string, name,
- reject_fks);
+ err = dict_create_foreign_constraints(trx, sql_string, sql_length,
+ name, reject_fks);
if (err == DB_SUCCESS) {
/* Check that also referencing constraints are ok */
diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c
index 1d30249c53e..06a19ba7979 100644
--- a/storage/innobase/row/row0sel.c
+++ b/storage/innobase/row/row0sel.c
@@ -754,8 +754,14 @@ row_sel_get_clust_rec(
0, clust_rec, index, offsets,
node->row_lock_mode, lock_type, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
+ /* Declare the variable uninitialized in Valgrind.
+ It should be set to DB_SUCCESS at func_exit. */
+ UNIV_MEM_INVALID(&err, sizeof err);
+ break;
+ default:
goto err_exit;
}
} else {
@@ -826,7 +832,8 @@ UNIV_INLINE
ulint
sel_set_rec_lock(
/*=============*/
- /* out: DB_SUCCESS or error code */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ or error code */
rec_t* rec, /* in: record */
dict_index_t* index, /* in: index */
const ulint* offsets,/* in: rec_get_offsets(rec, index) */
@@ -1374,11 +1381,15 @@ rec_loop:
node->row_lock_mode,
lock_type, thr);
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
/* Note that in this case we will store in pcur
the PREDECESSOR of the record we are waiting
the lock for */
-
goto lock_wait_or_error;
}
}
@@ -1429,8 +1440,12 @@ skip_lock:
err = sel_set_rec_lock(rec, index, offsets,
node->row_lock_mode, lock_type, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -2452,6 +2467,7 @@ row_sel_field_store_in_mysql_format(
byte* pad_ptr;
ut_ad(len != UNIV_SQL_NULL);
+ UNIV_MEM_ASSERT_RW(data, len);
if (templ->type == DATA_INT) {
/* Convert integer data from Innobase to a little-endian
@@ -2605,6 +2621,12 @@ row_sel_store_mysql_rec(
prebuilt->blob_heap = NULL;
}
+ /* init null bytes with default values as they might be
+ left uninitialized in some cases and this uninited bytes
+ might be copied into mysql record buffer that leads to
+ valgrind warnings */
+ memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len);
+
for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i;
@@ -2687,6 +2709,9 @@ row_sel_store_mysql_rec(
/* MySQL assumes that the field for an SQL
NULL value is set to the default value. */
+ UNIV_MEM_ASSERT_RW(prebuilt->default_rec
+ + templ->mysql_col_offset,
+ templ->mysql_col_len);
mysql_rec[templ->mysql_null_byte_offset]
|= (byte) templ->mysql_null_bit_mask;
memcpy(mysql_rec + templ->mysql_col_offset,
@@ -2741,7 +2766,8 @@ static
ulint
row_sel_get_clust_rec_for_mysql(
/*============================*/
- /* out: DB_SUCCESS or error code */
+ /* out: DB_SUCCESS, DB_SUCCESS_LOCKED_REC,
+ or error code */
row_prebuilt_t* prebuilt,/* in: prebuilt struct in the handle */
dict_index_t* sec_index,/* in: secondary index where rec resides */
rec_t* rec, /* in: record in a non-clustered index; if
@@ -2822,6 +2848,7 @@ row_sel_get_clust_rec_for_mysql(
clust_rec = NULL;
+ err = DB_SUCCESS;
goto func_exit;
}
@@ -2836,8 +2863,11 @@ row_sel_get_clust_rec_for_mysql(
err = lock_clust_rec_read_check_and_lock(
0, clust_rec, clust_index, *offsets,
prebuilt->select_lock_type, LOCK_REC_NOT_GAP, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
+ break;
+ default:
goto err_exit;
}
} else {
@@ -2896,6 +2926,8 @@ row_sel_get_clust_rec_for_mysql(
rec, sec_index, clust_rec, clust_index));
#endif
}
+
+ err = DB_SUCCESS;
}
func_exit:
@@ -2908,7 +2940,6 @@ func_exit:
btr_pcur_store_position(prebuilt->clust_pcur, mtr);
}
- err = DB_SUCCESS;
err_exit:
return(err);
}
@@ -3007,6 +3038,11 @@ row_sel_pop_cached_row_for_mysql(
for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i;
+#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
+ UNIV_MEM_ASSERT_RW(cached_rec
+ + templ->mysql_col_offset,
+ templ->mysql_col_len);
+#endif
ut_memcpy(buf + templ->mysql_col_offset,
cached_rec + templ->mysql_col_offset,
templ->mysql_col_len);
@@ -3021,6 +3057,11 @@ row_sel_pop_cached_row_for_mysql(
}
}
else {
+#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
+ UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache
+ [prebuilt->fetch_cache_first],
+ prebuilt->mysql_prefix_len);
+#endif
ut_memcpy(buf,
prebuilt->fetch_cache[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len);
@@ -3070,6 +3111,8 @@ row_sel_push_cache_row_for_mysql(
}
ut_ad(prebuilt->fetch_cache_first == 0);
+ UNIV_MEM_INVALID(prebuilt->fetch_cache[prebuilt->n_fetch_cached],
+ prebuilt->mysql_row_len);
if (UNIV_UNLIKELY(!row_sel_store_mysql_rec(
prebuilt->fetch_cache[
@@ -3610,8 +3653,12 @@ shortcut_fails_too_big_rec:
prebuilt->select_lock_type,
LOCK_GAP, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3708,8 +3755,12 @@ rec_loop:
prebuilt->select_lock_type,
LOCK_ORDINARY, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3840,8 +3891,11 @@ wrong_offs:
prebuilt->select_lock_type, LOCK_GAP,
thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3875,8 +3929,11 @@ wrong_offs:
prebuilt->select_lock_type, LOCK_GAP,
thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3945,15 +4002,21 @@ no_gap_lock:
switch (err) {
rec_t* old_vers;
- case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
if (srv_locks_unsafe_for_binlog
- || trx->isolation_level <= TRX_ISO_READ_COMMITTED) {
+ || trx->isolation_level
+ <= TRX_ISO_READ_COMMITTED) {
/* Note that a record of
prebuilt->index was locked. */
prebuilt->new_rec_locks = 1;
}
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
break;
case DB_LOCK_WAIT:
+ /* Never unlock rows that were part of a conflict. */
+ prebuilt->new_rec_locks = 0;
+
if (UNIV_LIKELY(prebuilt->row_read_type
!= ROW_READ_TRY_SEMI_CONSISTENT)
|| unique_search
@@ -3983,7 +4046,6 @@ no_gap_lock:
if (UNIV_LIKELY(trx->wait_lock != NULL)) {
lock_cancel_waiting_and_release(
trx->wait_lock);
- prebuilt->new_rec_locks = 0;
} else {
mutex_exit(&kernel_mutex);
@@ -3995,9 +4057,6 @@ no_gap_lock:
ULINT_UNDEFINED,
&heap);
err = DB_SUCCESS;
- /* Note that a record of
- prebuilt->index was locked. */
- prebuilt->new_rec_locks = 1;
break;
}
mutex_exit(&kernel_mutex);
@@ -4135,27 +4194,30 @@ requires_clust_rec:
err = row_sel_get_clust_rec_for_mysql(prebuilt, index, rec,
thr, &clust_rec,
&offsets, &heap, &mtr);
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS:
+ if (clust_rec == NULL) {
+ /* The record did not exist in the read view */
+ ut_ad(prebuilt->select_lock_type == LOCK_NONE);
+ goto next_rec;
+ }
+ break;
+ case DB_SUCCESS_LOCKED_REC:
+ ut_a(clust_rec != NULL);
+ if (srv_locks_unsafe_for_binlog
+ || trx->isolation_level
+ <= TRX_ISO_READ_COMMITTED) {
+ /* Note that the clustered index record
+ was locked. */
+ prebuilt->new_rec_locks = 2;
+ }
+ err = DB_SUCCESS;
+ break;
+ default:
goto lock_wait_or_error;
}
- if (clust_rec == NULL) {
- /* The record did not exist in the read view */
- ut_ad(prebuilt->select_lock_type == LOCK_NONE);
-
- goto next_rec;
- }
-
- if ((srv_locks_unsafe_for_binlog
- || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
- && prebuilt->select_lock_type != LOCK_NONE) {
- /* Note that both the secondary index record
- and the clustered index record were locked. */
- ut_ad(prebuilt->new_rec_locks == 1);
- prebuilt->new_rec_locks = 2;
- }
-
if (UNIV_UNLIKELY(rec_get_deleted_flag(clust_rec, comp))) {
/* The record is delete marked: we can skip it */
diff --git a/storage/innobase/row/row0undo.c b/storage/innobase/row/row0undo.c
index f03f84ed1b0..7f31fd0060c 100644
--- a/storage/innobase/row/row0undo.c
+++ b/storage/innobase/row/row0undo.c
@@ -272,7 +272,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_lock_data_dictionary(trx);
+ row_mysql_freeze_data_dictionary(trx);
}
if (node->state == UNDO_NODE_INSERT) {
@@ -287,7 +287,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_unlock_data_dictionary(trx);
+ row_mysql_unfreeze_data_dictionary(trx);
}
/* Do some cleanup */
diff --git a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c
index a2eed3f171c..5b1184fb416 100644
--- a/storage/innobase/srv/srv0srv.c
+++ b/storage/innobase/srv/srv0srv.c
@@ -1554,12 +1554,16 @@ srv_suspend_mysql_thread(
mutex_exit(&kernel_mutex);
- if (trx_is_interrupted(trx)
- || (srv_lock_wait_timeout < 100000000
- && wait_time > (double)srv_lock_wait_timeout)) {
+ if (srv_lock_wait_timeout < 100000000
+ && wait_time > (double)srv_lock_wait_timeout) {
trx->error_state = DB_LOCK_WAIT_TIMEOUT;
}
+
+ if (trx_is_interrupted(trx)) {
+
+ trx->error_state = DB_INTERRUPTED;
+ }
#else /* UNIV_HOTBACKUP */
/* This function depends on MySQL code that is not included in
InnoDB Hot Backup builds. Besides, this function should never
diff --git a/storage/innobase/srv/srv0start.c b/storage/innobase/srv/srv0start.c
index a7950473a17..9d057110d11 100644
--- a/storage/innobase/srv/srv0start.c
+++ b/storage/innobase/srv/srv0start.c
@@ -102,20 +102,6 @@ static char* srv_monitor_file_name;
#define SRV_MAX_N_PENDING_SYNC_IOS 100
-/* Avoid warnings when using purify */
-
-#ifdef HAVE_purify
-static int inno_bcmp(register const char *s1, register const char *s2,
- register uint len)
-{
- while ((len-- != 0) && (*s1++ == *s2++))
- ;
-
- return(len + 1);
-}
-#define memcmp(A,B,C) inno_bcmp((A),(B),(C))
-#endif
-
static
char*
srv_parse_megabytes(
diff --git a/storage/innobase/trx/trx0trx.c b/storage/innobase/trx/trx0trx.c
index fae479feddc..545226a5994 100644
--- a/storage/innobase/trx/trx0trx.c
+++ b/storage/innobase/trx/trx0trx.c
@@ -131,6 +131,8 @@ trx_create(
trx->mysql_thd = NULL;
trx->mysql_query_str = NULL;
+ trx->mysql_query_len = NULL;
+
trx->active_trans = 0;
trx->duplicates = 0;
@@ -936,6 +938,7 @@ trx_commit_off_kernel(
trx->undo_no = ut_dulint_zero;
trx->last_sql_stat_start.least_undo_no = ut_dulint_zero;
trx->mysql_query_str = NULL;
+ trx->mysql_query_len = NULL;
ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0);
ut_ad(UT_LIST_GET_LEN(trx->trx_locks) == 0);
diff --git a/storage/innodb_plugin/ChangeLog b/storage/innodb_plugin/ChangeLog
index bc69aaca96a..3e802360d23 100644
--- a/storage/innodb_plugin/ChangeLog
+++ b/storage/innodb_plugin/ChangeLog
@@ -1,3 +1,152 @@
+2010-07-27 The InnoDB Team
+
+ * include/mem0pool.h, mem/mem0mem.c, mem/mem0pool.c, srv/srv0start.c:
+ Fix Bug#55581 shutdown with innodb-use-sys-malloc=0: assert
+ mutex->magic_n == MUTEX_MAGIC_N.
+
+2010-06-30 The InnoDB Team
+
+ * btr/btr0sea.c, ha/ha0ha.c, handler/ha_innodb.cc, include/btr0sea.h:
+ Fix Bug#54311 Crash on CHECK PARTITION after concurrent LOAD DATA
+ and adaptive_hash_index=OFF
+
+2010-06-29 The InnoDB Team
+ * row/row0row.c, row/row0undo.c, row/row0upd.c:
+ Fix Bug#54408 txn rollback after recovery: row0umod.c:673
+ dict_table_get_format(index->table)
+
+2010-06-29 The InnoDB Team
+
+ * btr/btr0cur.c, include/btr0cur.h,
+ include/row0mysql.h, row/row0merge.c, row/row0sel.c:
+ Fix Bug#54358 READ UNCOMMITTED access failure of off-page DYNAMIC
+ or COMPRESSED columns
+
+2010-06-24 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#54679 alter table causes compressed row_format to revert
+ to compact
+
+2010-06-22 The InnoDB Team
+
+ * dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h,
+ include/univ.i, page/page0zip.c, row/row0merge.c:
+ Fix Bug#47991 InnoDB Dictionary Cache memory usage increases
+ indefinitely when renaming tables
+
+2010-06-22 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#54686: "field->col->mtype == type" assertion error at
+ row/row0sel.c
+
+2010-06-22 The InnoDB Team
+
+ * handler/ha_innodb.cc, innodb_bug54044.result, innodb_bug54044.test:
+ Fix Bug#54044 Create temporary tables and using innodb crashes.
+
+2010-06-21 The InnoDB Team
+
+ * dict/dict0load.c, fil/fil0fil.c:
+ Fix Bug#54658: InnoDB: Warning: allocated tablespace %lu,
+ old maximum was 0 (introduced in Bug #53578 fix)
+
+2010-06-16 The InnoDB Team
+
+ * row/row0merge.c:
+ Fix Bug#54330 Broken fast index creation
+
+2010-06-10 The InnoDB Team
+
+ * include/log0log.ic, row/row0ins.c, row/row0purge.c,
+ row/row0uins.c, row/row0umod.c, row/row0upd.c:
+ Fix Bug#39168 ERROR: the age of the last checkpoint ... exceeds
+ the log group capacity
+
+2010-06-08 The InnoDB Team
+
+ * dict/dict0load.c:
+ Fix Bug#54009 Server crashes when data is selected from non backed
+ up table for InnoDB plugin
+
+2010-06-02 The InnoDB Team
+
+ * include/db0err.h, include/lock0lock.h, include/row0mysql.h,
+ lock/lock0lock.c, row/row0ins.c, row/row0mysql.c, row/row0sel.c:
+ Fix Bug#53674 InnoDB: Error: unlock row could not find a
+ 4 mode lock on the record
+
+2010-06-01 The InnoDB Team
+
+ * include/sync0rw.h, sync/sync0rw.c:
+ Fix Bug#48197 Concurrent rw_lock_free may cause assertion failure
+
+2010-06-01 The InnoDB Team
+
+ * row/row0umod.c:
+ Fix Bug#53812 assert row/row0umod.c line 660 in txn rollback
+ after crash recovery
+
+2010-05-25 The InnoDB Team
+
+ * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c:
+ Fix Bug#53592: crash replacing duplicates into table after fast
+ alter table added unique key
+
+2010-05-24 The InnoDB Team
+
+ * dict/dict0boot.c, dict/dict0crea.c, fil/fil0fil.c,
+ include/dict0boot.h, include/fil0fil.h, row/row0mysql.c:
+ Fix Bug#53578: assert on invalid page access, in fil_io()
+
+2010-05-14 The InnoDB Team
+ * mysql-test/innodb_bug48024.test, mysql-test/innodb_bug48024.result,
+ dict/dict0dict.c, handler/ha_innodb.cc, handler/ha_innodb.h,
+ include/dict0dict.h, include/ha_prototypes.h, include/row0mysql.h,
+ include/trx0trx.h, row/row0mysql.c, trx/trx0i_s.c, trx/trx0trx.c:
+ Fix Bug#48024 Innodb doesn't work with multi-statements
+ Fix Bug#53644 InnoDB thinks that /*/ starts and ends a comment
+
+2010-05-12 The InnoDB Team
+
+ * handler/handler0alter.cc:
+ Fix Bug#53591 crash with fast alter table and text/blob prefix
+ primary key
+
+2010-05-12 The InnoDB Team
+
+ * row/row0merge.c:
+ Fix Bug#53471 row_merge_drop_temp_indexes() refers freed memory, SEGVs
+
+2010-05-11 The InnoDB Team
+
+ * mysql-test/innodb_bug53290.test, mysql-test/innodb_bug53290.result,
+ include/rem0cmp.h, rem/rem0cmp.c, row/row0merge.c:
+ Fix Bug#53290 wrong duplicate key error when adding a unique index
+ via fast alter table
+
+2010-05-11 The InnoDB Team
+ * buf/buf0lru.c, include/buf0buf.ic:
+ Fix Bug#53307 valgrind: warnings in main.partition_innodb_plugin
+
+2010-05-05 The InnoDB Team
+
+ * row/row0merge.c:
+ Fix Bug#53256 in a stress test, assert dict/dict0dict.c:815
+ table2 == NULL
+
+2010-05-05 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#53165 Setting innodb_change_buffering=DEFAULT produces
+ incorrect result
+
+2010-05-04 The InnoDB Team
+
+ * fsp/fsp0fsp.c:
+ Fix Bug#53306 valgrind: warnings in innodb.innodb
+
2010-05-03 The InnoDB Team
* buf0buf.c:
@@ -48,12 +197,6 @@
Only check the record size at index creation time when
innodb_strict_mode is set or when ROW_FORMAT is DYNAMIC or COMPRESSED.
-2010-04-20 The InnoDB Team
-
- * btr/btr0btr.c, include/univ.i:
- Implement UNIV_BTR_AVOID_COPY, for avoiding writes when a B-tree
- node is split at the first or last record.
-
2010-04-15 The InnoDB Team
* trx/trx0rec.c:
@@ -72,6 +215,10 @@
* mysql-test/innodb_bug38231.test:
Remove non-determinism in the test case.
+2010-03-29 The InnoDB Team
+
+ InnoDB Plugin 1.0.7 released
+
2010-03-18 The InnoDB Team
* CMakeLists.txt:
@@ -194,6 +341,14 @@
Fix Bug#49497 Error 1467 (ER_AUTOINC_READ_FAILED) on inserting
a negative value
+2010-01-28 The InnoDB Team
+ * handler/ha_innodb.h, handler/ha_innodb.cc,
+ handler/handler0alter.cc,
+ mysql-test/innodb_bug47622.test,
+ mysql-test/innodb_bug47622.result:
+ Fix Bug#47622 the new index is added before the existing ones
+ in MySQL, but after one in SE
+
2010-01-27 The InnoDB Team
* include/row0mysql.h, log/log0recv.c, row/row0mysql.c:
diff --git a/storage/innodb_plugin/Makefile.am b/storage/innodb_plugin/Makefile.am
index 1d0dd936895..1bed796f0d4 100644
--- a/storage/innodb_plugin/Makefile.am
+++ b/storage/innodb_plugin/Makefile.am
@@ -325,15 +325,15 @@ libinnobase_a_SOURCES= \
ut/ut0vec.c \
ut/ut0wqueue.c
-libinnobase_a_CXXFLAGS= $(AM_CFLAGS)
+libinnobase_a_CXXFLAGS= $(AM_CXXFLAGS)
libinnobase_a_CFLAGS= $(AM_CFLAGS)
EXTRA_LTLIBRARIES= ha_innodb_plugin.la
pkgplugin_LTLIBRARIES= @plugin_innodb_plugin_shared_target@
-ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir)
-ha_innodb_plugin_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
-ha_innodb_plugin_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
+ha_innodb_plugin_la_LDFLAGS= -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices
+ha_innodb_plugin_la_CXXFLAGS= -shared $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS)
+ha_innodb_plugin_la_CFLAGS= -shared $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
ha_innodb_plugin_la_SOURCES= $(libinnobase_a_SOURCES)
EXTRA_DIST= CMakeLists.txt plug.in \
diff --git a/storage/innodb_plugin/btr/btr0btr.c b/storage/innodb_plugin/btr/btr0btr.c
index 96fcc2ed821..02677e0a71c 100644
--- a/storage/innodb_plugin/btr/btr0btr.c
+++ b/storage/innodb_plugin/btr/btr0btr.c
@@ -2000,6 +2000,7 @@ func_start:
goto insert_empty;
}
} else if (UNIV_UNLIKELY(insert_left)) {
+ ut_a(n_iterations > 0);
first_rec = page_rec_get_next(page_get_infimum_rec(page));
move_limit = page_rec_get_next(btr_cur_get_rec(cursor));
} else {
@@ -2046,17 +2047,7 @@ insert_empty:
}
/* 5. Move then the records to the new page */
- if (direction == FSP_DOWN
-#ifdef UNIV_BTR_AVOID_COPY
- && page_rec_is_supremum(move_limit)) {
- /* Instead of moving all records, make the new page
- the empty page. */
-
- left_block = block;
- right_block = new_block;
- } else if (direction == FSP_DOWN
-#endif /* UNIV_BTR_AVOID_COPY */
- ) {
+ if (direction == FSP_DOWN) {
/* fputs("Split left\n", stderr); */
if (0
@@ -2099,14 +2090,6 @@ insert_empty:
right_block = block;
lock_update_split_left(right_block, left_block);
-#ifdef UNIV_BTR_AVOID_COPY
- } else if (!split_rec) {
- /* Instead of moving all records, make the new page
- the empty page. */
-
- left_block = new_block;
- right_block = block;
-#endif /* UNIV_BTR_AVOID_COPY */
} else {
/* fputs("Split right\n", stderr); */
diff --git a/storage/innodb_plugin/btr/btr0cur.c b/storage/innodb_plugin/btr/btr0cur.c
index 0e603fdca8f..7fa7d42320a 100644
--- a/storage/innodb_plugin/btr/btr0cur.c
+++ b/storage/innodb_plugin/btr/btr0cur.c
@@ -1959,9 +1959,8 @@ any_extern:
err = btr_cur_upd_lock_and_undo(flags, cursor, update, cmpl_info,
thr, mtr, &roll_ptr);
if (err != DB_SUCCESS) {
-err_exit:
- mem_heap_free(heap);
- return(err);
+
+ goto err_exit;
}
/* Ok, we may do the replacement. Store on the page infimum the
@@ -2007,9 +2006,10 @@ err_exit:
page_cur_move_to_next(page_cursor);
+ err = DB_SUCCESS;
+err_exit:
mem_heap_free(heap);
-
- return(DB_SUCCESS);
+ return(err);
}
/*************************************************************//**
@@ -3871,6 +3871,8 @@ btr_store_big_rec_extern_fields(
field_ref += local_len;
}
extern_len = big_rec_vec->fields[i].len;
+ UNIV_MEM_ASSERT_RW(big_rec_vec->fields[i].data,
+ extern_len);
ut_a(extern_len > 0);
@@ -4507,6 +4509,7 @@ btr_copy_blob_prefix(
mtr_commit(&mtr);
if (page_no == FIL_NULL || copy_len != part_len) {
+ UNIV_MEM_ASSERT_RW(buf, copied_len);
return(copied_len);
}
@@ -4690,6 +4693,7 @@ btr_copy_externally_stored_field_prefix_low(
space_id, page_no, offset);
inflateEnd(&d_stream);
mem_heap_free(heap);
+ UNIV_MEM_ASSERT_RW(buf, d_stream.total_out);
return(d_stream.total_out);
} else {
return(btr_copy_blob_prefix(buf, len, space_id,
@@ -4810,7 +4814,7 @@ btr_copy_externally_stored_field(
/*******************************************************************//**
Copies an externally stored field of a record to mem heap.
-@return the field copied to heap */
+@return the field copied to heap, or NULL if the field is incomplete */
UNIV_INTERN
byte*
btr_rec_copy_externally_stored_field(
@@ -4840,6 +4844,18 @@ btr_rec_copy_externally_stored_field(
data = rec_get_nth_field(rec, offsets, no, &local_len);
+ ut_a(local_len >= BTR_EXTERN_FIELD_REF_SIZE);
+
+ if (UNIV_UNLIKELY
+ (!memcmp(data + local_len - BTR_EXTERN_FIELD_REF_SIZE,
+ field_ref_zero, BTR_EXTERN_FIELD_REF_SIZE))) {
+ /* The externally stored field was not written yet.
+ This record should only be seen by
+ recv_recovery_rollback_active() or any
+ TRX_ISO_READ_UNCOMMITTED transactions. */
+ return(NULL);
+ }
+
return(btr_copy_externally_stored_field(len, data,
zip_size, local_len, heap));
}
diff --git a/storage/innodb_plugin/btr/btr0sea.c b/storage/innodb_plugin/btr/btr0sea.c
index ef7afeb1039..ac7248fef20 100644
--- a/storage/innodb_plugin/btr/btr0sea.c
+++ b/storage/innodb_plugin/btr/btr0sea.c
@@ -46,6 +46,7 @@ Created 2/17/1996 Heikki Tuuri
/** Flag: has the search system been enabled?
Protected by btr_search_latch and btr_search_enabled_mutex. */
UNIV_INTERN char btr_search_enabled = TRUE;
+UNIV_INTERN ibool btr_search_fully_disabled = FALSE;
/** Mutex protecting btr_search_enabled */
static mutex_t btr_search_enabled_mutex;
@@ -182,6 +183,7 @@ void
btr_search_sys_free(void)
/*=====================*/
{
+ rw_lock_free(&btr_search_latch);
mem_free(btr_search_latch_temp);
btr_search_latch_temp = NULL;
mem_heap_free(btr_search_sys->hash_index->heap);
@@ -200,12 +202,19 @@ btr_search_disable(void)
mutex_enter(&btr_search_enabled_mutex);
rw_lock_x_lock(&btr_search_latch);
+ /* Disable access to hash index, also tell ha_insert_for_fold()
+ stop adding new nodes to hash index, but still allow updating
+ existing nodes */
btr_search_enabled = FALSE;
/* Clear all block->is_hashed flags and remove all entries
from btr_search_sys->hash_index. */
buf_pool_drop_hash_index();
+ /* hash index has been cleaned up, disallow any operation to
+ the hash index */
+ btr_search_fully_disabled = TRUE;
+
/* btr_search_enabled_mutex should guarantee this. */
ut_ad(!btr_search_enabled);
@@ -224,6 +233,7 @@ btr_search_enable(void)
rw_lock_x_lock(&btr_search_latch);
btr_search_enabled = TRUE;
+ btr_search_fully_disabled = FALSE;
rw_lock_x_unlock(&btr_search_latch);
mutex_exit(&btr_search_enabled_mutex);
@@ -1362,7 +1372,7 @@ btr_search_build_page_hash_index(
rw_lock_x_lock(&btr_search_latch);
- if (UNIV_UNLIKELY(!btr_search_enabled)) {
+ if (UNIV_UNLIKELY(btr_search_fully_disabled)) {
goto exit_func;
}
diff --git a/storage/innodb_plugin/buf/buf0buddy.c b/storage/innodb_plugin/buf/buf0buddy.c
index 66d802f8a36..ee5a569c3ff 100644
--- a/storage/innodb_plugin/buf/buf0buddy.c
+++ b/storage/innodb_plugin/buf/buf0buddy.c
@@ -442,11 +442,15 @@ buf_buddy_relocate(
pool), so there is nothing wrong about this. The
mach_read_from_4() calls here will only trigger bogus
Valgrind memcheck warnings in UNIV_DEBUG_VALGRIND builds. */
- bpage = buf_page_hash_get(
- mach_read_from_4((const byte*) src
- + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID),
- mach_read_from_4((const byte*) src
- + FIL_PAGE_OFFSET));
+ ulint space = mach_read_from_4(
+ (const byte*) src + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
+ ulint page_no = mach_read_from_4(
+ (const byte*) src + FIL_PAGE_OFFSET);
+ /* Suppress Valgrind warnings about conditional jump
+ on uninitialized value. */
+ UNIV_MEM_VALID(&space, sizeof space);
+ UNIV_MEM_VALID(&page_no, sizeof page_no);
+ bpage = buf_page_hash_get(space, page_no);
if (!bpage || bpage->zip.data != src) {
/* The block has probably been freshly
@@ -495,7 +499,12 @@ success:
mutex_exit(mutex);
} else if (i == buf_buddy_get_slot(sizeof(buf_page_t))) {
/* This must be a buf_page_t object. */
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(src, size);
+#endif
if (buf_buddy_relocate_block(src, dst)) {
goto success;
diff --git a/storage/innodb_plugin/buf/buf0buf.c b/storage/innodb_plugin/buf/buf0buf.c
index f299c2df969..660686bac1e 100644
--- a/storage/innodb_plugin/buf/buf0buf.c
+++ b/storage/innodb_plugin/buf/buf0buf.c
@@ -2236,7 +2236,7 @@ wait_until_unfixed:
block->page.buf_fix_count = 1;
buf_block_set_io_fix(block, BUF_IO_READ);
- rw_lock_x_lock(&block->lock);
+ rw_lock_x_lock_func(&block->lock, 0, file, line);
UNIV_MEM_INVALID(bpage, sizeof *bpage);
@@ -2280,7 +2280,12 @@ wait_until_unfixed:
ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
mutex_enter(&block->mutex);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in buf_page_t. On
+ other systems, Valgrind could complain about uninitialized pad
+ bytes. */
UNIV_MEM_ASSERT_RW(&block->page, sizeof block->page);
+#endif
buf_block_buf_fix_inc(block, file, line);
diff --git a/storage/innodb_plugin/buf/buf0flu.c b/storage/innodb_plugin/buf/buf0flu.c
index f2b07492470..d8c0497fa1e 100644
--- a/storage/innodb_plugin/buf/buf0flu.c
+++ b/storage/innodb_plugin/buf/buf0flu.c
@@ -249,6 +249,17 @@ buf_flush_insert_into_flush_list(
ut_d(block->page.in_flush_list = TRUE);
UT_LIST_ADD_FIRST(list, buf_pool->flush_list, &block->page);
+#ifdef UNIV_DEBUG_VALGRIND
+ {
+ ulint zip_size = buf_block_get_zip_size(block);
+
+ if (UNIV_UNLIKELY(zip_size)) {
+ UNIV_MEM_ASSERT_RW(block->page.zip.data, zip_size);
+ } else {
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
+ }
+ }
+#endif /* UNIV_DEBUG_VALGRIND */
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
ut_a(buf_flush_validate_low());
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
@@ -276,6 +287,18 @@ buf_flush_insert_sorted_into_flush_list(
ut_ad(!block->page.in_flush_list);
ut_d(block->page.in_flush_list = TRUE);
+#ifdef UNIV_DEBUG_VALGRIND
+ {
+ ulint zip_size = buf_block_get_zip_size(block);
+
+ if (UNIV_UNLIKELY(zip_size)) {
+ UNIV_MEM_ASSERT_RW(block->page.zip.data, zip_size);
+ } else {
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
+ }
+ }
+#endif /* UNIV_DEBUG_VALGRIND */
+
prev_b = NULL;
/* For the most part when this function is called the flush_rbt
@@ -809,6 +832,7 @@ try_again:
zip_size = buf_page_get_zip_size(bpage);
if (UNIV_UNLIKELY(zip_size)) {
+ UNIV_MEM_ASSERT_RW(bpage->zip.data, zip_size);
/* Copy the compressed page and clear the rest. */
memcpy(trx_doublewrite->write_buf
+ UNIV_PAGE_SIZE * trx_doublewrite->first_free,
@@ -818,6 +842,8 @@ try_again:
+ zip_size, 0, UNIV_PAGE_SIZE - zip_size);
} else {
ut_a(buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE);
+ UNIV_MEM_ASSERT_RW(((buf_block_t*) bpage)->frame,
+ UNIV_PAGE_SIZE);
memcpy(trx_doublewrite->write_buf
+ UNIV_PAGE_SIZE * trx_doublewrite->first_free,
diff --git a/storage/innodb_plugin/buf/buf0lru.c b/storage/innodb_plugin/buf/buf0lru.c
index 9cfa02ba3ac..78d8d348e2a 100644
--- a/storage/innodb_plugin/buf/buf0lru.c
+++ b/storage/innodb_plugin/buf/buf0lru.c
@@ -1364,7 +1364,7 @@ buf_LRU_make_block_old(
Try to free a block. If bpage is a descriptor of a compressed-only
page, the descriptor object will be freed as well.
-NOTE: If this function returns BUF_LRU_FREED, it will not temporarily
+NOTE: If this function returns BUF_LRU_FREED, it will temporarily
release buf_pool_mutex. Furthermore, the page frame will no longer be
accessible via bpage.
@@ -1393,7 +1393,12 @@ buf_LRU_free_block(
ut_ad(buf_page_in_file(bpage));
ut_ad(bpage->in_LRU_list);
ut_ad(!bpage->in_flush_list == !bpage->oldest_modification);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in buf_page_t. On
+ other systems, Valgrind could complain about uninitialized pad
+ bytes. */
UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
+#endif
if (!buf_page_can_relocate(bpage)) {
@@ -1489,8 +1494,13 @@ alloc:
ut_ad(prev_b->in_LRU_list);
ut_ad(buf_page_in_file(prev_b));
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no
+ padding in buf_page_t. On other
+ systems, Valgrind could complain about
+ uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(prev_b, sizeof *prev_b);
-
+#endif
UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU,
prev_b, b);
@@ -1688,7 +1698,12 @@ buf_LRU_block_remove_hashed_page(
ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE);
ut_a(bpage->buf_fix_count == 0);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
+#endif
buf_LRU_remove_block(bpage);
diff --git a/storage/innodb_plugin/dict/dict0boot.c b/storage/innodb_plugin/dict/dict0boot.c
index 45d57b8c619..e63c1dc94b9 100644
--- a/storage/innodb_plugin/dict/dict0boot.c
+++ b/storage/innodb_plugin/dict/dict0boot.c
@@ -62,32 +62,47 @@ dict_hdr_get(
}
/**********************************************************************//**
-Returns a new table, index, or tree id.
-@return the new id */
+Returns a new table, index, or space id. */
UNIV_INTERN
-dulint
+void
dict_hdr_get_new_id(
/*================*/
- ulint type) /*!< in: DICT_HDR_ROW_ID, ... */
+ dulint* table_id, /*!< out: table id (not assigned if NULL) */
+ dulint* index_id, /*!< out: index id (not assigned if NULL) */
+ ulint* space_id) /*!< out: space id (not assigned if NULL) */
{
dict_hdr_t* dict_hdr;
dulint id;
mtr_t mtr;
- ut_ad((type == DICT_HDR_TABLE_ID) || (type == DICT_HDR_INDEX_ID));
-
mtr_start(&mtr);
dict_hdr = dict_hdr_get(&mtr);
- id = mtr_read_dulint(dict_hdr + type, &mtr);
- id = ut_dulint_add(id, 1);
+ if (table_id) {
+ id = mtr_read_dulint(dict_hdr + DICT_HDR_TABLE_ID, &mtr);
+ id = ut_dulint_add(id, 1);
+ mlog_write_dulint(dict_hdr + DICT_HDR_TABLE_ID, id, &mtr);
+ *table_id = id;
+ }
- mlog_write_dulint(dict_hdr + type, id, &mtr);
+ if (index_id) {
+ id = mtr_read_dulint(dict_hdr + DICT_HDR_INDEX_ID, &mtr);
+ id = ut_dulint_add(id, 1);
+ mlog_write_dulint(dict_hdr + DICT_HDR_INDEX_ID, id, &mtr);
+ *index_id = id;
+ }
- mtr_commit(&mtr);
+ if (space_id) {
+ *space_id = mtr_read_ulint(dict_hdr + DICT_HDR_MAX_SPACE_ID,
+ MLOG_4BYTES, &mtr);
+ if (fil_assign_new_space_id(space_id)) {
+ mlog_write_ulint(dict_hdr + DICT_HDR_MAX_SPACE_ID,
+ *space_id, MLOG_4BYTES, &mtr);
+ }
+ }
- return(id);
+ mtr_commit(&mtr);
}
/**********************************************************************//**
@@ -151,9 +166,12 @@ dict_hdr_create(
mlog_write_dulint(dict_header + DICT_HDR_INDEX_ID,
ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
- /* Obsolete, but we must initialize it to 0 anyway. */
- mlog_write_dulint(dict_header + DICT_HDR_MIX_ID,
- ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
+ mlog_write_ulint(dict_header + DICT_HDR_MAX_SPACE_ID,
+ 0, MLOG_4BYTES, mtr);
+
+ /* Obsolete, but we must initialize it anyway. */
+ mlog_write_ulint(dict_header + DICT_HDR_MIX_ID_LOW,
+ DICT_HDR_FIRST_ID, MLOG_4BYTES, mtr);
/* Create the B-tree roots for the clustered indexes of the basic
system tables */
diff --git a/storage/innodb_plugin/dict/dict0crea.c b/storage/innodb_plugin/dict/dict0crea.c
index 653bff4bef6..09353c45c8c 100644
--- a/storage/innodb_plugin/dict/dict0crea.c
+++ b/storage/innodb_plugin/dict/dict0crea.c
@@ -239,16 +239,34 @@ dict_build_table_def_step(
const char* path_or_name;
ibool is_path;
mtr_t mtr;
+ ulint space = 0;
+ ibool file_per_table;
ut_ad(mutex_own(&(dict_sys->mutex)));
table = node->table;
- table->id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID);
+ /* Cache the global variable "srv_file_per_table" to
+ a local variable before using it. Please note
+ "srv_file_per_table" is not under dict_sys mutex
+ protection, and could be changed while executing
+ this function. So better to cache the current value
+ to a local variable, and all future reference to
+ "srv_file_per_table" should use this local variable. */
+ file_per_table = srv_file_per_table;
+
+ dict_hdr_get_new_id(&table->id, NULL, NULL);
thr_get_trx(thr)->table_id = table->id;
- if (srv_file_per_table) {
+ if (file_per_table) {
+ /* Get a new space id if srv_file_per_table is set */
+ dict_hdr_get_new_id(NULL, NULL, &space);
+
+ if (UNIV_UNLIKELY(space == ULINT_UNDEFINED)) {
+ return(DB_ERROR);
+ }
+
/* We create a new single-table tablespace for the table.
We initially let it be 4 pages:
- page 0 is the fsp header and an extent descriptor page,
@@ -257,8 +275,6 @@ dict_build_table_def_step(
- page 3 will contain the root of the clustered index of the
table we create here. */
- ulint space = 0; /* reset to zero for the call below */
-
if (table->dir_path_of_temp_table) {
/* We place tables created with CREATE TEMPORARY
TABLE in the tmp dir of mysqld server */
@@ -276,7 +292,7 @@ dict_build_table_def_step(
flags = table->flags & ~(~0 << DICT_TF_BITS);
error = fil_create_new_single_table_tablespace(
- &space, path_or_name, is_path,
+ space, path_or_name, is_path,
flags == DICT_TF_COMPACT ? 0 : flags,
FIL_IBD_FILE_INITIAL_SIZE);
table->space = (unsigned int) space;
@@ -561,7 +577,7 @@ dict_build_index_def_step(
ut_ad((UT_LIST_GET_LEN(table->indexes) > 0)
|| dict_index_is_clust(index));
- index->id = dict_hdr_get_new_id(DICT_HDR_INDEX_ID);
+ dict_hdr_get_new_id(NULL, &index->id, NULL);
/* Inherit the space id from the table; we store all indexes of a
table in the same tablespace */
diff --git a/storage/innodb_plugin/dict/dict0dict.c b/storage/innodb_plugin/dict/dict0dict.c
index 83438231689..fe4e058e122 100644
--- a/storage/innodb_plugin/dict/dict0dict.c
+++ b/storage/innodb_plugin/dict/dict0dict.c
@@ -82,7 +82,7 @@ static char dict_ibfk[] = "_ibfk_";
/** array of mutexes protecting dict_index_t::stat_n_diff_key_vals[] */
#define DICT_INDEX_STAT_MUTEX_SIZE 32
-mutex_t dict_index_stat_mutex[DICT_INDEX_STAT_MUTEX_SIZE];
+static mutex_t dict_index_stat_mutex[DICT_INDEX_STAT_MUTEX_SIZE];
/*******************************************************************//**
Tries to find column names for the index and sets the col field of the
@@ -570,13 +570,11 @@ dict_table_get_on_id(
if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0
|| trx->dict_operation_lock_mode == RW_X_LATCH) {
- /* It is a system table which will always exist in the table
- cache: we avoid acquiring the dictionary mutex, because
- if we are doing a rollback to handle an error in TABLE
- CREATE, for example, we already have the mutex! */
- ut_ad(mutex_own(&(dict_sys->mutex))
- || trx->dict_operation_lock_mode == RW_X_LATCH);
+ /* Note: An X latch implies that the transaction
+ already owns the dictionary mutex. */
+
+ ut_ad(mutex_own(&dict_sys->mutex));
return(dict_table_get_on_id_low(table_id));
}
@@ -850,7 +848,8 @@ dict_table_add_to_cache(
/* Add table to LRU list of tables */
UT_LIST_ADD_FIRST(table_LRU, dict_sys->table_LRU, table);
- dict_sys->size += mem_heap_get_size(table->heap);
+ dict_sys->size += mem_heap_get_size(table->heap)
+ + strlen(table->name) + 1;
}
/**********************************************************************//**
@@ -904,14 +903,21 @@ dict_table_rename_in_cache(
dict_foreign_t* foreign;
dict_index_t* index;
ulint fold;
- ulint old_size;
- const char* old_name;
+ char old_name[MAX_TABLE_NAME_LEN + 1];
ut_ad(table);
ut_ad(mutex_own(&(dict_sys->mutex)));
- old_size = mem_heap_get_size(table->heap);
- old_name = table->name;
+ /* store the old/current name to an automatic variable */
+ if (strlen(table->name) + 1 <= sizeof(old_name)) {
+ memcpy(old_name, table->name, strlen(table->name) + 1);
+ } else {
+ ut_print_timestamp(stderr);
+ fprintf(stderr, "InnoDB: too long table name: '%s', "
+ "max length is %d\n", table->name,
+ MAX_TABLE_NAME_LEN);
+ ut_error;
+ }
fold = ut_fold_string(new_name);
@@ -957,12 +963,22 @@ dict_table_rename_in_cache(
/* Remove table from the hash tables of tables */
HASH_DELETE(dict_table_t, name_hash, dict_sys->table_hash,
ut_fold_string(old_name), table);
- table->name = mem_heap_strdup(table->heap, new_name);
+
+ if (strlen(new_name) > strlen(table->name)) {
+ /* We allocate MAX_TABLE_NAME_LEN+1 bytes here to avoid
+ memory fragmentation, we assume a repeated calls of
+ ut_realloc() with the same size do not cause fragmentation */
+ ut_a(strlen(new_name) <= MAX_TABLE_NAME_LEN);
+ table->name = ut_realloc(table->name, MAX_TABLE_NAME_LEN + 1);
+ }
+ memcpy(table->name, new_name, strlen(new_name) + 1);
/* Add table to hash table of tables */
HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold,
table);
- dict_sys->size += (mem_heap_get_size(table->heap) - old_size);
+
+ dict_sys->size += strlen(new_name) - strlen(old_name);
+ ut_a(dict_sys->size > 0);
/* Update the table_name field in indexes */
index = dict_table_get_first_index(table);
@@ -1187,7 +1203,7 @@ dict_table_remove_from_cache(
/* Remove table from LRU list of tables */
UT_LIST_REMOVE(table_LRU, dict_sys->table_LRU, table);
- size = mem_heap_get_size(table->heap);
+ size = mem_heap_get_size(table->heap) + strlen(table->name) + 1;
ut_ad(dict_sys->size >= size);
@@ -3008,25 +3024,28 @@ static
char*
dict_strip_comments(
/*================*/
- const char* sql_string) /*!< in: SQL string */
+ const char* sql_string, /*!< in: SQL string */
+ size_t sql_length) /*!< in: length of sql_string */
{
char* str;
const char* sptr;
+ const char* eptr = sql_string + sql_length;
char* ptr;
/* unclosed quote character (0 if none) */
char quote = 0;
- str = mem_alloc(strlen(sql_string) + 1);
+ str = mem_alloc(sql_length + 1);
sptr = sql_string;
ptr = str;
for (;;) {
scan_more:
- if (*sptr == '\0') {
+ if (sptr >= eptr || *sptr == '\0') {
+end_of_string:
*ptr = '\0';
- ut_a(ptr <= str + strlen(sql_string));
+ ut_a(ptr <= str + sql_length);
return(str);
}
@@ -3045,30 +3064,35 @@ scan_more:
|| (sptr[0] == '-' && sptr[1] == '-'
&& sptr[2] == ' ')) {
for (;;) {
+ if (++sptr >= eptr) {
+ goto end_of_string;
+ }
+
/* In Unix a newline is 0x0A while in Windows
it is 0x0D followed by 0x0A */
- if (*sptr == (char)0x0A
- || *sptr == (char)0x0D
- || *sptr == '\0') {
-
+ switch (*sptr) {
+ case (char) 0X0A:
+ case (char) 0x0D:
+ case '\0':
goto scan_more;
}
-
- sptr++;
}
} else if (!quote && *sptr == '/' && *(sptr + 1) == '*') {
+ sptr += 2;
for (;;) {
- if (*sptr == '*' && *(sptr + 1) == '/') {
-
- sptr += 2;
-
- goto scan_more;
+ if (sptr >= eptr) {
+ goto end_of_string;
}
- if (*sptr == '\0') {
-
+ switch (*sptr) {
+ case '\0':
goto scan_more;
+ case '*':
+ if (sptr[1] == '/') {
+ sptr += 2;
+ goto scan_more;
+ }
}
sptr++;
@@ -3749,6 +3773,7 @@ dict_create_foreign_constraints(
name before it: test.table2; the
default database id the database of
parameter name */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -3763,7 +3788,7 @@ dict_create_foreign_constraints(
ut_a(trx);
ut_a(trx->mysql_thd);
- str = dict_strip_comments(sql_string);
+ str = dict_strip_comments(sql_string, sql_length);
heap = mem_heap_create(10000);
err = dict_create_foreign_constraints_low(
@@ -3796,6 +3821,7 @@ dict_foreign_parse_drop_constraints(
dict_foreign_t* foreign;
ibool success;
char* str;
+ size_t len;
const char* ptr;
const char* id;
FILE* ef = dict_foreign_err_file;
@@ -3810,7 +3836,10 @@ dict_foreign_parse_drop_constraints(
*constraints_to_drop = mem_heap_alloc(heap, 1000 * sizeof(char*));
- str = dict_strip_comments(*(trx->mysql_query_str));
+ ptr = innobase_get_stmt(trx->mysql_thd, &len);
+
+ str = dict_strip_comments(ptr, len);
+
ptr = str;
ut_ad(mutex_own(&(dict_sys->mutex)));
diff --git a/storage/innodb_plugin/dict/dict0load.c b/storage/innodb_plugin/dict/dict0load.c
index 377818308c5..3c495d21786 100644
--- a/storage/innodb_plugin/dict/dict0load.c
+++ b/storage/innodb_plugin/dict/dict0load.c
@@ -316,7 +316,7 @@ dict_check_tablespaces_and_store_max_id(
dict_index_t* sys_index;
btr_pcur_t pcur;
const rec_t* rec;
- ulint max_space_id = 0;
+ ulint max_space_id;
mtr_t mtr;
mutex_enter(&(dict_sys->mutex));
@@ -327,6 +327,11 @@ dict_check_tablespaces_and_store_max_id(
sys_index = UT_LIST_GET_FIRST(sys_tables->indexes);
ut_a(!dict_table_is_comp(sys_tables));
+ max_space_id = mtr_read_ulint(dict_hdr_get(&mtr)
+ + DICT_HDR_MAX_SPACE_ID,
+ MLOG_4BYTES, &mtr);
+ fil_set_max_space_id_if_bigger(max_space_id);
+
btr_pcur_open_at_index_side(TRUE, sys_index, BTR_SEARCH_LEAF, &pcur,
TRUE, &mtr);
loop:
@@ -973,6 +978,7 @@ err_exit:
/* Try to open the tablespace */
if (!fil_open_single_table_tablespace(
TRUE, space,
+ flags == DICT_TF_COMPACT ? 0 :
flags & ~(~0 << DICT_TF_BITS), name)) {
/* We failed to find a sensible
tablespace file */
diff --git a/storage/innodb_plugin/dict/dict0mem.c b/storage/innodb_plugin/dict/dict0mem.c
index 66b4b43f296..3287247029f 100644
--- a/storage/innodb_plugin/dict/dict0mem.c
+++ b/storage/innodb_plugin/dict/dict0mem.c
@@ -68,7 +68,8 @@ dict_mem_table_create(
table->heap = heap;
table->flags = (unsigned int) flags;
- table->name = mem_heap_strdup(heap, name);
+ table->name = ut_malloc(strlen(name) + 1);
+ memcpy(table->name, name, strlen(name) + 1);
table->space = (unsigned int) space;
table->n_cols = (unsigned int) (n_cols + DATA_N_SYS_COLS);
@@ -106,6 +107,7 @@ dict_mem_table_free(
#ifndef UNIV_HOTBACKUP
mutex_free(&(table->autoinc_mutex));
#endif /* UNIV_HOTBACKUP */
+ ut_free(table->name);
mem_heap_free(table->heap);
}
diff --git a/storage/innodb_plugin/fil/fil0fil.c b/storage/innodb_plugin/fil/fil0fil.c
index 963e306c00c..796fe921a7e 100644
--- a/storage/innodb_plugin/fil/fil0fil.c
+++ b/storage/innodb_plugin/fil/fil0fil.c
@@ -279,6 +279,10 @@ struct fil_system_struct {
request */
UT_LIST_BASE_NODE_T(fil_space_t) space_list;
/*!< list of all file spaces */
+ ibool space_id_reuse_warned;
+ /* !< TRUE if fil_space_create()
+ has issued a warning about
+ potential space_id reuse */
};
/** The tablespace memory cache. This variable is NULL before the module is
@@ -1193,7 +1197,19 @@ try_again:
space->tablespace_version = fil_system->tablespace_version;
space->mark = FALSE;
- if (purpose == FIL_TABLESPACE && id > fil_system->max_assigned_id) {
+ if (UNIV_LIKELY(purpose == FIL_TABLESPACE && !recv_recovery_on)
+ && UNIV_UNLIKELY(id > fil_system->max_assigned_id)) {
+ if (!fil_system->space_id_reuse_warned) {
+ fil_system->space_id_reuse_warned = TRUE;
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Warning: allocated tablespace %lu,"
+ " old maximum was %lu\n",
+ (ulong) id,
+ (ulong) fil_system->max_assigned_id);
+ }
+
fil_system->max_assigned_id = id;
}
@@ -1231,19 +1247,25 @@ try_again:
Assigns a new space id for a new single-table tablespace. This works simply by
incrementing the global counter. If 4 billion id's is not enough, we may need
to recycle id's.
-@return new tablespace id; ULINT_UNDEFINED if could not assign an id */
-static
-ulint
-fil_assign_new_space_id(void)
-/*=========================*/
+@return TRUE if assigned, FALSE if not */
+UNIV_INTERN
+ibool
+fil_assign_new_space_id(
+/*====================*/
+ ulint* space_id) /*!< in/out: space id */
{
- ulint id;
+ ulint id;
+ ibool success;
mutex_enter(&fil_system->mutex);
- fil_system->max_assigned_id++;
+ id = *space_id;
+
+ if (id < fil_system->max_assigned_id) {
+ id = fil_system->max_assigned_id;
+ }
- id = fil_system->max_assigned_id;
+ id++;
if (id > (SRV_LOG_SPACE_FIRST_ID / 2) && (id % 1000000UL == 0)) {
ut_print_timestamp(stderr);
@@ -1259,7 +1281,11 @@ fil_assign_new_space_id(void)
(ulong) SRV_LOG_SPACE_FIRST_ID);
}
- if (id >= SRV_LOG_SPACE_FIRST_ID) {
+ success = (id < SRV_LOG_SPACE_FIRST_ID);
+
+ if (success) {
+ *space_id = fil_system->max_assigned_id = id;
+ } else {
ut_print_timestamp(stderr);
fprintf(stderr,
"InnoDB: You have run out of single-table"
@@ -1269,14 +1295,12 @@ fil_assign_new_space_id(void)
" have to dump all your tables and\n"
"InnoDB: recreate the whole InnoDB installation.\n",
(ulong) id);
- fil_system->max_assigned_id--;
-
- id = ULINT_UNDEFINED;
+ *space_id = ULINT_UNDEFINED;
}
mutex_exit(&fil_system->mutex);
- return(id);
+ return(success);
}
/*******************************************************************//**
@@ -1512,7 +1536,7 @@ fil_init(
ut_a(hash_size > 0);
ut_a(max_n_open > 0);
- fil_system = mem_alloc(sizeof(fil_system_t));
+ fil_system = mem_zalloc(sizeof(fil_system_t));
mutex_create(&fil_system->mutex, SYNC_ANY_LATCH);
@@ -1521,16 +1545,7 @@ fil_init(
UT_LIST_INIT(fil_system->LRU);
- fil_system->n_open = 0;
fil_system->max_n_open = max_n_open;
-
- fil_system->modification_counter = 0;
- fil_system->max_assigned_id = 0;
-
- fil_system->tablespace_version = 0;
-
- UT_LIST_INIT(fil_system->unflushed_spaces);
- UT_LIST_INIT(fil_system->space_list);
}
/*******************************************************************//**
@@ -2115,7 +2130,7 @@ fil_op_log_parse_or_replay(
fil_create_directory_for_tablename(name);
if (fil_create_new_single_table_tablespace(
- &space_id, name, FALSE, flags,
+ space_id, name, FALSE, flags,
FIL_IBD_FILE_INITIAL_SIZE) != DB_SUCCESS) {
ut_error;
}
@@ -2562,9 +2577,7 @@ UNIV_INTERN
ulint
fil_create_new_single_table_tablespace(
/*===================================*/
- ulint* space_id, /*!< in/out: space id; if this is != 0,
- then this is an input parameter,
- otherwise output */
+ ulint space_id, /*!< in: space id */
const char* tablename, /*!< in: the table name in the usual
databasename/tablename format
of InnoDB, or a dir path to a temp
@@ -2584,6 +2597,8 @@ fil_create_new_single_table_tablespace(
ibool success;
char* path;
+ ut_a(space_id > 0);
+ ut_a(space_id < SRV_LOG_SPACE_FIRST_ID);
ut_a(size >= FIL_IBD_FILE_INITIAL_SIZE);
/* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for
ROW_FORMAT=COMPACT
@@ -2640,38 +2655,21 @@ fil_create_new_single_table_tablespace(
return(DB_ERROR);
}
- buf2 = ut_malloc(3 * UNIV_PAGE_SIZE);
- /* Align the memory for file i/o if we might have O_DIRECT set */
- page = ut_align(buf2, UNIV_PAGE_SIZE);
-
ret = os_file_set_size(path, file, size * UNIV_PAGE_SIZE, 0);
if (!ret) {
- ut_free(buf2);
- os_file_close(file);
- os_file_delete(path);
-
- mem_free(path);
- return(DB_OUT_OF_FILE_SPACE);
- }
-
- if (*space_id == 0) {
- *space_id = fil_assign_new_space_id();
- }
-
- /* printf("Creating tablespace %s id %lu\n", path, *space_id); */
-
- if (*space_id == ULINT_UNDEFINED) {
- ut_free(buf2);
+ err = DB_OUT_OF_FILE_SPACE;
error_exit:
os_file_close(file);
error_exit2:
os_file_delete(path);
mem_free(path);
- return(DB_ERROR);
+ return(err);
}
+ /* printf("Creating tablespace %s id %lu\n", path, space_id); */
+
/* We have to write the space id to the file immediately and flush the
file to disk. This is because in crash recovery we must be aware what
tablespaces exist and what are their space id's, so that we can apply
@@ -2681,10 +2679,14 @@ error_exit2:
with zeros from the call of os_file_set_size(), until a buffer pool
flush would write to it. */
+ buf2 = ut_malloc(3 * UNIV_PAGE_SIZE);
+ /* Align the memory for file i/o if we might have O_DIRECT set */
+ page = ut_align(buf2, UNIV_PAGE_SIZE);
+
memset(page, '\0', UNIV_PAGE_SIZE);
- fsp_header_init_fields(page, *space_id, flags);
- mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, *space_id);
+ fsp_header_init_fields(page, space_id, flags);
+ mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, space_id);
if (!(flags & DICT_TF_ZSSIZE_MASK)) {
buf_flush_init_for_writing(page, NULL, 0);
@@ -2715,6 +2717,7 @@ error_exit2:
" to tablespace ", stderr);
ut_print_filename(stderr, path);
putc('\n', stderr);
+ err = DB_ERROR;
goto error_exit;
}
@@ -2724,22 +2727,20 @@ error_exit2:
fputs("InnoDB: Error: file flush of tablespace ", stderr);
ut_print_filename(stderr, path);
fputs(" failed\n", stderr);
+ err = DB_ERROR;
goto error_exit;
}
os_file_close(file);
- if (*space_id == ULINT_UNDEFINED) {
- goto error_exit2;
- }
-
- success = fil_space_create(path, *space_id, flags, FIL_TABLESPACE);
+ success = fil_space_create(path, space_id, flags, FIL_TABLESPACE);
if (!success) {
+ err = DB_ERROR;
goto error_exit2;
}
- fil_node_create(path, size, *space_id, FALSE);
+ fil_node_create(path, size, space_id, FALSE);
#ifndef UNIV_HOTBACKUP
{
@@ -2750,7 +2751,7 @@ error_exit2:
fil_op_write_log(flags
? MLOG_FILE_CREATE2
: MLOG_FILE_CREATE,
- *space_id,
+ space_id,
is_temp ? MLOG_FILE_FLAG_TEMP : 0,
flags,
tablename, NULL, &mtr);
@@ -3541,39 +3542,6 @@ next_datadir_item:
return(err);
}
-/********************************************************************//**
-If we need crash recovery, and we have called
-fil_load_single_table_tablespaces() and dict_load_single_table_tablespaces(),
-we can call this function to print an error message of orphaned .ibd files
-for which there is not a data dictionary entry with a matching table name
-and space id. */
-UNIV_INTERN
-void
-fil_print_orphaned_tablespaces(void)
-/*================================*/
-{
- fil_space_t* space;
-
- mutex_enter(&fil_system->mutex);
-
- space = UT_LIST_GET_FIRST(fil_system->space_list);
-
- while (space) {
- if (space->purpose == FIL_TABLESPACE && space->id != 0
- && !space->mark) {
- fputs("InnoDB: Warning: tablespace ", stderr);
- ut_print_filename(stderr, space->name);
- fprintf(stderr, " of id %lu has no matching table in\n"
- "InnoDB: the InnoDB data dictionary.\n",
- (ulong) space->id);
- }
-
- space = UT_LIST_GET_NEXT(space_list, space);
- }
-
- mutex_exit(&fil_system->mutex);
-}
-
/*******************************************************************//**
Returns TRUE if a single-table tablespace does not exist in the memory cache,
or is being deleted there.
diff --git a/storage/innodb_plugin/fsp/fsp0fsp.c b/storage/innodb_plugin/fsp/fsp0fsp.c
index c7f1a299d8a..2bae8481d20 100644
--- a/storage/innodb_plugin/fsp/fsp0fsp.c
+++ b/storage/innodb_plugin/fsp/fsp0fsp.c
@@ -869,12 +869,10 @@ fsp_init_file_page_low(
return;
}
- UNIV_MEM_INVALID(page, UNIV_PAGE_SIZE);
+ memset(page, 0, UNIV_PAGE_SIZE);
mach_write_to_4(page + FIL_PAGE_OFFSET, buf_block_get_page_no(block));
- memset(page + FIL_PAGE_LSN, 0, 8);
mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID,
buf_block_get_space(block));
- memset(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM, 0, 8);
}
#ifndef UNIV_HOTBACKUP
diff --git a/storage/innodb_plugin/ha/ha0ha.c b/storage/innodb_plugin/ha/ha0ha.c
index 9d9d341ad39..f9e798012f8 100644
--- a/storage/innodb_plugin/ha/ha0ha.c
+++ b/storage/innodb_plugin/ha/ha0ha.c
@@ -31,9 +31,7 @@ Created 8/22/1994 Heikki Tuuri
#ifdef UNIV_DEBUG
# include "buf0buf.h"
#endif /* UNIV_DEBUG */
-#ifdef UNIV_SYNC_DEBUG
-# include "btr0sea.h"
-#endif /* UNIV_SYNC_DEBUG */
+#include "btr0sea.h"
#include "page0page.h"
/*************************************************************//**
@@ -127,7 +125,8 @@ ha_clear(
/*************************************************************//**
Inserts an entry into a hash table. If an entry with the same fold number
is found, its node is updated to point to the new data, and no new node
-is inserted.
+is inserted. If btr_search_enabled is set to FALSE, we will only allow
+updating existing nodes, but no new node is allowed to be added.
@return TRUE if succeed, FALSE if no more memory could be allocated */
UNIV_INTERN
ibool
@@ -174,6 +173,7 @@ ha_insert_for_fold_func(
prev_block->n_pointers--;
block->n_pointers++;
}
+ ut_ad(!btr_search_fully_disabled);
# endif /* !UNIV_HOTBACKUP */
prev_node->block = block;
@@ -186,6 +186,13 @@ ha_insert_for_fold_func(
prev_node = prev_node->next;
}
+ /* We are in the process of disabling hash index, do not add
+ new chain node */
+ if (!btr_search_enabled) {
+ ut_ad(!btr_search_fully_disabled);
+ return(TRUE);
+ }
+
/* We have to allocate a new chain node */
node = mem_heap_alloc(hash_get_heap(table, fold), sizeof(ha_node_t));
diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc
index 0fc6e786f4c..37ce69b9933 100644
--- a/storage/innodb_plugin/handler/ha_innodb.cc
+++ b/storage/innodb_plugin/handler/ha_innodb.cc
@@ -1004,6 +1004,29 @@ innobase_get_charset(
return(thd_charset((THD*) mysql_thd));
}
+/**********************************************************************//**
+Determines the current SQL statement.
+@return SQL statement string */
+extern "C" UNIV_INTERN
+const char*
+innobase_get_stmt(
+/*==============*/
+ void* mysql_thd, /*!< in: MySQL thread handle */
+ size_t* length) /*!< out: length of the SQL statement */
+{
+#if MYSQL_VERSION_ID >= 50142
+ LEX_STRING* stmt;
+
+ stmt = thd_query_string((THD*) mysql_thd);
+ *length = stmt->length;
+ return(stmt->str);
+#else
+ const char* stmt_str = thd_query((THD*) mysql_thd);
+ *length = strlen(stmt_str);
+ return(stmt_str);
+#endif
+}
+
#if defined (__WIN__) && defined (MYSQL_DYNAMIC_PLUGIN)
extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
/*******************************************************************//**
@@ -1314,7 +1337,6 @@ innobase_trx_allocate(
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
innobase_trx_init(thd, trx);
@@ -2248,6 +2270,7 @@ innobase_change_buffering_inited_ok:
/* Get the current high water mark format. */
innobase_file_format_check = (char*) trx_sys_file_format_max_get();
+ btr_search_fully_disabled = (!btr_search_enabled);
DBUG_RETURN(FALSE);
error:
DBUG_RETURN(TRUE);
@@ -2650,7 +2673,7 @@ innobase_rollback_to_savepoint(
/* TODO: use provided savepoint data area to store savepoint data */
- longlong2str((ulint)savepoint, name, 36);
+ longlong2str((ulint)savepoint, name, 36, 1);
error = (int) trx_rollback_to_savepoint_for_mysql(trx, name,
&mysql_binlog_cache_pos);
@@ -2681,7 +2704,7 @@ innobase_release_savepoint(
/* TODO: use provided savepoint data area to store savepoint data */
- longlong2str((ulint)savepoint, name, 36);
+ longlong2str((ulint)savepoint, name, 36, 1);
error = (int) trx_release_savepoint_for_mysql(trx, name);
@@ -2728,7 +2751,7 @@ innobase_savepoint(
/* TODO: use provided savepoint data area to store savepoint data */
char name[64];
- longlong2str((ulint)savepoint,name,36);
+ longlong2str((ulint)savepoint,name,36,1);
error = (int) trx_savepoint_for_mysql(trx, name, (ib_int64_t)0);
@@ -3928,6 +3951,11 @@ get_innobase_type_from_mysql_type(
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_LONG_BLOB:
return(DATA_BLOB);
+ case MYSQL_TYPE_NULL:
+ /* MySQL currently accepts "NULL" datatype, but will
+ reject such datatype in the next release. We will cope
+ with it and not trigger assertion failure in 5.1 */
+ break;
default:
ut_error;
}
@@ -5357,6 +5385,9 @@ ha_innobase::index_read(
prebuilt->index_usable = FALSE;
DBUG_RETURN(HA_ERR_CRASHED);
}
+ if (UNIV_UNLIKELY(!prebuilt->index_usable)) {
+ DBUG_RETURN(HA_ERR_TABLE_DEF_CHANGED);
+ }
/* Note that if the index for which the search template is built is not
necessarily prebuilt->index, but can also be the clustered index */
@@ -5547,7 +5578,8 @@ ha_innobase::change_active_index(
keynr);
/* The caller seems to ignore this. Thus, we must check
this again in row_search_for_mysql(). */
- DBUG_RETURN(2);
+ DBUG_RETURN(convert_error_code_to_mysql(DB_MISSING_HISTORY,
+ 0, NULL));
}
ut_a(prebuilt->search_tuple != 0);
@@ -5975,7 +6007,22 @@ create_table_def(
field = form->field[i];
col_type = get_innobase_type_from_mysql_type(&unsigned_type,
- field);
+ field);
+
+ if (!col_type) {
+ push_warning_printf(
+ (THD*) trx->mysql_thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_CANT_CREATE_TABLE,
+ "Error creating table '%s' with "
+ "column '%s'. Please check its "
+ "column type and try to re-create "
+ "the table with an appropriate "
+ "column type.",
+ table->name, (char*) field->field_name);
+ goto err_col;
+ }
+
if (field->null_ptr) {
nulls_allowed = 0;
} else {
@@ -6033,7 +6080,7 @@ create_table_def(
if (dict_col_name_is_reserved(field->field_name)){
my_error(ER_WRONG_COLUMN_NAME, MYF(0),
field->field_name);
-
+err_col:
dict_mem_table_free(table);
trx_commit_for_mysql(trx);
@@ -6433,6 +6480,9 @@ ha_innobase::create(
/* Cache the value of innodb_file_format, in case it is
modified by another thread while the table is being created. */
const ulint file_format = srv_file_format;
+ const char* stmt;
+ size_t stmt_len;
+ enum row_type row_type;
DBUG_ENTER("ha_innobase::create");
@@ -6553,94 +6603,94 @@ ha_innobase::create(
}
}
- if (create_info->used_fields & HA_CREATE_USED_ROW_FORMAT) {
- if (flags) {
- /* KEY_BLOCK_SIZE was specified. */
- if (form->s->row_type != ROW_TYPE_COMPRESSED) {
- /* ROW_FORMAT other than COMPRESSED
- ignores KEY_BLOCK_SIZE. It does not
- make sense to reject conflicting
- KEY_BLOCK_SIZE and ROW_FORMAT, because
- such combinations can be obtained
- with ALTER TABLE anyway. */
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ignoring KEY_BLOCK_SIZE=%lu"
- " unless ROW_FORMAT=COMPRESSED.",
- create_info->key_block_size);
- flags = 0;
- }
- } else {
- /* No KEY_BLOCK_SIZE */
- if (form->s->row_type == ROW_TYPE_COMPRESSED) {
- /* ROW_FORMAT=COMPRESSED without
- KEY_BLOCK_SIZE implies half the
- maximum KEY_BLOCK_SIZE. */
- flags = (DICT_TF_ZSSIZE_MAX - 1)
- << DICT_TF_ZSSIZE_SHIFT
- | DICT_TF_COMPACT
- | DICT_TF_FORMAT_ZIP
- << DICT_TF_FORMAT_SHIFT;
+ row_type = form->s->row_type;
+
+ if (flags) {
+ /* KEY_BLOCK_SIZE was specified. */
+ if (!(create_info->used_fields & HA_CREATE_USED_ROW_FORMAT)) {
+ /* ROW_FORMAT was not specified;
+ default to ROW_FORMAT=COMPRESSED */
+ row_type = ROW_TYPE_COMPRESSED;
+ } else if (row_type != ROW_TYPE_COMPRESSED) {
+ /* ROW_FORMAT other than COMPRESSED
+ ignores KEY_BLOCK_SIZE. It does not
+ make sense to reject conflicting
+ KEY_BLOCK_SIZE and ROW_FORMAT, because
+ such combinations can be obtained
+ with ALTER TABLE anyway. */
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ignoring KEY_BLOCK_SIZE=%lu"
+ " unless ROW_FORMAT=COMPRESSED.",
+ create_info->key_block_size);
+ flags = 0;
+ }
+ } else {
+ /* No KEY_BLOCK_SIZE */
+ if (row_type == ROW_TYPE_COMPRESSED) {
+ /* ROW_FORMAT=COMPRESSED without
+ KEY_BLOCK_SIZE implies half the
+ maximum KEY_BLOCK_SIZE. */
+ flags = (DICT_TF_ZSSIZE_MAX - 1)
+ << DICT_TF_ZSSIZE_SHIFT
+ | DICT_TF_COMPACT
+ | DICT_TF_FORMAT_ZIP
+ << DICT_TF_FORMAT_SHIFT;
#if DICT_TF_ZSSIZE_MAX < 1
# error "DICT_TF_ZSSIZE_MAX < 1"
#endif
- }
}
+ }
- switch (form->s->row_type) {
- const char* row_format_name;
- case ROW_TYPE_REDUNDANT:
- break;
- case ROW_TYPE_COMPRESSED:
- case ROW_TYPE_DYNAMIC:
- row_format_name
- = form->s->row_type == ROW_TYPE_COMPRESSED
- ? "COMPRESSED"
- : "DYNAMIC";
-
- if (!srv_file_per_table) {
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ROW_FORMAT=%s"
- " requires innodb_file_per_table.",
- row_format_name);
- } else if (file_format < DICT_TF_FORMAT_ZIP) {
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ROW_FORMAT=%s"
- " requires innodb_file_format >"
- " Antelope.",
- row_format_name);
- } else {
- flags |= DICT_TF_COMPACT
- | (DICT_TF_FORMAT_ZIP
- << DICT_TF_FORMAT_SHIFT);
- break;
- }
+ switch (row_type) {
+ const char* row_format_name;
+ case ROW_TYPE_REDUNDANT:
+ break;
+ case ROW_TYPE_COMPRESSED:
+ case ROW_TYPE_DYNAMIC:
+ row_format_name
+ = row_type == ROW_TYPE_COMPRESSED
+ ? "COMPRESSED"
+ : "DYNAMIC";
- /* fall through */
- case ROW_TYPE_NOT_USED:
- case ROW_TYPE_FIXED:
- default:
- push_warning(thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: assuming ROW_FORMAT=COMPACT.");
- case ROW_TYPE_DEFAULT:
- case ROW_TYPE_COMPACT:
- flags = DICT_TF_COMPACT;
+ if (!srv_file_per_table) {
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ROW_FORMAT=%s"
+ " requires innodb_file_per_table.",
+ row_format_name);
+ } else if (file_format < DICT_TF_FORMAT_ZIP) {
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ROW_FORMAT=%s"
+ " requires innodb_file_format >"
+ " Antelope.",
+ row_format_name);
+ } else {
+ flags |= DICT_TF_COMPACT
+ | (DICT_TF_FORMAT_ZIP
+ << DICT_TF_FORMAT_SHIFT);
break;
}
- } else if (!flags) {
- /* No KEY_BLOCK_SIZE or ROW_FORMAT specified:
- use ROW_FORMAT=COMPACT by default. */
+
+ /* fall through */
+ case ROW_TYPE_NOT_USED:
+ case ROW_TYPE_FIXED:
+ default:
+ push_warning(thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: assuming ROW_FORMAT=COMPACT.");
+ case ROW_TYPE_DEFAULT:
+ case ROW_TYPE_COMPACT:
flags = DICT_TF_COMPACT;
+ break;
}
/* Look for a primary key */
@@ -6649,7 +6699,7 @@ ha_innobase::create(
(int) form->s->primary_key :
-1);
- /* Our function row_get_mysql_key_number_for_index assumes
+ /* Our function innobase_get_mysql_key_number_for_index assumes
the primary key is always number 0, if it exists */
ut_a(primary_key_no == -1 || primary_key_no == 0);
@@ -6709,9 +6759,11 @@ ha_innobase::create(
}
}
- if (*trx->mysql_query_str) {
- error = row_table_add_foreign_constraints(trx,
- *trx->mysql_query_str, norm_name,
+ stmt = innobase_get_stmt(thd, &stmt_len);
+
+ if (stmt) {
+ error = row_table_add_foreign_constraints(
+ trx, stmt, stmt_len, norm_name,
create_info->options & HA_LEX_CREATE_TMP_TABLE);
error = convert_error_code_to_mysql(error, flags, NULL);
@@ -6996,7 +7048,6 @@ innobase_drop_database(
/* In the Windows plugin, thd = current_thd is always NULL */
trx = trx_allocate_for_mysql();
trx->mysql_thd = NULL;
- trx->mysql_query_str = NULL;
#else
trx = innobase_trx_allocate(thd);
#endif
@@ -7196,6 +7247,10 @@ ha_innobase::records_in_range(
n_rows = HA_POS_ERROR;
goto func_exit;
}
+ if (UNIV_UNLIKELY(!row_merge_is_index_usable(prebuilt->trx, index))) {
+ n_rows = HA_ERR_TABLE_DEF_CHANGED;
+ goto func_exit;
+ }
heap = mem_heap_create(2 * (key->key_parts * sizeof(dfield_t)
+ sizeof(dtuple_t)));
@@ -7365,6 +7420,86 @@ ha_innobase::read_time(
}
/*********************************************************************//**
+Calculates the key number used inside MySQL for an Innobase index. We will
+first check the "index translation table" for a match of the index to get
+the index number. If there does not exist an "index translation table",
+or not able to find the index in the translation table, then we will fall back
+to the traditional way of looping through dict_index_t list to find a
+match. In this case, we have to take into account if we generated a
+default clustered index for the table
+@return the key number used inside MySQL */
+static
+unsigned int
+innobase_get_mysql_key_number_for_index(
+/*====================================*/
+ INNOBASE_SHARE* share, /*!< in: share structure for index
+ translation table. */
+ const TABLE* table, /*!< in: table in MySQL data
+ dictionary */
+ dict_table_t* ib_table,/*!< in: table in Innodb data
+ dictionary */
+ const dict_index_t* index) /*!< in: index */
+{
+ const dict_index_t* ind;
+ unsigned int i;
+
+ ut_ad(index);
+ ut_ad(ib_table);
+ ut_ad(table);
+ ut_ad(share);
+
+ /* If index does not belong to the table of share structure. Search
+ index->table instead */
+ if (index->table != ib_table) {
+ i = 0;
+ ind = dict_table_get_first_index(index->table);
+
+ while (index != ind) {
+ ind = dict_table_get_next_index(ind);
+ i++;
+ }
+
+ if (row_table_got_default_clust_index(index->table)) {
+ ut_a(i > 0);
+ i--;
+ }
+
+ return(i);
+ }
+
+ /* If index translation table exists, we will first check
+ the index through index translation table for a match. */
+ if (share->idx_trans_tbl.index_mapping) {
+ for (i = 0; i < share->idx_trans_tbl.index_count; i++) {
+ if (share->idx_trans_tbl.index_mapping[i] == index) {
+ return(i);
+ }
+ }
+
+ /* Print an error message if we cannot find the index
+ ** in the "index translation table". */
+ sql_print_error("Cannot find index %s in InnoDB index "
+ "translation table.", index->name);
+ }
+
+ /* If we do not have an "index translation table", or not able
+ to find the index in the translation table, we'll directly find
+ matching index in the dict_index_t list */
+ for (i = 0; i < table->s->keys; i++) {
+ ind = dict_table_get_index_on_name(
+ ib_table, table->key_info[i].name);
+
+ if (index == ind) {
+ return(i);
+ }
+ }
+
+ sql_print_error("Cannot find matching index number for index %s "
+ "in InnoDB index list.", index->name);
+
+ return(0);
+}
+/*********************************************************************//**
Returns statistics information of the table to the MySQL interpreter,
in various fields of the handle object. */
UNIV_INTERN
@@ -7633,8 +7768,8 @@ ha_innobase::info(
err_index = trx_get_error_info(prebuilt->trx);
if (err_index) {
- errkey = (unsigned int)
- row_get_mysql_key_number_for_index(err_index);
+ errkey = innobase_get_mysql_key_number_for_index(
+ share, table, ib_table, err_index);
} else {
errkey = (unsigned int) prebuilt->trx->error_key_num;
}
@@ -10346,7 +10481,35 @@ innodb_old_blocks_pct_update(
}
/*************************************************************//**
-Check if it is a valid value of innodb_change_buffering. This function is
+Find the corresponding ibuf_use_t value that indexes into
+innobase_change_buffering_values[] array for the input
+change buffering option name.
+@return corresponding IBUF_USE_* value for the input variable
+name, or IBUF_USE_COUNT if not able to find a match */
+static
+ibuf_use_t
+innodb_find_change_buffering_value(
+/*===============================*/
+ const char* input_name) /*!< in: input change buffering
+ option name */
+{
+ ulint use;
+
+ for (use = 0; use < UT_ARR_SIZE(innobase_change_buffering_values);
+ use++) {
+ /* found a match */
+ if (!innobase_strcasecmp(
+ input_name, innobase_change_buffering_values[use])) {
+ return((ibuf_use_t)use);
+ }
+ }
+
+ /* Did not find any match */
+ return(IBUF_USE_COUNT);
+}
+
+/*************************************************************//**
+Check if it is a valid value of innodb_change_buffering. This function is
registered as a callback with MySQL.
@return 0 for valid innodb_change_buffering */
static
@@ -10370,19 +10533,22 @@ innodb_change_buffering_validate(
change_buffering_input = value->val_str(value, buff, &len);
if (change_buffering_input != NULL) {
- ulint use;
+ ibuf_use_t use;
- for (use = 0; use < UT_ARR_SIZE(innobase_change_buffering_values);
- use++) {
- if (!innobase_strcasecmp(
- change_buffering_input,
- innobase_change_buffering_values[use])) {
- *(ibuf_use_t*) save = (ibuf_use_t) use;
- return(0);
- }
+ use = innodb_find_change_buffering_value(
+ change_buffering_input);
+
+ if (use != IBUF_USE_COUNT) {
+ /* Find a matching change_buffering option value. */
+ *static_cast<const char**>(save) =
+ innobase_change_buffering_values[use];
+
+ return(0);
}
}
+ /* No corresponding change buffering option for user supplied
+ "change_buffering_input" */
return(1);
}
@@ -10393,21 +10559,27 @@ static
void
innodb_change_buffering_update(
/*===========================*/
- THD* thd, /*!< in: thread handle */
- struct st_mysql_sys_var* var, /*!< in: pointer to
- system variable */
- void* var_ptr, /*!< out: where the
- formal string goes */
- const void* save) /*!< in: immediate result
- from check function */
+ THD* thd, /*!< in: thread handle */
+ struct st_mysql_sys_var* var, /*!< in: pointer to
+ system variable */
+ void* var_ptr,/*!< out: where the
+ formal string goes */
+ const void* save) /*!< in: immediate result
+ from check function */
{
+ ibuf_use_t use;
+
ut_a(var_ptr != NULL);
ut_a(save != NULL);
- ut_a((*(ibuf_use_t*) save) < IBUF_USE_COUNT);
- ibuf_use = *(const ibuf_use_t*) save;
+ use = innodb_find_change_buffering_value(
+ *static_cast<const char*const*>(save));
+
+ ut_a(use < IBUF_USE_COUNT);
- *(const char**) var_ptr = innobase_change_buffering_values[ibuf_use];
+ ibuf_use = use;
+ *static_cast<const char**>(var_ptr) =
+ *static_cast<const char*const*>(save);
}
static int show_innodb_vars(THD *thd, SHOW_VAR *var, char *buff)
@@ -10735,7 +10907,7 @@ static MYSQL_SYSVAR_STR(change_buffering, innobase_change_buffering,
"Buffer changes to reduce random access: "
"OFF, ON, none, inserts.",
innodb_change_buffering_validate,
- innodb_change_buffering_update, NULL);
+ innodb_change_buffering_update, "inserts");
static MYSQL_SYSVAR_ULONG(read_ahead_threshold, srv_read_ahead_threshold,
PLUGIN_VAR_RQCMDARG,
diff --git a/storage/innodb_plugin/handler/ha_innodb.h b/storage/innodb_plugin/handler/ha_innodb.h
index 8a3e1ccff82..9789e4ba639 100644
--- a/storage/innodb_plugin/handler/ha_innodb.h
+++ b/storage/innodb_plugin/handler/ha_innodb.h
@@ -231,7 +231,11 @@ the definitions are bracketed with #ifdef INNODB_COMPATIBILITY_HOOKS */
extern "C" {
struct charset_info_st *thd_charset(MYSQL_THD thd);
+#if MYSQL_VERSION_ID >= 50142
+LEX_STRING *thd_query_string(MYSQL_THD thd);
+#else
char **thd_query(MYSQL_THD thd);
+#endif
/** Get the file name of the MySQL binlog.
* @return the name of the binlog file
diff --git a/storage/innodb_plugin/handler/handler0alter.cc b/storage/innodb_plugin/handler/handler0alter.cc
index e474c318c58..e936bfafa0e 100644
--- a/storage/innodb_plugin/handler/handler0alter.cc
+++ b/storage/innodb_plugin/handler/handler0alter.cc
@@ -894,6 +894,8 @@ error:
prebuilt->trx->error_info = NULL;
/* fall through */
default:
+ trx->error_state = DB_SUCCESS;
+
if (new_primary) {
if (indexed_table != innodb_table) {
row_merge_drop_table(trx, indexed_table);
diff --git a/storage/innodb_plugin/include/btr0cur.h b/storage/innodb_plugin/include/btr0cur.h
index 716f15c4267..7dc2eb63cf5 100644
--- a/storage/innodb_plugin/include/btr0cur.h
+++ b/storage/innodb_plugin/include/btr0cur.h
@@ -570,7 +570,7 @@ btr_copy_externally_stored_field_prefix(
ulint local_len);/*!< in: length of data, in bytes */
/*******************************************************************//**
Copies an externally stored field of a record to mem heap.
-@return the field copied to heap */
+@return the field copied to heap, or NULL if the field is incomplete */
UNIV_INTERN
byte*
btr_rec_copy_externally_stored_field(
diff --git a/storage/innodb_plugin/include/btr0sea.h b/storage/innodb_plugin/include/btr0sea.h
index f98ba386f9c..20a2be7f877 100644
--- a/storage/innodb_plugin/include/btr0sea.h
+++ b/storage/innodb_plugin/include/btr0sea.h
@@ -190,7 +190,13 @@ btr_search_validate(void);
/** Flag: has the search system been enabled?
Protected by btr_search_latch and btr_search_enabled_mutex. */
-extern char btr_search_enabled;
+extern char btr_search_enabled;
+
+/** Flag: whether the search system has completed its disabling process,
+It is set to TRUE right after buf_pool_drop_hash_index() in
+btr_search_disable(), indicating hash index entries are cleaned up.
+Protected by btr_search_latch and btr_search_enabled_mutex. */
+extern ibool btr_search_fully_disabled;
/** The search info struct in an index */
struct btr_search_struct{
diff --git a/storage/innodb_plugin/include/buf0buf.ic b/storage/innodb_plugin/include/buf0buf.ic
index 378c3590181..23db684806c 100644
--- a/storage/innodb_plugin/include/buf0buf.ic
+++ b/storage/innodb_plugin/include/buf0buf.ic
@@ -931,7 +931,12 @@ buf_page_hash_get(
ut_a(buf_page_in_file(bpage));
ut_ad(bpage->in_page_hash);
ut_ad(!bpage->in_zip_hash);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
+#endif
}
return(bpage);
diff --git a/storage/innodb_plugin/include/buf0lru.h b/storage/innodb_plugin/include/buf0lru.h
index 009430af35b..5a9cfd059f3 100644
--- a/storage/innodb_plugin/include/buf0lru.h
+++ b/storage/innodb_plugin/include/buf0lru.h
@@ -96,7 +96,7 @@ buf_LRU_insert_zip_clean(
Try to free a block. If bpage is a descriptor of a compressed-only
page, the descriptor object will be freed as well.
-NOTE: If this function returns BUF_LRU_FREED, it will not temporarily
+NOTE: If this function returns BUF_LRU_FREED, it will temporarily
release buf_pool_mutex. Furthermore, the page frame will no longer be
accessible via bpage.
diff --git a/storage/innodb_plugin/include/db0err.h b/storage/innodb_plugin/include/db0err.h
index 747e9b5364e..c841c2b4afe 100644
--- a/storage/innodb_plugin/include/db0err.h
+++ b/storage/innodb_plugin/include/db0err.h
@@ -28,6 +28,8 @@ Created 5/24/1996 Heikki Tuuri
enum db_err {
+ DB_SUCCESS_LOCKED_REC = 9, /*!< like DB_SUCCESS, but a new
+ explicit record lock was created */
DB_SUCCESS = 10,
/* The following are error codes */
diff --git a/storage/innodb_plugin/include/dict0boot.h b/storage/innodb_plugin/include/dict0boot.h
index 1a13bd1503a..148b5cbe250 100644
--- a/storage/innodb_plugin/include/dict0boot.h
+++ b/storage/innodb_plugin/include/dict0boot.h
@@ -46,13 +46,14 @@ dict_hdr_get(
/*=========*/
mtr_t* mtr); /*!< in: mtr */
/**********************************************************************//**
-Returns a new row, table, index, or tree id.
-@return the new id */
+Returns a new table, index, or space id. */
UNIV_INTERN
-dulint
+void
dict_hdr_get_new_id(
/*================*/
- ulint type); /*!< in: DICT_HDR_ROW_ID, ... */
+ dulint* table_id, /*!< out: table id (not assigned if NULL) */
+ dulint* index_id, /*!< out: index id (not assigned if NULL) */
+ ulint* space_id); /*!< out: space id (not assigned if NULL) */
/**********************************************************************//**
Returns a new row id.
@return the new id */
@@ -119,7 +120,8 @@ dict_create(void);
#define DICT_HDR_ROW_ID 0 /* The latest assigned row id */
#define DICT_HDR_TABLE_ID 8 /* The latest assigned table id */
#define DICT_HDR_INDEX_ID 16 /* The latest assigned index id */
-#define DICT_HDR_MIX_ID 24 /* Obsolete, always 0. */
+#define DICT_HDR_MAX_SPACE_ID 24 /* The latest assigned space id, or 0*/
+#define DICT_HDR_MIX_ID_LOW 28 /* Obsolete,always DICT_HDR_FIRST_ID */
#define DICT_HDR_TABLES 32 /* Root of the table index tree */
#define DICT_HDR_TABLE_IDS 36 /* Root of the table index tree */
#define DICT_HDR_COLUMNS 40 /* Root of the column index tree */
diff --git a/storage/innodb_plugin/include/dict0dict.h b/storage/innodb_plugin/include/dict0dict.h
index 79dcbb30de2..3a1bee4cd89 100644
--- a/storage/innodb_plugin/include/dict0dict.h
+++ b/storage/innodb_plugin/include/dict0dict.h
@@ -352,6 +352,7 @@ dict_create_foreign_constraints(
name before it: test.table2; the
default database id the database of
parameter name */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
diff --git a/storage/innodb_plugin/include/dict0mem.h b/storage/innodb_plugin/include/dict0mem.h
index 9996fb59a75..2fce1e00927 100644
--- a/storage/innodb_plugin/include/dict0mem.h
+++ b/storage/innodb_plugin/include/dict0mem.h
@@ -382,7 +382,7 @@ initialized to 0, NULL or FALSE in dict_mem_table_create(). */
struct dict_table_struct{
dulint id; /*!< id of the table */
mem_heap_t* heap; /*!< memory heap */
- const char* name; /*!< table name */
+ char* name; /*!< table name */
const char* dir_path_of_temp_table;/*!< NULL or the directory path
where a TEMPORARY table that was explicitly
created by a user should be placed if
diff --git a/storage/innodb_plugin/include/fil0fil.h b/storage/innodb_plugin/include/fil0fil.h
index de8ef9e9687..c894875b352 100644
--- a/storage/innodb_plugin/include/fil0fil.h
+++ b/storage/innodb_plugin/include/fil0fil.h
@@ -225,6 +225,16 @@ fil_space_create(
0 for uncompressed tablespaces */
ulint purpose);/*!< in: FIL_TABLESPACE, or FIL_LOG if log */
/*******************************************************************//**
+Assigns a new space id for a new single-table tablespace. This works simply by
+incrementing the global counter. If 4 billion id's is not enough, we may need
+to recycle id's.
+@return TRUE if assigned, FALSE if not */
+UNIV_INTERN
+ibool
+fil_assign_new_space_id(
+/*====================*/
+ ulint* space_id); /*!< in/out: space id */
+/*******************************************************************//**
Returns the size of the space in pages. The tablespace must be cached in the
memory cache.
@return space size, 0 if space not found */
@@ -427,9 +437,7 @@ UNIV_INTERN
ulint
fil_create_new_single_table_tablespace(
/*===================================*/
- ulint* space_id, /*!< in/out: space id; if this is != 0,
- then this is an input parameter,
- otherwise output */
+ ulint space_id, /*!< in: space id */
const char* tablename, /*!< in: the table name in the usual
databasename/tablename format
of InnoDB, or a dir path to a temp
@@ -498,16 +506,6 @@ UNIV_INTERN
ulint
fil_load_single_table_tablespaces(void);
/*===================================*/
-/********************************************************************//**
-If we need crash recovery, and we have called
-fil_load_single_table_tablespaces() and dict_load_single_table_tablespaces(),
-we can call this function to print an error message of orphaned .ibd files
-for which there is not a data dictionary entry with a matching table name
-and space id. */
-UNIV_INTERN
-void
-fil_print_orphaned_tablespaces(void);
-/*================================*/
/*******************************************************************//**
Returns TRUE if a single-table tablespace does not exist in the memory cache,
or is being deleted there.
diff --git a/storage/innodb_plugin/include/ha_prototypes.h b/storage/innodb_plugin/include/ha_prototypes.h
index b737a00b3dc..e897a233a6a 100644
--- a/storage/innodb_plugin/include/ha_prototypes.h
+++ b/storage/innodb_plugin/include/ha_prototypes.h
@@ -215,11 +215,21 @@ innobase_casedn_str(
/**********************************************************************//**
Determines the connection character set.
@return connection character set */
+UNIV_INTERN
struct charset_info_st*
innobase_get_charset(
/*=================*/
void* mysql_thd); /*!< in: MySQL thread handle */
-
+/**********************************************************************//**
+Determines the current SQL statement.
+@return SQL statement string */
+UNIV_INTERN
+const char*
+innobase_get_stmt(
+/*==============*/
+ void* mysql_thd, /*!< in: MySQL thread handle */
+ size_t* length) /*!< out: length of the SQL statement */
+ __attribute__((nonnull));
/******************************************************************//**
This function is used to find the storage length in bytes of the first n
characters for prefix indexes using a multibyte character set. The function
diff --git a/storage/innodb_plugin/include/lock0lock.h b/storage/innodb_plugin/include/lock0lock.h
index 7d76cbe3c75..b3e1e5c4537 100644
--- a/storage/innodb_plugin/include/lock0lock.h
+++ b/storage/innodb_plugin/include/lock0lock.h
@@ -340,11 +340,12 @@ lock_sec_rec_modify_check_and_lock(
que_thr_t* thr, /*!< in: query thread */
mtr_t* mtr); /*!< in/out: mini-transaction */
/*********************************************************************//**
-Like the counterpart for a clustered index below, but now we read a
+Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_sec_rec_read_check_and_lock(
/*=============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -371,9 +372,10 @@ if the query thread should anyway be suspended for some reason; if not, then
puts the transaction and the query thread to the lock wait state and inserts a
waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_clust_rec_read_check_and_lock(
/*===============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
diff --git a/storage/innodb_plugin/include/log0log.ic b/storage/innodb_plugin/include/log0log.ic
index 139f4041a36..1ce00fd7313 100644
--- a/storage/innodb_plugin/include/log0log.ic
+++ b/storage/innodb_plugin/include/log0log.ic
@@ -433,7 +433,10 @@ void
log_free_check(void)
/*================*/
{
- /* ut_ad(sync_thread_levels_empty()); */
+
+#ifdef UNIV_SYNC_DEBUG
+ ut_ad(sync_thread_levels_empty_gen(TRUE));
+#endif /* UNIV_SYNC_DEBUG */
if (log_sys->check_flush_or_checkpoint) {
diff --git a/storage/innodb_plugin/include/mach0data.ic b/storage/innodb_plugin/include/mach0data.ic
index ef20356bd31..96d2417ac81 100644
--- a/storage/innodb_plugin/include/mach0data.ic
+++ b/storage/innodb_plugin/include/mach0data.ic
@@ -36,7 +36,7 @@ mach_write_to_1(
ulint n) /*!< in: ulint integer to be stored, >= 0, < 256 */
{
ut_ad(b);
- ut_ad(n <= 0xFFUL);
+ ut_ad((n | 0xFFUL) <= 0xFFUL);
b[0] = (byte)n;
}
@@ -65,7 +65,7 @@ mach_write_to_2(
ulint n) /*!< in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFUL);
+ ut_ad((n | 0xFFFFUL) <= 0xFFFFUL);
b[0] = (byte)(n >> 8);
b[1] = (byte)(n);
@@ -81,10 +81,7 @@ mach_read_from_2(
/*=============*/
const byte* b) /*!< in: pointer to 2 bytes */
{
- ut_ad(b);
- return( ((ulint)(b[0]) << 8)
- + (ulint)(b[1])
- );
+ return(((ulint)(b[0]) << 8) | (ulint)(b[1]));
}
/********************************************************//**
@@ -129,7 +126,7 @@ mach_write_to_3(
ulint n) /*!< in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFFFUL);
+ ut_ad((n | 0xFFFFFFUL) <= 0xFFFFFFUL);
b[0] = (byte)(n >> 16);
b[1] = (byte)(n >> 8);
@@ -148,8 +145,8 @@ mach_read_from_3(
{
ut_ad(b);
return( ((ulint)(b[0]) << 16)
- + ((ulint)(b[1]) << 8)
- + (ulint)(b[2])
+ | ((ulint)(b[1]) << 8)
+ | (ulint)(b[2])
);
}
@@ -183,9 +180,9 @@ mach_read_from_4(
{
ut_ad(b);
return( ((ulint)(b[0]) << 24)
- + ((ulint)(b[1]) << 16)
- + ((ulint)(b[2]) << 8)
- + (ulint)(b[3])
+ | ((ulint)(b[1]) << 16)
+ | ((ulint)(b[2]) << 8)
+ | (ulint)(b[3])
);
}
@@ -721,7 +718,7 @@ mach_read_from_2_little_endian(
/*===========================*/
const byte* buf) /*!< in: from where to read */
{
- return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256);
+ return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8));
}
/*********************************************************//**
diff --git a/storage/innodb_plugin/include/mem0pool.h b/storage/innodb_plugin/include/mem0pool.h
index 5e93bf88a47..fa8be296ec9 100644
--- a/storage/innodb_plugin/include/mem0pool.h
+++ b/storage/innodb_plugin/include/mem0pool.h
@@ -100,18 +100,6 @@ mem_pool_get_reserved(
/*==================*/
mem_pool_t* pool); /*!< in: memory pool */
/********************************************************************//**
-Reserves the mem pool mutex. */
-UNIV_INTERN
-void
-mem_pool_mutex_enter(void);
-/*======================*/
-/********************************************************************//**
-Releases the mem pool mutex. */
-UNIV_INTERN
-void
-mem_pool_mutex_exit(void);
-/*=====================*/
-/********************************************************************//**
Validates a memory pool.
@return TRUE if ok */
UNIV_INTERN
diff --git a/storage/innodb_plugin/include/rem0cmp.h b/storage/innodb_plugin/include/rem0cmp.h
index 072f74267ea..2f751a38864 100644
--- a/storage/innodb_plugin/include/rem0cmp.h
+++ b/storage/innodb_plugin/include/rem0cmp.h
@@ -148,7 +148,9 @@ cmp_rec_rec_simple(
const rec_t* rec2, /*!< in: physical record */
const ulint* offsets1,/*!< in: rec_get_offsets(rec1, ...) */
const ulint* offsets2,/*!< in: rec_get_offsets(rec2, ...) */
- const dict_index_t* index); /*!< in: data dictionary index */
+ const dict_index_t* index, /*!< in: data dictionary index */
+ ibool* null_eq);/*!< out: set to TRUE if
+ found matching null values */
/*************************************************************//**
This function is used to compare two physical records. Only the common
first fields are compared, and if an externally stored field is
diff --git a/storage/innodb_plugin/include/row0mysql.h b/storage/innodb_plugin/include/row0mysql.h
index d2a8734c61f..b69e657361b 100644
--- a/storage/innodb_plugin/include/row0mysql.h
+++ b/storage/innodb_plugin/include/row0mysql.h
@@ -253,15 +253,6 @@ row_table_got_default_clust_index(
/*==============================*/
const dict_table_t* table); /*!< in: table */
/*********************************************************************//**
-Calculates the key number used inside MySQL for an Innobase index. We have
-to take into account if we generated a default clustered index for the table
-@return the key number used inside MySQL */
-UNIV_INTERN
-ulint
-row_get_mysql_key_number_for_index(
-/*===============================*/
- const dict_index_t* index); /*!< in: index */
-/*********************************************************************//**
Does an update or delete of a row for MySQL.
@return error code or DB_SUCCESS */
UNIV_INTERN
@@ -273,27 +264,26 @@ row_update_for_mysql(
row_prebuilt_t* prebuilt); /*!< in: prebuilt struct in MySQL
handle */
/*********************************************************************//**
-This can only be used when srv_locks_unsafe_for_binlog is TRUE or
-session is using a READ COMMITTED isolation level. Before
-calling this function we must use trx_reset_new_rec_lock_info() and
-trx_register_new_rec_lock() to store the information which new record locks
-really were set. This function removes a newly set lock under prebuilt->pcur,
-and also under prebuilt->clust_pcur. Currently, this is only used and tested
-in the case of an UPDATE or a DELETE statement, where the row lock is of the
-LOCK_X type.
-Thus, this implements a 'mini-rollback' that releases the latest record
-locks we set.
-@return error code or DB_SUCCESS */
+This can only be used when srv_locks_unsafe_for_binlog is TRUE or this
+session is using a READ COMMITTED or READ UNCOMMITTED isolation level.
+Before calling this function row_search_for_mysql() must have
+initialized prebuilt->new_rec_locks to store the information which new
+record locks really were set. This function removes a newly set
+clustered index record lock under prebuilt->pcur or
+prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that
+releases the latest clustered index record lock we set.
+@return error code or DB_SUCCESS */
UNIV_INTERN
int
row_unlock_for_mysql(
/*=================*/
- row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL
+ row_prebuilt_t* prebuilt, /*!< in/out: prebuilt struct in MySQL
handle */
- ibool has_latches_on_recs);/*!< TRUE if called so that we have
- the latches on the records under pcur
- and clust_pcur, and we do not need to
- reposition the cursors. */
+ ibool has_latches_on_recs);/*!< in: TRUE if called
+ so that we have the latches on
+ the records under pcur and
+ clust_pcur, and we do not need
+ to reposition the cursors. */
/*********************************************************************//**
Creates an query graph node of 'update' type to be used in the MySQL
interface.
@@ -403,6 +393,7 @@ row_table_add_foreign_constraints(
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the
database name before it: test.table2 */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -631,7 +622,11 @@ struct row_prebuilt_struct {
the secondary index, then this is
set to TRUE */
unsigned templ_contains_blob:1;/*!< TRUE if the template contains
- BLOB column(s) */
+ a column with DATA_BLOB ==
+ get_innobase_type_from_mysql_type();
+ not to be confused with InnoDB
+ externally stored columns
+ (VARCHAR can be off-page too) */
mysql_row_templ_t* mysql_template;/*!< template used to transform
rows fast between MySQL and Innobase
formats; memory for this template
@@ -710,18 +705,17 @@ struct row_prebuilt_struct {
ulint new_rec_locks; /*!< normally 0; if
srv_locks_unsafe_for_binlog is
TRUE or session is using READ
- COMMITTED isolation level, in a
- cursor search, if we set a new
- record lock on an index, this is
- incremented; this is used in
- releasing the locks under the
- cursors if we are performing an
- UPDATE and we determine after
- retrieving the row that it does
- not need to be locked; thus,
- these can be used to implement a
- 'mini-rollback' that releases
- the latest record locks */
+ COMMITTED or READ UNCOMMITTED
+ isolation level, set in
+ row_search_for_mysql() if we set a new
+ record lock on the secondary
+ or clustered index; this is
+ used in row_unlock_for_mysql()
+ when releasing the lock under
+ the cursor if we determine
+ after retrieving the row that
+ it does not need to be locked
+ ('mini-rollback') */
ulint mysql_prefix_len;/*!< byte offset of the end of
the last requested column */
ulint mysql_row_len; /*!< length in bytes of a row in the
diff --git a/storage/innodb_plugin/include/sync0rw.h b/storage/innodb_plugin/include/sync0rw.h
index 6f7e13220c1..175f3deb77c 100644
--- a/storage/innodb_plugin/include/sync0rw.h
+++ b/storage/innodb_plugin/include/sync0rw.h
@@ -555,11 +555,12 @@ struct rw_lock_struct {
unsigned cline:14; /*!< Line where created */
unsigned last_s_line:14; /*!< Line number where last time s-locked */
unsigned last_x_line:14; /*!< Line number where last time x-locked */
+#ifdef UNIV_DEBUG
ulint magic_n; /*!< RW_LOCK_MAGIC_N */
-};
-
/** Value of rw_lock_struct::magic_n */
#define RW_LOCK_MAGIC_N 22643
+#endif /* UNIV_DEBUG */
+};
#ifdef UNIV_SYNC_DEBUG
/** The structure for storing debug info of an rw-lock */
diff --git a/storage/innodb_plugin/include/sync0sync.h b/storage/innodb_plugin/include/sync0sync.h
index d470b823fc3..71c9920a10b 100644
--- a/storage/innodb_plugin/include/sync0sync.h
+++ b/storage/innodb_plugin/include/sync0sync.h
@@ -438,7 +438,7 @@ or row lock! */
#define SYNC_FILE_FORMAT_TAG 1200 /* Used to serialize access to the
file format tag */
#define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve
- this in X-mode, implicit or backround
+ this in X-mode; implicit or backround
operations purge, rollback, foreign
key checks reserve this in S-mode */
#define SYNC_DICT 1000
diff --git a/storage/innodb_plugin/include/trx0trx.h b/storage/innodb_plugin/include/trx0trx.h
index 6872fb463c0..abd175d365b 100644
--- a/storage/innodb_plugin/include/trx0trx.h
+++ b/storage/innodb_plugin/include/trx0trx.h
@@ -560,9 +560,6 @@ struct trx_struct{
/*------------------------------*/
void* mysql_thd; /*!< MySQL thread handle corresponding
to this trx, or NULL */
- char** mysql_query_str;/* pointer to the field in mysqld_thd
- which contains the pointer to the
- current SQL query string */
const char* mysql_log_file_name;
/* if MySQL binlog is used, this field
contains a pointer to the latest file
diff --git a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i
index 49717760456..991625d6a8a 100644
--- a/storage/innodb_plugin/include/univ.i
+++ b/storage/innodb_plugin/include/univ.i
@@ -46,7 +46,7 @@ Created 1/20/1994 Heikki Tuuri
#define INNODB_VERSION_MAJOR 1
#define INNODB_VERSION_MINOR 0
-#define INNODB_VERSION_BUGFIX 8
+#define INNODB_VERSION_BUGFIX 11
/* The following is the InnoDB version as shown in
SELECT plugin_version FROM information_schema.plugins;
@@ -165,9 +165,9 @@ command. Not tested on Windows. */
#define UNIV_COMPILE_TEST_FUNCS
*/
-#ifdef HAVE_purify
+#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H)
# define UNIV_DEBUG_VALGRIND
-#endif /* HAVE_purify */
+#endif /* HAVE_VALGRIND */
#if 0
#define UNIV_DEBUG_VALGRIND /* Enable extra
Valgrind instrumentation */
@@ -205,10 +205,6 @@ operations (very slow); also UNIV_DEBUG must be defined */
adaptive hash index */
#define UNIV_SRV_PRINT_LATCH_WAITS /* enable diagnostic output
in sync0sync.c */
-#define UNIV_BTR_AVOID_COPY /* when splitting B-tree nodes,
- do not move any records when
- all the records would
- be moved */
#define UNIV_BTR_PRINT /* enable functions for
printing B-trees */
#define UNIV_ZIP_DEBUG /* extensive consistency checks
@@ -294,6 +290,12 @@ management to ensure correct alignment for doubles etc. */
/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM 32
+/* The maximum length of a table name. This is the MySQL limit and is
+defined in mysql_com.h like NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN, the
+number does not include a terminating '\0'. InnoDB probably can handle
+longer names internally */
+#define MAX_TABLE_NAME_LEN 192
+
/*
UNIVERSAL TYPE DEFINITIONS
==========================
diff --git a/storage/innodb_plugin/lock/lock0lock.c b/storage/innodb_plugin/lock/lock0lock.c
index 04e5fe1a65a..77d69d11a2d 100644
--- a/storage/innodb_plugin/lock/lock0lock.c
+++ b/storage/innodb_plugin/lock/lock0lock.c
@@ -1733,11 +1733,11 @@ lock_rec_create(
Enqueues a waiting request for a lock which cannot be granted immediately.
Checks for deadlocks.
@return DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED, or
-DB_SUCCESS; DB_SUCCESS means that there was a deadlock, but another
-transaction was chosen as a victim, and we got the lock immediately:
-no need to wait then */
+DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
+there was a deadlock, but another transaction was chosen as a victim,
+and we got the lock immediately: no need to wait then */
static
-ulint
+enum db_err
lock_rec_enqueue_waiting(
/*=====================*/
ulint type_mode,/*!< in: lock mode this
@@ -1809,7 +1809,7 @@ lock_rec_enqueue_waiting(
if (trx->wait_lock == NULL) {
- return(DB_SUCCESS);
+ return(DB_SUCCESS_LOCKED_REC);
}
trx->que_state = TRX_QUE_LOCK_WAIT;
@@ -1925,6 +1925,16 @@ somebody_waits:
return(lock_rec_create(type_mode, block, heap_no, index, trx));
}
+/** Record locking request status */
+enum lock_rec_req_status {
+ /** Failed to acquire a lock */
+ LOCK_REC_FAIL,
+ /** Succeeded in acquiring a lock (implicit or already acquired) */
+ LOCK_REC_SUCCESS,
+ /** Explicitly created a new lock */
+ LOCK_REC_SUCCESS_CREATED
+};
+
/*********************************************************************//**
This is a fast routine for locking a record in the most common cases:
there are no explicit locks on the page, or there is just one lock, owned
@@ -1932,9 +1942,9 @@ by this transaction, and of the right type_mode. This is a low-level function
which does NOT look at implicit locks! Checks lock compatibility within
explicit locks. This function sets a normal next-key lock, or in the case of
a page supremum record, a gap type lock.
-@return TRUE if locking succeeded */
+@return whether the locking succeeded */
UNIV_INLINE
-ibool
+enum lock_rec_req_status
lock_rec_lock_fast(
/*===============*/
ibool impl, /*!< in: if TRUE, no lock is set
@@ -1973,19 +1983,19 @@ lock_rec_lock_fast(
lock_rec_create(mode, block, heap_no, index, trx);
}
- return(TRUE);
+ return(LOCK_REC_SUCCESS_CREATED);
}
if (lock_rec_get_next_on_page(lock)) {
- return(FALSE);
+ return(LOCK_REC_FAIL);
}
if (lock->trx != trx
|| lock->type_mode != (mode | LOCK_REC)
|| lock_rec_get_n_bits(lock) <= heap_no) {
- return(FALSE);
+ return(LOCK_REC_FAIL);
}
if (!impl) {
@@ -1994,10 +2004,11 @@ lock_rec_lock_fast(
if (!lock_rec_get_nth_bit(lock, heap_no)) {
lock_rec_set_nth_bit(lock, heap_no);
+ return(LOCK_REC_SUCCESS_CREATED);
}
}
- return(TRUE);
+ return(LOCK_REC_SUCCESS);
}
/*********************************************************************//**
@@ -2005,9 +2016,10 @@ This is the general, and slower, routine for locking a record. This is a
low-level function which does NOT look at implicit locks! Checks lock
compatibility within explicit locks. This function sets a normal next-key
lock, or in the case of a page supremum record, a gap type lock.
-@return DB_SUCCESS, DB_LOCK_WAIT, or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
static
-ulint
+enum db_err
lock_rec_lock_slow(
/*===============*/
ibool impl, /*!< in: if TRUE, no lock is set
@@ -2024,7 +2036,6 @@ lock_rec_lock_slow(
que_thr_t* thr) /*!< in: query thread */
{
trx_t* trx;
- ulint err;
ut_ad(mutex_own(&kernel_mutex));
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
@@ -2043,27 +2054,23 @@ lock_rec_lock_slow(
/* The trx already has a strong enough lock on rec: do
nothing */
- err = DB_SUCCESS;
} else if (lock_rec_other_has_conflicting(mode, block, heap_no, trx)) {
/* If another transaction has a non-gap conflicting request in
the queue, as this transaction does not have a lock strong
enough already granted on the record, we have to wait. */
- err = lock_rec_enqueue_waiting(mode, block, heap_no,
- index, thr);
- } else {
- if (!impl) {
- /* Set the requested lock on the record */
-
- lock_rec_add_to_queue(LOCK_REC | mode, block,
- heap_no, index, trx);
- }
+ return(lock_rec_enqueue_waiting(mode, block, heap_no,
+ index, thr));
+ } else if (!impl) {
+ /* Set the requested lock on the record */
- err = DB_SUCCESS;
+ lock_rec_add_to_queue(LOCK_REC | mode, block,
+ heap_no, index, trx);
+ return(DB_SUCCESS_LOCKED_REC);
}
- return(err);
+ return(DB_SUCCESS);
}
/*********************************************************************//**
@@ -2072,9 +2079,10 @@ possible, enqueues a waiting lock request. This is a low-level function
which does NOT look at implicit locks! Checks lock compatibility within
explicit locks. This function sets a normal next-key lock, or in the case
of a page supremum record, a gap type lock.
-@return DB_SUCCESS, DB_LOCK_WAIT, or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
static
-ulint
+enum db_err
lock_rec_lock(
/*==========*/
ibool impl, /*!< in: if TRUE, no lock is set
@@ -2090,8 +2098,6 @@ lock_rec_lock(
dict_index_t* index, /*!< in: index of record */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
-
ut_ad(mutex_own(&kernel_mutex));
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
|| lock_table_has(thr_get_trx(thr), index->table, LOCK_IS));
@@ -2103,18 +2109,20 @@ lock_rec_lock(
|| mode - (LOCK_MODE_MASK & mode) == LOCK_REC_NOT_GAP
|| mode - (LOCK_MODE_MASK & mode) == 0);
- if (lock_rec_lock_fast(impl, mode, block, heap_no, index, thr)) {
-
- /* We try a simplified and faster subroutine for the most
- common cases */
-
- err = DB_SUCCESS;
- } else {
- err = lock_rec_lock_slow(impl, mode, block,
- heap_no, index, thr);
+ /* We try a simplified and faster subroutine for the most
+ common cases */
+ switch (lock_rec_lock_fast(impl, mode, block, heap_no, index, thr)) {
+ case LOCK_REC_SUCCESS:
+ return(DB_SUCCESS);
+ case LOCK_REC_SUCCESS_CREATED:
+ return(DB_SUCCESS_LOCKED_REC);
+ case LOCK_REC_FAIL:
+ return(lock_rec_lock_slow(impl, mode, block,
+ heap_no, index, thr));
}
- return(err);
+ ut_error;
+ return(DB_ERROR);
}
/*********************************************************************//**
@@ -3935,8 +3943,8 @@ lock_rec_unlock(
const rec_t* rec, /*!< in: record */
enum lock_mode lock_mode)/*!< in: LOCK_S or LOCK_X */
{
+ lock_t* first_lock;
lock_t* lock;
- lock_t* release_lock = NULL;
ulint heap_no;
ut_ad(trx && rec);
@@ -3946,48 +3954,40 @@ lock_rec_unlock(
mutex_enter(&kernel_mutex);
- lock = lock_rec_get_first(block, heap_no);
+ first_lock = lock_rec_get_first(block, heap_no);
/* Find the last lock with the same lock_mode and transaction
from the record. */
- while (lock != NULL) {
+ for (lock = first_lock; lock != NULL;
+ lock = lock_rec_get_next(heap_no, lock)) {
if (lock->trx == trx && lock_get_mode(lock) == lock_mode) {
- release_lock = lock;
ut_a(!lock_get_wait(lock));
+ lock_rec_reset_nth_bit(lock, heap_no);
+ goto released;
}
-
- lock = lock_rec_get_next(heap_no, lock);
}
- /* If a record lock is found, release the record lock */
-
- if (UNIV_LIKELY(release_lock != NULL)) {
- lock_rec_reset_nth_bit(release_lock, heap_no);
- } else {
- mutex_exit(&kernel_mutex);
- ut_print_timestamp(stderr);
- fprintf(stderr,
- " InnoDB: Error: unlock row could not"
- " find a %lu mode lock on the record\n",
- (ulong) lock_mode);
+ mutex_exit(&kernel_mutex);
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Error: unlock row could not"
+ " find a %lu mode lock on the record\n",
+ (ulong) lock_mode);
- return;
- }
+ return;
+released:
/* Check if we can now grant waiting lock requests */
- lock = lock_rec_get_first(block, heap_no);
-
- while (lock != NULL) {
+ for (lock = first_lock; lock != NULL;
+ lock = lock_rec_get_next(heap_no, lock)) {
if (lock_get_wait(lock)
&& !lock_rec_has_to_wait_in_queue(lock)) {
/* Grant the lock */
lock_grant(lock);
}
-
- lock = lock_rec_get_next(heap_no, lock);
}
mutex_exit(&kernel_mutex);
@@ -5080,7 +5080,14 @@ lock_rec_insert_check_and_lock(
lock_mutex_exit_kernel();
- if ((err == DB_SUCCESS) && !dict_index_is_clust(index)) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ /* fall through */
+ case DB_SUCCESS:
+ if (dict_index_is_clust(index)) {
+ break;
+ }
/* Update the page max trx id field */
page_update_max_trx_id(block,
buf_block_get_page_zip(block),
@@ -5203,6 +5210,10 @@ lock_clust_rec_modify_check_and_lock(
ut_ad(lock_rec_queue_validate(block, rec, index, offsets));
+ if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) {
+ err = DB_SUCCESS;
+ }
+
return(err);
}
@@ -5269,22 +5280,27 @@ lock_sec_rec_modify_check_and_lock(
}
#endif /* UNIV_DEBUG */
- if (err == DB_SUCCESS) {
+ if (err == DB_SUCCESS || err == DB_SUCCESS_LOCKED_REC) {
/* Update the page max trx id field */
+ /* It might not be necessary to do this if
+ err == DB_SUCCESS (no new lock created),
+ but it should not cost too much performance. */
page_update_max_trx_id(block,
buf_block_get_page_zip(block),
thr_get_trx(thr)->id, mtr);
+ err = DB_SUCCESS;
}
return(err);
}
/*********************************************************************//**
-Like the counterpart for a clustered index below, but now we read a
+Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_sec_rec_read_check_and_lock(
/*=============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -5305,8 +5321,8 @@ lock_sec_rec_read_check_and_lock(
LOCK_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
- ulint heap_no;
+ enum db_err err;
+ ulint heap_no;
ut_ad(!dict_index_is_clust(index));
ut_ad(block->frame == page_align(rec));
@@ -5357,9 +5373,10 @@ if the query thread should anyway be suspended for some reason; if not, then
puts the transaction and the query thread to the lock wait state and inserts a
waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_clust_rec_read_check_and_lock(
/*===============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -5380,8 +5397,8 @@ lock_clust_rec_read_check_and_lock(
LOCK_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
- ulint heap_no;
+ enum db_err err;
+ ulint heap_no;
ut_ad(dict_index_is_clust(index));
ut_ad(block->frame == page_align(rec));
@@ -5452,17 +5469,22 @@ lock_clust_rec_read_check_and_lock_alt(
mem_heap_t* tmp_heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
- ulint ret;
+ ulint err;
rec_offs_init(offsets_);
offsets = rec_get_offsets(rec, index, offsets,
ULINT_UNDEFINED, &tmp_heap);
- ret = lock_clust_rec_read_check_and_lock(flags, block, rec, index,
+ err = lock_clust_rec_read_check_and_lock(flags, block, rec, index,
offsets, mode, gap_mode, thr);
if (tmp_heap) {
mem_heap_free(tmp_heap);
}
- return(ret);
+
+ if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) {
+ err = DB_SUCCESS;
+ }
+
+ return(err);
}
/*******************************************************************//**
diff --git a/storage/innodb_plugin/mem/mem0mem.c b/storage/innodb_plugin/mem/mem0mem.c
index c0ce8a3e1ac..1dd4db30841 100644
--- a/storage/innodb_plugin/mem/mem0mem.c
+++ b/storage/innodb_plugin/mem/mem0mem.c
@@ -367,7 +367,7 @@ mem_heap_create_block(
block->line = line;
#ifdef MEM_PERIODIC_CHECK
- mem_pool_mutex_enter();
+ mutex_enter(&(mem_comm_pool->mutex));
if (!mem_block_list_inited) {
mem_block_list_inited = TRUE;
@@ -376,7 +376,7 @@ mem_heap_create_block(
UT_LIST_ADD_LAST(mem_block_list, mem_block_list, block);
- mem_pool_mutex_exit();
+ mutex_exit(&(mem_comm_pool->mutex));
#endif
mem_block_set_len(block, len);
mem_block_set_type(block, type);
@@ -479,11 +479,11 @@ mem_heap_block_free(
UT_LIST_REMOVE(list, heap->base, block);
#ifdef MEM_PERIODIC_CHECK
- mem_pool_mutex_enter();
+ mutex_enter(&(mem_comm_pool->mutex));
UT_LIST_REMOVE(mem_block_list, mem_block_list, block);
- mem_pool_mutex_exit();
+ mutex_exit(&(mem_comm_pool->mutex));
#endif
ut_ad(heap->total_size >= block->len);
@@ -556,7 +556,7 @@ mem_validate_all_blocks(void)
{
mem_block_t* block;
- mem_pool_mutex_enter();
+ mutex_enter(&(mem_comm_pool->mutex));
block = UT_LIST_GET_FIRST(mem_block_list);
@@ -568,6 +568,6 @@ mem_validate_all_blocks(void)
block = UT_LIST_GET_NEXT(mem_block_list, block);
}
- mem_pool_mutex_exit();
+ mutex_exit(&(mem_comm_pool->mutex));
}
#endif
diff --git a/storage/innodb_plugin/mem/mem0pool.c b/storage/innodb_plugin/mem/mem0pool.c
index c4f8af607e0..3291453eeb5 100644
--- a/storage/innodb_plugin/mem/mem0pool.c
+++ b/storage/innodb_plugin/mem/mem0pool.c
@@ -34,6 +34,7 @@ Created 5/12/1997 Heikki Tuuri
#include "ut0lst.h"
#include "ut0byte.h"
#include "mem0mem.h"
+#include "srv0start.h"
/* We would like to use also the buffer frames to allocate memory. This
would be desirable, because then the memory consumption of the database
@@ -121,23 +122,33 @@ mysql@lists.mysql.com */
UNIV_INTERN ulint mem_n_threads_inside = 0;
/********************************************************************//**
-Reserves the mem pool mutex. */
-UNIV_INTERN
+Reserves the mem pool mutex if we are not in server shutdown. Use
+this function only in memory free functions, since only memory
+free functions are used during server shutdown. */
+UNIV_INLINE
void
-mem_pool_mutex_enter(void)
-/*======================*/
+mem_pool_mutex_enter(
+/*=================*/
+ mem_pool_t* pool) /*!< in: memory pool */
{
- mutex_enter(&(mem_comm_pool->mutex));
+ if (srv_shutdown_state < SRV_SHUTDOWN_EXIT_THREADS) {
+ mutex_enter(&(pool->mutex));
+ }
}
/********************************************************************//**
-Releases the mem pool mutex. */
-UNIV_INTERN
+Releases the mem pool mutex if we are not in server shutdown. As
+its corresponding mem_pool_mutex_enter() function, use it only
+in memory free functions */
+UNIV_INLINE
void
-mem_pool_mutex_exit(void)
-/*=====================*/
+mem_pool_mutex_exit(
+/*================*/
+ mem_pool_t* pool) /*!< in: memory pool */
{
- mutex_exit(&(mem_comm_pool->mutex));
+ if (srv_shutdown_state < SRV_SHUTDOWN_EXIT_THREADS) {
+ mutex_exit(&(pool->mutex));
+ }
}
/********************************************************************//**
@@ -567,7 +578,7 @@ mem_area_free(
n = ut_2_log(size);
- mutex_enter(&(pool->mutex));
+ mem_pool_mutex_enter(pool);
mem_n_threads_inside++;
ut_a(mem_n_threads_inside == 1);
@@ -595,7 +606,7 @@ mem_area_free(
pool->reserved += ut_2_exp(n);
mem_n_threads_inside--;
- mutex_exit(&(pool->mutex));
+ mem_pool_mutex_exit(pool);
mem_area_free(new_ptr, pool);
@@ -611,7 +622,7 @@ mem_area_free(
}
mem_n_threads_inside--;
- mutex_exit(&(pool->mutex));
+ mem_pool_mutex_exit(pool);
ut_ad(mem_pool_validate(pool));
}
@@ -630,7 +641,7 @@ mem_pool_validate(
ulint free;
ulint i;
- mutex_enter(&(pool->mutex));
+ mem_pool_mutex_enter(pool);
free = 0;
@@ -658,7 +669,7 @@ mem_pool_validate(
ut_a(free + pool->reserved == pool->size);
- mutex_exit(&(pool->mutex));
+ mem_pool_mutex_exit(pool);
return(TRUE);
}
diff --git a/storage/innodb_plugin/os/os0file.c b/storage/innodb_plugin/os/os0file.c
index b244e3974b3..9f937b9def2 100644
--- a/storage/innodb_plugin/os/os0file.c
+++ b/storage/innodb_plugin/os/os0file.c
@@ -1339,7 +1339,11 @@ try_again:
/* When srv_file_per_table is on, file creation failure may not
be critical to the whole instance. Do not crash the server in
- case of unknown errors. */
+ case of unknown errors.
+ Please note "srv_file_per_table" is a global variable with
+ no explicit synchronization protection. It could be
+ changed during this execution path. It might not have the
+ same value as the one when building the table definition */
if (srv_file_per_table) {
retry = os_file_handle_error_no_exit(name,
create_mode == OS_FILE_CREATE ?
@@ -1426,7 +1430,11 @@ try_again:
/* When srv_file_per_table is on, file creation failure may not
be critical to the whole instance. Do not crash the server in
- case of unknown errors. */
+ case of unknown errors.
+ Please note "srv_file_per_table" is a global variable with
+ no explicit synchronization protection. It could be
+ changed during this execution path. It might not have the
+ same value as the one when building the table definition */
if (srv_file_per_table) {
retry = os_file_handle_error_no_exit(name,
create_mode == OS_FILE_CREATE ?
diff --git a/storage/innodb_plugin/page/page0zip.c b/storage/innodb_plugin/page/page0zip.c
index aa5e39ff04a..d3b1edefc6b 100644
--- a/storage/innodb_plugin/page/page0zip.c
+++ b/storage/innodb_plugin/page/page0zip.c
@@ -571,7 +571,7 @@ page_zip_dir_encode(
/* Traverse the list of stored records in the collation order,
starting from the first user record. */
- rec = page + PAGE_NEW_INFIMUM, TRUE;
+ rec = page + PAGE_NEW_INFIMUM;
i = 0;
@@ -1464,6 +1464,7 @@ page_zip_fields_free(
dict_table_t* table = index->table;
mem_heap_free(index->heap);
mutex_free(&(table->autoinc_mutex));
+ ut_free(table->name);
mem_heap_free(table->heap);
}
}
@@ -3117,8 +3118,13 @@ page_zip_validate_low(
temp_page_zip in a debugger when running valgrind --db-attach. */
VALGRIND_GET_VBITS(page, temp_page, UNIV_PAGE_SIZE);
UNIV_MEM_ASSERT_RW(page, UNIV_PAGE_SIZE);
+# if UNIV_WORD_SIZE == 4
VALGRIND_GET_VBITS(page_zip, &temp_page_zip, sizeof temp_page_zip);
+ /* On 32-bit systems, there is no padding in page_zip_des_t.
+ On other systems, Valgrind could complain about uninitialized
+ pad bytes. */
UNIV_MEM_ASSERT_RW(page_zip, sizeof *page_zip);
+# endif
VALGRIND_GET_VBITS(page_zip->data, temp_page,
page_zip_get_size(page_zip));
UNIV_MEM_ASSERT_RW(page_zip->data, page_zip_get_size(page_zip));
diff --git a/storage/innodb_plugin/plug.in.disabled b/storage/innodb_plugin/plug.in
index e638332d74a..38e14d9d2fd 100644
--- a/storage/innodb_plugin/plug.in.disabled
+++ b/storage/innodb_plugin/plug.in
@@ -15,7 +15,7 @@
#
MYSQL_STORAGE_ENGINE(innodb_plugin,, [InnoDB Storage Engine],
- [Transactional Tables using InnoDB], [max,max-no-ndb])
+ [Transactional Tables using InnoDB], [])
MYSQL_PLUGIN_DIRECTORY(innodb_plugin, [storage/innodb_plugin])
MYSQL_PLUGIN_DYNAMIC(innodb_plugin, [ha_innodb_plugin.la])
MYSQL_PLUGIN_ACTIONS(innodb_plugin, [
diff --git a/storage/innodb_plugin/rem/rem0cmp.c b/storage/innodb_plugin/rem/rem0cmp.c
index e6dab0bc66b..35b67992558 100644
--- a/storage/innodb_plugin/rem/rem0cmp.c
+++ b/storage/innodb_plugin/rem/rem0cmp.c
@@ -706,7 +706,9 @@ cmp_rec_rec_simple(
const rec_t* rec2, /*!< in: physical record */
const ulint* offsets1,/*!< in: rec_get_offsets(rec1, ...) */
const ulint* offsets2,/*!< in: rec_get_offsets(rec2, ...) */
- const dict_index_t* index) /*!< in: data dictionary index */
+ const dict_index_t* index, /*!< in: data dictionary index */
+ ibool* null_eq)/*!< out: set to TRUE if
+ found matching null values */
{
ulint rec1_f_len; /*!< length of current field in rec1 */
const byte* rec1_b_ptr; /*!< pointer to the current byte
@@ -753,6 +755,9 @@ cmp_rec_rec_simple(
|| rec2_f_len == UNIV_SQL_NULL) {
if (rec1_f_len == rec2_f_len) {
+ if (null_eq) {
+ *null_eq = TRUE;
+ }
goto next_field;
diff --git a/storage/innodb_plugin/row/row0ins.c b/storage/innodb_plugin/row/row0ins.c
index 230dc45dadc..a193bf21f7c 100644
--- a/storage/innodb_plugin/row/row0ins.c
+++ b/storage/innodb_plugin/row/row0ins.c
@@ -51,6 +51,15 @@ Created 4/20/1996 Heikki Tuuri
#define ROW_INS_PREV 1
#define ROW_INS_NEXT 2
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
/*********************************************************************//**
Creates an insert node struct.
@@ -1121,9 +1130,9 @@ nonstandard_exit_func:
/*********************************************************************//**
Sets a shared lock on a record. Used in locking possible duplicate key
records and also in checking foreign key constraints.
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
static
-ulint
+enum db_err
row_ins_set_shared_rec_lock(
/*========================*/
ulint type, /*!< in: LOCK_ORDINARY, LOCK_GAP, or
@@ -1134,7 +1143,7 @@ row_ins_set_shared_rec_lock(
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
+ enum db_err err;
ut_ad(rec_offs_validate(rec, index, offsets));
@@ -1152,9 +1161,9 @@ row_ins_set_shared_rec_lock(
/*********************************************************************//**
Sets a exclusive lock on a record. Used in locking possible duplicate key
records
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
static
-ulint
+enum db_err
row_ins_set_exclusive_rec_lock(
/*===========================*/
ulint type, /*!< in: LOCK_ORDINARY, LOCK_GAP, or
@@ -1165,7 +1174,7 @@ row_ins_set_exclusive_rec_lock(
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
+ enum db_err err;
ut_ad(rec_offs_validate(rec, index, offsets));
@@ -1205,7 +1214,6 @@ row_ins_check_foreign_constraint(
dict_index_t* check_index;
ulint n_fields_cmp;
btr_pcur_t pcur;
- ibool moved;
int cmp;
ulint err;
ulint i;
@@ -1336,13 +1344,13 @@ run_again:
/* Scan index records and check if there is a matching record */
- for (;;) {
+ do {
const rec_t* rec = btr_pcur_get_rec(&pcur);
const buf_block_t* block = btr_pcur_get_block(&pcur);
if (page_rec_is_infimum(rec)) {
- goto next_rec;
+ continue;
}
offsets = rec_get_offsets(rec, check_index,
@@ -1353,12 +1361,13 @@ run_again:
err = row_ins_set_shared_rec_lock(LOCK_ORDINARY, block,
rec, check_index,
offsets, thr);
- if (err != DB_SUCCESS) {
-
- break;
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ continue;
+ default:
+ goto end_scan;
}
-
- goto next_rec;
}
cmp = cmp_dtuple_rec(entry, rec, offsets);
@@ -1369,9 +1378,12 @@ run_again:
err = row_ins_set_shared_rec_lock(
LOCK_ORDINARY, block,
rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
} else {
/* Found a matching record. Lock only
@@ -1382,15 +1394,18 @@ run_again:
LOCK_REC_NOT_GAP, block,
rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
if (check_ref) {
err = DB_SUCCESS;
- break;
+ goto end_scan;
} else if (foreign->type != 0) {
/* There is an ON UPDATE or ON DELETE
condition: check them in a separate
@@ -1416,7 +1431,7 @@ run_again:
err = DB_FOREIGN_DUPLICATE_KEY;
}
- break;
+ goto end_scan;
}
/* row_ins_foreign_check_on_constraint
@@ -1429,49 +1444,41 @@ run_again:
thr, foreign, rec, entry);
err = DB_ROW_IS_REFERENCED;
- break;
+ goto end_scan;
}
}
- }
+ } else {
+ ut_a(cmp < 0);
- if (cmp < 0) {
err = row_ins_set_shared_rec_lock(
LOCK_GAP, block,
rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
- break;
- }
-
- if (check_ref) {
- err = DB_NO_REFERENCED_ROW;
- row_ins_foreign_report_add_err(
- trx, foreign, rec, entry);
- } else {
- err = DB_SUCCESS;
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ if (check_ref) {
+ err = DB_NO_REFERENCED_ROW;
+ row_ins_foreign_report_add_err(
+ trx, foreign, rec, entry);
+ } else {
+ err = DB_SUCCESS;
+ }
}
- break;
+ goto end_scan;
}
+ } while (btr_pcur_move_to_next(&pcur, &mtr));
- ut_a(cmp == 0);
-next_rec:
- moved = btr_pcur_move_to_next(&pcur, &mtr);
-
- if (!moved) {
- if (check_ref) {
- rec = btr_pcur_get_rec(&pcur);
- row_ins_foreign_report_add_err(
- trx, foreign, rec, entry);
- err = DB_NO_REFERENCED_ROW;
- } else {
- err = DB_SUCCESS;
- }
-
- break;
- }
+ if (check_ref) {
+ row_ins_foreign_report_add_err(
+ trx, foreign, btr_pcur_get_rec(&pcur), entry);
+ err = DB_NO_REFERENCED_ROW;
+ } else {
+ err = DB_SUCCESS;
}
+end_scan:
btr_pcur_close(&pcur);
mtr_commit(&mtr);
@@ -1719,9 +1726,13 @@ row_ins_scan_sec_index_for_duplicate(
rec, index, offsets, thr);
}
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
if (page_rec_is_supremum(rec)) {
@@ -1738,17 +1749,15 @@ row_ins_scan_sec_index_for_duplicate(
thr_get_trx(thr)->error_info = index;
- break;
+ goto end_scan;
}
+ } else {
+ ut_a(cmp < 0);
+ goto end_scan;
}
-
- if (cmp < 0) {
- break;
- }
-
- ut_a(cmp == 0);
} while (btr_pcur_move_to_next(&pcur, &mtr));
+end_scan:
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
@@ -1837,7 +1846,11 @@ row_ins_duplicate_error_in_clust(
cursor->index, offsets, thr);
}
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto func_exit;
}
@@ -1877,7 +1890,11 @@ row_ins_duplicate_error_in_clust(
rec, cursor->index, offsets, thr);
}
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto func_exit;
}
diff --git a/storage/innodb_plugin/row/row0merge.c b/storage/innodb_plugin/row/row0merge.c
index d61d626f92e..56a68b58225 100644
--- a/storage/innodb_plugin/row/row0merge.c
+++ b/storage/innodb_plugin/row/row0merge.c
@@ -717,14 +717,16 @@ row_merge_read(
}
/********************************************************************//**
-Read a merge block from the file system.
+Write a merge block to the file system.
@return TRUE if request was successful, FALSE if fail */
static
ibool
row_merge_write(
/*============*/
int fd, /*!< in: file descriptor */
- ulint offset, /*!< in: offset where to write */
+ ulint offset, /*!< in: offset where to read
+ in number of row_merge_block_t
+ elements */
const void* buf) /*!< in: data */
{
ib_uint64_t ofs = ((ib_uint64_t) offset)
@@ -1075,11 +1077,14 @@ row_merge_cmp(
record to be compared */
const ulint* offsets1, /*!< in: first record offsets */
const ulint* offsets2, /*!< in: second record offsets */
- const dict_index_t* index) /*!< in: index */
+ const dict_index_t* index, /*!< in: index */
+ ibool* null_eq) /*!< out: set to TRUE if
+ found matching null values */
{
int cmp;
- cmp = cmp_rec_rec_simple(mrec1, mrec2, offsets1, offsets2, index);
+ cmp = cmp_rec_rec_simple(mrec1, mrec2, offsets1, offsets2, index,
+ null_eq);
#ifdef UNIV_DEBUG
if (row_merge_print_cmp) {
@@ -1445,11 +1450,13 @@ corrupt:
}
while (mrec0 && mrec1) {
+ ibool null_eq = FALSE;
switch (row_merge_cmp(mrec0, mrec1,
- offsets0, offsets1, index)) {
+ offsets0, offsets1, index,
+ &null_eq)) {
case 0:
if (UNIV_UNLIKELY
- (dict_index_is_unique(index))) {
+ (dict_index_is_unique(index) && !null_eq)) {
innobase_rec_to_mysql(table, mrec0,
index, offsets0);
mem_heap_free(heap);
@@ -1571,22 +1578,28 @@ row_merge(
const dict_index_t* index, /*!< in: index being created */
merge_file_t* file, /*!< in/out: file containing
index entries */
- ulint* half, /*!< in/out: half the file */
row_merge_block_t* block, /*!< in/out: 3 buffers */
int* tmpfd, /*!< in/out: temporary file handle */
- TABLE* table) /*!< in/out: MySQL table, for
+ TABLE* table, /*!< in/out: MySQL table, for
reporting erroneous key value
if applicable */
+ ulint* num_run,/*!< in/out: Number of runs remain
+ to be merged */
+ ulint* run_offset) /*!< in/out: Array contains the
+ first offset number for each merge
+ run */
{
ulint foffs0; /*!< first input offset */
ulint foffs1; /*!< second input offset */
ulint error; /*!< error code */
merge_file_t of; /*!< output file */
- const ulint ihalf = *half;
+ const ulint ihalf = run_offset[*num_run / 2];
/*!< half the input file */
- ulint ohalf; /*!< half the output file */
+ ulint n_run = 0;
+ /*!< num of runs generated from this merge */
UNIV_MEM_ASSERT_W(block[0], 3 * sizeof block[0]);
+
ut_ad(ihalf < file->offset);
of.fd = *tmpfd;
@@ -1594,17 +1607,20 @@ row_merge(
of.n_rec = 0;
/* Merge blocks to the output file. */
- ohalf = 0;
foffs0 = 0;
foffs1 = ihalf;
+ UNIV_MEM_INVALID(run_offset, *num_run * sizeof *run_offset);
+
for (; foffs0 < ihalf && foffs1 < file->offset; foffs0++, foffs1++) {
- ulint ahalf; /*!< arithmetic half the input file */
if (UNIV_UNLIKELY(trx_is_interrupted(trx))) {
return(DB_INTERRUPTED);
}
+ /* Remember the offset number for this run */
+ run_offset[n_run++] = of.offset;
+
error = row_merge_blocks(index, file, block,
&foffs0, &foffs1, &of, table);
@@ -1612,21 +1628,6 @@ row_merge(
return(error);
}
- /* Record the offset of the output file when
- approximately half the output has been generated. In
- this way, the next invocation of row_merge() will
- spend most of the time in this loop. The initial
- estimate is ohalf==0. */
- ahalf = file->offset / 2;
- ut_ad(ohalf <= of.offset);
-
- /* Improve the estimate until reaching half the input
- file size, or we can not get any closer to it. All
- comparands should be non-negative when !(ohalf < ahalf)
- because ohalf <= of.offset. */
- if (ohalf < ahalf || of.offset - ahalf < ohalf - ahalf) {
- ohalf = of.offset;
- }
}
/* Copy the last blocks, if there are any. */
@@ -1636,6 +1637,9 @@ row_merge(
return(DB_INTERRUPTED);
}
+ /* Remember the offset number for this run */
+ run_offset[n_run++] = of.offset;
+
if (!row_merge_blocks_copy(index, file, block, &foffs0, &of)) {
return(DB_CORRUPTION);
}
@@ -1648,6 +1652,9 @@ row_merge(
return(DB_INTERRUPTED);
}
+ /* Remember the offset number for this run */
+ run_offset[n_run++] = of.offset;
+
if (!row_merge_blocks_copy(index, file, block, &foffs1, &of)) {
return(DB_CORRUPTION);
}
@@ -1659,10 +1666,23 @@ row_merge(
return(DB_CORRUPTION);
}
+ ut_ad(n_run <= *num_run);
+
+ *num_run = n_run;
+
+ /* Each run can contain one or more offsets. As merge goes on,
+ the number of runs (to merge) will reduce until we have one
+ single run. So the number of runs will always be smaller than
+ the number of offsets in file */
+ ut_ad((*num_run) <= file->offset);
+
+ /* The number of offsets in output file is always equal or
+ smaller than input file */
+ ut_ad(of.offset <= file->offset);
+
/* Swap file descriptors for the next pass. */
*tmpfd = file->fd;
*file = of;
- *half = ohalf;
UNIV_MEM_INVALID(block[0], 3 * sizeof block[0]);
@@ -1687,27 +1707,44 @@ row_merge_sort(
if applicable */
{
ulint half = file->offset / 2;
+ ulint num_runs;
+ ulint* run_offset;
+ ulint error = DB_SUCCESS;
+
+ /* Record the number of merge runs we need to perform */
+ num_runs = file->offset;
+
+ /* If num_runs are less than 1, nothing to merge */
+ if (num_runs <= 1) {
+ return(error);
+ }
+
+ /* "run_offset" records each run's first offset number */
+ run_offset = (ulint*) mem_alloc(file->offset * sizeof(ulint));
+
+ /* This tells row_merge() where to start for the first round
+ of merge. */
+ run_offset[half] = half;
/* The file should always contain at least one byte (the end
of file marker). Thus, it must be at least one block. */
ut_ad(file->offset > 0);
+ /* Merge the runs until we have one big run */
do {
- ulint error;
+ error = row_merge(trx, index, file, block, tmpfd,
+ table, &num_runs, run_offset);
- error = row_merge(trx, index, file, &half,
- block, tmpfd, table);
+ UNIV_MEM_ASSERT_RW(run_offset, num_runs * sizeof *run_offset);
if (error != DB_SUCCESS) {
- return(error);
+ break;
}
+ } while (num_runs > 1);
- /* half > 0 should hold except when the file consists
- of one block. No need to merge further then. */
- ut_ad(half > 0 || file->offset == 1);
- } while (half < file->offset && half > 0);
+ mem_free(run_offset);
- return(DB_SUCCESS);
+ return(error);
}
/*************************************************************//**
@@ -1743,6 +1780,11 @@ row_merge_copy_blobs(
(below). */
data = btr_rec_copy_externally_stored_field(
mrec, offsets, zip_size, i, &len, heap);
+ /* Because we have locked the table, any records
+ written by incomplete transactions must have been
+ rolled back already. There must not be any incomplete
+ BLOB columns. */
+ ut_a(data);
dfield_set_data(field, data, len);
}
@@ -2087,13 +2129,16 @@ row_merge_drop_temp_indexes(void)
btr_pcur_store_position(&pcur, &mtr);
btr_pcur_commit_specify_mtr(&pcur, &mtr);
- table = dict_load_table_on_id(table_id);
+ table = dict_table_get_on_id_low(table_id);
if (table) {
dict_index_t* index;
+ dict_index_t* next_index;
for (index = dict_table_get_first_index(table);
- index; index = dict_table_get_next_index(index)) {
+ index; index = next_index) {
+
+ next_index = dict_table_get_next_index(index);
if (*index->name == TEMP_INDEX_PREFIX) {
row_merge_drop_index(index, table, trx);
@@ -2296,7 +2341,7 @@ row_merge_rename_tables(
{
ulint err = DB_ERROR;
pars_info_t* info;
- const char* old_name= old_table->name;
+ char old_name[MAX_TABLE_NAME_LEN + 1];
ut_ad(trx->mysql_thread_id == os_thread_get_curr_id());
ut_ad(old_table != new_table);
@@ -2304,6 +2349,17 @@ row_merge_rename_tables(
ut_a(trx->dict_operation_lock_mode == RW_X_LATCH);
+ /* store the old/current name to an automatic variable */
+ if (strlen(old_table->name) + 1 <= sizeof(old_name)) {
+ memcpy(old_name, old_table->name, strlen(old_table->name) + 1);
+ } else {
+ ut_print_timestamp(stderr);
+ fprintf(stderr, "InnoDB: too long table name: '%s', "
+ "max length is %d\n", old_table->name,
+ MAX_TABLE_NAME_LEN);
+ ut_error;
+ }
+
trx->op_info = "renaming tables";
/* We use the private SQL parser of Innobase to generate the query
diff --git a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c
index 24abf8067f2..feeb7fc80b7 100644
--- a/storage/innodb_plugin/row/row0mysql.c
+++ b/storage/innodb_plugin/row/row0mysql.c
@@ -522,6 +522,7 @@ handle_new_error:
case DB_CANNOT_ADD_CONSTRAINT:
case DB_TOO_MANY_CONCURRENT_TRXS:
case DB_OUT_OF_FILE_SPACE:
+ case DB_INTERRUPTED:
if (savept) {
/* Roll back the latest, possibly incomplete
insertion or update */
@@ -624,6 +625,8 @@ row_create_prebuilt(
prebuilt->select_lock_type = LOCK_NONE;
prebuilt->stored_select_lock_type = 99999999;
+ UNIV_MEM_INVALID(&prebuilt->stored_select_lock_type,
+ sizeof prebuilt->stored_select_lock_type);
prebuilt->search_tuple = dtuple_create(
heap, 2 * dict_table_get_n_cols(table));
@@ -1427,27 +1430,26 @@ run_again:
}
/*********************************************************************//**
-This can only be used when srv_locks_unsafe_for_binlog is TRUE or
-this session is using a READ COMMITTED isolation level. Before
-calling this function we must use trx_reset_new_rec_lock_info() and
-trx_register_new_rec_lock() to store the information which new record locks
-really were set. This function removes a newly set lock under prebuilt->pcur,
-and also under prebuilt->clust_pcur. Currently, this is only used and tested
-in the case of an UPDATE or a DELETE statement, where the row lock is of the
-LOCK_X type.
-Thus, this implements a 'mini-rollback' that releases the latest record
-locks we set.
-@return error code or DB_SUCCESS */
+This can only be used when srv_locks_unsafe_for_binlog is TRUE or this
+session is using a READ COMMITTED or READ UNCOMMITTED isolation level.
+Before calling this function row_search_for_mysql() must have
+initialized prebuilt->new_rec_locks to store the information which new
+record locks really were set. This function removes a newly set
+clustered index record lock under prebuilt->pcur or
+prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that
+releases the latest clustered index record lock we set.
+@return error code or DB_SUCCESS */
UNIV_INTERN
int
row_unlock_for_mysql(
/*=================*/
- row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL
+ row_prebuilt_t* prebuilt, /*!< in/out: prebuilt struct in MySQL
handle */
- ibool has_latches_on_recs)/*!< TRUE if called so that we have
- the latches on the records under pcur
- and clust_pcur, and we do not need to
- reposition the cursors. */
+ ibool has_latches_on_recs)/*!< in: TRUE if called so
+ that we have the latches on
+ the records under pcur and
+ clust_pcur, and we do not need
+ to reposition the cursors. */
{
btr_pcur_t* pcur = prebuilt->pcur;
btr_pcur_t* clust_pcur = prebuilt->clust_pcur;
@@ -1645,37 +1647,6 @@ row_table_got_default_clust_index(
}
/*********************************************************************//**
-Calculates the key number used inside MySQL for an Innobase index. We have
-to take into account if we generated a default clustered index for the table
-@return the key number used inside MySQL */
-UNIV_INTERN
-ulint
-row_get_mysql_key_number_for_index(
-/*===============================*/
- const dict_index_t* index) /*!< in: index */
-{
- const dict_index_t* ind;
- ulint i;
-
- ut_a(index);
-
- i = 0;
- ind = dict_table_get_first_index(index->table);
-
- while (index != ind) {
- ind = dict_table_get_next_index(ind);
- i++;
- }
-
- if (row_table_got_default_clust_index(index->table)) {
- ut_a(i > 0);
- i--;
- }
-
- return(i);
-}
-
-/*********************************************************************//**
Locks the data dictionary in shared mode from modifications, for performing
foreign key check, rollback, or other operation invisible to MySQL. */
UNIV_INTERN
@@ -2059,6 +2030,7 @@ row_table_add_foreign_constraints(
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the
database name before it: test.table2 */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -2080,8 +2052,8 @@ row_table_add_foreign_constraints(
trx_set_dict_operation(trx, TRX_DICT_OP_TABLE);
- err = dict_create_foreign_constraints(trx, sql_string, name,
- reject_fks);
+ err = dict_create_foreign_constraints(trx, sql_string, sql_length,
+ name, reject_fks);
if (err == DB_SUCCESS) {
/* Check that also referencing constraints are ok */
err = dict_load_foreigns(name, TRUE);
@@ -2425,7 +2397,7 @@ row_discard_tablespace_for_mysql(
goto funct_exit;
}
- new_id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID);
+ dict_hdr_get_new_id(&new_id, NULL, NULL);
/* Remove all locks except the table-level S and X locks. */
lock_remove_all_on_table(table, FALSE);
@@ -2787,10 +2759,11 @@ row_truncate_table_for_mysql(
dict_index_t* index;
- space = 0;
+ dict_hdr_get_new_id(NULL, NULL, &space);
- if (fil_create_new_single_table_tablespace(
- &space, table->name, FALSE, flags,
+ if (space == ULINT_UNDEFINED
+ || fil_create_new_single_table_tablespace(
+ space, table->name, FALSE, flags,
FIL_IBD_FILE_INITIAL_SIZE) != DB_SUCCESS) {
ut_print_timestamp(stderr);
fprintf(stderr,
@@ -2895,7 +2868,7 @@ next_rec:
mem_heap_free(heap);
- new_id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID);
+ dict_hdr_get_new_id(&new_id, NULL, NULL);
info = pars_info_create();
diff --git a/storage/innodb_plugin/row/row0purge.c b/storage/innodb_plugin/row/row0purge.c
index 500ebe571ab..835af990672 100644
--- a/storage/innodb_plugin/row/row0purge.c
+++ b/storage/innodb_plugin/row/row0purge.c
@@ -44,6 +44,16 @@ Created 3/14/1997 Heikki Tuuri
#include "row0mysql.h"
#include "log0log.h"
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/********************************************************************//**
Creates a purge node to a query graph.
@return own: purge node */
@@ -126,6 +136,7 @@ row_purge_remove_clust_if_poss_low(
pcur = &(node->pcur);
btr_cur = btr_pcur_get_btr_cur(pcur);
+ log_free_check();
mtr_start(&mtr);
success = row_purge_reposition_pcur(mode, node, &mtr);
diff --git a/storage/innodb_plugin/row/row0row.c b/storage/innodb_plugin/row/row0row.c
index cb7dfa2b7c9..8e806a14a98 100644
--- a/storage/innodb_plugin/row/row0row.c
+++ b/storage/innodb_plugin/row/row0row.c
@@ -294,7 +294,13 @@ row_build(
ut_ad(dtuple_check_typed(row));
- if (j) {
+ if (!ext) {
+ /* REDUNDANT and COMPACT formats store a local
+ 768-byte prefix of each externally stored
+ column. No cache is needed. */
+ ut_ad(dict_table_get_format(index->table)
+ < DICT_TF_FORMAT_ZIP);
+ } else if (j) {
*ext = row_ext_create(j, ext_cols, row,
dict_table_zip_size(index->table),
heap);
diff --git a/storage/innodb_plugin/row/row0sel.c b/storage/innodb_plugin/row/row0sel.c
index d0702a0cd2f..76c144e5a8c 100644
--- a/storage/innodb_plugin/row/row0sel.c
+++ b/storage/innodb_plugin/row/row0sel.c
@@ -416,7 +416,7 @@ row_sel_fetch_columns(
field_no))) {
/* Copy an externally stored field to the
- temporary heap */
+ temporary heap, if possible. */
heap = mem_heap_create(1);
@@ -425,6 +425,17 @@ row_sel_fetch_columns(
dict_table_zip_size(index->table),
field_no, &len, heap);
+ /* data == NULL means that the
+ externally stored field was not
+ written yet. This record
+ should only be seen by
+ recv_recovery_rollback_active() or any
+ TRX_ISO_READ_UNCOMMITTED
+ transactions. The InnoDB SQL parser
+ (the sole caller of this function)
+ does not implement READ UNCOMMITTED,
+ and it is not involved during rollback. */
+ ut_a(data);
ut_a(len != UNIV_SQL_NULL);
needs_copy = TRUE;
@@ -863,8 +874,14 @@ row_sel_get_clust_rec(
clust_rec, index, offsets,
node->row_lock_mode, lock_type, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
+ /* Declare the variable uninitialized in Valgrind.
+ It should be set to DB_SUCCESS at func_exit. */
+ UNIV_MEM_INVALID(&err, sizeof err);
+ break;
+ default:
goto err_exit;
}
} else {
@@ -920,6 +937,7 @@ row_sel_get_clust_rec(
when plan->clust_pcur was positioned. The latch will not be
released until mtr_commit(mtr). */
+ ut_ad(!rec_get_deleted_flag(clust_rec, rec_offs_comp(offsets)));
row_sel_fetch_columns(index, clust_rec, offsets,
UT_LIST_GET_FIRST(plan->columns));
*out_rec = clust_rec;
@@ -934,9 +952,9 @@ err_exit:
/*********************************************************************//**
Sets a lock on a record.
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
UNIV_INLINE
-ulint
+enum db_err
sel_set_rec_lock(
/*=============*/
const buf_block_t* block, /*!< in: buffer block of rec */
@@ -948,8 +966,8 @@ sel_set_rec_lock(
LOC_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
{
- trx_t* trx;
- ulint err;
+ trx_t* trx;
+ enum db_err err;
trx = thr_get_trx(thr);
@@ -1482,11 +1500,15 @@ rec_loop:
node->row_lock_mode,
lock_type, thr);
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
/* Note that in this case we will store in pcur
the PREDECESSOR of the record we are waiting
the lock for */
-
goto lock_wait_or_error;
}
}
@@ -1538,8 +1560,12 @@ skip_lock:
rec, index, offsets,
node->row_lock_mode, lock_type, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -1614,6 +1640,13 @@ skip_lock:
}
if (old_vers == NULL) {
+ /* The record does not exist
+ in our read view. Skip it, but
+ first attempt to determine
+ whether the index segment we
+ are searching through has been
+ exhausted. */
+
offsets = rec_get_offsets(
rec, index, offsets,
ULINT_UNDEFINED, &heap);
@@ -2498,6 +2531,7 @@ row_sel_field_store_in_mysql_format(
byte* pad_ptr;
ut_ad(len != UNIV_SQL_NULL);
+ UNIV_MEM_ASSERT_RW(data, len);
switch (templ->type) {
case DATA_INT:
@@ -2632,9 +2666,8 @@ Convert a row in the Innobase format to a row in the MySQL format.
Note that the template in prebuilt may advise us to copy only a few
columns to mysql_rec, other columns are left blank. All columns may not
be needed in the query.
-@return TRUE if success, FALSE if could not allocate memory for a BLOB
-(though we may also assert in that case) */
-static
+@return TRUE on success, FALSE if not all columns could be retrieved */
+static __attribute__((warn_unused_result))
ibool
row_sel_store_mysql_rec(
/*====================*/
@@ -2657,12 +2690,19 @@ row_sel_store_mysql_rec(
ut_ad(prebuilt->mysql_template);
ut_ad(prebuilt->default_rec);
ut_ad(rec_offs_validate(rec, NULL, offsets));
+ ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets)));
if (UNIV_LIKELY_NULL(prebuilt->blob_heap)) {
mem_heap_free(prebuilt->blob_heap);
prebuilt->blob_heap = NULL;
}
+ /* init null bytes with default values as they might be
+ left uninitialized in some cases and these uninited bytes
+ might be copied into mysql record buffer that leads to
+ valgrind warnings */
+ memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len);
+
for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i;
@@ -2698,6 +2738,21 @@ row_sel_store_mysql_rec(
dict_table_zip_size(prebuilt->table),
templ->rec_field_no, &len, heap);
+ if (UNIV_UNLIKELY(!data)) {
+ /* The externally stored field
+ was not written yet. This
+ record should only be seen by
+ recv_recovery_rollback_active()
+ or any TRX_ISO_READ_UNCOMMITTED
+ transactions. */
+
+ if (extern_field_heap) {
+ mem_heap_free(extern_field_heap);
+ }
+
+ return(FALSE);
+ }
+
ut_a(len != UNIV_SQL_NULL);
} else {
/* Field is stored in the row. */
@@ -2746,6 +2801,9 @@ row_sel_store_mysql_rec(
/* MySQL assumes that the field for an SQL
NULL value is set to the default value. */
+ UNIV_MEM_ASSERT_RW(prebuilt->default_rec
+ + templ->mysql_col_offset,
+ templ->mysql_col_len);
mysql_rec[templ->mysql_null_byte_offset]
|= (byte) templ->mysql_null_bit_mask;
memcpy(mysql_rec + templ->mysql_col_offset,
@@ -2797,9 +2855,9 @@ row_sel_build_prev_vers_for_mysql(
Retrieves the clustered index record corresponding to a record in a
non-clustered index. Does the necessary locking. Used in the MySQL
interface.
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
static
-ulint
+enum db_err
row_sel_get_clust_rec_for_mysql(
/*============================*/
row_prebuilt_t* prebuilt,/*!< in: prebuilt struct in the handle */
@@ -2826,7 +2884,7 @@ row_sel_get_clust_rec_for_mysql(
dict_index_t* clust_index;
const rec_t* clust_rec;
rec_t* old_vers;
- ulint err;
+ enum db_err err;
trx_t* trx;
*out_rec = NULL;
@@ -2885,6 +2943,7 @@ row_sel_get_clust_rec_for_mysql(
clust_rec = NULL;
+ err = DB_SUCCESS;
goto func_exit;
}
@@ -2900,8 +2959,11 @@ row_sel_get_clust_rec_for_mysql(
0, btr_pcur_get_block(prebuilt->clust_pcur),
clust_rec, clust_index, *offsets,
prebuilt->select_lock_type, LOCK_REC_NOT_GAP, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
+ break;
+ default:
goto err_exit;
}
} else {
@@ -2961,6 +3023,8 @@ row_sel_get_clust_rec_for_mysql(
rec, sec_index, clust_rec, clust_index));
#endif
}
+
+ err = DB_SUCCESS;
}
func_exit:
@@ -2973,7 +3037,6 @@ func_exit:
btr_pcur_store_position(prebuilt->clust_pcur, mtr);
}
- err = DB_SUCCESS;
err_exit:
return(err);
}
@@ -3070,6 +3133,11 @@ row_sel_pop_cached_row_for_mysql(
for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i;
+#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
+ UNIV_MEM_ASSERT_RW(cached_rec
+ + templ->mysql_col_offset,
+ templ->mysql_col_len);
+#endif
ut_memcpy(buf + templ->mysql_col_offset,
cached_rec + templ->mysql_col_offset,
templ->mysql_col_len);
@@ -3084,6 +3152,11 @@ row_sel_pop_cached_row_for_mysql(
}
}
else {
+#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
+ UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache
+ [prebuilt->fetch_cache_first],
+ prebuilt->mysql_prefix_len);
+#endif
ut_memcpy(buf,
prebuilt->fetch_cache[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len);
@@ -3097,9 +3170,10 @@ row_sel_pop_cached_row_for_mysql(
}
/********************************************************************//**
-Pushes a row for MySQL to the fetch cache. */
-UNIV_INLINE
-void
+Pushes a row for MySQL to the fetch cache.
+@return TRUE on success, FALSE if the record contains incomplete BLOBs */
+UNIV_INLINE __attribute__((warn_unused_result))
+ibool
row_sel_push_cache_row_for_mysql(
/*=============================*/
row_prebuilt_t* prebuilt, /*!< in: prebuilt struct */
@@ -3134,15 +3208,18 @@ row_sel_push_cache_row_for_mysql(
}
ut_ad(prebuilt->fetch_cache_first == 0);
+ UNIV_MEM_INVALID(prebuilt->fetch_cache[prebuilt->n_fetch_cached],
+ prebuilt->mysql_row_len);
if (UNIV_UNLIKELY(!row_sel_store_mysql_rec(
prebuilt->fetch_cache[
prebuilt->n_fetch_cached],
prebuilt, rec, offsets))) {
- ut_error;
+ return(FALSE);
}
prebuilt->n_fetch_cached++;
+ return(TRUE);
}
/*********************************************************************//**
@@ -3537,11 +3614,21 @@ row_search_for_mysql(
if (!row_sel_store_mysql_rec(buf, prebuilt,
rec, offsets)) {
- err = DB_TOO_BIG_RECORD;
-
- /* We let the main loop to do the
- error handling */
- goto shortcut_fails_too_big_rec;
+ /* Only fresh inserts may contain
+ incomplete externally stored
+ columns. Pretend that such
+ records do not exist. Such
+ records may only be accessed
+ at the READ UNCOMMITTED
+ isolation level or when
+ rolling back a recovered
+ transaction. Rollback happens
+ at a lower level, not here. */
+ ut_a(trx->isolation_level
+ == TRX_ISO_READ_UNCOMMITTED);
+
+ /* Proceed as in case SEL_RETRY. */
+ break;
}
mtr_commit(&mtr);
@@ -3581,7 +3668,7 @@ release_search_latch_if_needed:
default:
ut_ad(0);
}
-shortcut_fails_too_big_rec:
+
mtr_commit(&mtr);
mtr_start(&mtr);
}
@@ -3595,6 +3682,13 @@ shortcut_fails_too_big_rec:
trx->has_search_latch = FALSE;
}
+ ut_ad(prebuilt->sql_stat_start || trx->conc_state == TRX_ACTIVE);
+ ut_ad(trx->conc_state == TRX_NOT_STARTED
+ || trx->conc_state == TRX_ACTIVE);
+ ut_ad(prebuilt->sql_stat_start
+ || prebuilt->select_lock_type != LOCK_NONE
+ || trx->read_view);
+
trx_start_if_not_started(trx);
if (trx->isolation_level <= TRX_ISO_READ_COMMITTED
@@ -3679,8 +3773,12 @@ shortcut_fails_too_big_rec:
prebuilt->select_lock_type,
LOCK_GAP, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3778,8 +3876,12 @@ rec_loop:
prebuilt->select_lock_type,
LOCK_ORDINARY, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3909,8 +4011,11 @@ wrong_offs:
prebuilt->select_lock_type, LOCK_GAP,
thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3945,8 +4050,11 @@ wrong_offs:
prebuilt->select_lock_type, LOCK_GAP,
thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -4016,15 +4124,21 @@ no_gap_lock:
switch (err) {
const rec_t* old_vers;
- case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
if (srv_locks_unsafe_for_binlog
- || trx->isolation_level <= TRX_ISO_READ_COMMITTED) {
+ || trx->isolation_level
+ <= TRX_ISO_READ_COMMITTED) {
/* Note that a record of
prebuilt->index was locked. */
prebuilt->new_rec_locks = 1;
}
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
break;
case DB_LOCK_WAIT:
+ /* Never unlock rows that were part of a conflict. */
+ prebuilt->new_rec_locks = 0;
+
if (UNIV_LIKELY(prebuilt->row_read_type
!= ROW_READ_TRY_SEMI_CONSISTENT)
|| unique_search
@@ -4054,7 +4168,6 @@ no_gap_lock:
if (UNIV_LIKELY(trx->wait_lock != NULL)) {
lock_cancel_waiting_and_release(
trx->wait_lock);
- prebuilt->new_rec_locks = 0;
} else {
mutex_exit(&kernel_mutex);
@@ -4066,9 +4179,6 @@ no_gap_lock:
ULINT_UNDEFINED,
&heap);
err = DB_SUCCESS;
- /* Note that a record of
- prebuilt->index was locked. */
- prebuilt->new_rec_locks = 1;
break;
}
mutex_exit(&kernel_mutex);
@@ -4205,27 +4315,30 @@ requires_clust_rec:
err = row_sel_get_clust_rec_for_mysql(prebuilt, index, rec,
thr, &clust_rec,
&offsets, &heap, &mtr);
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS:
+ if (clust_rec == NULL) {
+ /* The record did not exist in the read view */
+ ut_ad(prebuilt->select_lock_type == LOCK_NONE);
+ goto next_rec;
+ }
+ break;
+ case DB_SUCCESS_LOCKED_REC:
+ ut_a(clust_rec != NULL);
+ if (srv_locks_unsafe_for_binlog
+ || trx->isolation_level
+ <= TRX_ISO_READ_COMMITTED) {
+ /* Note that the clustered index record
+ was locked. */
+ prebuilt->new_rec_locks = 2;
+ }
+ err = DB_SUCCESS;
+ break;
+ default:
goto lock_wait_or_error;
}
- if (clust_rec == NULL) {
- /* The record did not exist in the read view */
- ut_ad(prebuilt->select_lock_type == LOCK_NONE);
-
- goto next_rec;
- }
-
- if ((srv_locks_unsafe_for_binlog
- || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
- && prebuilt->select_lock_type != LOCK_NONE) {
- /* Note that both the secondary index record
- and the clustered index record were locked. */
- ut_ad(prebuilt->new_rec_locks == 1);
- prebuilt->new_rec_locks = 2;
- }
-
if (UNIV_UNLIKELY(rec_get_deleted_flag(clust_rec, comp))) {
/* The record is delete marked: we can skip it */
@@ -4290,9 +4403,18 @@ requires_clust_rec:
not cache rows because there the cursor is a scrollable
cursor. */
- row_sel_push_cache_row_for_mysql(prebuilt, result_rec,
- offsets);
- if (prebuilt->n_fetch_cached == MYSQL_FETCH_CACHE_SIZE) {
+ if (!row_sel_push_cache_row_for_mysql(prebuilt, result_rec,
+ offsets)) {
+ /* Only fresh inserts may contain incomplete
+ externally stored columns. Pretend that such
+ records do not exist. Such records may only be
+ accessed at the READ UNCOMMITTED isolation
+ level or when rolling back a recovered
+ transaction. Rollback happens at a lower
+ level, not here. */
+ ut_a(trx->isolation_level == TRX_ISO_READ_UNCOMMITTED);
+ } else if (prebuilt->n_fetch_cached
+ == MYSQL_FETCH_CACHE_SIZE) {
goto got_row;
}
@@ -4308,9 +4430,17 @@ requires_clust_rec:
} else {
if (!row_sel_store_mysql_rec(buf, prebuilt,
result_rec, offsets)) {
- err = DB_TOO_BIG_RECORD;
-
- goto lock_wait_or_error;
+ /* Only fresh inserts may contain
+ incomplete externally stored
+ columns. Pretend that such records do
+ not exist. Such records may only be
+ accessed at the READ UNCOMMITTED
+ isolation level or when rolling back a
+ recovered transaction. Rollback
+ happens at a lower level, not here. */
+ ut_a(trx->isolation_level
+ == TRX_ISO_READ_UNCOMMITTED);
+ goto next_rec;
}
}
diff --git a/storage/innodb_plugin/row/row0uins.c b/storage/innodb_plugin/row/row0uins.c
index 9f9c814f1a5..930a5cf13b6 100644
--- a/storage/innodb_plugin/row/row0uins.c
+++ b/storage/innodb_plugin/row/row0uins.c
@@ -46,6 +46,16 @@ Created 2/25/1997 Heikki Tuuri
#include "ibuf0ibuf.h"
#include "log0log.h"
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/***************************************************************//**
Removes a clustered index record. The pcur in node was positioned on the
record, now it is detached.
@@ -152,7 +162,6 @@ row_undo_ins_remove_sec_low(
ulint err;
mtr_t mtr;
- log_free_check();
mtr_start(&mtr);
found = row_search_index_entry(index, entry, mode, &pcur, &mtr);
@@ -335,6 +344,7 @@ row_undo_ins(
transactions. */
ut_a(trx_is_recv(node->trx));
} else {
+ log_free_check();
err = row_undo_ins_remove_sec(node->index, entry);
if (err != DB_SUCCESS) {
@@ -346,5 +356,6 @@ row_undo_ins(
node->index = dict_table_get_next_index(node->index);
}
+ log_free_check();
return(row_undo_ins_remove_clust_rec(node));
}
diff --git a/storage/innodb_plugin/row/row0umod.c b/storage/innodb_plugin/row/row0umod.c
index e7245dbee41..8464b0f95cc 100644
--- a/storage/innodb_plugin/row/row0umod.c
+++ b/storage/innodb_plugin/row/row0umod.c
@@ -58,12 +58,22 @@ delete marked clustered index record was delete unmarked and possibly also
some of its fields were changed. Now, it is possible that the delete marked
version has become obsolete at the time the undo is started. */
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/***********************************************************//**
Checks if also the previous version of the clustered index record was
modified or inserted by the same transaction, and its undo number is such
that it should be undone in the same rollback.
@return TRUE if also previous modify or insert of this row should be undone */
-UNIV_INLINE
+static
ibool
row_undo_mod_undo_also_prev_vers(
/*=============================*/
@@ -231,6 +241,8 @@ row_undo_mod_clust(
ut_ad(node && thr);
+ log_free_check();
+
/* Check if also the previous version of the clustered index record
should be undone in this same rollback operation */
@@ -657,24 +669,55 @@ row_undo_mod_upd_exist_sec(
/* Build the newest version of the index entry */
entry = row_build_index_entry(node->row, node->ext,
index, heap);
- ut_a(entry);
- /* NOTE that if we updated the fields of a
- delete-marked secondary index record so that
- alphabetically they stayed the same, e.g.,
- 'abc' -> 'aBc', we cannot return to the original
- values because we do not know them. But this should
- not cause problems because in row0sel.c, in queries
- we always retrieve the clustered index record or an
- earlier version of it, if the secondary index record
- through which we do the search is delete-marked. */
-
- err = row_undo_mod_del_mark_or_remove_sec(node, thr,
- index,
- entry);
- if (err != DB_SUCCESS) {
- mem_heap_free(heap);
-
- return(err);
+ if (UNIV_UNLIKELY(!entry)) {
+ /* The server must have crashed in
+ row_upd_clust_rec_by_insert(), in
+ row_ins_index_entry_low() before
+ btr_store_big_rec_extern_fields()
+ has written the externally stored columns
+ (BLOBs) of the new clustered index entry. */
+
+ /* The table must be in DYNAMIC or COMPRESSED
+ format. REDUNDANT and COMPACT formats
+ store a local 768-byte prefix of each
+ externally stored column. */
+ ut_a(dict_table_get_format(index->table)
+ >= DICT_TF_FORMAT_ZIP);
+
+ /* This is only legitimate when
+ rolling back an incomplete transaction
+ after crash recovery. */
+ ut_a(thr_get_trx(thr)->is_recovered);
+
+ /* The server must have crashed before
+ completing the insert of the new
+ clustered index entry and before
+ inserting to the secondary indexes.
+ Because node->row was not yet written
+ to this index, we can ignore it. But
+ we must restore node->undo_row. */
+ } else {
+ /* NOTE that if we updated the fields of a
+ delete-marked secondary index record so that
+ alphabetically they stayed the same, e.g.,
+ 'abc' -> 'aBc', we cannot return to the
+ original values because we do not know them.
+ But this should not cause problems because
+ in row0sel.c, in queries we always retrieve
+ the clustered index record or an earlier
+ version of it, if the secondary index record
+ through which we do the search is
+ delete-marked. */
+
+ err = row_undo_mod_del_mark_or_remove_sec(
+ node, thr, index, entry);
+ if (err != DB_SUCCESS) {
+ mem_heap_free(heap);
+
+ return(err);
+ }
+
+ mem_heap_empty(heap);
}
/* We may have to update the delete mark in the
@@ -683,7 +726,6 @@ row_undo_mod_upd_exist_sec(
the secondary index record if we updated its fields
but alphabetically they stayed the same, e.g.,
'abc' -> 'aBc'. */
- mem_heap_empty(heap);
entry = row_build_index_entry(node->undo_row,
node->undo_ext,
index, heap);
diff --git a/storage/innodb_plugin/row/row0undo.c b/storage/innodb_plugin/row/row0undo.c
index 3d739c9689a..fd28a4f6520 100644
--- a/storage/innodb_plugin/row/row0undo.c
+++ b/storage/innodb_plugin/row/row0undo.c
@@ -199,8 +199,24 @@ row_undo_search_clust_to_pcur(
ret = FALSE;
} else {
+ row_ext_t** ext;
+
+ if (dict_table_get_format(node->table) >= DICT_TF_FORMAT_ZIP) {
+ /* In DYNAMIC or COMPRESSED format, there is
+ no prefix of externally stored columns in the
+ clustered index record. Build a cache of
+ column prefixes. */
+ ext = &node->ext;
+ } else {
+ /* REDUNDANT and COMPACT formats store a local
+ 768-byte prefix of each externally stored
+ column. No cache is needed. */
+ ext = NULL;
+ node->ext = NULL;
+ }
+
node->row = row_build(ROW_COPY_DATA, clust_index, rec,
- offsets, NULL, &node->ext, node->heap);
+ offsets, NULL, ext, node->heap);
if (node->update) {
node->undo_row = dtuple_copy(node->row, node->heap);
row_upd_replace(node->undo_row, &node->undo_ext,
@@ -297,7 +313,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_lock_data_dictionary(trx);
+ row_mysql_freeze_data_dictionary(trx);
}
if (node->state == UNDO_NODE_INSERT) {
@@ -312,7 +328,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_unlock_data_dictionary(trx);
+ row_mysql_unfreeze_data_dictionary(trx);
}
/* Do some cleanup */
diff --git a/storage/innodb_plugin/row/row0upd.c b/storage/innodb_plugin/row/row0upd.c
index 95d1d00aeef..397b117c067 100644
--- a/storage/innodb_plugin/row/row0upd.c
+++ b/storage/innodb_plugin/row/row0upd.c
@@ -92,6 +92,16 @@ the x-latch freed? The most efficient way for performing a
searched delete is obviously to keep the x-latch for several
steps of query graph execution. */
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/***********************************************************//**
Checks if an update vector changes some of the first ordering fields of an
index record. This is only used in foreign key checks and we can assume
@@ -1388,6 +1398,7 @@ row_upd_store_row(
dict_index_t* clust_index;
rec_t* rec;
mem_heap_t* heap = NULL;
+ row_ext_t** ext;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
const ulint* offsets;
rec_offs_init(offsets_);
@@ -1404,8 +1415,22 @@ row_upd_store_row(
offsets = rec_get_offsets(rec, clust_index, offsets_,
ULINT_UNDEFINED, &heap);
+
+ if (dict_table_get_format(node->table) >= DICT_TF_FORMAT_ZIP) {
+ /* In DYNAMIC or COMPRESSED format, there is no prefix
+ of externally stored columns in the clustered index
+ record. Build a cache of column prefixes. */
+ ext = &node->ext;
+ } else {
+ /* REDUNDANT and COMPACT formats store a local
+ 768-byte prefix of each externally stored column.
+ No cache is needed. */
+ ext = NULL;
+ node->ext = NULL;
+ }
+
node->row = row_build(ROW_COPY_DATA, clust_index, rec, offsets,
- NULL, &node->ext, node->heap);
+ NULL, ext, node->heap);
if (node->is_delete) {
node->upd_row = NULL;
node->upd_ext = NULL;
@@ -1453,7 +1478,6 @@ row_upd_sec_index_entry(
entry = row_build_index_entry(node->row, node->ext, index, heap);
ut_a(entry);
- log_free_check();
mtr_start(&mtr);
found = row_search_index_entry(index, entry, BTR_MODIFY_LEAF, &pcur,
@@ -1529,7 +1553,7 @@ Updates the secondary index record if it is changed in the row update or
deletes it if this is a delete.
@return DB_SUCCESS if operation successfully completed, else error
code or DB_LOCK_WAIT */
-UNIV_INLINE
+static
ulint
row_upd_sec_step(
/*=============*/
@@ -2015,6 +2039,7 @@ row_upd(
if (node->state == UPD_NODE_UPDATE_CLUSTERED
|| node->state == UPD_NODE_INSERT_CLUSTERED) {
+ log_free_check();
err = row_upd_clust_step(node, thr);
if (err != DB_SUCCESS) {
@@ -2029,6 +2054,8 @@ row_upd(
}
while (node->index != NULL) {
+
+ log_free_check();
err = row_upd_sec_step(node, thr);
if (err != DB_SUCCESS) {
diff --git a/storage/innodb_plugin/setup.sh b/storage/innodb_plugin/setup.sh
index 23fe729a406..b5d8299d411 100755
--- a/storage/innodb_plugin/setup.sh
+++ b/storage/innodb_plugin/setup.sh
@@ -21,7 +21,7 @@
set -eu
-TARGETDIR=../storage/innobase
+TARGETDIR=../storage/innodb_plugin
# link the build scripts
BUILDSCRIPTS="compile-innodb compile-innodb-debug"
diff --git a/storage/innodb_plugin/srv/srv0srv.c b/storage/innodb_plugin/srv/srv0srv.c
index 63c355cea32..f7e7e351bdc 100644
--- a/storage/innodb_plugin/srv/srv0srv.c
+++ b/storage/innodb_plugin/srv/srv0srv.c
@@ -1609,12 +1609,16 @@ srv_suspend_mysql_thread(
innodb_lock_wait_timeout, because trx->mysql_thd == NULL. */
lock_wait_timeout = thd_lock_wait_timeout(trx->mysql_thd);
- if (trx_is_interrupted(trx)
- || (lock_wait_timeout < 100000000
- && wait_time > (double) lock_wait_timeout)) {
+ if (lock_wait_timeout < 100000000
+ && wait_time > (double) lock_wait_timeout) {
trx->error_state = DB_LOCK_WAIT_TIMEOUT;
}
+
+ if (trx_is_interrupted(trx)) {
+
+ trx->error_state = DB_INTERRUPTED;
+ }
}
/********************************************************************//**
diff --git a/storage/innodb_plugin/srv/srv0start.c b/storage/innodb_plugin/srv/srv0start.c
index e517b9a86b0..ba9fc831b39 100644
--- a/storage/innodb_plugin/srv/srv0start.c
+++ b/storage/innodb_plugin/srv/srv0start.c
@@ -2018,9 +2018,13 @@ innobase_shutdown_for_mysql(void)
pars_lexer_close();
log_mem_free();
buf_pool_free();
- ut_free_all_mem();
mem_close();
+ /* ut_free_all_mem() frees all allocated memory not freed yet
+ in shutdown, and it will also free the ut_list_mutex, so it
+ should be the last one for all operation */
+ ut_free_all_mem();
+
if (os_thread_count != 0
|| os_event_count != 0
|| os_mutex_count != 0
diff --git a/storage/innodb_plugin/sync/sync0arr.c b/storage/innodb_plugin/sync/sync0arr.c
index ed9e25bf2f2..3c825e2202b 100644
--- a/storage/innodb_plugin/sync/sync0arr.c
+++ b/storage/innodb_plugin/sync/sync0arr.c
@@ -498,7 +498,9 @@ sync_array_cell_print(
|| type == RW_LOCK_WAIT_EX
|| type == RW_LOCK_SHARED) {
- fputs(type == RW_LOCK_EX ? "X-lock on" : "S-lock on", file);
+ fputs(type == RW_LOCK_EX ? "X-lock on"
+ : type == RW_LOCK_WAIT_EX ? "X-lock (wait_ex) on"
+ : "S-lock on", file);
rwlock = cell->old_wait_rw_lock;
diff --git a/storage/innodb_plugin/sync/sync0rw.c b/storage/innodb_plugin/sync/sync0rw.c
index d231b6acdf7..52eaa5d0f43 100644
--- a/storage/innodb_plugin/sync/sync0rw.c
+++ b/storage/innodb_plugin/sync/sync0rw.c
@@ -267,7 +267,7 @@ rw_lock_create_func(
lock->level = level;
#endif /* UNIV_SYNC_DEBUG */
- lock->magic_n = RW_LOCK_MAGIC_N;
+ ut_d(lock->magic_n = RW_LOCK_MAGIC_N);
lock->cfile_name = cfile_name;
lock->cline = (unsigned int) cline;
@@ -282,10 +282,8 @@ rw_lock_create_func(
mutex_enter(&rw_lock_list_mutex);
- if (UT_LIST_GET_LEN(rw_lock_list) > 0) {
- ut_a(UT_LIST_GET_FIRST(rw_lock_list)->magic_n
- == RW_LOCK_MAGIC_N);
- }
+ ut_ad(UT_LIST_GET_FIRST(rw_lock_list) == NULL
+ || UT_LIST_GET_FIRST(rw_lock_list)->magic_n == RW_LOCK_MAGIC_N);
UT_LIST_ADD_FIRST(list, rw_lock_list, lock);
@@ -305,8 +303,6 @@ rw_lock_free(
ut_ad(rw_lock_validate(lock));
ut_a(lock->lock_word == X_LOCK_DECR);
- lock->magic_n = 0;
-
#ifndef INNODB_RW_LOCKS_USE_ATOMICS
mutex_free(rw_lock_get_mutex(lock));
#endif /* INNODB_RW_LOCKS_USE_ATOMICS */
@@ -316,16 +312,16 @@ rw_lock_free(
os_event_free(lock->wait_ex_event);
- if (UT_LIST_GET_PREV(list, lock)) {
- ut_a(UT_LIST_GET_PREV(list, lock)->magic_n == RW_LOCK_MAGIC_N);
- }
- if (UT_LIST_GET_NEXT(list, lock)) {
- ut_a(UT_LIST_GET_NEXT(list, lock)->magic_n == RW_LOCK_MAGIC_N);
- }
+ ut_ad(UT_LIST_GET_PREV(list, lock) == NULL
+ || UT_LIST_GET_PREV(list, lock)->magic_n == RW_LOCK_MAGIC_N);
+ ut_ad(UT_LIST_GET_NEXT(list, lock) == NULL
+ || UT_LIST_GET_NEXT(list, lock)->magic_n == RW_LOCK_MAGIC_N);
UT_LIST_REMOVE(list, rw_lock_list, lock);
mutex_exit(&rw_lock_list_mutex);
+
+ ut_d(lock->magic_n = 0);
}
#ifdef UNIV_DEBUG
@@ -344,7 +340,7 @@ rw_lock_validate(
ulint waiters = rw_lock_get_waiters(lock);
lint lock_word = lock->lock_word;
- ut_a(lock->magic_n == RW_LOCK_MAGIC_N);
+ ut_ad(lock->magic_n == RW_LOCK_MAGIC_N);
ut_a(waiters == 0 || waiters == 1);
ut_a(lock_word > -X_LOCK_DECR ||(-lock_word) % X_LOCK_DECR == 0);
diff --git a/storage/innodb_plugin/trx/trx0i_s.c b/storage/innodb_plugin/trx/trx0i_s.c
index c160eb2942a..5bc8302d0c0 100644
--- a/storage/innodb_plugin/trx/trx0i_s.c
+++ b/storage/innodb_plugin/trx/trx0i_s.c
@@ -429,6 +429,9 @@ fill_trx_row(
which to copy volatile
strings */
{
+ const char* stmt;
+ size_t stmt_len;
+
row->trx_id = trx_get_id(trx);
row->trx_started = (ib_time_t) trx->start_time;
row->trx_state = trx_get_que_state_str(trx);
@@ -449,37 +452,32 @@ fill_trx_row(
row->trx_weight = (ullint) ut_conv_dulint_to_longlong(TRX_WEIGHT(trx));
- if (trx->mysql_thd != NULL) {
- row->trx_mysql_thread_id
- = thd_get_thread_id(trx->mysql_thd);
- } else {
+ if (trx->mysql_thd == NULL) {
/* For internal transactions e.g., purge and transactions
being recovered at startup there is no associated MySQL
thread data structure. */
row->trx_mysql_thread_id = 0;
+ row->trx_query = NULL;
+ return(TRUE);
}
- if (trx->mysql_query_str != NULL && *trx->mysql_query_str != NULL) {
+ row->trx_mysql_thread_id = thd_get_thread_id(trx->mysql_thd);
+ stmt = innobase_get_stmt(trx->mysql_thd, &stmt_len);
- if (strlen(*trx->mysql_query_str)
- > TRX_I_S_TRX_QUERY_MAX_LEN) {
+ if (stmt != NULL) {
- char query[TRX_I_S_TRX_QUERY_MAX_LEN + 1];
+ char query[TRX_I_S_TRX_QUERY_MAX_LEN + 1];
- memcpy(query, *trx->mysql_query_str,
- TRX_I_S_TRX_QUERY_MAX_LEN);
- query[TRX_I_S_TRX_QUERY_MAX_LEN] = '\0';
+ if (stmt_len > TRX_I_S_TRX_QUERY_MAX_LEN) {
+ stmt_len = TRX_I_S_TRX_QUERY_MAX_LEN;
+ }
- row->trx_query = ha_storage_put_memlim(
- cache->storage, query,
- TRX_I_S_TRX_QUERY_MAX_LEN + 1,
- MAX_ALLOWED_FOR_STORAGE(cache));
- } else {
+ memcpy(query, stmt, stmt_len);
+ query[stmt_len] = '\0';
- row->trx_query = ha_storage_put_str_memlim(
- cache->storage, *trx->mysql_query_str,
- MAX_ALLOWED_FOR_STORAGE(cache));
- }
+ row->trx_query = ha_storage_put_memlim(
+ cache->storage, stmt, stmt_len + 1,
+ MAX_ALLOWED_FOR_STORAGE(cache));
if (row->trx_query == NULL) {
diff --git a/storage/innodb_plugin/trx/trx0trx.c b/storage/innodb_plugin/trx/trx0trx.c
index 6ef7e62e6ae..9722bb59a5e 100644
--- a/storage/innodb_plugin/trx/trx0trx.c
+++ b/storage/innodb_plugin/trx/trx0trx.c
@@ -119,7 +119,6 @@ trx_create(
trx->table_id = ut_dulint_zero;
trx->mysql_thd = NULL;
- trx->mysql_query_str = NULL;
trx->active_trans = 0;
trx->duplicates = 0;
@@ -940,7 +939,6 @@ trx_commit_off_kernel(
trx->rseg = NULL;
trx->undo_no = ut_dulint_zero;
trx->last_sql_stat_start.least_undo_no = ut_dulint_zero;
- trx->mysql_query_str = NULL;
ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0);
ut_ad(UT_LIST_GET_LEN(trx->trx_locks) == 0);
diff --git a/storage/maria/CMakeLists.txt b/storage/maria/CMakeLists.txt
index 9e8424ba97f..850c2dd40cd 100644
--- a/storage/maria/CMakeLists.txt
+++ b/storage/maria/CMakeLists.txt
@@ -23,7 +23,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
${CMAKE_SOURCE_DIR}/sql
${CMAKE_SOURCE_DIR}/regex
${CMAKE_SOURCE_DIR}/extra/yassl/include)
-SET(MARIA_SOURCES ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c
+SET(ARIA_SOURCES ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c
ma_rnext.c ma_rnext_same.c
ma_search.c ma_page.c ma_key_recover.c ma_key.c
ma_locking.c ma_state.c
@@ -43,52 +43,55 @@ SET(MARIA_SOURCES ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c
ha_maria.cc trnman.c lockman.c tablockman.c
ma_rt_index.c ma_rt_key.c ma_rt_mbr.c ma_rt_split.c
ma_sp_key.c ma_control_file.c ma_loghandler.c
- ma_pagecache.c ma_pagecaches.c
+ ma_pagecache.c ma_pagecaches.c compat_aliases.cc compat_aliases.h
ma_checkpoint.c ma_recovery.c ma_commit.c ma_pagecrc.c
ha_maria.h maria_def.h ma_recovery_util.c ma_servicethread.c
)
-MYSQL_STORAGE_ENGINE(MARIA)
+MYSQL_STORAGE_ENGINE(ARIA)
IF(NOT SOURCE_SUBLIBS)
- ADD_DEPENDENCIES(maria GenError)
+ ADD_DEPENDENCIES(aria GenError)
-ADD_EXECUTABLE(maria_ftdump maria_ftdump.c)
-TARGET_LINK_LIBRARIES(maria_ftdump maria myisam mysys dbug strings zlib wsock32)
+ADD_EXECUTABLE(aria_ftdump maria_ftdump.c)
+TARGET_LINK_LIBRARIES(aria_ftdump aria myisam mysys dbug strings zlib wsock32)
-ADD_EXECUTABLE(maria_chk maria_chk.c)
-TARGET_LINK_LIBRARIES(maria_chk maria myisam mysys dbug strings zlib wsock32)
+ADD_EXECUTABLE(aria_chk maria_chk.c)
+TARGET_LINK_LIBRARIES(aria_chk aria myisam mysys dbug strings zlib wsock32)
-ADD_EXECUTABLE(maria_read_log maria_read_log.c)
-TARGET_LINK_LIBRARIES(maria_read_log maria myisam mysys dbug strings zlib wsock32)
+ADD_EXECUTABLE(aria_read_log maria_read_log.c)
+TARGET_LINK_LIBRARIES(aria_read_log aria myisam mysys dbug strings zlib wsock32)
-ADD_EXECUTABLE(maria_pack maria_pack.c)
-TARGET_LINK_LIBRARIES(maria_pack maria myisam mysys dbug strings zlib wsock32)
+ADD_EXECUTABLE(aria_pack maria_pack.c)
+TARGET_LINK_LIBRARIES(aria_pack aria myisam mysys dbug strings zlib wsock32)
-ADD_EXECUTABLE(maria_dump_log ma_loghandler.c unittest/ma_loghandler_examples.c)
-TARGET_LINK_LIBRARIES(maria_dump_log maria myisam mysys dbug strings zlib wsock32)
-SET_TARGET_PROPERTIES(maria_dump_log PROPERTIES COMPILE_FLAGS "-DMARIA_DUMP_LOG")
+ADD_EXECUTABLE(aria_dump_log ma_loghandler.c unittest/ma_loghandler_examples.c)
+TARGET_LINK_LIBRARIES(aria_dump_log aria myisam mysys dbug strings zlib wsock32)
+SET_TARGET_PROPERTIES(aria_dump_log PROPERTIES COMPILE_FLAGS "-DMARIA_DUMP_LOG")
ADD_EXECUTABLE(ma_test1 ma_test1.c)
-TARGET_LINK_LIBRARIES(ma_test1 maria myisam mysys dbug strings zlib wsock32)
+TARGET_LINK_LIBRARIES(ma_test1 aria myisam mysys dbug strings zlib wsock32)
ADD_EXECUTABLE(ma_test2 ma_test2.c)
-TARGET_LINK_LIBRARIES(ma_test2 maria myisam mysys dbug strings zlib wsock32)
+TARGET_LINK_LIBRARIES(ma_test2 aria myisam mysys dbug strings zlib wsock32)
ADD_EXECUTABLE(ma_test3 ma_test3.c)
-TARGET_LINK_LIBRARIES(ma_test3 maria myisam mysys dbug strings zlib wsock32)
+TARGET_LINK_LIBRARIES(ma_test3 aria myisam mysys dbug strings zlib wsock32)
ADD_EXECUTABLE(ma_rt_test ma_rt_test.c)
-TARGET_LINK_LIBRARIES(ma_rt_test maria myisam mysys dbug strings zlib wsock32)
+TARGET_LINK_LIBRARIES(ma_rt_test aria myisam mysys dbug strings zlib wsock32)
ADD_EXECUTABLE(ma_sp_test ma_sp_test.c)
-TARGET_LINK_LIBRARIES(ma_sp_test maria myisam mysys dbug strings zlib wsock32)
+TARGET_LINK_LIBRARIES(ma_sp_test aria myisam mysys dbug strings zlib wsock32)
IF(EMBED_MANIFESTS)
- MYSQL_EMBED_MANIFEST("maria_ftdump" "asInvoker")
- MYSQL_EMBED_MANIFEST("maria_chk" "asInvoker")
- MYSQL_EMBED_MANIFEST("maria_read_log" "asInvoker")
- MYSQL_EMBED_MANIFEST("maria_pack" "asInvoker")
+ MYSQL_EMBED_MANIFEST("aria_ftdump" "asInvoker")
+ MYSQL_EMBED_MANIFEST("aria_chk" "asInvoker")
+ MYSQL_EMBED_MANIFEST("aria_read_log" "asInvoker")
+ MYSQL_EMBED_MANIFEST("aria_pack" "asInvoker")
ENDIF(EMBED_MANIFESTS)
+INSTALL(TARGETS aria_ftdump aria_chk aria_read_log aria_pack aria_dump_log
+ DESTINATION bin COMPONENT runtime)
+
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/storage/maria/Makefile.am b/storage/maria/Makefile.am
index fe674fb2837..a83063a0226 100644
--- a/storage/maria/Makefile.am
+++ b/storage/maria/Makefile.am
@@ -27,44 +27,47 @@ LDADD =
DEFS = @DEFS@
-# "." is needed first because tests in unittest need libmaria
+# "." is needed first because tests in unittest need libaria
SUBDIRS = . unittest
EXTRA_DIST = ma_test_all.sh ma_test_all.res ma_test_big.sh \
ma_ft_stem.c CMakeLists.txt plug.in ma_test_recovery
pkgdata_DATA =
-pkglib_LIBRARIES = libmaria.a
-bin_PROGRAMS = maria_chk maria_pack maria_ftdump maria_read_log \
- maria_dump_log
-maria_chk_DEPENDENCIES= $(LIBRARIES)
+pkglib_LIBRARIES = libaria.a
+bin_PROGRAMS = aria_chk aria_pack aria_ftdump aria_read_log \
+ aria_dump_log
+aria_chk_DEPENDENCIES= $(LIBRARIES)
# Only reason to link with libmyisam.a here is that it's where some fulltext
-# pieces are (but soon we'll remove fulltext dependencies from Maria).
+# pieces are (but soon we'll remove fulltext dependencies from Aria).
# For now, it imposes that storage/myisam be built before storage/maria.
-maria_chk_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+aria_chk_SOURCES= maria_chk.c
+aria_chk_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
-maria_pack_DEPENDENCIES=$(LIBRARIES)
-maria_pack_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+aria_pack_SOURCES= maria_pack.c
+aria_pack_DEPENDENCIES=$(LIBRARIES)
+aria_pack_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
-maria_read_log_DEPENDENCIES=$(LIBRARIES)
-maria_read_log_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+aria_read_log_SOURCES= maria_read_log.c
+aria_read_log_DEPENDENCIES=$(LIBRARIES)
+aria_read_log_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
-maria_dump_log_DEPENDENCIES=$(LIBRARIES) ma_loghandler.c
-maria_dump_log_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+aria_dump_log_DEPENDENCIES=$(LIBRARIES) ma_loghandler.c
+aria_dump_log_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
-maria_dump_log_SOURCES= ma_loghandler.c unittest/ma_loghandler_examples.c
-maria_dump_log_CPPFLAGS= -DMARIA_DUMP_LOG
+aria_dump_log_SOURCES= ma_loghandler.c unittest/ma_loghandler_examples.c
+aria_dump_log_CPPFLAGS= -DMARIA_DUMP_LOG
noinst_PROGRAMS = ma_test1 ma_test2 ma_test3 ma_rt_test ma_sp_test
noinst_HEADERS = maria_def.h ma_rt_index.h ma_rt_key.h ma_rt_mbr.h \
ma_sp_defs.h ma_fulltext.h ma_ftdefs.h ma_ft_test1.h \
@@ -74,46 +77,47 @@ noinst_HEADERS = maria_def.h ma_rt_index.h ma_rt_key.h ma_rt_mbr.h \
ma_checkpoint.h ma_recovery.h ma_commit.h ma_state.h \
trnman_public.h ma_check_standalone.h \
ma_key_recover.h ma_recovery_util.h \
- ma_servicethread.h
+ ma_servicethread.h compat_aliases.h
ma_test1_DEPENDENCIES= $(LIBRARIES)
-ma_test1_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+ma_test1_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
ma_test2_DEPENDENCIES= $(LIBRARIES)
-ma_test2_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+ma_test2_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
ma_test3_DEPENDENCIES= $(LIBRARIES)
-ma_test3_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+ma_test3_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
#ma_ft_test1_DEPENDENCIES= $(LIBRARIES)
#ma_ft_eval_DEPENDENCIES= $(LIBRARIES)
-maria_ftdump_DEPENDENCIES= $(LIBRARIES)
-maria_ftdump_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+aria_ftdump_SOURCES= maria_ftdump.c
+aria_ftdump_DEPENDENCIES= $(LIBRARIES)
+aria_ftdump_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
ma_rt_test_DEPENDENCIES= $(LIBRARIES)
-ma_rt_test_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+ma_rt_test_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
ma_sp_test_DEPENDENCIES= $(LIBRARIES)
-ma_sp_test_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
+ma_sp_test_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
-libmaria_a_SOURCES = ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c \
+libaria_a_SOURCES = ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c \
ma_rnext.c ma_rnext_same.c \
ma_search.c ma_page.c ma_key_recover.c ma_key.c \
ma_locking.c ma_state.c \
@@ -136,8 +140,8 @@ libmaria_a_SOURCES = ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c \
ma_pagecache.c ma_pagecaches.c \
ma_checkpoint.c ma_recovery.c ma_commit.c \
ma_pagecrc.c ma_recovery_util.c \
- ha_maria.cc ma_servicethread.c
-CLEANFILES = test?.MA? FT?.MA? isam.log ma_test_all ma_rt_test.MA? sp_test.MA? maria_log_control maria_log.0000*
+ ha_maria.cc compat_aliases.cc ma_servicethread.c
+CLEANFILES = test?.MA? FT?.MA? isam.log ma_test_all ma_rt_test.MA? sp_test.MA? aria_log_control aria_log.0000*
SUFFIXES = .sh
diff --git a/storage/maria/compat_aliases.cc b/storage/maria/compat_aliases.cc
new file mode 100644
index 00000000000..2d3c67d69a7
--- /dev/null
+++ b/storage/maria/compat_aliases.cc
@@ -0,0 +1,245 @@
+/* Copyright (C) 2010 Monty Program Ab
+
+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+/*
+ compatibility aliases for system and static variables
+*/
+#include <my_global.h>
+#include <maria.h>
+#include <mysql/plugin.h>
+#include "ma_loghandler.h"
+#include "compat_aliases.h"
+
+ulong block_size_alias;
+static MYSQL_SYSVAR_ULONG(block_size, block_size_alias,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-block-size instead", 0, 0,
+ MARIA_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH,
+ MARIA_MAX_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH);
+
+ulong checkpoint_interval_alias;
+static MYSQL_SYSVAR_ULONG(checkpoint_interval, checkpoint_interval_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-checkpoint-interval instead",
+ NULL, NULL, 30, 0, UINT_MAX, 1);
+
+ulong force_start_after_recovery_failures_alias;
+static MYSQL_SYSVAR_ULONG(force_start_after_recovery_failures, force_start_after_recovery_failures_alias,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-force-start-after-recovery-failures instead",
+ NULL, NULL, 0, 0, UINT_MAX8, 1);
+
+my_bool page_checksum_alias;
+static MYSQL_SYSVAR_BOOL(page_checksum, page_checksum_alias, 0,
+ "Deprecated, use --aria-page-checksum instead", 0, 0, 1);
+
+char *log_dir_path_alias;
+static MYSQL_SYSVAR_STR(log_dir_path, log_dir_path_alias,
+ PLUGIN_VAR_NOSYSVAR | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-log-dir-path instead",
+ NULL, NULL, mysql_real_data_home);
+
+ulong log_file_size_alias;
+static MYSQL_SYSVAR_ULONG(log_file_size, log_file_size_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-log-file-size instead",
+ NULL, NULL, TRANSLOG_FILE_SIZE,
+ TRANSLOG_MIN_FILE_SIZE, 0xffffffffL, TRANSLOG_PAGE_SIZE);
+
+ulong group_commit_alias;
+static MYSQL_SYSVAR_ENUM(group_commit, group_commit_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-group-commit instead",
+ NULL, NULL,
+ TRANSLOG_GCOMMIT_NONE, &maria_group_commit_typelib);
+
+ulong group_commit_interval_alias;
+static MYSQL_SYSVAR_ULONG(group_commit_interval, group_commit_interval_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-group-commit-interval instead",
+ NULL, NULL, 0, 0, UINT_MAX, 1);
+
+ulong log_purge_type_alias;
+static MYSQL_SYSVAR_ENUM(log_purge_type, log_purge_type_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-log-purge-type instead",
+ NULL, NULL, TRANSLOG_PURGE_IMMIDIATE,
+ &maria_translog_purge_type_typelib);
+
+ulonglong max_sort_file_size_alias;
+static MYSQL_SYSVAR_ULONGLONG(max_sort_file_size, max_sort_file_size_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-max-temp-length instead",
+ 0, 0, MAX_FILE_SIZE, 0, MAX_FILE_SIZE, 1024*1024);
+
+ulong pagecache_age_threshold_alias;
+static MYSQL_SYSVAR_ULONG(pagecache_age_threshold, pagecache_age_threshold_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-pagecache-age-threshold instead",
+ 0, 0, 300, 100, ~0L, 100);
+
+ulonglong pagecache_buffer_size_alias;
+static MYSQL_SYSVAR_ULONGLONG(pagecache_buffer_size, pagecache_buffer_size_alias,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-pagecache-buffer-size instead",
+ 0, 0, KEY_CACHE_SIZE, MALLOC_OVERHEAD, ~0UL, IO_SIZE);
+
+ulong pagecache_division_limit_alias;
+static MYSQL_SYSVAR_ULONG(pagecache_division_limit, pagecache_division_limit_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-pagecache-division-limit instead",
+ 0, 0, 100, 1, 100, 1);
+
+ulong recover_alias;
+static MYSQL_SYSVAR_ENUM(recover, recover_alias, PLUGIN_VAR_OPCMDARG,
+ "Deprecated, use --aria-recover instead",
+ NULL, NULL, HA_RECOVER_DEFAULT, &maria_recover_typelib);
+
+ulong repair_threads_alias;
+static MYSQL_THDVAR_ULONG(repair_threads, PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-repair-threads instead",
+ 0, 0, 1, 1, ~0L, 1);
+
+ulong sort_buffer_size_alias;
+static MYSQL_THDVAR_ULONG(sort_buffer_size, PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-sort-buffer-size instead",
+ 0, 0, 128L*1024L*1024L, 4, ~0L, 1);
+
+ulong stats_method_alias;
+static MYSQL_THDVAR_ENUM(stats_method, PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-stats-method instead",
+ 0, 0, 0, &maria_stats_method_typelib);
+
+ulong sync_log_dir_alias;
+static MYSQL_SYSVAR_ENUM(sync_log_dir, sync_log_dir_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-sync-log-dir instead",
+ NULL, NULL, TRANSLOG_SYNC_DIR_NEWFILE,
+ &maria_sync_log_dir_typelib);
+
+my_bool used_for_temp_tables_alias= 1;
+static MYSQL_SYSVAR_BOOL(used_for_temp_tables,
+ used_for_temp_tables_alias, PLUGIN_VAR_READONLY | PLUGIN_VAR_NOCMDOPT,
+ NULL, 0, 0, 1);
+
+static struct st_mysql_show_var status_variables_aliases[]= {
+ {"Maria", (char*) &status_variables, SHOW_ARRAY},
+ {NullS, NullS, SHOW_LONG}
+};
+
+/*
+ There is one problem with aliases for command-line options.
+ Plugin initialization works like this
+
+ for all plugins:
+ prepare command-line options
+ initialize command-line option variables to the default values
+ parse command line, assign values as necessary
+
+ for all plugins:
+ call the plugin initialization function
+
+ it means, we cannot have maria* and aria* command-line options to use
+ the same underlying variables - because after assigning maria* values,
+ MySQL will put there default values again preparing for parsing aria*
+ values. So, maria* values will be lost.
+
+ So, we create separate set of variables for maria* options,
+ and take both values into account in ha_maria_init().
+
+ When the command line was parsed, we patch maria* options
+ to use the same variables as aria* options so that
+ set @@maria_some_var would have the same value as @@aria_some_var
+ without forcing us to copy the values around all the time.
+*/
+
+static struct st_mysql_sys_var* system_variables_aliases[]= {
+ MYSQL_SYSVAR(block_size),
+ MYSQL_SYSVAR(checkpoint_interval),
+ MYSQL_SYSVAR(force_start_after_recovery_failures),
+ MYSQL_SYSVAR(group_commit),
+ MYSQL_SYSVAR(group_commit_interval),
+ MYSQL_SYSVAR(log_dir_path),
+ MYSQL_SYSVAR(log_file_size),
+ MYSQL_SYSVAR(log_purge_type),
+ MYSQL_SYSVAR(max_sort_file_size),
+ MYSQL_SYSVAR(page_checksum),
+ MYSQL_SYSVAR(pagecache_age_threshold),
+ MYSQL_SYSVAR(pagecache_buffer_size),
+ MYSQL_SYSVAR(pagecache_division_limit),
+ MYSQL_SYSVAR(recover),
+ MYSQL_SYSVAR(repair_threads),
+ MYSQL_SYSVAR(sort_buffer_size),
+ MYSQL_SYSVAR(stats_method),
+ MYSQL_SYSVAR(sync_log_dir),
+ MYSQL_SYSVAR(used_for_temp_tables),
+ NULL
+};
+
+#define COPY_SYSVAR(name) \
+ memcpy(&MYSQL_SYSVAR_NAME(name), system_variables[i++], \
+ sizeof(MYSQL_SYSVAR_NAME(name))); \
+ if (name ## _alias != MYSQL_SYSVAR_NAME(name).def_val && \
+ *MYSQL_SYSVAR_NAME(name).value == MYSQL_SYSVAR_NAME(name).def_val) \
+ *MYSQL_SYSVAR_NAME(name).value= name ## _alias;
+
+#define COPY_THDVAR(name) \
+ name ## _alias= THDVAR(0, name); \
+ memcpy(&MYSQL_SYSVAR_NAME(name), system_variables[i++], \
+ sizeof(MYSQL_SYSVAR_NAME(name))); \
+ if (name ## _alias != MYSQL_SYSVAR_NAME(name).def_val && \
+ THDVAR(0, name) == MYSQL_SYSVAR_NAME(name).def_val) \
+ THDVAR(0, name)= name ## _alias;
+
+void copy_variable_aliases()
+{
+ int i= 0;
+ COPY_SYSVAR(block_size);
+ COPY_SYSVAR(checkpoint_interval);
+ COPY_SYSVAR(force_start_after_recovery_failures);
+ COPY_SYSVAR(group_commit);
+ COPY_SYSVAR(group_commit_interval);
+ COPY_SYSVAR(log_dir_path);
+ COPY_SYSVAR(log_file_size);
+ COPY_SYSVAR(log_purge_type);
+ COPY_SYSVAR(max_sort_file_size);
+ COPY_SYSVAR(page_checksum);
+ COPY_SYSVAR(pagecache_age_threshold);
+ COPY_SYSVAR(pagecache_buffer_size);
+ COPY_SYSVAR(pagecache_division_limit);
+ COPY_SYSVAR(recover);
+ COPY_THDVAR(repair_threads);
+ COPY_THDVAR(sort_buffer_size);
+ COPY_THDVAR(stats_method);
+ COPY_SYSVAR(sync_log_dir);
+ COPY_SYSVAR(used_for_temp_tables);
+}
+
+struct st_maria_plugin compat_aliases= {
+ MYSQL_DAEMON_PLUGIN,
+ &maria_storage_engine,
+ "Maria",
+ "Monty Program Ab",
+ "Compatibility aliases for the Aria engine",
+ PLUGIN_LICENSE_GPL,
+ NULL,
+ NULL,
+ 0x0105,
+ status_variables_aliases,
+ system_variables_aliases,
+ "1.5",
+ MariaDB_PLUGIN_MATURITY_GAMMA
+};
+
diff --git a/storage/maria/compat_aliases.h b/storage/maria/compat_aliases.h
new file mode 100644
index 00000000000..46a4da74eec
--- /dev/null
+++ b/storage/maria/compat_aliases.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2010 Monty Program Ab
+
+ 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+extern struct st_maria_plugin compat_aliases;
+extern char mysql_real_data_home[FN_REFLEN];
+extern TYPELIB maria_recover_typelib;
+extern TYPELIB maria_stats_method_typelib;
+extern TYPELIB maria_translog_purge_type_typelib;
+extern TYPELIB maria_sync_log_dir_typelib;
+extern TYPELIB maria_group_commit_typelib;
+extern struct st_mysql_storage_engine maria_storage_engine;
+extern my_bool use_maria_for_temp_tables;
+extern struct st_mysql_sys_var* system_variables[];
+extern st_mysql_show_var status_variables[];
+void copy_variable_aliases();
diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc
index 6375f01237e..f31c77834ff 100644
--- a/storage/maria/ha_maria.cc
+++ b/storage/maria/ha_maria.cc
@@ -29,6 +29,7 @@
#include "ha_maria.h"
#include "trnman_public.h"
#include "trnman.h"
+#include "compat_aliases.h"
C_MODE_START
#include "maria_def.h"
@@ -144,7 +145,7 @@ static void update_log_file_size(MYSQL_THD thd,
static MYSQL_SYSVAR_ULONG(block_size, maria_block_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
- "Block size to be used for MARIA index pages.", 0, 0,
+ "Block size to be used for Aria index pages.", 0, 0,
MARIA_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH,
MARIA_MAX_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH);
@@ -184,7 +185,7 @@ static MYSQL_SYSVAR_ULONG(log_file_size, log_file_size,
static MYSQL_SYSVAR_ENUM(group_commit, maria_group_commit,
PLUGIN_VAR_RQCMDARG,
- "Specifies maria group commit mode. "
+ "Specifies Aria group commit mode. "
"Possible values are \"none\" (no group commit), "
"\"hard\" (with waiting to actual commit), "
"\"soft\" (no wait for commit (DANGEROUS!!!))",
@@ -197,12 +198,12 @@ static MYSQL_SYSVAR_ULONG(group_commit_interval, maria_group_commit_interval,
" 0 stands for no waiting"
" for other threads to come and do a commit in \"hard\" mode and no"
" sync()/commit at all in \"soft\" mode. Option has only an effect"
- " if maria_group_commit is used",
+ " if aria_group_commit is used",
NULL, update_maria_group_commit_interval, 0, 0, UINT_MAX, 1);
static MYSQL_SYSVAR_ENUM(log_purge_type, log_purge_type,
PLUGIN_VAR_RQCMDARG,
- "Specifies how maria transactional log will be purged. "
+ "Specifies how Aria transactional log will be purged. "
"Possible values of name are \"immediate\", \"external\" "
"and \"at_flush\"",
NULL, NULL, TRANSLOG_PURGE_IMMIDIATE,
@@ -212,7 +213,7 @@ static MYSQL_SYSVAR_ULONGLONG(max_sort_file_size,
maria_max_temp_length, PLUGIN_VAR_RQCMDARG,
"Don't use the fast sort index method to created index if the "
"temporary file would get bigger than this.",
- 0, 0, MAX_FILE_SIZE, 0, MAX_FILE_SIZE, 1024*1024);
+ 0, 0, MAX_FILE_SIZE & ~(1*MB-1), 0, MAX_FILE_SIZE, 1*MB);
static MYSQL_SYSVAR_ULONG(pagecache_age_threshold,
pagecache_age_threshold, PLUGIN_VAR_RQCMDARG,
@@ -224,10 +225,10 @@ static MYSQL_SYSVAR_ULONG(pagecache_age_threshold,
static MYSQL_SYSVAR_ULONGLONG(pagecache_buffer_size, pagecache_buffer_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
- "The size of the buffer used for index blocks for Maria tables. "
+ "The size of the buffer used for index blocks for Aria tables. "
"Increase this to get better index handling (for all reads and "
"multiple writes) to as much as you can afford.", 0, 0,
- KEY_CACHE_SIZE, MALLOC_OVERHEAD, ~(ulong) 0, IO_SIZE);
+ KEY_CACHE_SIZE, 0, ~(ulong) 0, 1);
static MYSQL_SYSVAR_ULONG(pagecache_division_limit, pagecache_division_limit,
PLUGIN_VAR_RQCMDARG,
@@ -238,20 +239,20 @@ static MYSQL_SYSVAR_ENUM(recover, maria_recover_options, PLUGIN_VAR_OPCMDARG,
"Specifies how corrupted tables should be automatically repaired."
" Possible values are \"NORMAL\" (the default), \"BACKUP\", \"FORCE\","
" \"QUICK\", or \"OFF\" which is like not using the option.",
- NULL, NULL, HA_RECOVER_NONE, &maria_recover_typelib);
+ NULL, NULL, HA_RECOVER_DEFAULT, &maria_recover_typelib);
static MYSQL_THDVAR_ULONG(repair_threads, PLUGIN_VAR_RQCMDARG,
- "Number of threads to use when repairing maria tables. The value of 1 "
+ "Number of threads to use when repairing Aria tables. The value of 1 "
"disables parallel repair.",
0, 0, 1, 1, ~0L, 1);
static MYSQL_THDVAR_ULONG(sort_buffer_size, PLUGIN_VAR_RQCMDARG,
"The buffer that is allocated when sorting the index when doing a "
"REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE.",
- 0, 0, 8192*1024, 4, ~0L, 1);
+ 0, 0, 128L*1024L*1024L, 4, ~0L, 1);
static MYSQL_THDVAR_ENUM(stats_method, PLUGIN_VAR_RQCMDARG,
- "Specifies how maria index statistics collection code should treat "
+ "Specifies how Aria index statistics collection code should treat "
"NULLs. Possible values are \"nulls_unequal\", \"nulls_equal\", "
"and \"nulls_ignored\".", 0, 0, 0, &maria_stats_method_typelib);
@@ -262,14 +263,15 @@ static MYSQL_SYSVAR_ENUM(sync_log_dir, sync_log_dir, PLUGIN_VAR_RQCMDARG,
&maria_sync_log_dir_typelib);
#ifdef USE_MARIA_FOR_TMP_TABLES
-static my_bool use_maria_for_temp_tables= 1;
+#define USE_MARIA_FOR_TMP_TABLES_VAL 1
#else
-static my_bool use_maria_for_temp_tables= 0;
+#define USE_MARIA_FOR_TMP_TABLES_VAL 0
#endif
+my_bool use_maria_for_temp_tables= USE_MARIA_FOR_TMP_TABLES_VAL;
static MYSQL_SYSVAR_BOOL(used_for_temp_tables,
use_maria_for_temp_tables, PLUGIN_VAR_READONLY | PLUGIN_VAR_NOCMDOPT,
- "Whether temporary tables should be MyISAM or Maria", 0, 0,
+ "Whether temporary tables should be MyISAM or Aria", 0, 0,
1);
/*****************************************************************************
@@ -468,7 +470,7 @@ static int table2maria(TABLE *table_arg, data_file_type row_type,
recinfo_pos= recinfo;
create_info->null_bytes= table_arg->s->null_bytes;
- while (recpos < (uint) share->reclength)
+ while (recpos < (uint) share->stored_rec_length)
{
Field **field, *found= 0;
minpos= share->reclength;
@@ -743,8 +745,60 @@ void _ma_check_print_warning(HA_CHECK *param, const char *fmt, ...)
DBUG_VOID_RETURN;
}
+/*
+ Create a transaction object
+
+ SYNOPSIS
+ info Maria handler
+
+ RETURN
+ 0 ok
+ # Error number (HA_ERR_OUT_OF_MEM)
+*/
+
+static int maria_create_trn_for_mysql(MARIA_HA *info)
+{
+ THD *thd= (THD*) info->external_ptr;
+ TRN *trn= THD_TRN;
+ DBUG_ENTER("maria_create_trn_for_mysql");
+
+ if (!trn) /* no transaction yet - open it now */
+ {
+ trn= trnman_new_trn(& thd->transaction.wt);
+ if (unlikely(!trn))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ THD_TRN= trn;
+ if (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))
+ trans_register_ha(thd, TRUE, maria_hton);
+ }
+ _ma_set_trn_for_table(info, trn);
+ if (!trnman_increment_locked_tables(trn))
+ {
+ trans_register_ha(thd, FALSE, maria_hton);
+ trnman_new_statement(trn);
+ }
+#ifdef EXTRA_DEBUG
+ if (info->lock_type == F_WRLCK &&
+ ! (trnman_get_flags(trn) & TRN_STATE_INFO_LOGGED))
+ {
+ trnman_set_flags(trn, trnman_get_flags(trn) | TRN_STATE_INFO_LOGGED |
+ TRN_STATE_TABLES_CAN_CHANGE);
+ (void) translog_log_debug_info(trn, LOGREC_DEBUG_INFO_QUERY,
+ (uchar*) thd->query(),
+ thd->query_length());
+ }
+ else
+ {
+ DBUG_PRINT("info", ("lock_type: %d trnman_flags: %u",
+ info->lock_type, trnman_get_flags(trn)));
+ }
+
+#endif
+ DBUG_RETURN(0);
}
+} /* extern "C" */
+
/**
Transactional table doing bulk insert with one single UNDO
(UNDO_BULK_INSERT) and with repair.
@@ -777,7 +831,11 @@ handler *ha_maria::clone(MEM_ROOT *mem_root)
{
ha_maria *new_handler= static_cast <ha_maria *>(handler::clone(mem_root));
if (new_handler)
+ {
new_handler->file->state= file->state;
+ /* maria_create_trn_for_mysql() is never called for clone() tables */
+ new_handler->file->trn= file->trn;
+ }
return new_handler;
}
@@ -1031,6 +1089,7 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
HA_CHECK param;
MARIA_SHARE *share= file->s;
const char *old_proc_info= thd_proc_info(thd, "Checking table");
+ TRN *old_trn= file->trn;
maria_chk_init(&param);
param.thd= thd;
@@ -1047,7 +1106,8 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
if (!maria_is_crashed(file) &&
(((param.testflag & T_CHECK_ONLY_CHANGED) &&
!(share->state.changed & (STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR)) &&
+ STATE_CRASHED_ON_REPAIR |
+ STATE_IN_REPAIR)) &&
share->state.open_count == 0) ||
((param.testflag & T_FAST) && (share->state.open_count ==
(uint) (share->global_changed ? 1 :
@@ -1084,14 +1144,15 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
if (!error)
{
if ((share->state.changed & (STATE_CHANGED |
- STATE_CRASHED_ON_REPAIR |
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR |
STATE_CRASHED | STATE_NOT_ANALYZED)) ||
(param.testflag & T_STATISTICS) || maria_is_crashed(file))
{
file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
pthread_mutex_lock(&share->intern_lock);
- share->state.changed &= ~(STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR);
+ DBUG_PRINT("info", ("Reseting crashed state"));
+ share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED |
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR);
if (!(table->db_stat & HA_READ_ONLY))
error= maria_update_state_info(&param, file,
UPDATE_TIME | UPDATE_OPEN_COUNT |
@@ -1107,6 +1168,8 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
}
+ /* Reset trn, that may have been set by repair */
+ _ma_set_trn_for_table(file, old_trn);
thd_proc_info(thd, old_proc_info);
return error ? HA_ADMIN_CORRUPT : HA_ADMIN_OK;
}
@@ -1330,11 +1393,13 @@ int ha_maria::zerofill(THD * thd, HA_CHECK_OPT *check_opt)
{
int error;
HA_CHECK param;
+ TRN *old_trn;
MARIA_SHARE *share= file->s;
if (!file)
return HA_ADMIN_INTERNAL_ERROR;
+ old_trn= file->trn;
maria_chk_init(&param);
param.thd= thd;
param.op_name= "zerofill";
@@ -1342,6 +1407,9 @@ int ha_maria::zerofill(THD * thd, HA_CHECK_OPT *check_opt)
param.sort_buffer_length= THDVAR(thd, sort_buffer_size);
error=maria_zerofill(&param, file, share->open_file_name.str);
+ /* Reset trn, that may have been set by repair */
+ _ma_set_trn_for_table(file, old_trn);
+
if (!error)
{
pthread_mutex_lock(&share->intern_lock);
@@ -1355,6 +1423,7 @@ int ha_maria::optimize(THD * thd, HA_CHECK_OPT *check_opt)
{
int error;
HA_CHECK param;
+
if (!file)
return HA_ADMIN_INTERNAL_ERROR;
@@ -1371,6 +1440,7 @@ int ha_maria::optimize(THD * thd, HA_CHECK_OPT *check_opt)
param.testflag &= ~T_REP_BY_SORT;
error= repair(thd, &param, 1);
}
+
return error;
}
@@ -1384,6 +1454,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
char fixed_name[FN_REFLEN];
MARIA_SHARE *share= file->s;
ha_rows rows= file->state->records;
+ TRN *old_trn= file->trn;
DBUG_ENTER("ha_maria::repair");
/*
@@ -1397,7 +1468,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
if (file->dfile.file == -1)
{
sql_print_information("Retrying repair of: '%s' failed. "
- "Please try REPAIR EXTENDED or maria_chk",
+ "Please try REPAIR EXTENDED or aria_chk",
table->s->path.str);
DBUG_RETURN(HA_ADMIN_FAILED);
}
@@ -1505,8 +1576,9 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
{
if ((share->state.changed & STATE_CHANGED) || maria_is_crashed(file))
{
- share->state.changed &= ~(STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR);
+ DBUG_PRINT("info", ("Reseting crashed state"));
+ share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED |
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR);
file->update |= HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
}
/*
@@ -1544,6 +1616,9 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
thd_proc_info(thd, old_proc_info);
if (!thd->locked_tables)
maria_lock_database(file, F_UNLCK);
+
+ /* Reset trn, that may have been set by repair */
+ _ma_set_trn_for_table(file, old_trn);
error= error ? HA_ADMIN_FAILED :
(optimize_done ?
(write_log_record_for_repair(param, file) ? HA_ADMIN_FAILED :
@@ -1782,7 +1857,7 @@ int ha_maria::enable_indexes(uint mode)
"retrying",
my_errno, param.db_name, param.table_name);
/* This should never fail normally */
- DBUG_ASSERT(0);
+ DBUG_ASSERT(thd->killed != 0);
/* Repairing by sort failed. Now try standard repair method. */
param.testflag &= ~T_REP_BY_SORT;
error= (repair(thd, &param, 0) != HA_ADMIN_OK);
@@ -1936,14 +2011,14 @@ void ha_maria::start_bulk_insert(ha_rows rows)
!= 0 Error
*/
-int ha_maria::end_bulk_insert(bool table_will_be_deleted)
+int ha_maria::end_bulk_insert()
{
int err;
DBUG_ENTER("ha_maria::end_bulk_insert");
- maria_end_bulk_insert(file, table_will_be_deleted);
+ maria_end_bulk_insert(file);
if ((err= maria_extra(file, HA_EXTRA_NO_CACHE, 0)))
goto end;
- if (can_enable_indexes && !table_will_be_deleted)
+ if (can_enable_indexes && !file->s->deleting)
err= enable_indexes(HA_KEY_SWITCH_NONUNIQ_SAVE);
end:
if (bulk_insert_single_undo != BULK_INSERT_NONE)
@@ -1971,14 +2046,16 @@ bool ha_maria::check_and_repair(THD *thd)
check_opt.init();
- if (file->s->state.changed & STATE_MOVED)
+ error= 1;
+ if ((file->s->state.changed &
+ (STATE_CRASHED | STATE_CRASHED_ON_REPAIR | STATE_MOVED)) ==
+ STATE_MOVED)
{
- sql_print_information("Zerofilling table: '%s'", table->s->path.str);
+ sql_print_information("Zerofilling moved table: '%s'",
+ table->s->path.str);
if (!(error= zerofill(thd, &check_opt)))
DBUG_RETURN(0);
}
- else
- error= 1;
/*
if we got this far - the table is crashed.
@@ -2315,6 +2392,8 @@ int ha_maria::info(uint flag, my_bool lock_table_share)
int ha_maria::extra(enum ha_extra_function operation)
{
+ int tmp;
+ TRN *old_trn= file->trn;
if ((specialflag & SPECIAL_SAFE_MODE) && operation == HA_EXTRA_KEYREAD)
return 0;
#ifdef NOT_USED
@@ -2340,7 +2419,9 @@ int ha_maria::extra(enum ha_extra_function operation)
TRN *trn= THD_TRN;
_ma_set_trn_for_table(file, trn);
}
- return maria_extra(file, operation, 0);
+ tmp= maria_extra(file, operation, 0);
+ file->trn= old_trn; // Reset trn if was used
+ return tmp;
}
int ha_maria::reset(void)
@@ -2349,6 +2430,12 @@ int ha_maria::reset(void)
pushed_idx_cond_keyno= MAX_KEY;
ma_set_index_cond_func(file, NULL, 0);
ds_mrr.dsmrr_close();
+ if (file->trn)
+ {
+ /* Next statement is a new statement. Ensure it's logged */
+ trnman_set_flags(file->trn,
+ trnman_get_flags(file->trn) & ~TRN_STATE_INFO_LOGGED);
+ }
return maria_reset(file);
}
@@ -2389,9 +2476,18 @@ int ha_maria::delete_table(const char *name)
return maria_delete_table(name);
}
+
+/* This is mainly for temporary tables, so no logging necessary */
+
+void ha_maria::drop_table(const char *name)
+{
+ (void) close();
+ (void) maria_delete_table(name);
+}
+
+
int ha_maria::external_lock(THD *thd, int lock_type)
{
- TRN *trn= THD_TRN;
DBUG_ENTER("ha_maria::external_lock");
/*
We don't test now_transactional because it may vary between lock/unlock
@@ -2411,22 +2507,7 @@ int ha_maria::external_lock(THD *thd, int lock_type)
/* Transactional table */
if (lock_type != F_UNLCK)
{
- /* Start of new statement */
- if (!trn) /* no transaction yet - open it now */
- {
- trn= trnman_new_trn(& thd->transaction.wt);
- if (unlikely(!trn))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- THD_TRN= trn;
- if (thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))
- trans_register_ha(thd, TRUE, maria_hton);
- }
- _ma_set_trn_for_table(file, trn);
- if (!trnman_increment_locked_tables(trn))
- {
- trans_register_ha(thd, FALSE, maria_hton);
- trnman_new_statement(trn);
- }
+ file->external_ptr= thd; // For maria_register_trn()
if (!file->s->lock_key_trees) // If we don't use versioning
{
@@ -2445,6 +2526,13 @@ int ha_maria::external_lock(THD *thd, int lock_type)
*file->state= file->s->state.state;
}
+ if (file->trn)
+ {
+ /* This can only happen with tables created with clone() */
+ DBUG_ASSERT(cloned);
+ trnman_increment_locked_tables(file->trn);
+ }
+
if (!thd->transaction.on)
{
/*
@@ -2459,20 +2547,10 @@ int ha_maria::external_lock(THD *thd, int lock_type)
DBUG_PRINT("info", ("Disabling logging for table"));
_ma_tmp_disable_logging_for_table(file, TRUE);
}
-#ifdef EXTRA_DEBUG
- if (lock_type == F_WRLCK &&
- ! (trnman_get_flags(trn) & TRN_STATE_INFO_LOGGED))
- {
- trnman_set_flags(trn, trnman_get_flags(trn) | TRN_STATE_INFO_LOGGED |
- TRN_STATE_TABLES_CAN_CHANGE);
- (void) translog_log_debug_info(trn, LOGREC_DEBUG_INFO_QUERY,
- (uchar*) thd->query(),
- thd->query_length());
- }
-#endif
}
else
{
+ TRN *trn= THD_TRN;
/* End of transaction */
/*
@@ -2497,6 +2575,8 @@ int ha_maria::external_lock(THD *thd, int lock_type)
file->state= &file->s->state.state;
if (trn)
{
+ DBUG_PRINT("info",
+ ("locked_tables: %u", trnman_has_locked_tables(trn)));
if (trnman_has_locked_tables(trn) &&
!trnman_decrement_locked_tables(trn))
{
@@ -3163,7 +3243,7 @@ static my_bool translog_callback_delete_all(const char *directory,
/**
- Helper function for option maria-force-start-after-recovery-failures.
+ Helper function for option aria-force-start-after-recovery-failures.
Deletes logs if too many failures. Otherwise, increments the counter of
failures in the control file.
Notice how this has to be called _before_ translog_init() (if log is
@@ -3179,9 +3259,9 @@ static int mark_recovery_start(const char* log_dir)
DBUG_ENTER("mark_recovery_start");
if (unlikely(maria_recover_options == HA_RECOVER_NONE))
ma_message_no_user(ME_JUST_WARNING, "Please consider using option"
- " --maria-recover[=...] to automatically check and"
+ " --aria-recover[=...] to automatically check and"
" repair tables when logs are removed by option"
- " --maria-force-start-after-recovery-failures=#");
+ " --aria-force-start-after-recovery-failures=#");
if (recovery_failures >= force_start_after_recovery_failures)
{
/*
@@ -3207,9 +3287,9 @@ static int mark_recovery_start(const char* log_dir)
/**
- Helper function for option maria-force-start-after-recovery-failures.
+ Helper function for option aria-force-start-after-recovery-failures.
Records in the control file that recovery was a success, so that it's not
- counted for maria-force-start-after-recovery-failures.
+ counted for aria-force-start-after-recovery-failures.
*/
static int mark_recovery_success(void)
@@ -3236,6 +3316,7 @@ bool ha_maria::is_changed() const
static int ha_maria_init(void *p)
{
int res;
+ copy_variable_aliases();
const char *log_dir= maria_data_root;
maria_hton= (handlerton *)p;
maria_hton->state= SHOW_OPTION_YES;
@@ -3250,7 +3331,7 @@ static int ha_maria_init(void *p)
maria_hton->flags= HTON_CAN_RECREATE | HTON_SUPPORT_LOG_TABLES;
bzero(maria_log_pagecache, sizeof(*maria_log_pagecache));
maria_tmpdir= &mysql_tmpdir_list; /* For REDO */
- res= maria_init() || ma_control_file_open(TRUE, TRUE) ||
+ res= maria_upgrade() || maria_init() || ma_control_file_open(TRUE, TRUE) ||
((force_start_after_recovery_failures != 0) &&
mark_recovery_start(log_dir)) ||
!init_pagecache(maria_pagecache,
@@ -3263,9 +3344,11 @@ static int ha_maria_init(void *p)
MYSQL_VERSION_ID, server_id, maria_log_pagecache,
TRANSLOG_DEFAULT_FLAGS, 0) ||
maria_recovery_from_log() ||
- ((force_start_after_recovery_failures != 0) && mark_recovery_success()) ||
+ ((force_start_after_recovery_failures != 0 ||
+ maria_recovery_changed_data) && mark_recovery_success()) ||
ma_checkpoint_init(checkpoint_interval);
maria_multi_threaded= maria_in_ha_maria= TRUE;
+ maria_create_trn_hook= maria_create_trn_for_mysql;
#if defined(HAVE_REALPATH) && !defined(HAVE_valgrind) && !defined(HAVE_BROKEN_REALPATH)
/* We can only test for sub paths if my_symlink.c is using realpath */
@@ -3350,7 +3433,7 @@ my_bool ha_maria::register_query_cache_table(THD *thd, char *table_name,
}
#endif
-static struct st_mysql_sys_var* system_variables[]= {
+struct st_mysql_sys_var* system_variables[]= {
MYSQL_SYSVAR(block_size),
MYSQL_SYSVAR(checkpoint_interval),
MYSQL_SYSVAR(force_start_after_recovery_failures),
@@ -3486,15 +3569,20 @@ static void update_log_file_size(MYSQL_THD thd,
}
-static SHOW_VAR status_variables[]= {
- {"Maria_pagecache_blocks_not_flushed", (char*) &maria_pagecache_var.global_blocks_changed, SHOW_LONG_NOFLUSH},
- {"Maria_pagecache_blocks_unused", (char*) &maria_pagecache_var.blocks_unused, SHOW_LONG_NOFLUSH},
- {"Maria_pagecache_blocks_used", (char*) &maria_pagecache_var.blocks_used, SHOW_LONG_NOFLUSH},
- {"Maria_pagecache_read_requests", (char*) &maria_pagecache_var.global_cache_r_requests, SHOW_LONGLONG},
- {"Maria_pagecache_reads", (char*) &maria_pagecache_var.global_cache_read, SHOW_LONGLONG},
- {"Maria_pagecache_write_requests", (char*) &maria_pagecache_var.global_cache_w_requests, SHOW_LONGLONG},
- {"Maria_pagecache_writes", (char*) &maria_pagecache_var.global_cache_write, SHOW_LONGLONG},
- {"Maria_transaction_log_syncs", (char*) &translog_syncs, SHOW_LONGLONG},
+SHOW_VAR status_variables[]= {
+ {"pagecache_blocks_not_flushed", (char*) &maria_pagecache_var.global_blocks_changed, SHOW_LONG_NOFLUSH},
+ {"pagecache_blocks_unused", (char*) &maria_pagecache_var.blocks_unused, SHOW_LONG_NOFLUSH},
+ {"pagecache_blocks_used", (char*) &maria_pagecache_var.blocks_used, SHOW_LONG_NOFLUSH},
+ {"pagecache_read_requests", (char*) &maria_pagecache_var.global_cache_r_requests, SHOW_LONGLONG},
+ {"pagecache_reads", (char*) &maria_pagecache_var.global_cache_read, SHOW_LONGLONG},
+ {"pagecache_write_requests", (char*) &maria_pagecache_var.global_cache_w_requests, SHOW_LONGLONG},
+ {"pagecache_writes", (char*) &maria_pagecache_var.global_cache_write, SHOW_LONGLONG},
+ {"transaction_log_syncs", (char*) &translog_syncs, SHOW_LONGLONG},
+ {NullS, NullS, SHOW_LONG}
+};
+
+static struct st_mysql_show_var aria_status_variables[]= {
+ {"Aria", (char*) &status_variables, SHOW_ARRAY},
{NullS, NullS, SHOW_LONG}
};
@@ -3559,36 +3647,21 @@ Item *ha_maria::idx_cond_push(uint keyno_arg, Item* idx_cond_arg)
struct st_mysql_storage_engine maria_storage_engine=
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
-mysql_declare_plugin(maria)
+maria_declare_plugin(aria)
+compat_aliases,
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&maria_storage_engine,
- "MARIA",
+ "Aria",
"Monty Program Ab",
"Crash-safe tables with MyISAM heritage",
PLUGIN_LICENSE_GPL,
- ha_maria_init, /* Plugin Init */
- NULL, /* Plugin Deinit */
- 0x0105, /* 1.5 */
- status_variables, /* status variables */
- system_variables, /* system variables */
- NULL
-}
-mysql_declare_plugin_end;
-maria_declare_plugin(maria)
-{
- MYSQL_STORAGE_ENGINE_PLUGIN,
- &maria_storage_engine,
- "MARIA",
- "MySQL AB",
- "Crash-safe tables with MyISAM heritage",
- PLUGIN_LICENSE_GPL,
- ha_maria_init, /* Plugin Init */
- NULL, /* Plugin Deinit */
- 0x0105, /* 1.5 */
- status_variables, /* status variables */
- system_variables, /* system variables */
- "1.5", /* string version */
- MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
+ ha_maria_init, /* Plugin Init */
+ NULL, /* Plugin Deinit */
+ 0x0105, /* 1.5 */
+ aria_status_variables, /* status variables */
+ system_variables, /* system variables */
+ "1.5", /* string version */
+ MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
}
maria_declare_plugin_end;
diff --git a/storage/maria/ha_maria.h b/storage/maria/ha_maria.h
index 6b9ea150ef1..605ad1d3a20 100644
--- a/storage/maria/ha_maria.h
+++ b/storage/maria/ha_maria.h
@@ -59,7 +59,7 @@ public:
~ha_maria() {}
handler *clone(MEM_ROOT *mem_root);
const char *table_type() const
- { return "MARIA"; }
+ { return "Aria"; }
const char *index_type(uint key_number);
const char **bas_ext() const;
ulonglong table_flags() const
@@ -131,7 +131,7 @@ public:
int enable_indexes(uint mode);
int indexes_are_disabled(void);
void start_bulk_insert(ha_rows rows);
- int end_bulk_insert(bool abort);
+ int end_bulk_insert();
ha_rows records_in_range(uint inx, key_range * min_key, key_range * max_key);
void update_create_info(HA_CREATE_INFO * create_info);
int create(const char *name, TABLE * form, HA_CREATE_INFO * create_info);
@@ -143,19 +143,21 @@ public:
ulonglong *nb_reserved_values);
int rename_table(const char *from, const char *to);
int delete_table(const char *name);
+ void drop_table(const char *name);
int check(THD * thd, HA_CHECK_OPT * check_opt);
int analyze(THD * thd, HA_CHECK_OPT * check_opt);
int repair(THD * thd, HA_CHECK_OPT * check_opt);
bool check_and_repair(THD * thd);
bool is_crashed() const;
bool is_changed() const;
- bool auto_repair() const { return 1; }
+ bool auto_repair() const { return maria_recover_options != HA_RECOVER_NONE; }
int optimize(THD * thd, HA_CHECK_OPT * check_opt);
int restore(THD * thd, HA_CHECK_OPT * check_opt);
int backup(THD * thd, HA_CHECK_OPT * check_opt);
int assign_to_keycache(THD * thd, HA_CHECK_OPT * check_opt);
int preload_keys(THD * thd, HA_CHECK_OPT * check_opt);
bool check_if_incompatible_data(HA_CREATE_INFO * info, uint table_changes);
+ bool check_if_supported_virtual_columns(void) { return TRUE;}
#ifdef HAVE_REPLICATION
int dump(THD * thd, int fd);
int net_read_dump(NET * net);
diff --git a/storage/maria/ma_bitmap.c b/storage/maria/ma_bitmap.c
index 882c6e4cd06..4f37d7b9a1f 100644
--- a/storage/maria/ma_bitmap.c
+++ b/storage/maria/ma_bitmap.c
@@ -147,6 +147,12 @@ static inline my_bool write_changed_bitmap(MARIA_SHARE *share,
DBUG_ASSERT(bitmap->file.write_callback != 0);
DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable));
+ /*
+ Mark that a bitmap page has been written to page cache and we have
+ to flush it during checkpoint.
+ */
+ bitmap->changed_not_flushed= 1;
+
if ((bitmap->non_flushable == 0)
#ifdef WRONG_BITMAP_FLUSH
|| 1
@@ -347,7 +353,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
MARIA_FILE_BITMAP *bitmap= &share->bitmap;
DBUG_ENTER("_ma_bitmap_flush_all");
pthread_mutex_lock(&bitmap->bitmap_lock);
- if (bitmap->changed)
+ if (bitmap->changed || bitmap->changed_not_flushed)
{
bitmap->flush_all_requested= TRUE;
#ifndef WRONG_BITMAP_FLUSH
@@ -365,8 +371,8 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
*/
if (bitmap->changed)
{
- res= write_changed_bitmap(share, bitmap);
bitmap->changed= FALSE;
+ res= write_changed_bitmap(share, bitmap);
}
/*
We do NOT use FLUSH_KEEP_LAZY because we must be sure that bitmap
@@ -384,6 +390,7 @@ my_bool _ma_bitmap_flush_all(MARIA_SHARE *share)
&bitmap->pages_covered) &
PCFLUSH_PINNED_AND_ERROR)
res= TRUE;
+ bitmap->changed_not_flushed= FALSE;
bitmap->flush_all_requested= FALSE;
/*
Some well-behaved threads may be waiting for flush_all_requested to
@@ -1875,6 +1882,7 @@ static my_bool set_page_bits(MARIA_HA *info, MARIA_FILE_BITMAP *bitmap,
uint offset_page, offset, tmp, org_tmp;
uchar *data;
DBUG_ENTER("set_page_bits");
+ DBUG_ASSERT(fill_pattern <= 7);
bitmap_page= page - page % bitmap->pages_covered;
if (bitmap_page != bitmap->page &&
@@ -2063,6 +2071,13 @@ my_bool _ma_bitmap_set_full_page_bits(MARIA_HA *info,
safe_mutex_assert_owner(&info->s->bitmap.bitmap_lock);
bitmap_page= page - page % bitmap->pages_covered;
+ if (page == bitmap_page ||
+ page + page_count >= bitmap_page + bitmap->pages_covered)
+ {
+ DBUG_ASSERT(0); /* Wrong in data */
+ DBUG_RETURN(1);
+ }
+
if (bitmap_page != bitmap->page &&
_ma_change_bitmap_page(info, bitmap, bitmap_page))
DBUG_RETURN(1);
@@ -2142,12 +2157,12 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
DBUG_VOID_RETURN;
bitmap= &share->bitmap;
+ pthread_mutex_lock(&bitmap->bitmap_lock);
+
if (non_flushable_inc == -1)
{
- pthread_mutex_lock(&bitmap->bitmap_lock);
DBUG_ASSERT((int) bitmap->non_flushable > 0);
DBUG_ASSERT(info->non_flushable_state == 1);
- info->non_flushable_state= 0;
if (--bitmap->non_flushable == 0)
{
/*
@@ -2164,11 +2179,11 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
}
DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable));
pthread_mutex_unlock(&bitmap->bitmap_lock);
+ info->non_flushable_state= 0;
DBUG_VOID_RETURN;
}
DBUG_ASSERT(non_flushable_inc == 1);
DBUG_ASSERT(info->non_flushable_state == 0);
- pthread_mutex_lock(&bitmap->bitmap_lock);
while (unlikely(bitmap->flush_all_requested))
{
/*
@@ -2186,9 +2201,9 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
pthread_cond_wait(&bitmap->bitmap_cond, &bitmap->bitmap_lock);
}
bitmap->non_flushable++;
- info->non_flushable_state= 1;
DBUG_PRINT("info", ("bitmap->non_flushable: %u", bitmap->non_flushable));
pthread_mutex_unlock(&bitmap->bitmap_lock);
+ info->non_flushable_state= 1;
DBUG_VOID_RETURN;
}
@@ -2217,6 +2232,8 @@ void _ma_bitmap_flushable(MARIA_HA *info, int non_flushable_inc)
Note that we may have 'filler blocks' that are used to split a block
in half; These can be recognized by that they have page_count == 0.
+ This code also reverse the effect of ma_bitmap_flushable(.., 1);
+
RETURN
0 ok
1 error (Couldn't write or read bitmap page)
@@ -2287,9 +2304,16 @@ my_bool _ma_bitmap_release_unused(MARIA_HA *info, MARIA_BITMAP_BLOCKS *blocks)
The page has all bits set; The following test is an optimization
to not set the bits to the same value as before.
*/
- if (bits != current_bitmap_value &&
- set_page_bits(info, bitmap, block->page, bits))
- goto err;
+ if (bits != current_bitmap_value)
+ {
+ if (set_page_bits(info, bitmap, block->page, bits))
+ goto err;
+ }
+ else
+ {
+ DBUG_ASSERT(current_bitmap_value ==
+ _ma_bitmap_get_page_bits(info, bitmap, block->page));
+ }
}
else if (!(block->used & BLOCKUSED_USED) &&
_ma_bitmap_reset_full_page_bits(info, bitmap,
@@ -2393,6 +2417,8 @@ my_bool _ma_bitmap_set(MARIA_HA *info, pgcache_page_no_t page, my_bool head,
uint bits;
my_bool res;
DBUG_ENTER("_ma_bitmap_set");
+ DBUG_PRINT("enter", ("page: %lu head: %d empty_space: %u",
+ (ulong) page, head, empty_space));
pthread_mutex_lock(&info->s->bitmap.bitmap_lock);
bits= (head ?
diff --git a/storage/maria/ma_blockrec.c b/storage/maria/ma_blockrec.c
index 89701913c9a..92ec916a9d1 100644
--- a/storage/maria/ma_blockrec.c
+++ b/storage/maria/ma_blockrec.c
@@ -334,12 +334,13 @@ typedef struct st_maria_extent_cursor
} \
} while (0)
+
static my_bool delete_tails(MARIA_HA *info, MARIA_RECORD_POS *tails);
static my_bool delete_head_or_tail(MARIA_HA *info,
pgcache_page_no_t page, uint record_number,
my_bool head, my_bool from_update);
#ifndef DBUG_OFF
-static void _ma_print_directory(uchar *buff, uint block_size);
+static void _ma_print_directory(FILE *file, uchar *buff, uint block_size);
#endif
static uchar *store_page_range(uchar *to, MARIA_BITMAP_BLOCK *block,
uint block_size, ulong length,
@@ -615,7 +616,7 @@ static inline uint end_of_previous_entry(uchar *dir, uchar *end)
#ifndef DBUG_OFF
-static void _ma_print_directory(uchar *buff, uint block_size)
+static void _ma_print_directory(FILE *file, uchar *buff, uint block_size)
{
uint max_entry= (uint) ((uchar *) buff)[DIR_COUNT_OFFSET], row= 0;
uint end_of_prev_row= PAGE_HEADER_SIZE;
@@ -624,40 +625,46 @@ static void _ma_print_directory(uchar *buff, uint block_size)
dir= dir_entry_pos(buff, block_size, max_entry-1);
end= dir_entry_pos(buff, block_size, 0);
- DBUG_LOCK_FILE;
- fprintf(DBUG_FILE,"Directory dump (pos:length):\n");
+ DBUG_LOCK_FILE; /* If using DBUG_FILE */
+ fprintf(file,"Directory dump (pos:length):\n");
for (row= 1; dir <= end ; end-= DIR_ENTRY_SIZE, row++)
{
uint offset= uint2korr(end);
uint length= uint2korr(end+2);
- fprintf(DBUG_FILE, " %4u:%4u", offset, offset ? length : 0);
+ fprintf(file, " %4u:%4u", offset, offset ? length : 0);
if (!(row % (80/12)))
- fputc('\n', DBUG_FILE);
+ fputc('\n', file);
if (offset)
{
DBUG_ASSERT(offset >= end_of_prev_row);
end_of_prev_row= offset + length;
}
}
- fputc('\n', DBUG_FILE);
- fflush(DBUG_FILE);
+ fputc('\n', file);
+ fflush(file);
DBUG_UNLOCK_FILE;
}
-static void check_directory(uchar *buff, uint block_size, uint min_row_length)
+static void check_directory(uchar *buff, uint block_size, uint min_row_length,
+ uint real_empty_size)
{
uchar *dir, *end;
uint max_entry= (uint) buff[DIR_COUNT_OFFSET];
uint start_of_dir, deleted;
- uchar free_entry, prev_free_entry;
uint end_of_prev_row= PAGE_HEADER_SIZE;
+ uint empty_size_on_page;
+ uint empty_size;
+ uchar free_entry, prev_free_entry;
dir= dir_entry_pos(buff, block_size, max_entry-1);
start_of_dir= (uint) (dir - buff);
end= dir_entry_pos(buff, block_size, 0);
- deleted= 0;
+ deleted= empty_size= 0;
+
+ empty_size_on_page= (real_empty_size != (uint) -1 ? real_empty_size :
+ uint2korr(buff + EMPTY_SPACE_OFFSET));
/* Ensure that all rows are in increasing order and no overlaps */
for (; dir <= end ; end-= DIR_ENTRY_SIZE)
@@ -668,12 +675,15 @@ static void check_directory(uchar *buff, uint block_size, uint min_row_length)
{
DBUG_ASSERT(offset >= end_of_prev_row);
DBUG_ASSERT(!length || length >= min_row_length);
+ empty_size+= offset - end_of_prev_row;
end_of_prev_row= offset + length;
}
else
deleted++;
}
+ empty_size+= start_of_dir - end_of_prev_row;
DBUG_ASSERT(end_of_prev_row <= start_of_dir);
+ DBUG_ASSERT(empty_size == empty_size_on_page);
/* check free links */
free_entry= buff[DIR_FREE_OFFSET];
@@ -690,7 +700,7 @@ static void check_directory(uchar *buff, uint block_size, uint min_row_length)
DBUG_ASSERT(deleted == 0);
}
#else
-#define check_directory(A,B,C)
+#define check_directory(A,B,C,D)
#endif /* DBUG_OFF */
@@ -698,7 +708,8 @@ static void check_directory(uchar *buff, uint block_size, uint min_row_length)
@brief Calculate if there is enough entries on the page
*/
-my_bool enough_free_entries(uchar *buff, uint block_size, uint wanted_entries)
+static my_bool enough_free_entries(uchar *buff, uint block_size,
+ uint wanted_entries)
{
uint entries= (uint) buff[DIR_COUNT_OFFSET];
uint needed_free_entries, free_entry;
@@ -723,6 +734,33 @@ my_bool enough_free_entries(uchar *buff, uint block_size, uint wanted_entries)
/**
+ @brief Check if there is room for more rows on page
+
+ @fn enough_free_entries_on_page
+
+ @return 0 Directory is full
+ @return 1 There is room for more entries on the page
+*/
+
+my_bool enough_free_entries_on_page(MARIA_SHARE *share,
+ uchar *page_buff)
+{
+ enum en_page_type page_type;
+ page_type= (enum en_page_type) (page_buff[PAGE_TYPE_OFFSET] &
+ ~(uchar) PAGE_CAN_BE_COMPACTED);
+
+ if (page_type == HEAD_PAGE)
+ {
+ uint row_count= (uint) page_buff[DIR_COUNT_OFFSET];
+ return !(row_count == MAX_ROWS_PER_PAGE &&
+ page_buff[DIR_FREE_OFFSET] == END_OF_DIR_FREE_LIST);
+ }
+ return enough_free_entries(page_buff, share->block_size,
+ 1 + share->base.blobs);
+}
+
+
+/**
@brief Extend a record area to fit a given size block
@fn extend_area_on_page()
@@ -764,20 +802,27 @@ static my_bool extend_area_on_page(MARIA_HA *info,
uint *empty_space, uint *ret_offset,
uint *ret_length)
{
- uint rec_offset, length;
+ uint rec_offset, length, org_rec_length;
uint max_entry= (uint) buff[DIR_COUNT_OFFSET];
DBUG_ENTER("extend_area_on_page");
+ /*
+ We can't check for min length here as we may have called
+ extend_directory() to create a new (empty) entry just before
+ */
+ check_directory(buff, block_size, 0, *empty_space);
+
rec_offset= uint2korr(dir);
if (rec_offset)
{
/* Extending old row; Mark current space as 'free' */
- length= uint2korr(dir + 2);
+ length= org_rec_length= uint2korr(dir + 2);
DBUG_PRINT("info", ("rec_offset: %u length: %u request_length: %u "
"empty_space: %u",
- rec_offset, length, request_length, *empty_space));
+ rec_offset, org_rec_length, request_length,
+ *empty_space));
- *empty_space+= length;
+ *empty_space+= org_rec_length;
}
else
{
@@ -847,6 +892,7 @@ static my_bool extend_area_on_page(MARIA_HA *info,
"length: %u request_length: %u",
length, request_length));
my_errno= HA_ERR_WRONG_IN_RECORD; /* File crashed */
+ DBUG_ASSERT(0); /* For debugging */
DBUG_RETURN(1); /* Error in block */
}
*empty_space= length; /* All space is here */
@@ -857,7 +903,9 @@ static my_bool extend_area_on_page(MARIA_HA *info,
int2store(dir + 2, length);
*ret_offset= rec_offset;
*ret_length= length;
- check_directory(buff, block_size, info ? info->s->base.min_block_length : 0);
+
+ check_directory(buff, block_size, info ? info->s->base.min_block_length : 0,
+ *empty_space - length);
DBUG_RETURN(0);
}
@@ -1066,7 +1114,7 @@ static uchar *find_free_position(MARIA_HA *info,
*res_length= length;
check_directory(buff, block_size,
- info ? info->s->base.min_block_length : 0);
+ info ? info->s->base.min_block_length : 0, (uint) -1);
DBUG_RETURN(dir);
}
/* No free places in dir; create a new one */
@@ -1087,7 +1135,8 @@ static uchar *find_free_position(MARIA_HA *info,
*res_rownr= max_entry;
*res_length= length;
- check_directory(buff, block_size, info ? info->s->base.min_block_length : 0);
+ check_directory(buff, block_size, info ? info->s->base.min_block_length : 0,
+ *empty_space);
DBUG_RETURN(dir);
}
@@ -1167,7 +1216,8 @@ static my_bool extend_directory(MARIA_HA *info, uchar *buff, uint block_size,
}
check_directory(buff, block_size,
- info ? min(info->s->base.min_block_length, length) : 0);
+ info ? min(info->s->base.min_block_length, length) : 0,
+ *empty_space);
DBUG_RETURN(0);
}
@@ -1377,7 +1427,8 @@ void _ma_compact_block_page(uchar *buff, uint block_size, uint rownr,
uint freed_size= 0;
uchar *dir, *end;
DBUG_ENTER("_ma_compact_block_page");
- DBUG_PRINT("enter", ("rownr: %u", rownr));
+ DBUG_PRINT("enter", ("rownr: %u min_read_from: %lu", rownr,
+ (ulong) min_read_from));
DBUG_ASSERT(max_entry > 0 &&
max_entry < (block_size - PAGE_HEADER_SIZE -
PAGE_SUFFIX_SIZE) / DIR_ENTRY_SIZE);
@@ -1467,6 +1518,8 @@ void _ma_compact_block_page(uchar *buff, uint block_size, uint rownr,
{
/* Move all entries after rownr to end of page */
uint rownr_length;
+
+ DBUG_ASSERT(extend_block); /* Should always be true */
next_free_pos= end_of_found_block= page_pos=
block_size - DIR_ENTRY_SIZE * max_entry - PAGE_SUFFIX_SIZE;
diff= 0;
@@ -1538,13 +1591,13 @@ void _ma_compact_block_page(uchar *buff, uint block_size, uint rownr,
int2store(dir, offset + diff); /* correct current pos */
next_free_pos= offset;
}
-
if (page_pos != end_of_found_block)
{
uint length= (end_of_found_block - next_free_pos);
memmove(buff + page_pos - length, buff + next_free_pos, length);
next_free_pos= page_pos- length;
}
+
/* Extend rownr block to cover hole */
rownr_length= next_free_pos - start_of_found_block;
int2store(dir+2, rownr_length);
@@ -1567,8 +1620,9 @@ void _ma_compact_block_page(uchar *buff, uint block_size, uint rownr,
}
buff[PAGE_TYPE_OFFSET]&= ~(uchar) PAGE_CAN_BE_COMPACTED;
}
- check_directory(buff, block_size, min_row_length);
- DBUG_EXECUTE("directory", _ma_print_directory(buff, block_size););
+ check_directory(buff, block_size, min_row_length,
+ extend_block ? 0 : (uint) -1);
+ DBUG_EXECUTE("directory", _ma_print_directory(DBUG_FILE, buff, block_size););
DBUG_VOID_RETURN;
}
@@ -1662,7 +1716,7 @@ static my_bool get_head_or_tail_page(MARIA_HA *info,
MARIA_PINNED_PAGE page_link;
MARIA_SHARE *share= info->s;
DBUG_ENTER("get_head_or_tail_page");
- DBUG_PRINT("enter", ("length: %u", length));
+ DBUG_PRINT("enter", ("page_type: %u length: %u", page_type, length));
block_size= share->block_size;
if (block->org_bitmap_value == 0) /* Empty block */
@@ -1797,16 +1851,11 @@ static my_bool get_rowpos_in_head_or_tail_page(MARIA_HA *info,
goto err;
}
+ /*
+ The following dir entry is unused in case of insert / update but
+ not in case of undo_update / undo_delete
+ */
dir= dir_entry_pos(buff, block_size, rownr);
-#ifdef SANITY_CHECKS
- /* Tail's should always be unused */
- if (page_type == TAIL_PAGE && max_entry > rownr &&
- (dir[0] != 0 || dir[1] != 0))
- {
- DBUG_ASSERT(0);
- goto err;
- }
-#endif
if (extend_area_on_page(page_type == HEAD_PAGE ? info : 0, buff, dir,
rownr, block_size, length,
@@ -1941,7 +1990,8 @@ static my_bool write_tail(MARIA_HA *info,
block->empty_space= (enough_free_entries(row_pos.buff, share->block_size,
1 + share->base.blobs) ?
empty_space : 0);
- block->used= BLOCKUSED_USED | BLOCKUSED_TAIL;
+ /* Keep BLOCKUSED_USE_ORG_BITMAP */
+ block->used|= BLOCKUSED_USED | BLOCKUSED_TAIL;
/* Increase data file size, if extended */
position= (my_off_t) block->page * block_size;
@@ -2183,6 +2233,8 @@ static void store_extent_info(uchar *to,
MARIA_BITMAP_BLOCK *block, *end_block;
uint copy_length;
my_bool first_found= 0;
+ DBUG_ENTER("store_extent_info");
+ DBUG_PRINT("enter", ("count: %u", count));
for (block= first_block, end_block= first_block+count ;
block < end_block; block++)
@@ -2202,6 +2254,7 @@ static void store_extent_info(uchar *to,
page_count|= START_EXTENT_BIT;
}
pagerange_store(to + PAGE_STORE_SIZE, page_count);
+ DBUG_DUMP("extent", to, ROW_EXTENT_SIZE);
to+= ROW_EXTENT_SIZE;
if (!first_found)
{
@@ -2216,6 +2269,7 @@ static void store_extent_info(uchar *to,
data.
*/
bzero(to, (size_t) (row_extents_second_part + copy_length - to));
+ DBUG_VOID_RETURN;
}
@@ -2234,7 +2288,8 @@ static void store_extent_info(uchar *to,
@return
@retval 0 ok
- @retval 1 Error (out of memory or disk error changing bitmap)
+ @retval 1 Error (out of memory or disk error changing bitmap) or
+ wrong information in extent information
*/
static my_bool extent_to_bitmap_blocks(MARIA_HA *info,
@@ -2245,7 +2300,7 @@ static my_bool extent_to_bitmap_blocks(MARIA_HA *info,
{
MARIA_BITMAP_BLOCK *block, *start_block;
MARIA_SHARE *share= info->s;
- uint i;
+ uint i, tail_page;
DBUG_ENTER("extent_to_bitmap_blocks");
if (allocate_dynamic(&info->bitmap_blocks, extent_count + 2))
@@ -2271,13 +2326,36 @@ static my_bool extent_to_bitmap_blocks(MARIA_HA *info,
page_count&= ~START_EXTENT_BIT;
start_block->sub_blocks= (uint) (block - start_block);
start_block= block;
-
}
block->page= page_korr(extent_info);
block->page_count= page_count;
block->sub_blocks= 0;
+ if (block->page_count == 0)
+ {
+ /* Extend allocated but not used by write_block_record() */
+ DBUG_ASSERT(block->page == 0);
+ /* This is the last block */
+ blocks->count= i;
+ break;
+ }
+ if ((tail_page= page_count & TAIL_BIT))
+ page_count= 1;
- if (page_count & TAIL_BIT)
+ /* Check if wrong data */
+ if (block->page == 0 || page_count == 0 ||
+ (block->page + page_count) * share->block_size >
+ share->state.state.data_file_length)
+ {
+ DBUG_PRINT("error", ("page: %lu page_count: %u tail: %u length: %ld data_length: %ld",
+ (ulong) block->page,
+ (block->page_count & ~TAIL_BIT),
+ (uint) test(block->page_count & TAIL_BIT),
+ (ulong) ((block->page + (page_count & ~TAIL_BIT)) *
+ share->block_size),
+ (ulong) share->state.state.data_file_length));
+ DBUG_RETURN(1);
+ }
+ if (tail_page)
{
block->org_bitmap_value= _ma_bitmap_get_page_bits(info, &share->bitmap,
block->page);
@@ -2289,7 +2367,7 @@ static my_bool extent_to_bitmap_blocks(MARIA_HA *info,
my_bool res;
pthread_mutex_lock(&share->bitmap.bitmap_lock);
res= _ma_bitmap_set_full_page_bits(info, &share->bitmap,
- block->page, block->page_count);
+ block->page, page_count);
pthread_mutex_unlock(&share->bitmap.bitmap_lock);
if (res)
DBUG_RETURN(1);
@@ -2711,9 +2789,16 @@ static my_bool write_block_record(MARIA_HA *info,
sizeof(char*));
memcpy(data, tmp_pos, *blob_lengths);
data+= *blob_lengths;
- /* Skip over tail page that was to be used to store blob */
- block++;
- bitmap_blocks->tail_page_skipped= 1;
+ /*
+ The following is not true when we want to insert data into original
+ place. In this case we don't have any extra blocks allocated
+ */
+ if (likely(undo_lsn == LSN_ERROR))
+ {
+ /* Skip over tail page that was prepared for storing blob */
+ block++;
+ bitmap_blocks->tail_page_skipped= 1;
+ }
}
if (head_block->sub_blocks > 1)
{
@@ -2726,7 +2811,9 @@ static my_bool write_block_record(MARIA_HA *info,
/* Update page directory */
head_length= (uint) (data - row_pos->data);
- DBUG_PRINT("info", ("Used head length on page: %u", head_length));
+ DBUG_PRINT("info", ("Used head length on page: %u header_length: %u",
+ head_length,
+ (uint) (flag & ROW_FLAG_TRANSID ? TRANSID_SIZE : 0)));
DBUG_ASSERT(data <= end_of_data);
if (head_length < share->base.min_block_length)
{
@@ -2736,6 +2823,7 @@ static my_bool write_block_record(MARIA_HA *info,
data+= diff_length;
head_length= share->base.min_block_length;
}
+ DBUG_ASSERT(undo_lsn == LSN_ERROR || head_length == row_pos->length);
int2store(row_pos->dir + 2, head_length);
/* update empty space at start of block */
row_pos->empty_space-= head_length;
@@ -2747,7 +2835,8 @@ static my_bool write_block_record(MARIA_HA *info,
head_block->empty_space= 0; /* Page is full */
head_block->used|= BLOCKUSED_USED;
- check_directory(page_buff, share->block_size, share->base.min_block_length);
+ check_directory(page_buff, share->block_size, share->base.min_block_length,
+ (uint) -1);
/*
Now we have to write tail pages, as we need to store the position
@@ -2798,11 +2887,13 @@ static my_bool write_block_record(MARIA_HA *info,
{
/*
Set only a bit, to not cause bitmap code to believe a block is full
- when there is still a lot of entries in it
+ when there is still a lot of entries in it.
*/
block->used|= BLOCKUSED_USED;
}
}
+ DBUG_ASSERT((undo_lsn == LSN_ERROR ||
+ block == bitmap_blocks->block + bitmap_blocks->count));
column= save_column;
block= save_block;
blob_lengths= save_blob_lengths;
@@ -3196,9 +3287,10 @@ static my_bool write_block_record(MARIA_HA *info,
else
{
uchar log_data[LSN_STORE_SIZE + FILEID_STORE_SIZE +
- PAGE_STORE_SIZE + DIRPOS_STORE_SIZE +
+ PAGE_STORE_SIZE + DIRPOS_STORE_SIZE + 2 +
HA_CHECKSUM_STORE_SIZE + 2 + PAGERANGE_STORE_SIZE +
ROW_EXTENT_SIZE];
+ uchar *log_pos;
ha_checksum checksum_delta;
/* LOGREC_UNDO_ROW_INSERT & LOGREC_UNDO_ROW_UPDATE share same header */
@@ -3208,18 +3300,17 @@ static my_bool write_block_record(MARIA_HA *info,
dirpos_store(log_data + LSN_STORE_SIZE + FILEID_STORE_SIZE +
PAGE_STORE_SIZE,
row_pos->rownr);
-
- log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length=
- (LSN_STORE_SIZE + FILEID_STORE_SIZE + PAGE_STORE_SIZE +
- DIRPOS_STORE_SIZE);
+ log_pos= (log_data + LSN_STORE_SIZE + FILEID_STORE_SIZE +
+ PAGE_STORE_SIZE + DIRPOS_STORE_SIZE);
store_checksum_in_rec(share, checksum_delta,
row->checksum - old_record_checksum,
- log_data + LSN_STORE_SIZE + FILEID_STORE_SIZE +
- PAGE_STORE_SIZE + DIRPOS_STORE_SIZE,
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length);
+ log_pos, log_pos);
compile_time_assert(sizeof(ha_checksum) == HA_CHECKSUM_STORE_SIZE);
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos -
+ log_data);
+
if (!old_record)
{
/* Store undo_lsn in case we are aborting the insert */
@@ -3238,16 +3329,18 @@ static my_bool write_block_record(MARIA_HA *info,
else
{
/* Write UNDO log record for the UPDATE */
- uchar *log_pos= (log_data +
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length);
size_t row_length, extents_length;
- uint row_parts_count;
+ uint row_parts_count, cur_head_length;
/*
Write head length and extents of the original row so that we
- during UNDO can put it back in the original position
+ during UNDO can put it back in the original position.
+ We don't store size for TRANSID, as we don't write this during
+ UNDO.
*/
- int2store(log_pos, info->cur_row.head_length);
+ cur_head_length= (info->cur_row.head_length -
+ info->cur_row.header_length);
+ int2store(log_pos, cur_head_length);
pagerange_store(log_pos + 2, info->cur_row.extents_count);
log_pos+= 2 + PAGERANGE_STORE_SIZE;
log_array[TRANSLOG_INTERNAL_PARTS + 0].length+= (2 +
@@ -3407,13 +3500,14 @@ static my_bool allocate_and_write_block_record(MARIA_HA *info,
DBUG_ASSERT(row->checksum == (info->s->calc_checksum)(info, record));
}
}
+ DBUG_PRINT("info", ("rowid: %lu (%lu:%u) length: %u", (ulong) row->lastpos,
+ (ulong) ma_recordpos_to_page(row->lastpos),
+ ma_recordpos_to_dir_entry(row->lastpos),
+ row_pos.length));
if (write_block_record(info, (uchar*) 0, record, row,
blocks, blocks->block->org_bitmap_value != 0,
&row_pos, undo_lsn, 0))
- goto err; /* Error reading bitmap */
- DBUG_PRINT("exit", ("rowid: %lu (%lu:%u)", (ulong) row->lastpos,
- (ulong) ma_recordpos_to_page(row->lastpos),
- ma_recordpos_to_dir_entry(row->lastpos)));
+ goto err;
/* Now let checkpoint happen but don't commit */
DBUG_EXECUTE_IF("maria_over_alloc_bitmap", sleep(1000););
DBUG_RETURN(0);
@@ -3559,6 +3653,7 @@ static my_bool _ma_update_block_record2(MARIA_HA *info,
MARIA_PINNED_PAGE page_link;
uint rownr, org_empty_size, head_length;
uint block_size= info->s->block_size;
+ uint errpos= 0;
uchar *dir;
pgcache_page_no_t page;
struct st_row_pos_info row_pos;
@@ -3597,11 +3692,21 @@ static my_bool _ma_update_block_record2(MARIA_HA *info,
rownr= ma_recordpos_to_dir_entry(record_pos);
dir= dir_entry_pos(buff, block_size, rownr);
- if ((org_empty_size + cur_row->head_length) >= new_row->total_length)
+ /*
+ We can't use cur_row->head_length as the block may have been compacted
+ since we read it.
+ */
+ head_length= uint2korr(dir + 2);
+
+ if ((org_empty_size + head_length) >= new_row->total_length)
{
uint rec_offset, length;
MARIA_BITMAP_BLOCK block;
+ DBUG_PRINT("info", ("org_empty_size: %u org_length: %u new_length: %lu",
+ org_empty_size, head_length,
+ new_row->total_length));
+
/*
We can fit the new row in the same page as the original head part
of the row
@@ -3611,7 +3716,10 @@ static my_bool _ma_update_block_record2(MARIA_HA *info,
if (extend_area_on_page(info, buff, dir, rownr, block_size,
new_row->total_length, &org_empty_size,
&rec_offset, &length))
+ {
+ errpos= 1;
goto err;
+ }
row_pos.buff= buff;
row_pos.rownr= rownr;
@@ -3628,9 +3736,15 @@ static my_bool _ma_update_block_record2(MARIA_HA *info,
if (*cur_row->tail_positions &&
delete_tails(info, cur_row->tail_positions))
+ {
+ errpos= 2;
goto err;
+ }
if (cur_row->extents_count && free_full_pages(info, cur_row))
+ {
+ errpos= 3;
goto err;
+ }
res= write_block_record(info, oldrec, record, new_row, blocks,
1, &row_pos, undo_lsn, old_checksum);
/* We can't update or delete this without re-reading it again */
@@ -3640,14 +3754,23 @@ static my_bool _ma_update_block_record2(MARIA_HA *info,
/* Delete old row */
if (*cur_row->tail_positions &&
delete_tails(info, cur_row->tail_positions))
+ {
+ errpos= 4;
goto err;
+ }
if (cur_row->extents_count && free_full_pages(info, cur_row))
+ {
+ errpos= 5;
goto err;
+ }
head_length= uint2korr(dir + 2);
if (_ma_bitmap_find_new_place(info, new_row, page, head_length +
org_empty_size, blocks))
+ {
+ errpos= 6;
goto err;
+ }
/*
Allocate all size in block for record
@@ -3674,10 +3797,14 @@ static my_bool _ma_update_block_record2(MARIA_HA *info,
row_pos.length= head_length;
if ((res= write_block_record(info, oldrec, record, new_row, blocks, 1,
&row_pos, undo_lsn, old_checksum)))
+ {
+ errpos= 7;
goto err;
+ }
DBUG_RETURN(0);
err:
+ DBUG_PRINT("error", ("errpos: %d", errpos));
if (info->non_flushable_state)
_ma_bitmap_flushable(info, -1);
_ma_unpin_all_pages_and_finalize_row(info, LSN_IMPOSSIBLE);
@@ -3695,6 +3822,8 @@ err:
This is the main reason we don't make a lot of subfunctions that are
common between _ma_update_block_record2() and this function.
+
+ Note: If something goes wrong we mark the file crashed
*/
static my_bool _ma_update_at_original_place(MARIA_HA *info,
@@ -3750,6 +3879,10 @@ static my_bool _ma_update_at_original_place(MARIA_HA *info,
if ((org_empty_size + cur_row->head_length) < length_on_head_page)
{
+ DBUG_PRINT("error",
+ ("org_empty_size: %u head_length: %u length_on_page: %u",
+ org_empty_size, (uint) cur_row->head_length,
+ length_on_head_page));
my_errno= HA_ERR_WRONG_IN_RECORD;
goto err;
}
@@ -3769,7 +3902,6 @@ static my_bool _ma_update_at_original_place(MARIA_HA *info,
row_pos.empty_space= empty_size;
row_pos.dir= dir;
row_pos.data= buff + rec_offset;
- row_pos.length= length_on_head_page;
/* Delete old row */
if (*cur_row->tail_positions &&
@@ -3799,12 +3931,17 @@ static my_bool _ma_update_at_original_place(MARIA_HA *info,
max(new_row->total_length, share->base.min_block_length) <=
length_on_head_page);
+ /* Store same amount of data on head page as on original page */
+ row_pos.length= (length_on_head_page -
+ (extent_count + 1 - blocks->count) * ROW_EXTENT_SIZE);
+ set_if_bigger(row_pos.length, share->base.min_block_length);
if ((res= write_block_record(info, oldrec, record, new_row, blocks,
1, &row_pos, undo_lsn, old_checksum)))
goto err;
DBUG_RETURN(0);
err:
+ _ma_mark_file_crashed(share);
if (info->non_flushable_state)
_ma_bitmap_flushable(info, -1);
_ma_unpin_all_pages_and_finalize_row(info, LSN_IMPOSSIBLE);
@@ -3858,7 +3995,7 @@ static int delete_dir_entry(uchar *buff, uint block_size, uint record_number,
}
#endif
- check_directory(buff, block_size, 0);
+ check_directory(buff, block_size, 0, (uint) -1);
empty_space= uint2korr(buff + EMPTY_SPACE_OFFSET);
dir= dir_entry_pos(buff, block_size, record_number);
length= uint2korr(dir + 2);
@@ -3933,7 +4070,7 @@ static int delete_dir_entry(uchar *buff, uint block_size, uint record_number,
*empty_space_res= empty_space;
- check_directory(buff, block_size, 0);
+ check_directory(buff, block_size, 0, empty_space);
DBUG_RETURN(0);
}
@@ -4135,7 +4272,8 @@ my_bool _ma_delete_block_record(MARIA_HA *info, const uchar *record)
log_pos= log_data + LSN_STORE_SIZE + FILEID_STORE_SIZE + PAGE_STORE_SIZE;
dirpos_store(log_pos, record_number);
log_pos+= DIRPOS_STORE_SIZE;
- int2store(log_pos, info->cur_row.head_length);
+ int2store(log_pos, info->cur_row.head_length -
+ info->cur_row.header_length);
log_pos+= 2;
pagerange_store(log_pos, info->cur_row.extents_count);
log_pos+= PAGERANGE_STORE_SIZE;
@@ -4404,13 +4542,14 @@ crashed:
1 error
*/
-static my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length,
+static my_bool read_long_data2(MARIA_HA *info, uchar *to, ulong length,
MARIA_EXTENT_CURSOR *extent,
uchar **data, uchar **end_of_data)
{
- DBUG_ENTER("read_long_data");
+ uint left_length= (uint) (*end_of_data - *data);
+ DBUG_ENTER("read_long_data2");
DBUG_PRINT("enter", ("length: %lu left_length: %u",
- length, (uint) (*end_of_data - *data)));
+ length, left_length));
DBUG_ASSERT(*data <= *end_of_data);
/*
@@ -4422,14 +4561,15 @@ static my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length,
This may change in the future, which is why we have the loop written
the way it's written.
*/
- if (extent->first_extent && length > (ulong) (*end_of_data - *data))
+ if (extent->first_extent && length > left_length)
+ {
*end_of_data= *data;
+ left_length= 0;
+ }
for(;;)
{
- uint left_length;
- left_length= (uint) (*end_of_data - *data);
- if (likely(left_length >= length))
+ if (unlikely(left_length >= length))
{
memcpy(to, *data, length);
(*data)+= length;
@@ -4441,10 +4581,25 @@ static my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length,
length-= left_length;
if (!(*data= read_next_extent(info, extent, end_of_data)))
break;
+ left_length= (uint) (*end_of_data - *data);
}
DBUG_RETURN(1);
}
+static inline my_bool read_long_data(MARIA_HA *info, uchar *to, ulong length,
+ MARIA_EXTENT_CURSOR *extent,
+ uchar **data, uchar **end_of_data)
+{
+ uint left_length= (uint) (*end_of_data - *data);
+ if (likely(left_length >= length))
+ {
+ memcpy(to, *data, length);
+ (*data)+= length;
+ return 0;
+ }
+ return read_long_data2(info, to, length, extent, data, end_of_data);
+}
+
/*
Read a record from page (helper function for _ma_read_block_record())
@@ -4496,6 +4651,8 @@ int _ma_read_block_record2(MARIA_HA *info, uchar *record,
cur_row->head_length= (uint) (end_of_data - data);
cur_row->full_page_count= cur_row->tail_count= 0;
cur_row->blob_length= 0;
+ /* Number of bytes in header that we don't need to write during undo */
+ cur_row->header_length= total_header_size[(flag & PRECALC_HEADER_BITMASK)]-1;
if (flag & ROW_FLAG_TRANSID)
{
@@ -4507,7 +4664,7 @@ int _ma_read_block_record2(MARIA_HA *info, uchar *record,
}
/* Skip trans header (for now, until we have MVCC csupport) */
- data+= total_header_size[(flag & PRECALC_HEADER_BITMASK)];
+ data+= cur_row->header_length + 1 ;
if (flag & ROW_FLAG_NULLS_EXTENDED)
cur_null_bytes+= data[-1];
@@ -4903,7 +5060,10 @@ int _ma_read_block_record(MARIA_HA *info, uchar *record,
uint offset;
uint block_size= share->block_size;
DBUG_ENTER("_ma_read_block_record");
- DBUG_PRINT("enter", ("rowid: %lu", (long) record_pos));
+ DBUG_PRINT("enter", ("rowid: %lu page: %lu rownr: %u",
+ (ulong) record_pos,
+ (ulong) ma_recordpos_to_page(record_pos),
+ ma_recordpos_to_dir_entry(record_pos)));
offset= ma_recordpos_to_dir_entry(record_pos);
@@ -6078,7 +6238,10 @@ uint _ma_apply_redo_insert_row_head_or_tail(MARIA_HA *info, LSN lsn,
/* Skip errors when reading outside of file and uninitialized pages */
if (!new_page || (my_errno != HA_ERR_FILE_TOO_SHORT &&
my_errno != HA_ERR_WRONG_CRC))
+ {
+ DBUG_PRINT("error", ("Error %d when reading page", (int) my_errno));
goto err;
+ }
/* Create new page */
buff= pagecache_block_link_to_buffer(page_link.link);
buff[PAGE_TYPE_OFFSET]= UNALLOCATED_PAGE;
@@ -6087,6 +6250,9 @@ uint _ma_apply_redo_insert_row_head_or_tail(MARIA_HA *info, LSN lsn,
{
/* Fix bitmap, just in case */
empty_space= uint2korr(buff + EMPTY_SPACE_OFFSET);
+ if (!enough_free_entries_on_page(share, buff))
+ empty_space= 0; /* Page is full */
+
if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space))
goto err;
pagecache_unlock_by_link(share->pagecache, page_link.link,
@@ -6103,7 +6269,13 @@ uint _ma_apply_redo_insert_row_head_or_tail(MARIA_HA *info, LSN lsn,
changed to new type.
*/
if (!new_page)
+ {
+ DBUG_PRINT("error",
+ ("Found page of wrong type: %u, should have been %u",
+ (uint) (buff[PAGE_TYPE_OFFSET] & PAGE_TYPE_MASK),
+ page_type));
goto crashed_file;
+ }
make_empty_page(info, buff, page_type, 0);
empty_space= block_size - PAGE_HEADER_SIZE - PAGE_SUFFIX_SIZE;
(void) extend_directory(page_type == HEAD_PAGE ? info: 0, buff,
@@ -6159,6 +6331,8 @@ uint _ma_apply_redo_insert_row_head_or_tail(MARIA_HA *info, LSN lsn,
result= my_errno;
/* Fix bitmap */
+ if (!enough_free_entries_on_page(share, buff))
+ empty_space= 0; /* Page is full */
if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space))
goto err;
@@ -6246,6 +6420,8 @@ uint _ma_apply_redo_purge_row_head_or_tail(MARIA_HA *info, LSN lsn,
if ((uint) (buff[PAGE_TYPE_OFFSET] & PAGE_TYPE_MASK) == page_type)
{
empty_space= uint2korr(buff+EMPTY_SPACE_OFFSET);
+ if (!enough_free_entries_on_page(share, buff))
+ empty_space= 0; /* Page is full */
if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE,
empty_space))
goto err;
@@ -6270,6 +6446,8 @@ uint _ma_apply_redo_purge_row_head_or_tail(MARIA_HA *info, LSN lsn,
push_dynamic(&info->pinned_pages, (void*) &page_link);
result= 0;
+ if (!enough_free_entries_on_page(share, buff))
+ empty_space= 0; /* Page is full */
/* This will work even if the page was marked as UNALLOCATED_PAGE */
if (_ma_bitmap_set(info, page, page_type == HEAD_PAGE, empty_space))
result= my_errno;
@@ -6642,7 +6820,7 @@ my_bool _ma_apply_undo_row_insert(MARIA_HA *info, LSN undo_lsn,
pgcache_page_no_t page;
uint rownr;
uchar *buff;
- my_bool res= 1;
+ my_bool res;
MARIA_PINNED_PAGE page_link;
MARIA_SHARE *share= info->s;
ha_checksum checksum;
@@ -6688,11 +6866,16 @@ my_bool _ma_apply_undo_row_insert(MARIA_HA *info, LSN undo_lsn,
goto err;
res= 0;
-err:
+end:
if (info->non_flushable_state)
_ma_bitmap_flushable(info, -1);
_ma_unpin_all_pages_and_finalize_row(info, lsn);
DBUG_RETURN(res);
+
+err:
+ res= 1;
+ _ma_mark_file_crashed(share);
+ goto end;
}
@@ -6915,6 +7098,10 @@ my_bool _ma_apply_undo_row_delete(MARIA_HA *info, LSN undo_lsn,
{
DBUG_ASSERT(row.checksum == (share->calc_checksum)(info, record));
}
+ /* Store same amount of data on head page as on original page */
+ row_pos.length= (length_on_head_page -
+ (extent_count + 1 - blocks->count) * ROW_EXTENT_SIZE);
+ set_if_bigger(row_pos.length, share->base.min_block_length);
if (write_block_record(info, (uchar*) 0, record, &row,
blocks, blocks->block->org_bitmap_value != 0,
&row_pos, undo_lsn, 0))
@@ -6924,6 +7111,7 @@ my_bool _ma_apply_undo_row_delete(MARIA_HA *info, LSN undo_lsn,
DBUG_RETURN(0);
err:
+ _ma_mark_file_crashed(share);
if (info->non_flushable_state)
_ma_bitmap_flushable(info, -1);
_ma_unpin_all_pages_and_finalize_row(info, LSN_IMPOSSIBLE);
@@ -6954,7 +7142,7 @@ my_bool _ma_apply_undo_row_update(MARIA_HA *info, LSN undo_lsn,
pgcache_page_no_t page;
ha_checksum checksum_delta;
uint rownr, field_length_header, extent_count, length_on_head_page;
- int error= 1;
+ int error;
DBUG_ENTER("_ma_apply_undo_row_update");
LINT_INIT(checksum_delta);
@@ -6962,6 +7150,7 @@ my_bool _ma_apply_undo_row_update(MARIA_HA *info, LSN undo_lsn,
header+= PAGE_STORE_SIZE;
rownr= dirpos_korr(header);
header+= DIRPOS_STORE_SIZE;
+
record_pos= ma_recordpos(page, rownr);
DBUG_PRINT("enter", ("rowid: %lu page: %lu rownr: %u",
(ulong) record_pos, (ulong) page, rownr));
@@ -7091,9 +7280,14 @@ my_bool _ma_apply_undo_row_update(MARIA_HA *info, LSN undo_lsn,
goto err;
error= 0;
-err:
+end:
my_free(current_record, MYF(0));
DBUG_RETURN(error);
+
+err:
+ error= 1;
+ _ma_mark_file_crashed(share);
+ goto end;
}
@@ -7173,3 +7367,25 @@ void maria_ignore_trids(MARIA_HA *info)
info->trn->min_read_from= ~(TrID) 0;
}
}
+
+
+#ifndef DBUG_OFF
+
+/* The following functions are useful to call from debugger */
+
+void _ma_print_block_info(uchar *buff)
+{
+ LSN lsn= lsn_korr(buff);
+
+ printf("LSN: %lu,0x%lx type: %u dir_entries: %u dir_free: %u empty_space: %u\n",
+ LSN_IN_PARTS(lsn),
+ (uint)buff[PAGE_TYPE_OFFSET],
+ (uint)buff[DIR_COUNT_OFFSET],
+ (uint)buff[DIR_FREE_OFFSET],
+ (uint) uint2korr(buff + EMPTY_SPACE_OFFSET));
+ printf("Start of directory: %lu\n",
+ maria_block_size - PAGE_SUFFIX_SIZE -
+ (uint) buff[DIR_COUNT_OFFSET] * DIR_ENTRY_SIZE);
+ _ma_print_directory(stdout, buff, maria_block_size);
+}
+#endif
diff --git a/storage/maria/ma_blockrec.h b/storage/maria/ma_blockrec.h
index cb682eef701..c39b0af73ad 100644
--- a/storage/maria/ma_blockrec.h
+++ b/storage/maria/ma_blockrec.h
@@ -176,6 +176,7 @@ my_bool _ma_compare_block_record(register MARIA_HA *info,
void _ma_compact_block_page(uchar *buff, uint block_size, uint rownr,
my_bool extend_block, TrID min_read_from,
uint min_row_length);
+my_bool enough_free_entries_on_page(MARIA_SHARE *share, uchar *page_buff);
TRANSLOG_ADDRESS
maria_page_get_lsn(uchar *page, pgcache_page_no_t page_no, uchar* data_ptr);
@@ -279,7 +280,8 @@ my_bool write_hook_for_file_id(enum translog_record_type type,
my_bool write_hook_for_commit(enum translog_record_type type,
TRN *trn, MARIA_HA *tbl_info, LSN *lsn,
void *hook_arg);
-void _ma_block_get_status(void* param, my_bool concurrent_insert);
+void _ma_block_get_status(void *param, my_bool concurrent_insert);
+void _ma_block_get_status_no_versioning(void *param, my_bool concurrent_ins);
void _ma_block_update_status(void *param);
void _ma_block_restore_status(void *param);
my_bool _ma_block_check_status(void *param);
diff --git a/storage/maria/ma_check.c b/storage/maria/ma_check.c
index 4f93bf812a3..307befab5c7 100644
--- a/storage/maria/ma_check.c
+++ b/storage/maria/ma_check.c
@@ -136,11 +136,13 @@ void maria_chk_init_for_check(HA_CHECK *param, MARIA_HA *info)
Set up transaction handler so that we can see all rows. When rows is read
we will check the found id against param->max_tried
*/
- if (!ma_control_file_inited())
- param->max_trid= 0; /* Give warning for first trid found */
- else
- param->max_trid= max_trid_in_system();
-
+ if (param->max_trid == 0)
+ {
+ if (!ma_control_file_inited())
+ param->max_trid= 0; /* Give warning for first trid found */
+ else
+ param->max_trid= max_trid_in_system();
+ }
maria_ignore_trids(info);
}
@@ -154,6 +156,9 @@ int maria_chk_status(HA_CHECK *param, MARIA_HA *info)
if (maria_is_crashed_on_repair(info))
_ma_check_print_warning(param,
"Table is marked as crashed and last repair failed");
+ else if (maria_in_repair(info))
+ _ma_check_print_warning(param,
+ "Last repair was aborted before finishing");
else if (maria_is_crashed(info))
_ma_check_print_warning(param,
"Table is marked as crashed");
@@ -864,7 +869,7 @@ static int chk_index(HA_CHECK *param, MARIA_HA *info, MARIA_KEYDEF *keyinfo,
llstr(anc_page->pos, llbuff));
}
- if (anc_page->size > (uint) keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE)
+ if (anc_page->size > share->max_index_block_size)
{
_ma_check_print_error(param,
"Page at %s has impossible (too big) pagelength",
@@ -1755,7 +1760,7 @@ static my_bool check_head_page(HA_CHECK *param, MARIA_HA *info, uchar *record,
_ma_check_print_error(param,
"Page %9s: Row: %3d has an extent with "
"wrong information in bitmap: "
- "Page %9s Page_type: %d Bitmap: %d",
+ "Page: %9s Page_type: %d Bitmap: %d",
llstr(page, llbuff), row,
llstr(extent_page, llbuff2),
page_type, bitmap_pattern);
@@ -1926,8 +1931,8 @@ static int check_block_record(HA_CHECK *param, MARIA_HA *info, int extend,
else
_ma_check_print_error(param,
"Page %9s: Wrong data in bitmap. Page_type: "
- "%d empty_space: %u Bitmap-bits: %d",
- llstr(page, llbuff), page_type,
+ "%d full: %d empty_space: %u Bitmap-bits: %d",
+ llstr(page, llbuff), page_type, full_dir,
empty_space, bitmap_pattern);
if (param->err_count++ > MAXERR || !(param->testflag & T_VERBOSE))
goto err;
@@ -2242,7 +2247,7 @@ static my_bool protect_against_repair_crash(MARIA_HA *info,
if ((param->testflag & T_NO_CREATE_RENAME_LSN) == 0)
{
/* this can be true only for a transactional table */
- maria_mark_crashed_on_repair(info);
+ maria_mark_in_repair(info);
if (_ma_state_info_write(share,
MA_STATE_INFO_WRITE_DONT_MOVE_OFFSET |
MA_STATE_INFO_WRITE_LOCK))
@@ -2267,10 +2272,14 @@ static int initialize_variables_for_repair(HA_CHECK *param,
MARIA_SORT_INFO *sort_info,
MARIA_SORT_PARAM *sort_param,
MARIA_HA *info,
- my_bool rep_quick)
+ my_bool rep_quick,
+ MARIA_SHARE *org_share)
{
MARIA_SHARE *share= info->s;
+ /* Ro allow us to restore state and check how state changed */
+ memcpy(org_share, share, sizeof(*share));
+
/* Repair code relies on share->state.state so we have to update it here */
if (share->lock.update_status)
(*share->lock.update_status)(info);
@@ -2318,11 +2327,13 @@ static int initialize_variables_for_repair(HA_CHECK *param,
}
/* Set up transaction handler so that we can see all rows */
- if (!ma_control_file_inited())
- param->max_trid= 0; /* Give warning for first trid found */
- else
- param->max_trid= max_trid_in_system();
-
+ if (param->max_trid == 0)
+ {
+ if (!ma_control_file_inited())
+ param->max_trid= 0; /* Give warning for first trid found */
+ else
+ param->max_trid= max_trid_in_system();
+ }
maria_ignore_trids(info);
/* Don't write transid's during repair */
maria_versioning(info, 0);
@@ -2330,6 +2341,23 @@ static int initialize_variables_for_repair(HA_CHECK *param,
}
+/*
+ During initialize_variables_for_repair and related functions we set some
+ variables to values that makes sence during repair.
+ This function restores these values to their original values so that we can
+ use the handler in MariaDB without having to close and open the table.
+*/
+
+static void restore_table_state_after_repair(MARIA_HA *info,
+ MARIA_SHARE *org_share)
+{
+ maria_versioning(info, info->s->have_versioning);
+ info->s->lock_key_trees= org_share->lock_key_trees;
+}
+
+
+
+
/**
@brief Drop all indexes
@@ -2478,11 +2506,11 @@ int maria_repair(HA_CHECK *param, register MARIA_HA *info,
char llbuff[22],llbuff2[22];
MARIA_SORT_INFO sort_info;
MARIA_SORT_PARAM sort_param;
- my_bool block_record, scan_inited= 0,
- reenable_logging= share->now_transactional;
+ my_bool block_record, scan_inited= 0, reenable_logging= 0;
enum data_file_type org_data_file_type= share->data_file_type;
myf sync_dir= ((share->now_transactional && !share->temporary) ?
MY_SYNC_DIR : 0);
+ MARIA_SHARE backup_share;
DBUG_ENTER("maria_repair");
got_error= 1;
@@ -2490,15 +2518,15 @@ int maria_repair(HA_CHECK *param, register MARIA_HA *info,
start_records= share->state.state.records;
if (!(param->testflag & T_SILENT))
{
- printf("- recovering (with keycache) MARIA-table '%s'\n",name);
+ printf("- recovering (with keycache) Aria-table '%s'\n",name);
printf("Data records: %s\n", llstr(start_records, llbuff));
}
if (initialize_variables_for_repair(param, &sort_info, &sort_param, info,
- rep_quick))
+ rep_quick, &backup_share))
goto err;
- if (reenable_logging)
+ if ((reenable_logging= share->now_transactional))
_ma_tmp_disable_logging_for_table(info, 0);
sort_param.current_filepos= sort_param.filepos= new_header_length=
@@ -2777,6 +2805,7 @@ err:
/* If caller had disabled logging it's not up to us to re-enable it */
if (reenable_logging)
_ma_reenable_logging_for_table(info, FALSE);
+ restore_table_state_after_repair(info, &backup_share);
my_free(sort_param.rec_buff, MYF(MY_ALLOW_ZERO_PTR));
my_free(sort_param.record,MYF(MY_ALLOW_ZERO_PTR));
@@ -2974,7 +3003,7 @@ int maria_sort_index(HA_CHECK *param, register MARIA_HA *info, char *name)
DBUG_RETURN(0);
if (!(param->testflag & T_SILENT))
- printf("- Sorting index for MARIA-table '%s'\n",name);
+ printf("- Sorting index for Aria-table '%s'\n",name);
if (protect_against_repair_crash(info, param, FALSE))
DBUG_RETURN(1);
@@ -3102,13 +3131,15 @@ static int sort_one_index(HA_CHECK *param, MARIA_HA *info,
new_page_pos=param->new_file_pos;
param->new_file_pos+=keyinfo->block_length;
key.keyinfo= keyinfo;
- key.data= info->lastkey_buff;
- if (!(buff= (uchar*) my_alloca((uint) keyinfo->block_length)))
+ if (!(buff= (uchar*) my_alloca((uint) keyinfo->block_length +
+ keyinfo->maxlength)))
{
_ma_check_print_error(param,"Not enough memory for key block");
DBUG_RETURN(-1);
}
+ key.data= buff + keyinfo->block_length;
+
if (_ma_fetch_keypage(&page, info, keyinfo, pagepos,
PAGECACHE_LOCK_LEFT_UNLOCKED,
DFLT_INIT_HITS, buff, 0))
@@ -3204,7 +3235,7 @@ static my_bool maria_zerofill_index(HA_CHECK *param, MARIA_HA *info,
DBUG_ENTER("maria_zerofill_index");
if (!(param->testflag & T_SILENT))
- printf("- Zerofilling index for MARIA-table '%s'\n",name);
+ printf("- Zerofilling index for Aria-table '%s'\n",name);
/* Go through the index file */
for (pos= share->base.keystart, page= (ulonglong) (pos / block_size);
@@ -3296,7 +3327,7 @@ static my_bool maria_zerofill_data(HA_CHECK *param, MARIA_HA *info,
DBUG_RETURN(0);
if (!(param->testflag & T_SILENT))
- printf("- Zerofilling data for MARIA-table '%s'\n",name);
+ printf("- Zerofilling data for Aria-table '%s'\n",name);
/* Go through the record file */
for (page= 1, pos= block_size;
@@ -3345,7 +3376,7 @@ static my_bool maria_zerofill_data(HA_CHECK *param, MARIA_HA *info,
case TAIL_PAGE:
{
uint max_entry= (uint) buff[DIR_COUNT_OFFSET];
- uint offset, dir_start;
+ uint offset, dir_start, empty_space;
uchar *dir;
if (zero_lsn)
@@ -3358,9 +3389,13 @@ static my_bool maria_zerofill_data(HA_CHECK *param, MARIA_HA *info,
is_head_page ? ~(TrID) 0 : 0,
is_head_page ?
share->base.min_block_length : 0);
+
/* compactation may have increased free space */
+ empty_space= uint2korr(buff + EMPTY_SPACE_OFFSET);
+ if (!enough_free_entries_on_page(share, buff))
+ empty_space= 0; /* Page is full */
if (_ma_bitmap_set(info, page, is_head_page,
- uint2korr(buff + EMPTY_SPACE_OFFSET)))
+ empty_space))
goto err;
/* Zerofill the not used part */
@@ -3545,7 +3580,8 @@ int maria_repair_by_sort(HA_CHECK *param, register MARIA_HA *info,
ulonglong key_map;
myf sync_dir= ((share->now_transactional && !share->temporary) ?
MY_SYNC_DIR : 0);
- my_bool scan_inited= 0;
+ my_bool scan_inited= 0, reenable_logging= 0;
+ MARIA_SHARE backup_share;
DBUG_ENTER("maria_repair_by_sort");
LINT_INIT(key_map);
@@ -3554,14 +3590,17 @@ int maria_repair_by_sort(HA_CHECK *param, register MARIA_HA *info,
start_records= share->state.state.records;
if (!(param->testflag & T_SILENT))
{
- printf("- recovering (with sort) MARIA-table '%s'\n",name);
+ printf("- recovering (with sort) Aria-table '%s'\n",name);
printf("Data records: %s\n", llstr(start_records,llbuff));
}
if (initialize_variables_for_repair(param, &sort_info, &sort_param, info,
- rep_quick))
+ rep_quick, &backup_share))
goto err;
+ if ((reenable_logging= share->now_transactional))
+ _ma_tmp_disable_logging_for_table(info, 0);
+
org_header_length= share->pack.header_length;
new_header_length= (param->testflag & T_UNPACK) ? 0 : org_header_length;
sort_param.filepos= new_header_length;
@@ -3967,6 +4006,11 @@ err:
share->state.changed&= ~(STATE_NOT_OPTIMIZED_ROWS | STATE_NOT_ZEROFILLED |
STATE_NOT_MOVABLE);
+ /* If caller had disabled logging it's not up to us to re-enable it */
+ if (reenable_logging)
+ _ma_reenable_logging_for_table(info, FALSE);
+ restore_table_state_after_repair(info, &backup_share);
+
my_free(sort_param.rec_buff, MYF(MY_ALLOW_ZERO_PTR));
my_free(sort_param.record,MYF(MY_ALLOW_ZERO_PTR));
my_free(sort_info.key_block, MYF(MY_ALLOW_ZERO_PTR));
@@ -4037,10 +4081,12 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
IO_CACHE new_data_cache; /* For non-quick repair. */
IO_CACHE_SHARE io_share;
MARIA_SORT_INFO sort_info;
+ MARIA_SHARE backup_share;
ulonglong key_map;
pthread_attr_t thr_attr;
myf sync_dir= ((share->now_transactional && !share->temporary) ?
MY_SYNC_DIR : 0);
+ my_bool reenable_logging= 0;
DBUG_ENTER("maria_repair_parallel");
LINT_INIT(key_map);
@@ -4049,14 +4095,17 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
start_records= share->state.state.records;
if (!(param->testflag & T_SILENT))
{
- printf("- parallel recovering (with sort) MARIA-table '%s'\n",name);
+ printf("- parallel recovering (with sort) Aria-table '%s'\n",name);
printf("Data records: %s\n", llstr(start_records, llbuff));
}
if (initialize_variables_for_repair(param, &sort_info, &tmp_sort_param, info,
- rep_quick))
+ rep_quick, &backup_share))
goto err;
+ if ((reenable_logging= share->now_transactional))
+ _ma_tmp_disable_logging_for_table(info, 0);
+
new_header_length= ((param->testflag & T_UNPACK) ? 0 :
share->pack.header_length);
@@ -4360,8 +4409,7 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
goto err;
}
}
- share->state.state.data_file_length= share->state.state.data_file_length=
- sort_param->filepos;
+ share->state.state.data_file_length= sort_param->filepos;
/* Only whole records */
share->state.version= (ulong) time((time_t*) 0);
/*
@@ -4484,6 +4532,11 @@ err:
pthread_cond_destroy (&sort_info.cond);
pthread_mutex_destroy(&sort_info.mutex);
+ /* If caller had disabled logging it's not up to us to re-enable it */
+ if (reenable_logging)
+ _ma_reenable_logging_for_table(info, FALSE);
+ restore_table_state_after_repair(info, &backup_share);
+
my_free(sort_info.ft_buf, MYF(MY_ALLOW_ZERO_PTR));
my_free(sort_info.key_block,MYF(MY_ALLOW_ZERO_PTR));
my_free(sort_param,MYF(MY_ALLOW_ZERO_PTR));
@@ -5563,7 +5616,7 @@ static int sort_insert_key(MARIA_SORT_PARAM *sort_param,
a_length+=t_length;
_ma_store_page_used(share, anc_buff, a_length);
key_block->end_pos+=t_length;
- if (a_length <= (uint) (keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE))
+ if (a_length <= share->max_index_block_size)
{
MARIA_KEY tmp_key2;
tmp_key2.data= key_block->lastkey;
@@ -5633,7 +5686,7 @@ static int sort_delete_record(MARIA_SORT_PARAM *sort_param)
_ma_check_print_error(param,
"Recover aborted; Can't run standard recovery on "
"compressed tables with errors in data-file. "
- "Use 'maria_chk --safe-recover' to fix it");
+ "Use 'aria_chk --safe-recover' to fix it");
DBUG_RETURN(1);
}
@@ -6075,7 +6128,7 @@ void _ma_update_auto_increment_key(HA_CHECK *param, MARIA_HA *info,
}
if (!(param->testflag & T_SILENT) &&
!(param->testflag & T_REP))
- printf("Updating MARIA file: %s\n", param->isam_file_name);
+ printf("Updating Aria file: %s\n", param->isam_file_name);
/*
We have to use an allocated buffer instead of info->rec_buff as
_ma_put_key_in_record() may use info->rec_buff
@@ -6716,7 +6769,7 @@ static void _ma_check_print_not_visible_error(HA_CHECK *param, TrID used_trid)
{
_ma_check_print_warning(param,
"Found row with transaction id %s but no "
- "maria_control_file was specified. "
+ "aria_control_file was used or specified. "
"The table may be corrupted",
llstr(used_trid, buff));
}
@@ -6724,7 +6777,7 @@ static void _ma_check_print_not_visible_error(HA_CHECK *param, TrID used_trid)
{
_ma_check_print_error(param,
"Found row with transaction id %s when max "
- "transaction id according to maria_control_file "
+ "transaction id according to aria_control_file "
"is %s",
llstr(used_trid, buff),
llstr(param->max_trid, buff2));
diff --git a/storage/maria/ma_check_standalone.h b/storage/maria/ma_check_standalone.h
index 9b30c96089f..8cda285bb99 100644
--- a/storage/maria/ma_check_standalone.h
+++ b/storage/maria/ma_check_standalone.h
@@ -64,7 +64,7 @@ void _ma_check_print_warning(HA_CHECK *param, const char *fmt,...)
if (!param->warning_printed && !param->error_printed)
{
if (param->testflag & T_SILENT)
- fprintf(stderr,"%s: MARIA file %s\n",my_progname_short,
+ fprintf(stderr,"%s: Aria file %s\n",my_progname_short,
param->isam_file_name);
param->out_flag|= O_DATA_LOST;
}
@@ -90,7 +90,7 @@ void _ma_check_print_error(HA_CHECK *param, const char *fmt,...)
if (!param->warning_printed && !param->error_printed)
{
if (param->testflag & T_SILENT)
- fprintf(stderr,"%s: MARIA file %s\n",my_progname_short,param->isam_file_name);
+ fprintf(stderr,"%s: Aria file %s\n",my_progname_short,param->isam_file_name);
param->out_flag|= O_DATA_LOST;
}
param->error_printed|=1;
diff --git a/storage/maria/ma_checkpoint.c b/storage/maria/ma_checkpoint.c
index b75267f81f1..cf13cee9452 100644
--- a/storage/maria/ma_checkpoint.c
+++ b/storage/maria/ma_checkpoint.c
@@ -789,7 +789,6 @@ static int collect_tables(LEX_STRING *str, LSN checkpoint_start_log_horizon)
not seen again in the loop.
*/
share->in_checkpoint= MARIA_CHECKPOINT_LOOKS_AT_ME;
- /** @todo avoid strlen() */
total_names_length+= share->open_file_name.length;
}
}
diff --git a/storage/maria/ma_checkpoint.h b/storage/maria/ma_checkpoint.h
index 69645c6bcda..126f8111a23 100644
--- a/storage/maria/ma_checkpoint.h
+++ b/storage/maria/ma_checkpoint.h
@@ -89,4 +89,4 @@ static inline LSN lsn_read_non_atomic_32(const volatile LSN *x)
@param sentence text to write
*/
#define ma_message_no_user(level, sentence) \
- my_printf_error(HA_ERR_GENERIC, "Maria engine: %s", MYF(level), sentence)
+ my_printf_error(HA_ERR_GENERIC, "Aria engine: %s", MYF(level), sentence)
diff --git a/storage/maria/ma_control_file.c b/storage/maria/ma_control_file.c
index 1e1fc34c77e..6f9018885e9 100644
--- a/storage/maria/ma_control_file.c
+++ b/storage/maria/ma_control_file.c
@@ -234,7 +234,7 @@ static int lock_control_file(const char *name)
{
if (retry == 0)
my_printf_error(HA_ERR_INITIALIZATION,
- "Can't lock maria control file '%s' for exclusive use, "
+ "Can't lock aria control file '%s' for exclusive use, "
"error: %d. Will retry for %d seconds", 0,
name, my_errno, MARIA_MAX_CONTROL_FILE_LOCK_RETRY);
if (retry++ > MARIA_MAX_CONTROL_FILE_LOCK_RETRY)
@@ -372,14 +372,14 @@ CONTROL_FILE_ERROR ma_control_file_open(my_bool create_if_missing,
CF_MAGIC_STRING, CF_MAGIC_STRING_SIZE))
{
error= CONTROL_FILE_BAD_MAGIC_STRING;
- errmsg= "Missing valid id at start of file. File is not a valid maria control file";
+ errmsg= "Missing valid id at start of file. File is not a valid aria control file";
goto err;
}
if (buffer[CF_VERSION_OFFSET] > CONTROL_FILE_VERSION)
{
error= CONTROL_FILE_BAD_VERSION;
- sprintf(errmsg_buff, "File is from a future maria system: %d. Current version is: %d",
+ sprintf(errmsg_buff, "File is from a future aria system: %d. Current version is: %d",
(int) buffer[CF_VERSION_OFFSET], CONTROL_FILE_VERSION);
errmsg= errmsg_buff;
goto err;
@@ -398,15 +398,16 @@ CONTROL_FILE_ERROR ma_control_file_open(my_bool create_if_missing,
}
new_block_size= uint2korr(buffer + CF_BLOCKSIZE_OFFSET);
- if (new_block_size != maria_block_size)
+ if (new_block_size != maria_block_size && maria_block_size)
{
error= CONTROL_FILE_WRONG_BLOCKSIZE;
sprintf(errmsg_buff,
- "Block size in control file (%u) is different than given maria_block_size: %u",
+ "Block size in control file (%u) is different than given aria_block_size: %u",
new_block_size, (uint) maria_block_size);
errmsg= errmsg_buff;
goto err;
}
+ maria_block_size= new_block_size;
if (my_checksum(0, buffer, new_cf_create_time_size - CF_CHECKSUM_SIZE) !=
uint4korr(buffer + new_cf_create_time_size - CF_CHECKSUM_SIZE))
@@ -444,7 +445,7 @@ ok:
err:
if (print_error)
my_printf_error(HA_ERR_INITIALIZATION,
- "Got error '%s' when trying to use maria control file "
+ "Got error '%s' when trying to use aria control file "
"'%s'", 0, errmsg, name);
ma_control_file_end(); /* will unlock file if needed */
DBUG_RETURN(error);
diff --git a/storage/maria/ma_control_file.h b/storage/maria/ma_control_file.h
index 4cb5527620d..f828ae69c6d 100644
--- a/storage/maria/ma_control_file.h
+++ b/storage/maria/ma_control_file.h
@@ -21,7 +21,7 @@
#ifndef _ma_control_file_h
#define _ma_control_file_h
-#define CONTROL_FILE_BASE_NAME "maria_log_control"
+#define CONTROL_FILE_BASE_NAME "aria_log_control"
/*
Major version for control file. Should only be changed when doing
big changes that made the new control file incompatible with all
diff --git a/storage/maria/ma_create.c b/storage/maria/ma_create.c
index 6886dc8f291..9cf042ed21e 100644
--- a/storage/maria/ma_create.c
+++ b/storage/maria/ma_create.c
@@ -653,7 +653,7 @@ int maria_create(const char *name, enum data_file_type datafile_type,
if (info_length > 65535)
{
my_printf_error(HA_WRONG_CREATE_OPTION,
- "Maria table '%s' has too many columns and/or "
+ "Aria table '%s' has too many columns and/or "
"indexes and/or unique constraints.",
MYF(0), name + dirname_length(name));
my_errno= HA_WRONG_CREATE_OPTION;
@@ -841,7 +841,7 @@ int maria_create(const char *name, enum data_file_type datafile_type,
*/
if (_ma_test_if_reopen(filename))
{
- my_printf_error(0, "MARIA table '%s' is in use "
+ my_printf_error(0, "Aria table '%s' is in use "
"(most likely by a MERGE table). Try FLUSH TABLES.",
MYF(0), name + dirname_length(name));
my_errno= HA_ERR_TABLE_EXIST;
diff --git a/storage/maria/ma_dbug.c b/storage/maria/ma_dbug.c
index ea69975ad4b..0d2db0d4f4b 100644
--- a/storage/maria/ma_dbug.c
+++ b/storage/maria/ma_dbug.c
@@ -124,7 +124,7 @@ void _ma_print_keydata(FILE *stream, register HA_KEYSEG *keyseg,
case HA_KEYTYPE_LONGLONG:
{
char buff[21];
- longlong2str(mi_sint8korr(key),buff,-10);
+ longlong10_to_str(mi_sint8korr(key),buff,-10);
VOID(fprintf(stream,"%s",buff));
key=end;
break;
@@ -132,7 +132,7 @@ void _ma_print_keydata(FILE *stream, register HA_KEYSEG *keyseg,
case HA_KEYTYPE_ULONGLONG:
{
char buff[21];
- longlong2str(mi_sint8korr(key),buff,10);
+ longlong10_to_str(mi_sint8korr(key),buff,10);
VOID(fprintf(stream,"%s",buff));
key=end;
break;
diff --git a/storage/maria/ma_delete.c b/storage/maria/ma_delete.c
index 0e9e5caafbf..2420cac0e93 100644
--- a/storage/maria/ma_delete.c
+++ b/storage/maria/ma_delete.c
@@ -1,4 +1,5 @@
/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+ Copyright (C) 2009-2010 Monty Program Ab
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
@@ -180,7 +181,11 @@ my_bool _ma_ck_delete(MARIA_HA *info, MARIA_KEY *key)
key->data= key_buff;
}
- res= _ma_ck_real_delete(info, key, &new_root);
+ if ((res= _ma_ck_real_delete(info, key, &new_root)))
+ {
+ /* We have to mark the table crashed before unpin_all_pages() */
+ maria_mark_crashed(info);
+ }
key->data= save_key_data;
if (!res && share->now_transactional)
@@ -218,7 +223,8 @@ my_bool _ma_ck_real_delete(register MARIA_HA *info, MARIA_KEY *key,
my_errno=ENOMEM;
DBUG_RETURN(1);
}
- DBUG_PRINT("info",("root_page: %ld", (long) old_root));
+ DBUG_PRINT("info",("root_page: %lu",
+ (ulong) (old_root / keyinfo->block_length)));
if (_ma_fetch_keypage(&page, info, keyinfo, old_root,
PAGECACHE_LOCK_WRITE, DFLT_INIT_HITS, root_buff, 0))
{
@@ -435,7 +441,8 @@ static int d_search(MARIA_HA *info, MARIA_KEY *key, uint32 comp_flag,
*/
if (share->now_transactional &&
_ma_log_delete(anc_page, s_temp.key_pos,
- s_temp.changed_length, s_temp.move_length))
+ s_temp.changed_length, s_temp.move_length,
+ 0, KEY_OP_DEBUG_LOG_DEL_CHANGE_1))
DBUG_RETURN(-1);
if (!nod_flag)
@@ -458,7 +465,7 @@ static int d_search(MARIA_HA *info, MARIA_KEY *key, uint32 comp_flag,
}
if (ret_value >0)
{
- save_flag=1;
+ save_flag= 2;
if (ret_value == 1)
ret_value= underflow(info, keyinfo, anc_page, &leaf_page, keypos);
else
@@ -474,17 +481,20 @@ static int d_search(MARIA_HA *info, MARIA_KEY *key, uint32 comp_flag,
ret_value= _ma_insert(info, key, anc_page, keypos,
last_key.data,
(MARIA_PAGE*) 0, (uchar*) 0, (my_bool) 0);
+
+ if (_ma_write_keypage(&leaf_page, PAGECACHE_LOCK_LEFT_WRITELOCKED,
+ DFLT_INIT_HITS))
+ ret_value= -1;
}
}
- if (ret_value == 0 && anc_page->size >
- (uint) (keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE))
+ if (ret_value == 0 && anc_page->size > share->max_index_block_size)
{
/* parent buffer got too big ; We have to split the page */
- save_flag=1;
+ save_flag= 3;
ret_value= _ma_split_page(info, key, anc_page,
- (uint) (keyinfo->block_length -
- KEYPAGE_CHECKSUM_SIZE),
+ share->max_index_block_size,
(uchar*) 0, 0, 0, lastkey, 0) | 2;
+ DBUG_ASSERT(anc_page->org_size == anc_page->size);
}
if (save_flag && ret_value != 1)
{
@@ -550,7 +560,8 @@ static int del(MARIA_HA *info, MARIA_KEY *key,
MARIA_KEY ret_key;
MARIA_PAGE next_page;
DBUG_ENTER("del");
- DBUG_PRINT("enter",("leaf_page: %ld keypos: 0x%lx", (long) leaf_page,
+ DBUG_PRINT("enter",("leaf_page: %lu keypos: 0x%lx",
+ (ulong) (leaf_page->pos / share->block_size),
(ulong) keypos));
DBUG_DUMP("leaf_buff", leaf_page->buff, leaf_page->size);
@@ -587,11 +598,10 @@ static int del(MARIA_HA *info, MARIA_KEY *key,
ret_value= underflow(info, keyinfo, leaf_page, &next_page,
endpos);
if (ret_value == 0 && leaf_page->size >
- (uint) (keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE))
+ share->max_index_block_size)
{
ret_value= (_ma_split_page(info, key, leaf_page,
- (uint) (keyinfo->block_length -
- KEYPAGE_CHECKSUM_SIZE),
+ share->max_index_block_size,
(uchar*) 0, 0, 0,
ret_key_buff, 0) | 2);
}
@@ -708,8 +718,7 @@ err:
@fn underflow()
@param anc_buff Anchestor page data
- @param leaf_page Page number of leaf page
- @param leaf_buff Leaf page (page that underflowed)
+ @param leaf_page Leaf page (page that underflowed)
@param leaf_page_link Pointer to pin information about leaf page
@param keypos Position after current key in anc_buff
@@ -743,7 +752,8 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
MARIA_KEY tmp_key, anc_key, leaf_key;
MARIA_PAGE next_page;
DBUG_ENTER("underflow");
- DBUG_PRINT("enter",("leaf_page: %ld keypos: 0x%lx",(long) leaf_page->pos,
+ DBUG_PRINT("enter",("leaf_page: %lu keypos: 0x%lx",
+ (ulong) (leaf_page->pos / share->block_size),
(ulong) keypos));
DBUG_DUMP("anc_buff", anc_page->buff, anc_page->size);
DBUG_DUMP("leaf_buff", leaf_page->buff, leaf_page->size);
@@ -841,7 +851,7 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
anc_page->size= new_anc_length;
page_store_size(share, anc_page);
- if (buff_length <= (uint) (keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE))
+ if (buff_length <= share->max_index_block_size)
{
/* All keys fitted into one page */
page_mark_changed(info, &next_page);
@@ -854,10 +864,15 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
if (share->now_transactional)
{
- /* Log changes to parent page */
+ /*
+ Log changes to parent page. Note that this page may have been
+ temporarily bigger than block_size.
+ */
if (_ma_log_delete(anc_page, key_deleted.key_pos,
key_deleted.changed_length,
- key_deleted.move_length))
+ key_deleted.move_length,
+ anc_length - anc_page->org_size,
+ KEY_OP_DEBUG_LOG_DEL_CHANGE_2))
goto err;
/*
Log changes to leaf page. Data for leaf page is in leaf_buff
@@ -986,7 +1001,8 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
*/
DBUG_ASSERT(new_buff_length <= next_buff_length);
if (_ma_log_prefix(&next_page, key_inserted.changed_length,
- (int) (new_buff_length - next_buff_length)))
+ (int) (new_buff_length - next_buff_length),
+ KEY_OP_DEBUG_LOG_PREFIX_1))
goto err;
}
page_mark_changed(info, &next_page);
@@ -1044,11 +1060,19 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
/* Remember for logging how many bytes of leaf_buff that are not changed */
DBUG_ASSERT((int) key_inserted.changed_length >= key_inserted.move_length);
- unchanged_leaf_length= leaf_length - (key_inserted.changed_length -
- key_inserted.move_length);
+ unchanged_leaf_length= (leaf_length - p_length -
+ (key_inserted.changed_length -
+ key_inserted.move_length));
new_buff_length= buff_length + leaf_length - p_length + t_length;
+#ifdef EXTRA_DEBUG
+ /* Ensure that unchanged_leaf_length is correct */
+ DBUG_ASSERT(bcmp(next_page.buff + new_buff_length - unchanged_leaf_length,
+ leaf_buff + leaf_length - unchanged_leaf_length,
+ unchanged_leaf_length) == 0);
+#endif
+
page_flag= next_page.flag | leaf_page->flag;
if (anc_key.flag & (SEARCH_USER_KEY_HAS_TRANSID |
SEARCH_PAGE_KEY_HAS_TRANSID))
@@ -1069,8 +1093,7 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
anc_page->size= new_anc_length;
page_store_size(share, anc_page);
- if (new_buff_length <= (uint) (keyinfo->block_length -
- KEYPAGE_CHECKSUM_SIZE))
+ if (new_buff_length <= share->max_index_block_size)
{
/* All keys fitted into one page */
page_mark_changed(info, leaf_page);
@@ -1079,10 +1102,14 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
if (share->now_transactional)
{
- /* Log changes to parent page */
+ /*
+ Log changes to parent page. Note that this page may have been
+ temporarily bigger than block_size.
+ */
if (_ma_log_delete(anc_page, key_deleted.key_pos,
- key_deleted.changed_length, key_deleted.move_length))
-
+ key_deleted.changed_length, key_deleted.move_length,
+ anc_length - anc_page->org_size,
+ KEY_OP_DEBUG_LOG_DEL_CHANGE_3))
goto err;
/*
Log changes to next page. Data for leaf page is in buff
@@ -1192,8 +1219,10 @@ static int underflow(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
This contains original data with new data added first
*/
DBUG_ASSERT(leaf_length <= new_leaf_length);
+ DBUG_ASSERT(new_leaf_length >= unchanged_leaf_length);
if (_ma_log_prefix(leaf_page, new_leaf_length - unchanged_leaf_length,
- (int) (new_leaf_length - leaf_length)))
+ (int) (new_leaf_length - leaf_length),
+ KEY_OP_DEBUG_LOG_PREFIX_2))
goto err;
/*
Log changes to next page
@@ -1395,7 +1424,9 @@ static uint remove_key(MARIA_KEYDEF *keyinfo, uint page_flag, uint nod_flag,
****************************************************************************/
/**
- @brief log entry where some parts are deleted and some things are changed
+ @brief
+ log entry where some parts are deleted and some things are changed
+ and some data could be added last.
@fn _ma_log_delete()
@param info Maria handler
@@ -1404,74 +1435,148 @@ static uint remove_key(MARIA_KEYDEF *keyinfo, uint page_flag, uint nod_flag,
@param key_pos Start of change area
@param changed_length How many bytes where changed at key_pos
@param move_length How many bytes where deleted at key_pos
+ @param append_length Length of data added last
+ This is taken from end of ma_page->buff
+ This is mainly used when a key is deleted. The append happens
+ when we delete a key from a page with data > block_size kept in
+ memory and we have to add back the data that was stored > block_size
*/
my_bool _ma_log_delete(MARIA_PAGE *ma_page, const uchar *key_pos,
- uint changed_length, uint move_length)
+ uint changed_length, uint move_length,
+ uint append_length __attribute__((unused)),
+ enum en_key_debug debug_marker __attribute__((unused)))
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 9 + 7], *log_pos;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3];
- uint translog_parts;
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 2 + 3 + 3 + 6 + 3 + 7];
+ uchar *log_pos;
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 7];
+ uint translog_parts, current_size, extra_length;
uint offset= (uint) (key_pos - ma_page->buff);
MARIA_HA *info= ma_page->info;
MARIA_SHARE *share= info->s;
my_off_t page;
DBUG_ENTER("_ma_log_delete");
DBUG_PRINT("enter", ("page: %lu changed_length: %u move_length: %d",
- (ulong) ma_page->pos, changed_length, move_length));
+ (ulong) (ma_page->pos / share->block_size),
+ changed_length, move_length));
DBUG_ASSERT(share->now_transactional && move_length);
DBUG_ASSERT(offset + changed_length <= ma_page->size);
+ DBUG_ASSERT(ma_page->org_size - move_length + append_length == ma_page->size);
+ DBUG_ASSERT(move_length <= ma_page->org_size - share->keypage_header);
/* Store address of new root page */
page= ma_page->pos / share->block_size;
page_store(log_data + FILEID_STORE_SIZE, page);
log_pos= log_data+ FILEID_STORE_SIZE + PAGE_STORE_SIZE;
+ current_size= ma_page->org_size;
+
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ *log_pos++= KEY_OP_DEBUG;
+ *log_pos++= debug_marker;
+#endif
+
+ /* Store keypage_flag */
+ *log_pos++= KEY_OP_SET_PAGEFLAG;
+ *log_pos++= ma_page->buff[KEYPAGE_TRANSFLAG_OFFSET];
+
log_pos[0]= KEY_OP_OFFSET;
int2store(log_pos+1, offset);
- log_pos[3]= KEY_OP_SHIFT;
- int2store(log_pos+4, -(int) move_length);
- log_pos+= 6;
- translog_parts= 1;
+ log_pos+= 3;
+ translog_parts= TRANSLOG_INTERNAL_PARTS + 1;
+ extra_length= 0;
+
if (changed_length)
{
+ if (offset + changed_length >= share->max_index_block_size)
+ {
+ changed_length= share->max_index_block_size - offset;
+ move_length= 0; /* Nothing to move */
+ current_size= share->max_index_block_size;
+ }
+
log_pos[0]= KEY_OP_CHANGE;
int2store(log_pos+1, changed_length);
log_pos+= 3;
- translog_parts= 2;
- log_array[TRANSLOG_INTERNAL_PARTS + 1].str= ma_page->buff + offset;
- log_array[TRANSLOG_INTERNAL_PARTS + 1].length= changed_length;
+ log_array[translog_parts].str= ma_page->buff + offset;
+ log_array[translog_parts].length= changed_length;
+ translog_parts++;
+
+ /* We only have to move things after offset+changed_length */
+ offset+= changed_length;
}
-#ifdef EXTRA_DEBUG_KEY_CHANGES
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos - log_data);
+
+ if (move_length)
{
- int page_length= ma_page->size;
- ha_checksum crc;
- crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE,
- page_length - LSN_STORE_SIZE);
- log_pos[0]= KEY_OP_CHECK;
- int2store(log_pos+1, page_length);
- int4store(log_pos+3, crc);
-
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7;
- changed_length+= 7;
+ uint log_length;
+ if (offset + move_length < share->max_index_block_size)
+ {
+ /*
+ Move down things that is on page.
+ page_offset in apply_redo_inxed() will be at original offset
+ + changed_length.
+ */
+ log_pos[0]= KEY_OP_SHIFT;
+ int2store(log_pos+1, - (int) move_length);
+ log_length= 3;
+ current_size-= move_length;
+ }
+ else
+ {
+ /* Delete to end of page */
+ uint tmp= current_size - offset;
+ current_size= offset;
+ log_pos[0]= KEY_OP_DEL_SUFFIX;
+ int2store(log_pos+1, tmp);
+ log_length= 3;
+ }
+ log_array[translog_parts].str= log_pos;
+ log_array[translog_parts].length= log_length;
translog_parts++;
+ log_pos+= log_length;
+ extra_length+= log_length;
}
-#endif
- log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos - log_data);
+ if (current_size != ma_page->size &&
+ current_size != share->max_index_block_size)
+ {
+ /* Append data that didn't fit on the page before */
+ uint length= (min(ma_page->size, share->max_index_block_size) -
+ current_size);
+ uchar *data= ma_page->buff + current_size;
+
+ DBUG_ASSERT(length <= append_length);
+
+ log_pos[0]= KEY_OP_ADD_SUFFIX;
+ int2store(log_pos+1, length);
+ log_array[translog_parts].str= log_pos;
+ log_array[translog_parts].length= 3;
+ log_array[translog_parts + 1].str= data;
+ log_array[translog_parts + 1].length= length;
+ log_pos+= 3;
+ translog_parts+= 2;
+ current_size+= length;
+ extra_length+= 3 + length;
+ }
+
+ _ma_log_key_changes(ma_page,
+ log_array + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= current_size;
if (translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
(translog_size_t)
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length +
- changed_length,
- TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_array[TRANSLOG_INTERNAL_PARTS].length +
+ changed_length + extra_length, translog_parts,
log_array, log_data, NULL))
DBUG_RETURN(1);
+
DBUG_RETURN(0);
}
diff --git a/storage/maria/ma_init.c b/storage/maria/ma_init.c
index 552b0767bec..902f06d93e5 100644
--- a/storage/maria/ma_init.c
+++ b/storage/maria/ma_init.c
@@ -40,6 +40,11 @@ void history_state_free(MARIA_STATE_HISTORY_CLOSED *closed_history)
}
+static int dummy_maria_create_trn_hook(MARIA_HA *info __attribute__((unused)))
+{
+ return 0;
+}
+
/*
Initialize maria
@@ -64,6 +69,7 @@ int maria_init(void)
pthread_mutex_init(&THR_LOCK_maria,MY_MUTEX_INIT_SLOW);
_ma_init_block_record_data();
trnman_end_trans_hook= _ma_trnman_end_trans_hook;
+ maria_create_trn_hook= dummy_maria_create_trn_hook;
my_handler_error_register();
}
hash_init(&maria_stored_state, &my_charset_bin, 32,
@@ -107,3 +113,72 @@ void maria_end(void)
hash_free(&maria_stored_state);
}
}
+
+/**
+ Upgrade from older Aria versions:
+
+ - In MariaDB 5.1, the name of the control file and log files had the
+ 'maria' prefix, now they have the 'aria' prefix.
+
+ @return: 0 ok
+ 1 error
+
+*/
+
+my_bool maria_upgrade()
+{
+ char name[FN_REFLEN], new_name[FN_REFLEN];
+ DBUG_ENTER("maria_upgrade");
+
+ fn_format(name, "maria_log_control", maria_data_root, "", MYF(MY_WME));
+
+ if (!my_access(name,F_OK))
+ {
+ /*
+ Old style control file found; Rename the control file and the log files.
+ We start by renaming all log files, so that if we get a crash
+ we will continue from where we left.
+ */
+ uint i;
+ MY_DIR *dir= my_dir(maria_data_root, MYF(MY_WME));
+ if (!dir)
+ DBUG_RETURN(1);
+
+ my_message(HA_ERR_INITIALIZATION,
+ "Found old style Maria log files; "
+ "Converting them to Aria names",
+ MYF(ME_JUST_INFO));
+
+ for (i= 0; i < dir->number_off_files; i++)
+ {
+ const char *file= dir->dir_entry[i].name;
+ if (strncmp(file, "maria_log.", 10) == 0 &&
+ file[10] >= '0' && file[10] <= '9' &&
+ file[11] >= '0' && file[11] <= '9' &&
+ file[12] >= '0' && file[12] <= '9' &&
+ file[13] >= '0' && file[13] <= '9' &&
+ file[14] >= '0' && file[14] <= '9' &&
+ file[15] >= '0' && file[15] <= '9' &&
+ file[16] >= '0' && file[16] <= '9' &&
+ file[17] >= '0' && file[17] <= '9' &&
+ file[18] == '\0')
+ {
+ /* Remove the 'm' in 'maria' */
+ char old_logname[FN_REFLEN], new_logname[FN_REFLEN];
+ fn_format(old_logname, file, maria_data_root, "", MYF(0));
+ fn_format(new_logname, file+1, maria_data_root, "", MYF(0));
+ if (my_rename(old_logname, new_logname, MYF(MY_WME)))
+ {
+ my_dirend(dir);
+ DBUG_RETURN(1);
+ }
+ }
+ }
+ my_dirend(dir);
+
+ fn_format(new_name, CONTROL_FILE_BASE_NAME, maria_data_root, "", MYF(0));
+ if (my_rename(name, new_name, MYF(MY_WME)))
+ DBUG_RETURN(1);
+ }
+ DBUG_RETURN(0);
+}
diff --git a/storage/maria/ma_key_recover.c b/storage/maria/ma_key_recover.c
index 38317cd61db..1a61731e817 100644
--- a/storage/maria/ma_key_recover.c
+++ b/storage/maria/ma_key_recover.c
@@ -64,8 +64,9 @@ void _ma_unpin_all_pages(MARIA_HA *info, LSN undo_lsn)
builds.
*/
#ifdef EXTRA_DEBUG
- DBUG_ASSERT(!pinned_page->changed ||
- undo_lsn != LSN_IMPOSSIBLE || !info->s->now_transactional);
+ DBUG_ASSERT((!pinned_page->changed ||
+ undo_lsn != LSN_IMPOSSIBLE || !info->s->now_transactional) ||
+ (info->s->state.changed & STATE_CRASHED));
#endif
pagecache_unlock_by_link(info->s->pagecache, pinned_page->link,
pinned_page->unlock, PAGECACHE_UNPIN,
@@ -311,24 +312,33 @@ my_bool write_hook_for_undo_key_delete(enum translog_record_type type,
*/
my_bool _ma_log_prefix(MARIA_PAGE *ma_page, uint changed_length,
- int move_length)
+ int move_length,
+ enum en_key_debug debug_marker __attribute__((unused)))
{
uint translog_parts;
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 7 + 7 + 2], *log_pos;
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 7 + 7 + 2 + 2];
+ uchar *log_pos;
uchar *buff= ma_page->buff;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4];
pgcache_page_no_t page;
MARIA_HA *info= ma_page->info;
DBUG_ENTER("_ma_log_prefix");
DBUG_PRINT("enter", ("page: %lu changed_length: %u move_length: %d",
(ulong) ma_page->pos, changed_length, move_length));
+ DBUG_ASSERT(ma_page->size == ma_page->org_size + move_length);
+
page= ma_page->pos / info->s->block_size;
log_pos= log_data + FILEID_STORE_SIZE;
page_store(log_pos, page);
log_pos+= PAGE_STORE_SIZE;
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ (*log_pos++)= KEY_OP_DEBUG;
+ (*log_pos++)= debug_marker;
+#endif
+
/* Store keypage_flag */
*log_pos++= KEY_OP_SET_PAGEFLAG;
*log_pos++= buff[KEYPAGE_TRANSFLAG_OFFSET];
@@ -372,21 +382,11 @@ my_bool _ma_log_prefix(MARIA_PAGE *ma_page, uint changed_length,
translog_parts= 2;
}
-#ifdef EXTRA_DEBUG_KEY_CHANGES
- {
- int page_length= ma_page->size;
- ha_checksum crc;
- crc= my_checksum(0, buff + LSN_STORE_SIZE, page_length - LSN_STORE_SIZE);
- log_pos[0]= KEY_OP_CHECK;
- int2store(log_pos+1, page_length);
- int4store(log_pos+3, crc);
-
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7;
- changed_length+= 7;
- translog_parts++;
- }
-#endif
+ _ma_log_key_changes(ma_page, log_array + TRANSLOG_INTERNAL_PARTS +
+ translog_parts, log_pos, &changed_length,
+ &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
@@ -406,7 +406,7 @@ my_bool _ma_log_prefix(MARIA_PAGE *ma_page, uint changed_length,
my_bool _ma_log_suffix(MARIA_PAGE *ma_page, uint org_length, uint new_length)
{
LSN lsn;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4];
uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 10 + 7 + 2], *log_pos;
uchar *buff= ma_page->buff;
int diff;
@@ -416,6 +416,8 @@ my_bool _ma_log_suffix(MARIA_PAGE *ma_page, uint org_length, uint new_length)
DBUG_ENTER("_ma_log_suffix");
DBUG_PRINT("enter", ("page: %lu org_length: %u new_length: %u",
(ulong) ma_page->pos, org_length, new_length));
+ DBUG_ASSERT(ma_page->size == new_length);
+ DBUG_ASSERT(ma_page->org_size == org_length);
page= ma_page->pos / info->s->block_size;
@@ -450,20 +452,11 @@ my_bool _ma_log_suffix(MARIA_PAGE *ma_page, uint org_length, uint new_length)
log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos -
log_data);
-#ifdef EXTRA_DEBUG_KEY_CHANGES
- {
- ha_checksum crc;
- crc= my_checksum(0, buff + LSN_STORE_SIZE, new_length - LSN_STORE_SIZE);
- log_pos[0]= KEY_OP_CHECK;
- int2store(log_pos+1, new_length);
- int4store(log_pos+3, crc);
-
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7;
- extra_length+= 7;
- translog_parts++;
- }
-#endif
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
@@ -480,35 +473,45 @@ my_bool _ma_log_suffix(MARIA_PAGE *ma_page, uint org_length, uint new_length)
@param ma_page Changed page
@param org_page_length Length of data in page before key was added
+ Final length in ma_page->size
@note
If handle_overflow is set, then we have to protect against
logging changes that is outside of the page.
This may happen during underflow() handling where the buffer
in memory temporary contains more data than block_size
+
+ ma_page may be a page that was previously logged and cuted down
+ becasue it's too big. (org_page_length > ma_page->org_size)
*/
my_bool _ma_log_add(MARIA_PAGE *ma_page,
- uint org_page_length, uchar *key_pos,
- uint changed_length, int move_length,
+ uint org_page_length __attribute__ ((unused)),
+ uchar *key_pos, uint changed_length, int move_length,
my_bool handle_overflow __attribute__ ((unused)))
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3 + 3 + 3 + 3 + 7 + 2];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 3 + 3 + 3 + 3 + 7 +
+ 3 + 2];
uchar *log_pos;
uchar *buff= ma_page->buff;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 6];
MARIA_HA *info= ma_page->info;
uint offset= (uint) (key_pos - buff);
- uint page_length= info->s->block_size - KEYPAGE_CHECKSUM_SIZE;
- uint translog_parts;
+ uint max_page_size= info->s->max_index_block_size;
+ uint translog_parts, current_size;
pgcache_page_no_t page_pos;
DBUG_ENTER("_ma_log_add");
DBUG_PRINT("enter", ("page: %lu org_page_length: %u changed_length: %u "
"move_length: %d",
- (ulong) ma_page->pos, org_page_length, changed_length,
+ (ulong) (ma_page->pos / info->s->block_size),
+ org_page_length, changed_length,
move_length));
DBUG_ASSERT(info->s->now_transactional);
+ DBUG_ASSERT(move_length <= (int) changed_length);
+ DBUG_ASSERT(ma_page->org_size == min(org_page_length, max_page_size));
+ DBUG_ASSERT(ma_page->size == org_page_length + move_length);
+ DBUG_ASSERT(offset < max_page_size);
/*
Write REDO entry that contains the logical operations we need
@@ -517,37 +520,54 @@ my_bool _ma_log_add(MARIA_PAGE *ma_page,
log_pos= log_data + FILEID_STORE_SIZE;
page_pos= ma_page->pos / info->s->block_size;
page_store(log_pos, page_pos);
+ current_size= ma_page->org_size;
log_pos+= PAGE_STORE_SIZE;
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ *log_pos++= KEY_OP_DEBUG;
+ *log_pos++= KEY_OP_DEBUG_LOG_ADD;
+#endif
+
/* Store keypage_flag */
*log_pos++= KEY_OP_SET_PAGEFLAG;
*log_pos++= buff[KEYPAGE_TRANSFLAG_OFFSET];
- if (org_page_length + move_length > page_length)
+ /*
+ Don't overwrite page boundary
+ It's ok to cut this as we will append the data at end of page
+ in the next log entry
+ */
+ if (offset + changed_length > max_page_size)
+ {
+ DBUG_ASSERT(handle_overflow);
+ changed_length= max_page_size - offset; /* Update to end of page */
+ move_length= 0; /* Nothing to move */
+ /* Extend the page to max length on recovery */
+ *log_pos++= KEY_OP_MAX_PAGELENGTH;
+ current_size= max_page_size;
+ }
+
+ /* Check if adding the key made the page overflow */
+ if (current_size + move_length > max_page_size)
{
/*
- Overflow. Cut either key or data from page end so that key fits
- The code that splits the too big page will ignore logging any
- data over org_page_length
+ Adding the key caused an overflow. Cut away the part of the
+ page that doesn't fit.
*/
+ uint diff;
DBUG_ASSERT(handle_overflow);
- if (offset + changed_length > page_length)
- {
- changed_length= page_length - offset;
- move_length= 0;
- }
- else
- {
- uint diff= org_page_length + move_length - page_length;
- log_pos[0]= KEY_OP_DEL_SUFFIX;
- int2store(log_pos+1, diff);
- log_pos+= 3;
- org_page_length= page_length - move_length;
- }
+ diff= current_size + move_length - max_page_size;
+ log_pos[0]= KEY_OP_DEL_SUFFIX;
+ int2store(log_pos+1, diff);
+ log_pos+= 3;
+ current_size= max_page_size - move_length;
}
- if (offset == org_page_length)
+ if (offset == current_size)
+ {
log_pos[0]= KEY_OP_ADD_SUFFIX;
+ current_size+= changed_length;
+ }
else
{
log_pos[0]= KEY_OP_OFFSET;
@@ -558,51 +578,104 @@ my_bool _ma_log_add(MARIA_PAGE *ma_page,
log_pos[0]= KEY_OP_SHIFT;
int2store(log_pos+1, move_length);
log_pos+= 3;
+ current_size+= move_length;
}
log_pos[0]= KEY_OP_CHANGE;
}
int2store(log_pos+1, changed_length);
log_pos+= 3;
- translog_parts= 2;
log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos -
log_data);
log_array[TRANSLOG_INTERNAL_PARTS + 1].str= key_pos;
log_array[TRANSLOG_INTERNAL_PARTS + 1].length= changed_length;
+ translog_parts= TRANSLOG_INTERNAL_PARTS + 2;
-#ifdef EXTRA_DEBUG_KEY_CHANGES
+ /*
+ If page was originally > block_size before operation and now all data
+ fits, append the end data that was not part of the previous logged
+ page to it.
+ */
+ DBUG_ASSERT(current_size <= max_page_size && current_size <= ma_page->size);
+ if (current_size != ma_page->size && current_size != max_page_size)
{
- MARIA_SHARE *share= info->s;
- ha_checksum crc;
- uint save_page_length= ma_page->size;
- uint new_length= org_page_length + move_length;
- _ma_store_page_used(share, buff, new_length);
- crc= my_checksum(0, buff + LSN_STORE_SIZE, new_length - LSN_STORE_SIZE);
- log_pos[0]= KEY_OP_CHECK;
- int2store(log_pos+1, new_length);
- int4store(log_pos+3, crc);
-
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7;
- changed_length+= 7;
- translog_parts++;
- _ma_store_page_used(share, buff, save_page_length);
+ uint length= min(ma_page->size, max_page_size) - current_size;
+ uchar *data= ma_page->buff + current_size;
+
+ log_pos[0]= KEY_OP_ADD_SUFFIX;
+ int2store(log_pos+1, length);
+ log_array[translog_parts].str= log_pos;
+ log_array[translog_parts].length= 3;
+ log_array[translog_parts+1].str= data;
+ log_array[translog_parts+1].length= length;
+ log_pos+= 3;
+ translog_parts+= 2;
+ current_size+= length;
+ changed_length+= length + 3;
}
-#endif
+
+ _ma_log_key_changes(ma_page, log_array + translog_parts,
+ log_pos, &changed_length, &translog_parts);
+ /*
+ Remember new page length for future log entries for same page
+ Note that this can be different from ma_page->size in case of page
+ overflow!
+ */
+ ma_page->org_size= current_size;
+ DBUG_ASSERT(ma_page->org_size == min(ma_page->size, max_page_size));
if (translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
(translog_size_t)
log_array[TRANSLOG_INTERNAL_PARTS + 0].length +
- changed_length,
- TRANSLOG_INTERNAL_PARTS + translog_parts,
+ changed_length, translog_parts,
log_array, log_data, NULL))
DBUG_RETURN(-1);
DBUG_RETURN(0);
}
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+
+/* Log checksum and optionally key page to log */
+
+void _ma_log_key_changes(MARIA_PAGE *ma_page, LEX_CUSTRING *log_array,
+ uchar *log_pos, uint *changed_length,
+ uint *translog_parts)
+{
+ MARIA_SHARE *share= ma_page->info->s;
+ int page_length= min(ma_page->size, share->max_index_block_size);
+ uint org_length;
+ ha_checksum crc;
+
+ DBUG_ASSERT(ma_page->flag == (uint) ma_page->buff[KEYPAGE_TRANSFLAG_OFFSET]);
+
+ /* We have to change length as the page may have been shortened */
+ org_length= _ma_get_page_used(share, ma_page->buff);
+ _ma_store_page_used(share, ma_page->buff, page_length);
+ crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE,
+ page_length - LSN_STORE_SIZE);
+ _ma_store_page_used(share, ma_page->buff, org_length);
+
+ log_pos[0]= KEY_OP_CHECK;
+ int2store(log_pos+1, page_length);
+ int4store(log_pos+3, crc);
+
+ log_array[0].str= log_pos;
+ log_array[0].length= 7;
+ (*changed_length)+= 7;
+ (*translog_parts)++;
+#ifdef EXTRA_STORE_FULL_PAGE_IN_KEY_CHANGES
+ log_array[1].str= ma_page->buff;
+ log_array[1].length= page_length;
+ (*changed_length)+= page_length;
+ (*translog_parts)++;
+#endif /* EXTRA_STORE_FULL_PAGE_IN_KEY_CHANGES */
+}
+
+#endif /* EXTRA_DEBUG_KEY_CHANGES */
+
/****************************************************************************
Redo of key pages
****************************************************************************/
@@ -698,7 +771,7 @@ uint _ma_apply_redo_index_new_page(MARIA_HA *info, LSN lsn,
bzero(buff, LSN_STORE_SIZE);
memcpy(buff + LSN_STORE_SIZE, header, length);
bzero(buff + LSN_STORE_SIZE + length,
- share->block_size - LSN_STORE_SIZE - KEYPAGE_CHECKSUM_SIZE - length);
+ share->max_index_block_size - LSN_STORE_SIZE - length);
bfill(buff + share->block_size - KEYPAGE_CHECKSUM_SIZE,
KEYPAGE_CHECKSUM_SIZE, (uchar) 255);
@@ -829,9 +902,13 @@ err:
KEY_OP_ADD_SUFFIX 2 length, data Add data to end of page
KEY_OP_DEL_SUFFIX 2 length Reduce page length with this
Sets position to start of page
- KEY_OP_CHECK 6 page_length[2},CRC Used only when debugging
+ KEY_OP_CHECK 6 page_length[2],CRC Used only when debugging
+ This may be followed by page_length
+ of data (until end of log record)
KEY_OP_COMPACT_PAGE 6 transid
KEY_OP_SET_PAGEFLAG 1 flag for page
+ KEY_OP_MAX_PAGELENGTH 0 Set page to max length
+ KEY_OP_DEBUG 1 Info where logging was done
@return Operation status
@retval 0 OK
@@ -850,6 +927,7 @@ uint _ma_apply_redo_index(MARIA_HA *info,
const uchar *header_end= header + head_length;
uint page_offset= 0, org_page_length;
uint nod_flag, page_length, keypage_header, keynr;
+ uint max_page_size= share->max_index_block_size;
int result;
MARIA_PAGE page;
DBUG_ENTER("_ma_apply_redo_index");
@@ -898,12 +976,15 @@ uint _ma_apply_redo_index(MARIA_HA *info,
header+= 2;
DBUG_PRINT("redo", ("key_op_shift: %d", length));
DBUG_ASSERT(page_offset != 0 && page_offset <= page_length &&
- page_length + length < share->block_size);
+ page_length + length <= max_page_size);
if (length < 0)
+ {
+ DBUG_ASSERT(page_offset - length <= page_length);
bmove(buff + page_offset, buff + page_offset - length,
page_length - page_offset + length);
- else
+ }
+ else if (page_length != page_offset)
bmove_upp(buff + page_length + length, buff + page_length,
page_length - page_offset);
page_length+= length;
@@ -916,6 +997,7 @@ uint _ma_apply_redo_index(MARIA_HA *info,
DBUG_ASSERT(page_offset != 0 && page_offset + length <= page_length);
memcpy(buff + page_offset, header + 2 , length);
+ page_offset+= length; /* Put offset after changed length */
header+= 2 + length;
break;
}
@@ -927,7 +1009,7 @@ uint _ma_apply_redo_index(MARIA_HA *info,
insert_length, changed_length));
DBUG_ASSERT(insert_length <= changed_length &&
- page_length + changed_length <= share->block_size);
+ page_length + changed_length <= max_page_size);
bmove_upp(buff + page_length + insert_length, buff + page_length,
page_length - keypage_header);
@@ -953,8 +1035,8 @@ uint _ma_apply_redo_index(MARIA_HA *info,
case KEY_OP_ADD_SUFFIX: /* 6 */
{
uint insert_length= uint2korr(header);
- DBUG_PRINT("redo", ("key_op_add_prefix: %u", insert_length));
- DBUG_ASSERT(page_length + insert_length <= share->block_size);
+ DBUG_PRINT("redo", ("key_op_add_suffix: %u", insert_length));
+ DBUG_ASSERT(page_length + insert_length <= max_page_size);
memcpy(buff + page_length, header+2, insert_length);
page_length+= insert_length;
@@ -982,15 +1064,32 @@ uint _ma_apply_redo_index(MARIA_HA *info,
if (crc != (uint32) my_checksum(0, buff + LSN_STORE_SIZE,
page_length - LSN_STORE_SIZE))
{
- DBUG_PRINT("error", ("page_length %u",page_length));
- DBUG_DUMP("KEY_OP_CHECK bad page", buff, share->block_size);
- DBUG_ASSERT("crc" == "failure in REDO_INDEX");
+ DBUG_DUMP("KEY_OP_CHECK bad page", buff, page_length);
+ if (header + 6 + page_length <= header_end)
+ {
+ DBUG_DUMP("KEY_OP_CHECK org page", header + 6, page_length);
+ }
+ DBUG_ASSERT("crc failure in REDO_INDEX" == 0);
}
#endif
DBUG_PRINT("redo", ("key_op_check"));
- header+= 6;
+ /*
+ This is the last entry in the block and it can contain page_length
+ data or not
+ */
+ DBUG_ASSERT(header + 6 == header_end ||
+ header + 6 + page_length == header_end);
+ header= header_end;
break;
}
+ case KEY_OP_DEBUG:
+ DBUG_PRINT("redo", ("Debug: %u", (uint) header[0]));
+ header++;
+ break;
+ case KEY_OP_MAX_PAGELENGTH:
+ DBUG_PRINT("redo", ("key_op_max_page_length"));
+ page_length= max_page_size;
+ break;
case KEY_OP_MULTI_COPY: /* 9 */
{
/*
@@ -1011,7 +1110,7 @@ uint _ma_apply_redo_index(MARIA_HA *info,
log_memcpy_length= uint2korr(header);
header+= 2;
log_memcpy_end= header + log_memcpy_length;
- DBUG_ASSERT(full_length < share->block_size);
+ DBUG_ASSERT(full_length <= max_page_size);
while (header < log_memcpy_end)
{
uint to, from;
@@ -1020,7 +1119,7 @@ uint _ma_apply_redo_index(MARIA_HA *info,
from= uint2korr(header);
header+= 2;
/* "from" is a place in the existing page */
- DBUG_ASSERT(max(from, to) < share->block_size);
+ DBUG_ASSERT(max(from, to) < max_page_size);
memcpy(buff + to, buff + from, full_length);
}
break;
diff --git a/storage/maria/ma_key_recover.h b/storage/maria/ma_key_recover.h
index b580433c99a..3fdb045ee40 100644
--- a/storage/maria/ma_key_recover.h
+++ b/storage/maria/ma_key_recover.h
@@ -64,16 +64,26 @@ extern my_bool write_hook_for_undo_key_delete(enum translog_record_type type,
TRN *trn, MARIA_HA *tbl_info,
LSN *lsn, void *hook_arg);
-my_bool _ma_log_prefix(MARIA_PAGE *page, uint changed_length, int move_length);
+my_bool _ma_log_prefix(MARIA_PAGE *page, uint changed_length, int move_length,
+ enum en_key_debug debug_marker);
my_bool _ma_log_suffix(MARIA_PAGE *page, uint org_length,
uint new_length);
my_bool _ma_log_add(MARIA_PAGE *page, uint buff_length, uchar *key_pos,
uint changed_length, int move_length,
my_bool handle_overflow);
my_bool _ma_log_delete(MARIA_PAGE *page, const uchar *key_pos,
- uint changed_length, uint move_length);
-my_bool _ma_log_change(MARIA_PAGE *page, const uchar *key_pos, uint length);
+ uint changed_length, uint move_length,
+ uint append_length, enum en_key_debug debug_marker);
+my_bool _ma_log_change(MARIA_PAGE *page, const uchar *key_pos, uint length,
+ enum en_key_debug debug_marker);
my_bool _ma_log_new(MARIA_PAGE *page, my_bool root_page);
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+void _ma_log_key_changes(MARIA_PAGE *ma_page, LEX_CUSTRING *log_array,
+ uchar *log_pos, uint *changed_length,
+ uint *translog_parts);
+#else
+#define _ma_log_key_changes(A,B,C,D,E)
+#endif
uint _ma_apply_redo_index_new_page(MARIA_HA *info, LSN lsn,
const uchar *header, uint length);
diff --git a/storage/maria/ma_loghandler.c b/storage/maria/ma_loghandler.c
index 482a4e9071f..dc99554a08d 100644
--- a/storage/maria/ma_loghandler.c
+++ b/storage/maria/ma_loghandler.c
@@ -909,7 +909,7 @@ char *translog_filename_by_fileno(uint32 file_no, char *path)
DBUG_ASSERT(file_no <= 0xfffffff);
/* log_descriptor.directory is already formated */
- end= strxmov(path, log_descriptor.directory, "maria_log.0000000", NullS);
+ end= strxmov(path, log_descriptor.directory, "aria_log.0000000", NullS);
length= (uint) (int10_to_str(file_no, buff, 10) - buff);
strmov(end - length +1, buff);
@@ -1219,7 +1219,7 @@ my_bool translog_read_file_header(LOGHANDLER_FILE_INFO *desc, File file)
DBUG_RETURN(1);
}
translog_interpret_file_header(desc, page_buff);
- DBUG_PRINT("info", ("timestamp: %llu maria ver: %lu mysql ver: %lu "
+ DBUG_PRINT("info", ("timestamp: %llu aria ver: %lu mysql ver: %lu "
"server id %lu page size %lu file number %lu "
"max lsn: (%lu,0x%lx)",
(ulonglong) desc->timestamp,
@@ -3470,7 +3470,7 @@ static my_bool translog_truncate_log(TRANSLOG_ADDRESS addr)
/**
Applies function 'callback' to all files (in a directory) which
- name looks like a log's name (maria_log.[0-9]{7}).
+ name looks like a log's name (aria_log.[0-9]{7}).
If 'callback' returns TRUE this interrupts the walk and returns
TRUE. Otherwise FALSE is returned after processing all log files.
It cannot just use log_descriptor.directory because that may not yet have
@@ -3496,7 +3496,7 @@ my_bool translog_walk_filenames(const char *directory,
for (i= 0; i < dirp->number_off_files; i++)
{
char *file= dirp->dir_entry[i].name;
- if (strncmp(file, "maria_log.", 10) == 0 &&
+ if (strncmp(file, "aria_log.", 10) == 0 &&
file[10] >= '0' && file[10] <= '9' &&
file[11] >= '0' && file[11] <= '9' &&
file[12] >= '0' && file[12] <= '9' &&
@@ -3727,7 +3727,7 @@ my_bool translog_init_with_table(const char *directory,
my_bool pageok;
DBUG_PRINT("info", ("log found..."));
/*
- TODO: scan directory for maria_log.XXXXXXXX files and find
+ TODO: scan directory for aria_log.XXXXXXXX files and find
highest XXXXXXXX & set logs_found
TODO: check that last checkpoint within present log addresses space
@@ -8073,7 +8073,7 @@ retest:
}
else
{
- soft_sync_max= lsn;
+ soft_sync_max= LSN_FILE_NO(lsn);
soft_need_sync= 1;
}
@@ -8864,13 +8864,13 @@ void translog_soft_sync_end(void)
#ifdef MARIA_DUMP_LOG
#include <my_getopt.h>
extern void translog_example_table_init();
-static const char *load_default_groups[]= { "maria_dump_log",0 };
+static const char *load_default_groups[]= { "aria_dump_log",0 };
static void get_options(int *argc,char * * *argv);
#ifndef DBUG_OFF
#if defined(__WIN__)
-const char *default_dbug_option= "d:t:i:O,\\maria_dump_log.trace";
+const char *default_dbug_option= "d:t:i:O,\\aria_dump_log.trace";
#else
-const char *default_dbug_option= "d:t:i:o,/tmp/maria_dump_log.trace";
+const char *default_dbug_option= "d:t:i:o,/tmp/aria_dump_log.trace";
#endif
#endif
static ulonglong opt_offset;
@@ -8927,7 +8927,7 @@ static void usage(void)
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,");
puts("and you are welcome to modify and redistribute it under the GPL license\n");
- puts("Dump content of maria log pages.");
+ puts("Dump content of aria log pages.");
VOID(printf("\nUsage: %s -f file OPTIONS\n", my_progname_short));
my_print_help(my_long_options);
print_defaults("my", load_default_groups);
@@ -8984,7 +8984,7 @@ static void dump_header_page(uchar *buff)
translog_interpret_file_header(&desc, buff);
printf(" This can be header page:\n"
" Timestamp: %s\n"
- " Maria log version: %lu\n"
+ " Aria log version: %lu\n"
" Server version: %lu\n"
" Server id %lu\n"
" Page size %lu\n",
diff --git a/storage/maria/ma_loghandler.h b/storage/maria/ma_loghandler.h
index 224d93fb24b..7291c9811d7 100644
--- a/storage/maria/ma_loghandler.h
+++ b/storage/maria/ma_loghandler.h
@@ -16,12 +16,14 @@
#ifndef _ma_loghandler_h
#define _ma_loghandler_h
+#define MB (1024UL*1024)
+
/* transaction log default cache size (TODO: make it global variable) */
-#define TRANSLOG_PAGECACHE_SIZE (1024U*1024*2)
+#define TRANSLOG_PAGECACHE_SIZE (2*MB)
/* transaction log default file size */
-#define TRANSLOG_FILE_SIZE (1024U*1024*1024)
+#define TRANSLOG_FILE_SIZE (1024U*MB)
/* minimum possible transaction log size */
-#define TRANSLOG_MIN_FILE_SIZE (1024U*1024*8)
+#define TRANSLOG_MIN_FILE_SIZE (8*MB)
/* transaction log default flags (TODO: make it global variable) */
#define TRANSLOG_DEFAULT_FLAGS 0
@@ -165,7 +167,31 @@ enum en_key_op
KEY_OP_CHECK, /* For debugging; CRC of used part of page */
KEY_OP_MULTI_COPY, /* List of memcpy()s with fixed-len sources in page */
KEY_OP_SET_PAGEFLAG, /* Set pageflag from next byte */
- KEY_OP_COMPACT_PAGE /* Compact key page */
+ KEY_OP_COMPACT_PAGE, /* Compact key page */
+ KEY_OP_MAX_PAGELENGTH, /* Set page to max page length */
+ KEY_OP_DEBUG /* Entry for storing what triggered redo_index */
+};
+
+enum en_key_debug
+{
+ KEY_OP_DEBUG_RTREE_COMBINE, /* 0 */
+ KEY_OP_DEBUG_RTREE_SPLIT, /* 1 */
+ KEY_OP_DEBUG_RTREE_SET_KEY, /* 2 */
+ KEY_OP_DEBUG_FATHER_CHANGED_1, /* 3 */
+ KEY_OP_DEBUG_FATHER_CHANGED_2, /* 4 */
+ KEY_OP_DEBUG_LOG_SPLIT, /* 5 */
+ KEY_OP_DEBUG_LOG_ADD, /* 6 */
+ KEY_OP_DEBUG_LOG_PREFIX_1, /* 7 */
+ KEY_OP_DEBUG_LOG_PREFIX_2, /* 8 */
+ KEY_OP_DEBUG_LOG_PREFIX_3, /* 9 */
+ KEY_OP_DEBUG_LOG_PREFIX_4, /* 10 */
+ KEY_OP_DEBUG_LOG_PREFIX_5, /* 11 */
+ KEY_OP_DEBUG_LOG_DEL_CHANGE_1, /* 12 */
+ KEY_OP_DEBUG_LOG_DEL_CHANGE_2, /* 13 */
+ KEY_OP_DEBUG_LOG_DEL_CHANGE_3, /* 14 */
+ KEY_OP_DEBUG_LOG_DEL_CHANGE_RT, /* 15 */
+ KEY_OP_DEBUG_LOG_DEL_PREFIX, /* 16 */
+ KEY_OP_DEBUG_LOG_MIDDLE /* 17 */
};
diff --git a/storage/maria/ma_open.c b/storage/maria/ma_open.c
index c86c439a702..30d099d939a 100644
--- a/storage/maria/ma_open.c
+++ b/storage/maria/ma_open.c
@@ -209,6 +209,7 @@ static MARIA_HA *maria_clone_internal(MARIA_SHARE *share, const char *name,
DBUG_RETURN(m_info);
err:
+ DBUG_PRINT("error", ("error: %d", my_errno));
save_errno=my_errno ? my_errno : HA_ERR_END_OF_FILE;
if ((save_errno == HA_ERR_CRASHED) ||
(save_errno == HA_ERR_CRASHED_ON_USAGE) ||
@@ -433,8 +434,14 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
share->base.born_transactional &&
((!(open_flags & HA_OPEN_IGNORE_MOVED_STATE) &&
memcmp(share->base.uuid, maria_uuid, MY_UUID_SIZE)) ||
- share->state.create_trid > trnman_get_max_trid()))
+ (share->state.create_trid > trnman_get_max_trid() &&
+ !maria_in_recovery)))
{
+ DBUG_PRINT("warning", ("table is moved from another system. uuid_diff: %d create_trid: %lu max_trid: %lu",
+ memcmp(share->base.uuid, maria_uuid,
+ MY_UUID_SIZE) != 0,
+ (ulong) share->state.create_trid,
+ (ulong) trnman_get_max_trid()));
if (open_flags & HA_OPEN_FOR_REPAIR)
share->state.changed|= STATE_MOVED;
else
@@ -549,6 +556,7 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
strmov(share->open_file_name.str, name);
share->block_size= share->base.block_size; /* Convenience */
+ share->max_index_block_size= share->block_size - KEYPAGE_CHECKSUM_SIZE;
{
HA_KEYSEG *pos=share->keyparts;
uint32 ftkey_nr= 1;
@@ -892,6 +900,11 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
share->lock_restore_status= _ma_restore_status;
}
}
+ else if (share->now_transactional)
+ {
+ DBUG_ASSERT(share->data_file_type == BLOCK_RECORD);
+ share->lock.get_status= _ma_block_get_status_no_versioning;
+ }
}
#endif
/*
@@ -913,10 +926,15 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
if (!(m_info= maria_clone_internal(share, name, mode, data_file)))
goto err;
+ if (maria_is_crashed(m_info))
+ DBUG_PRINT("warning", ("table is crashed: changed: %u",
+ share->state.changed));
+
pthread_mutex_unlock(&THR_LOCK_maria);
DBUG_RETURN(m_info);
err:
+ DBUG_PRINT("error", ("error: %d errpos: %d", my_errno, errpos));
save_errno=my_errno ? my_errno : HA_ERR_END_OF_FILE;
if ((save_errno == HA_ERR_CRASHED) ||
(save_errno == HA_ERR_CRASHED_ON_USAGE) ||
diff --git a/storage/maria/ma_page.c b/storage/maria/ma_page.c
index acbee2a6f07..a4423133270 100644
--- a/storage/maria/ma_page.c
+++ b/storage/maria/ma_page.c
@@ -59,6 +59,7 @@ void _ma_page_setup(MARIA_PAGE *page, MARIA_HA *info,
page->buff= buff;
page->pos= pos;
page->size= _ma_get_page_used(share, buff);
+ page->org_size= page->size;
page->flag= _ma_get_keypage_flag(share, buff);
page->node= ((page->flag & KEYPAGE_FLAG_ISNOD) ?
share->base.key_reflength : 0);
@@ -68,7 +69,7 @@ void _ma_page_setup(MARIA_PAGE *page, MARIA_HA *info,
void page_cleanup(MARIA_SHARE *share, MARIA_PAGE *page)
{
uint length= page->size;
- DBUG_ASSERT(length <= block_size - KEYPAGE_CHECKSUM_SIZE);
+ DBUG_ASSERT(length <= share->max_index_block_size);
bzero(page->buff + length, share->block_size - length);
}
#endif
@@ -103,7 +104,7 @@ my_bool _ma_fetch_keypage(MARIA_PAGE *page, MARIA_HA *info,
MARIA_SHARE *share= info->s;
uint block_size= share->block_size;
DBUG_ENTER("_ma_fetch_keypage");
- DBUG_PRINT("enter",("pos: %ld", (long) pos));
+ DBUG_PRINT("enter",("page: %lu", (ulong) (pos / block_size)));
tmp= pagecache_read(share->pagecache, &share->kfile,
(pgcache_page_no_t) (pos / block_size), level, buff,
@@ -142,6 +143,7 @@ my_bool _ma_fetch_keypage(MARIA_PAGE *page, MARIA_HA *info,
page->buff= tmp;
page->pos= pos;
page->size= _ma_get_page_used(share, tmp);
+ page->org_size= page->size; /* For debugging */
page->flag= _ma_get_keypage_flag(share, tmp);
page->node= ((page->flag & KEYPAGE_FLAG_ISNOD) ?
share->base.key_reflength : 0);
@@ -149,7 +151,7 @@ my_bool _ma_fetch_keypage(MARIA_PAGE *page, MARIA_HA *info,
#ifdef EXTRA_DEBUG
{
uint page_size= page->size;
- if (page_size < 4 || page_size > block_size ||
+ if (page_size < 4 || page_size > share->max_index_block_size ||
_ma_get_keynr(share, tmp) != keyinfo->key_nr)
{
DBUG_PRINT("error",("page %lu had wrong page length: %u keynr: %u",
@@ -159,7 +161,7 @@ my_bool _ma_fetch_keypage(MARIA_PAGE *page, MARIA_HA *info,
info->last_keypage = HA_OFFSET_ERROR;
maria_print_error(share, HA_ERR_CRASHED);
my_errno= HA_ERR_CRASHED;
- tmp= 0;
+ DBUG_RETURN(1);
}
}
#endif
@@ -179,6 +181,13 @@ my_bool _ma_write_keypage(MARIA_PAGE *page, enum pagecache_page_lock lock,
MARIA_PINNED_PAGE page_link;
DBUG_ENTER("_ma_write_keypage");
+ /*
+ The following ensures that for transactional tables we have logged
+ all changes that changes the page size (as the logging code sets
+ page->org_size)
+ */
+ DBUG_ASSERT(!share->now_transactional || page->size == page->org_size);
+
#ifdef EXTRA_DEBUG /* Safety check */
{
uint page_length, nod_flag;
@@ -193,7 +202,7 @@ my_bool _ma_write_keypage(MARIA_PAGE *page, enum pagecache_page_lock lock,
(page->pos & (maria_block_size-1)))
{
DBUG_PRINT("error",("Trying to write inside key status region: "
- "key_start: %lu length: %lu page: %lu",
+ "key_start: %lu length: %lu page_pos: %lu",
(long) share->base.keystart,
(long) share->state.state.key_file_length,
(long) page->pos));
@@ -201,7 +210,7 @@ my_bool _ma_write_keypage(MARIA_PAGE *page, enum pagecache_page_lock lock,
DBUG_ASSERT(0);
DBUG_RETURN(1);
}
- DBUG_PRINT("page",("write page at: %lu",(long) page->pos));
+ DBUG_PRINT("page",("write page at: %lu",(ulong) (page->pos / block_size)));
DBUG_DUMP("buff", buff, page_length);
DBUG_ASSERT(page_length >= share->keypage_header + nod_flag +
page->keyinfo->minlength || maria_in_recovery);
@@ -274,7 +283,7 @@ int _ma_dispose(register MARIA_HA *info, my_off_t pos, my_bool page_not_read)
enum pagecache_page_lock lock_method;
enum pagecache_page_pin pin_method;
DBUG_ENTER("_ma_dispose");
- DBUG_PRINT("enter",("pos: %ld", (long) pos));
+ DBUG_PRINT("enter",("page: %lu", (ulong) (pos / block_size)));
DBUG_ASSERT(pos % block_size == 0);
(void) _ma_lock_key_del(info, 0);
@@ -423,8 +432,7 @@ my_off_t _ma_new(register MARIA_HA *info, int level,
share->key_del_current= mi_sizekorr(buff+share->keypage_header);
#ifndef DBUG_OFF
key_del_current= share->key_del_current;
- DBUG_ASSERT(key_del_current != share->state.key_del &&
- (key_del_current != 0) &&
+ DBUG_ASSERT((key_del_current != 0) &&
((key_del_current == HA_OFFSET_ERROR) ||
(key_del_current <=
(share->state.state.key_file_length - block_size))));
@@ -453,32 +461,48 @@ my_off_t _ma_new(register MARIA_HA *info, int level,
Log compactation of a index page
*/
-static my_bool _ma_log_compact_keypage(MARIA_HA *info, my_off_t page,
+static my_bool _ma_log_compact_keypage(MARIA_PAGE *ma_page,
TrID min_read_from)
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 1 + TRANSID_SIZE];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 1 + 7 + TRANSID_SIZE];
+ uchar *log_pos;
LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 1];
+ MARIA_HA *info= ma_page->info;
MARIA_SHARE *share= info->s;
+ uint translog_parts, extra_length;
+ my_off_t page= ma_page->pos;
DBUG_ENTER("_ma_log_compact_keypage");
- DBUG_PRINT("enter", ("page: %lu", (ulong) page));
+ DBUG_PRINT("enter", ("page: %lu", (ulong) (page / share->block_size)));
/* Store address of new root page */
page/= share->block_size;
page_store(log_data + FILEID_STORE_SIZE, page);
- log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE]= KEY_OP_COMPACT_PAGE;
- transid_store(log_data + FILEID_STORE_SIZE + PAGE_STORE_SIZE +1,
- min_read_from);
+ log_pos= log_data + FILEID_STORE_SIZE + PAGE_STORE_SIZE;
+
+ log_pos[0]= KEY_OP_COMPACT_PAGE;
+ transid_store(log_pos + 1, min_read_from);
+ log_pos+= 1 + TRANSID_SIZE;
log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length= sizeof(log_data);
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos -
+ log_data);
+ translog_parts= 1;
+ extra_length= 0;
+
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
if (translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
- (translog_size_t) sizeof(log_data),
- TRANSLOG_INTERNAL_PARTS + 1, log_array,
- log_data, NULL))
+ log_array[TRANSLOG_INTERNAL_PARTS +
+ 0].length + extra_length,
+ TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_array, log_data, NULL))
DBUG_RETURN(1);
DBUG_RETURN(0);
}
@@ -526,7 +550,7 @@ my_bool _ma_compact_keypage(MARIA_PAGE *ma_page, TrID min_read_from)
{
if (!(page= (*ma_page->keyinfo->skip_key)(&key, 0, 0, page)))
{
- DBUG_PRINT("error",("Couldn't find last key: page: 0x%lx",
+ DBUG_PRINT("error",("Couldn't find last key: page_pos: 0x%lx",
(long) page));
maria_print_error(share, HA_ERR_CRASHED);
my_errno=HA_ERR_CRASHED;
@@ -588,7 +612,7 @@ my_bool _ma_compact_keypage(MARIA_PAGE *ma_page, TrID min_read_from)
if (share->now_transactional)
{
- if (_ma_log_compact_keypage(info, ma_page->pos, min_read_from))
+ if (_ma_log_compact_keypage(ma_page, min_read_from))
DBUG_RETURN(1);
}
DBUG_RETURN(0);
diff --git a/storage/maria/ma_pagecache.c b/storage/maria/ma_pagecache.c
index dd676028f05..441310a60ea 100644
--- a/storage/maria/ma_pagecache.c
+++ b/storage/maria/ma_pagecache.c
@@ -4187,7 +4187,16 @@ static int flush_cached_blocks(PAGECACHE *pagecache,
{
PAGECACHE_BLOCK_LINK *block= *cache;
- if (block->pins)
+ /*
+ In the case of non_transactional tables we want to flush also
+ block pinned with reads. This is becasue we may have other
+ threads reading the block during flush, as non transactional
+ tables can have many readers while the one writer is doing the
+ flush.
+ We don't want to do flush pinned blocks during checkpoint.
+ We detect the checkpoint case by checking if type is LAZY.
+ */
+ if ((type == FLUSH_KEEP_LAZY && block->pins) || block->wlocks)
{
KEYCACHE_DBUG_PRINT("flush_cached_blocks",
("block: %u (0x%lx) pinned",
@@ -4204,13 +4213,9 @@ static int flush_cached_blocks(PAGECACHE *pagecache,
*first_errno= HA_ERR_INTERNAL_ERROR;
continue;
}
- /* if the block is not pinned then it is not write locked */
- DBUG_ASSERT(block->wlocks == 0);
- DBUG_ASSERT(block->pins == 0);
if (make_lock_and_pin(pagecache, block,
- PAGECACHE_LOCK_WRITE, PAGECACHE_PIN, FALSE))
+ PAGECACHE_LOCK_READ, PAGECACHE_PIN, FALSE))
DBUG_ASSERT(0);
- DBUG_ASSERT(block->pins == 1);
KEYCACHE_DBUG_PRINT("flush_cached_blocks",
("block: %u (0x%lx) to be flushed",
@@ -4222,7 +4227,6 @@ static int flush_cached_blocks(PAGECACHE *pagecache,
DBUG_PRINT("info", ("block: %u (0x%lx) pins: %u",
PCBLOCK_NUMBER(pagecache, block), (ulong)block,
block->pins));
- DBUG_ASSERT(block->pins == 1);
/**
@todo IO If page is contiguous with next page to flush, group flushes
in one single my_pwrite().
@@ -4241,7 +4245,7 @@ static int flush_cached_blocks(PAGECACHE *pagecache,
pagecache_pthread_mutex_lock(&pagecache->cache_lock);
if (make_lock_and_pin(pagecache, block,
- PAGECACHE_LOCK_WRITE_UNLOCK,
+ PAGECACHE_LOCK_READ_UNLOCK,
PAGECACHE_UNPIN, FALSE))
DBUG_ASSERT(0);
diff --git a/storage/maria/ma_recovery.c b/storage/maria/ma_recovery.c
index 7b3065b0208..7a7286e26f9 100644
--- a/storage/maria/ma_recovery.c
+++ b/storage/maria/ma_recovery.c
@@ -1,4 +1,5 @@
/* Copyright (C) 2006, 2007 MySQL AB
+ Copyright (C) 2010 Monty Program Ab
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
@@ -56,6 +57,7 @@ static ulong skipped_undo_phase;
static ulonglong now; /**< for tracking execution time of phases */
static int (*save_error_handler_hook)(uint, const char *,myf);
static uint recovery_warnings; /**< count of warnings */
+static uint recovery_found_crashed_tables;
#define prototype_redo_exec_hook(R) \
static int exec_REDO_LOGREC_ ## R(const TRANSLOG_HEADER_BUFFER *rec)
@@ -107,7 +109,8 @@ prototype_undo_exec_hook(UNDO_KEY_DELETE);
prototype_undo_exec_hook(UNDO_KEY_DELETE_WITH_ROOT);
prototype_undo_exec_hook(UNDO_BULK_INSERT);
-static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply);
+static int run_redo_phase(LSN lsn, LSN end_lsn,
+ enum maria_apply_log_way apply);
static uint end_of_redo_phase(my_bool prepare_for_undo_phase);
static int run_undo_phase(uint uncommitted);
static void display_record_position(const LOG_DESC *log_desc,
@@ -208,18 +211,18 @@ int maria_recovery_from_log(void)
maria_in_recovery= TRUE;
#ifdef EXTRA_DEBUG
- fn_format(name_buff, "maria_recovery.trace", maria_data_root, "", MYF(0));
+ fn_format(name_buff, "aria_recovery.trace", maria_data_root, "", MYF(0));
trace_file= my_fopen(name_buff, O_WRONLY|O_APPEND|O_CREAT, MYF(MY_WME));
#else
trace_file= NULL; /* no trace file for being fast */
#endif
- tprint(trace_file, "TRACE of the last MARIA recovery from mysqld\n");
+ tprint(trace_file, "TRACE of the last Aria recovery from mysqld\n");
DBUG_ASSERT(maria_pagecache->inited);
- res= maria_apply_log(LSN_IMPOSSIBLE, MARIA_LOG_APPLY, trace_file,
- TRUE, TRUE, TRUE, &warnings_count);
+ res= maria_apply_log(LSN_IMPOSSIBLE, LSN_IMPOSSIBLE, MARIA_LOG_APPLY,
+ trace_file, TRUE, TRUE, TRUE, &warnings_count);
if (!res)
{
- if (warnings_count == 0)
+ if (warnings_count == 0 && recovery_found_crashed_tables == 0)
tprint(trace_file, "SUCCESS\n");
else
tprint(trace_file, "DOUBTFUL (%u warnings, check previous output)\n",
@@ -237,6 +240,7 @@ int maria_recovery_from_log(void)
@param from_lsn LSN from which log reading/applying should start;
LSN_IMPOSSIBLE means "use last checkpoint"
+ @param end_lsn Apply until this. LSN_IMPOSSIBLE means until end.
@param apply how log records should be applied or not
@param trace_file trace file where progress/debug messages will go
@param skip_DDLs_arg Should DDL records (CREATE/RENAME/DROP/REPAIR)
@@ -253,7 +257,8 @@ int maria_recovery_from_log(void)
@retval !=0 Error
*/
-int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
+int maria_apply_log(LSN from_lsn, LSN end_lsn,
+ enum maria_apply_log_way apply,
FILE *trace_file,
my_bool should_run_undo_phase, my_bool skip_DDLs_arg,
my_bool take_checkpoints, uint *warnings_count)
@@ -261,13 +266,16 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
int error= 0;
uint uncommitted_trans;
ulonglong old_now;
+ my_bool abort_message_printed= 0;
DBUG_ENTER("maria_apply_log");
DBUG_ASSERT(apply == MARIA_LOG_APPLY || !should_run_undo_phase);
DBUG_ASSERT(!maria_multi_threaded);
- recovery_warnings= 0;
+ recovery_warnings= recovery_found_crashed_tables= 0;
+ maria_recovery_changed_data= 0;
/* checkpoints can happen only if TRNs have been built */
DBUG_ASSERT(should_run_undo_phase || !take_checkpoints);
+ DBUG_ASSERT(end_lsn == LSN_IMPOSSIBLE || should_run_undo_phase == 0);
all_active_trans= (struct st_trn_for_recovery *)
my_malloc((SHORT_TRID_MAX + 1) * sizeof(struct st_trn_for_recovery),
MYF(MY_ZEROFILL));
@@ -313,7 +321,7 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
now= my_getsystime();
in_redo_phase= TRUE;
trnman_init(max_trid_in_control_file);
- if (run_redo_phase(from_lsn, apply))
+ if (run_redo_phase(from_lsn, end_lsn, apply))
{
ma_message_no_user(0, "Redo phase failed");
trnman_destroy();
@@ -321,6 +329,17 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
}
trnman_destroy();
+ if (end_lsn != LSN_IMPOSSIBLE)
+ {
+ abort_message_printed= 1;
+ if (!trace_file)
+ fputc('\n', stderr);
+ my_message(HA_ERR_INITIALIZATION,
+ "Maria recovery aborted as end_lsn/end of file was reached",
+ MYF(0));
+ goto err2;
+ }
+
if ((uncommitted_trans=
end_of_redo_phase(should_run_undo_phase)) == (uint)-1)
{
@@ -437,10 +456,15 @@ int maria_apply_log(LSN from_lsn, enum maria_apply_log_way apply,
goto end;
err:
- error= 1;
tprint(tracef, "\nRecovery of tables with transaction logs FAILED\n");
+err2:
if (trns_created)
delete_all_transactions();
+ error= 1;
+ if (close_all_tables())
+ {
+ ma_message_no_user(0, "closing of tables failed");
+ }
end:
error_handler_hook= save_error_handler_hook;
hash_free(&all_dirty_pages);
@@ -455,7 +479,7 @@ end:
log_record_buffer.str= NULL;
log_record_buffer.length= 0;
ma_checkpoint_end();
- *warnings_count= recovery_warnings;
+ *warnings_count= recovery_warnings + recovery_found_crashed_tables;
if (recovery_message_printed != REC_MSG_NONE)
{
if (procent_printed)
@@ -465,17 +489,33 @@ end:
fflush(stderr);
}
if (!error)
+ {
ma_message_no_user(ME_JUST_INFO, "recovery done");
+ maria_recovery_changed_data= 1;
+ }
}
- if (error)
+ else if (!error && max_trid_in_control_file != max_long_trid)
+ {
+ /*
+ maria_end() will set max trid in log file so that one can run
+ maria_chk on the tables
+ */
+ maria_recovery_changed_data= 1;
+ }
+
+ if (error && !abort_message_printed)
+ {
+ if (!trace_file)
+ fputc('\n', stderr);
my_message(HA_ERR_INITIALIZATION,
- "Maria recovery failed. Please run maria_chk -r on all maria "
- "tables and delete all maria_log.######## files", MYF(0));
+ "Aria recovery failed. Please run aria_chk -r on all Aria "
+ "tables and delete all aria_log.######## files", MYF(0));
+ }
procent_printed= 0;
/*
We don't cleanly close tables if we hit some error (may corrupt them by
flushing some wrong blocks made from wrong REDOs). It also leaves their
- open_count>0, which ensures that --maria-recover, if used, will try to
+ open_count>0, which ensures that --aria-recover, if used, will try to
repair them.
*/
DBUG_RETURN(error);
@@ -511,9 +551,14 @@ static int display_and_apply_record(const LOG_DESC *log_desc,
if (log_desc->record_execute_in_redo_phase == NULL)
{
/* die on all not-yet-handled records :) */
- DBUG_ASSERT("one more hook" == "to write");
+ DBUG_ASSERT("one more hook to write" == 0);
return 1;
}
+ if (rec->type == LOGREC_DEBUG_INFO)
+ {
+ /* Query already printed by display_record_position() */
+ return 0;
+ }
if ((error= (*log_desc->record_execute_in_redo_phase)(rec)))
eprint(tracef, "Got error %d when executing record %s",
my_errno, log_desc->name);
@@ -604,6 +649,20 @@ prototype_redo_exec_hook(INCOMPLETE_LOG)
/* no such table, don't need to warn */
return 0;
}
+
+ if (maria_is_crashed(info))
+ return 0;
+
+ if (info->s->state.is_of_horizon > rec->lsn)
+ {
+ /*
+ This table was repaired at a time after this log entry.
+ We can assume that all rows was inserted sucessfully and we don't
+ have to warn about that the inserted data was not logged
+ */
+ return 0;
+ }
+
/*
Example of what can go wrong when replaying DDLs:
CREATE TABLE t (logged); INSERT INTO t VALUES(1) (logged);
@@ -618,21 +677,65 @@ prototype_redo_exec_hook(INCOMPLETE_LOG)
failure in _ma_apply_redo_insert_row_head_or_tail(): new data page is
created whereas rownr is not 0).
So when the server disables logging for ALTER TABLE or CREATE SELECT, it
- logs LOGREC_INCOMPLETE_LOG to warn maria_read_log and then the user.
+ logs LOGREC_INCOMPLETE_LOG to warn aria_read_log and then the user.
Another issue is that replaying of DDLs is not correct enough to work if
there was a crash during a DDL (see comment in execution of
REDO_RENAME_TABLE ).
*/
- tprint(tracef, "***WARNING: MySQL server currently logs no records"
- " about insertion of data by ALTER TABLE and CREATE SELECT,"
- " as they are not necessary for recovery;"
- " present applying of log records may well not work.***\n");
+
+ eprint(tracef, "***WARNING: Aria engine currently logs no records "
+ "about insertion of data by ALTER TABLE and CREATE SELECT, "
+ "as they are not necessary for recovery; "
+ "present applying of log records to table '%s' may well not work."
+ "***", info->s->index_file_name.str);
+
+ /* Prevent using the table for anything else than undo repair */
+ _ma_mark_file_crashed(info->s);
recovery_warnings++;
return 0;
}
+static my_bool create_database_if_not_exists(const char *name)
+{
+ char dirname[FN_REFLEN];
+ size_t length;
+ MY_STAT stat_info;
+ DBUG_ENTER("create_database_if_not_exists");
+
+ dirname_part(dirname, name, &length);
+ if (!length)
+ {
+ /* Skip files without directores */
+ DBUG_RETURN(0);
+ }
+ /*
+ Safety; Don't create files with hard path;
+ Should never happen with MariaDB
+ If hard path, then error will be detected when trying to create index file
+ */
+ if (test_if_hard_path(dirname))
+ DBUG_RETURN(0);
+
+ if (my_stat(dirname,&stat_info,MYF(0)))
+ DBUG_RETURN(0);
+
+
+ tprint(tracef, "Creating not existing database '%s'\n", dirname);
+ if (my_mkdir(dirname, 0777, MYF(MY_WME)))
+ {
+ eprint(tracef, "***WARNING: Can't create not existing database '%s'",
+ dirname);
+ DBUG_RETURN(1);
+ }
+ DBUG_RETURN(0);
+}
+
+
+
+
+
prototype_redo_exec_hook(REDO_CREATE_TABLE)
{
File dfile= -1, kfile= -1;
@@ -644,11 +747,12 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE)
int error= 1, create_mode= O_RDWR | O_TRUNC, i;
MARIA_HA *info= NULL;
uint kfile_size_before_extension, keystart;
+ DBUG_ENTER("exec_REDO_LOGREC_REDO_CREATE_TABLE");
if (skip_DDLs)
{
tprint(tracef, "we skip DDLs\n");
- return 0;
+ DBUG_RETURN(0);
}
enlarge_buffer(rec);
if (log_record_buffer.str == NULL ||
@@ -715,9 +819,12 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE)
maria_close(info);
info= NULL;
}
- else /* one or two files absent, or header corrupted... */
- tprint(tracef, "Table '%s' can't be opened, probably does not exist\n",
- name);
+ else
+ {
+ /* one or two files absent, or header corrupted... */
+ tprint(tracef, "Table '%s' can't be opened (Error: %d)\n",
+ name, my_errno);
+ }
/* if does not exist, or is older, overwrite it */
ptr= name + strlen(name) + 1;
if ((flags= ptr[0] ? HA_DONT_TOUCH_DATA : 0))
@@ -748,6 +855,8 @@ prototype_redo_exec_hook(REDO_CREATE_TABLE)
name);
goto end;
}
+ if (create_database_if_not_exists(name))
+ goto end;
fn_format(filename, name, "", MARIA_NAME_IEXT,
(MY_UNPACK_FILENAME |
(flags & HA_DONT_TOUCH_DATA) ? MY_RETURN_REAL_PATH : 0) |
@@ -801,7 +910,7 @@ end:
error|= my_close(kfile, MYF(MY_WME));
if (info != NULL)
error|= maria_close(info);
- return error;
+ DBUG_RETURN(error);
}
@@ -810,10 +919,12 @@ prototype_redo_exec_hook(REDO_RENAME_TABLE)
char *old_name, *new_name;
int error= 1;
MARIA_HA *info= NULL;
+ DBUG_ENTER("exec_REDO_LOGREC_REDO_RENAME_TABLE");
+
if (skip_DDLs)
{
tprint(tracef, "we skip DDLs\n");
- return 0;
+ DBUG_RETURN(0);
}
enlarge_buffer(rec);
if (log_record_buffer.str == NULL ||
@@ -830,7 +941,7 @@ prototype_redo_exec_hook(REDO_RENAME_TABLE)
new_name);
/*
Here is why we skip CREATE/DROP/RENAME when doing a recovery from
- ha_maria (whereas we do when called from maria_read_log). Consider:
+ ha_maria (whereas we do when called from aria_read_log). Consider:
CREATE TABLE t;
RENAME TABLE t to u;
DROP TABLE u;
@@ -850,8 +961,8 @@ prototype_redo_exec_hook(REDO_RENAME_TABLE)
crash. We however sync files and directories at each file rename. The SQL
layer is anyway not crash-safe for DDLs (except the repartioning-related
ones).
- We replay DDLs in maria_read_log to be able to recreate tables from
- scratch. It means that "maria_read_log -a" should not be used on a
+ We replay DDLs in aria_read_log to be able to recreate tables from
+ scratch. It means that "aria_read_log -a" should not be used on a
database which just crashed during a DDL. And also ALTER TABLE does not
log insertions of records into the temporary table, so replaying may
fail (grep for INCOMPLETE_LOG in files).
@@ -988,7 +1099,7 @@ end:
tprint(tracef, "\n");
if (info != NULL)
error|= maria_close(info);
- return error;
+ DBUG_RETURN(error);
}
@@ -1015,7 +1126,11 @@ prototype_redo_exec_hook(REDO_REPAIR_TABLE)
}
if ((info= get_MARIA_HA_from_REDO_record(rec)) == NULL)
DBUG_RETURN(0);
-
+ if (maria_is_crashed(info))
+ {
+ tprint(tracef, "we skip repairing crashed table\n");
+ DBUG_RETURN(0);
+ }
/*
Otherwise, the mapping is newer than the table, and our record is newer
than the mapping, so we can repair.
@@ -1026,6 +1141,7 @@ prototype_redo_exec_hook(REDO_REPAIR_TABLE)
param.isam_file_name= name= info->s->open_file_name.str;
param.testflag= uint8korr(rec->header + FILEID_STORE_SIZE);
param.tmpdir= maria_tmpdir;
+ param.max_trid= max_long_trid;
DBUG_ASSERT(maria_tmpdir);
info->s->state.key_map= uint8korr(rec->header + FILEID_STORE_SIZE + 8);
@@ -1185,6 +1301,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
MARIA_HA *info;
MARIA_SHARE *share;
my_off_t dfile_len, kfile_len;
+ DBUG_ENTER("new_table");
checkpoint_useful= TRUE;
if ((name == NULL) || (name[0] == 0))
@@ -1195,6 +1312,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
*/
tprint(tracef, ", record is corrupted");
info= NULL;
+ recovery_warnings++;
goto end;
}
tprint(tracef, "Table '%s', id %u", name, sid);
@@ -1204,6 +1322,8 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
tprint(tracef, ", is absent (must have been dropped later?)"
" or its header is so corrupted that we cannot open it;"
" we skip it");
+ if (my_errno != ENOENT)
+ recovery_found_crashed_tables++;
error= 0;
goto end;
}
@@ -1218,6 +1338,12 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
*/
if (close_one_table(share->open_file_name.str, lsn_of_file_id))
goto end;
+ /*
+ We should not try to get length of data/index files as the files
+ are not on disk yet.
+ */
+ _ma_tmp_disable_logging_for_table(info, FALSE);
+ goto set_lsn_of_file_id;
}
if (!share->base.born_transactional)
{
@@ -1227,6 +1353,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
*/
tprint(tracef, ", is not transactional. Ignoring open request");
error= -1;
+ recovery_warnings++;
goto end;
}
if (cmp_translog_addr(lsn_of_file_id, share->state.create_rename_lsn) <= 0)
@@ -1235,6 +1362,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
" LOGREC_FILE_ID's LSN (%lu,0x%lx), ignoring open request",
LSN_IN_PARTS(share->state.create_rename_lsn),
LSN_IN_PARTS(lsn_of_file_id));
+ recovery_warnings++;
error= -1;
goto end;
/*
@@ -1245,7 +1373,8 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
if (maria_is_crashed(info))
{
eprint(tracef, "Table '%s' is crashed, skipping it. Please repair it with"
- " maria_chk -r", share->open_file_name.str);
+ " aria_chk -r", share->open_file_name.str);
+ recovery_found_crashed_tables++;
error= -1; /* not fatal, try with other tables */
goto end;
/*
@@ -1264,6 +1393,7 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
(kfile_len == MY_FILEPOS_ERROR))
{
tprint(tracef, ", length unknown\n");
+ recovery_warnings++;
goto end;
}
if (share->state.state.data_file_length != dfile_len)
@@ -1282,6 +1412,8 @@ static int new_table(uint16 sid, const char *name, LSN lsn_of_file_id)
/* Recovery will fix this, no error */
ALERT_USER();
}
+
+set_lsn_of_file_id:
/*
This LSN serves in this situation; assume log is:
FILE_ID(6->"t2") REDO_INSERT(6) FILE_ID(6->"t1") CHECKPOINT(6->"t1")
@@ -1309,7 +1441,7 @@ end:
if (error == -1)
error= 0;
}
- return error;
+ DBUG_RETURN(error);
}
/*
@@ -1322,7 +1454,8 @@ prototype_redo_exec_hook(REDO_INSERT_ROW_HEAD)
int error= 1;
uchar *buff= NULL;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
+
{
/*
Table was skipped at open time (because later dropped/renamed, not
@@ -1388,7 +1521,7 @@ prototype_redo_exec_hook(REDO_INSERT_ROW_TAIL)
int error= 1;
uchar *buff;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
enlarge_buffer(rec);
if (log_record_buffer.str == NULL ||
@@ -1429,7 +1562,7 @@ prototype_redo_exec_hook(REDO_INSERT_ROW_BLOBS)
pgcache_page_no_t first_page, last_page;
char llbuf1[22], llbuf2[22];
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
enlarge_buffer(rec);
if (log_record_buffer.str == NULL ||
@@ -1463,7 +1596,7 @@ prototype_redo_exec_hook(REDO_PURGE_ROW_HEAD)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
if (_ma_apply_redo_purge_row_head_or_tail(info, current_group_end_lsn,
HEAD_PAGE,
@@ -1479,7 +1612,7 @@ prototype_redo_exec_hook(REDO_PURGE_ROW_TAIL)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
if (_ma_apply_redo_purge_row_head_or_tail(info, current_group_end_lsn,
TAIL_PAGE,
@@ -1496,7 +1629,7 @@ prototype_redo_exec_hook(REDO_FREE_BLOCKS)
int error= 1;
uchar *buff;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
enlarge_buffer(rec);
@@ -1523,7 +1656,7 @@ prototype_redo_exec_hook(REDO_FREE_HEAD_OR_TAIL)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
if (_ma_apply_redo_free_head_or_tail(info, current_group_end_lsn,
@@ -1555,7 +1688,7 @@ prototype_redo_exec_hook(REDO_INDEX)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
enlarge_buffer(rec);
@@ -1581,7 +1714,7 @@ prototype_redo_exec_hook(REDO_INDEX_NEW_PAGE)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
enlarge_buffer(rec);
@@ -1608,7 +1741,7 @@ prototype_redo_exec_hook(REDO_INDEX_FREE_PAGE)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
if (_ma_apply_redo_index_free_page(info, current_group_end_lsn,
@@ -1624,7 +1757,7 @@ prototype_redo_exec_hook(REDO_BITMAP_NEW_PAGE)
{
int error= 1;
MARIA_HA *info= get_MARIA_HA_from_REDO_record(rec);
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
return 0;
enlarge_buffer(rec);
@@ -1901,7 +2034,7 @@ prototype_redo_exec_hook(IMPORTED_TABLE)
return 1;
}
name= (char *)log_record_buffer.str;
- tprint(tracef, "Table '%s' was imported (auto-zerofilled) in this Maria instance\n", name);
+ tprint(tracef, "Table '%s' was imported (auto-zerofilled) in this Aria instance\n", name);
return 0;
}
@@ -2070,7 +2203,7 @@ prototype_undo_exec_hook(UNDO_ROW_INSERT)
MARIA_SHARE *share;
const uchar *record_ptr;
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
{
/*
Unlike for REDOs, if the table was skipped it is abnormal; we have a
@@ -2126,7 +2259,7 @@ prototype_undo_exec_hook(UNDO_ROW_DELETE)
LSN previous_undo_lsn= lsn_korr(rec->header);
MARIA_SHARE *share;
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
{
skip_undo_record(previous_undo_lsn, trn);
return 0;
@@ -2165,7 +2298,7 @@ prototype_undo_exec_hook(UNDO_ROW_UPDATE)
LSN previous_undo_lsn= lsn_korr(rec->header);
MARIA_SHARE *share;
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
{
skip_undo_record(previous_undo_lsn, trn);
return 0;
@@ -2204,7 +2337,7 @@ prototype_undo_exec_hook(UNDO_KEY_INSERT)
LSN previous_undo_lsn= lsn_korr(rec->header);
MARIA_SHARE *share;
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
{
skip_undo_record(previous_undo_lsn, trn);
return 0;
@@ -2245,7 +2378,7 @@ prototype_undo_exec_hook(UNDO_KEY_DELETE)
LSN previous_undo_lsn= lsn_korr(rec->header);
MARIA_SHARE *share;
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
{
skip_undo_record(previous_undo_lsn, trn);
return 0;
@@ -2286,7 +2419,7 @@ prototype_undo_exec_hook(UNDO_KEY_DELETE_WITH_ROOT)
LSN previous_undo_lsn= lsn_korr(rec->header);
MARIA_SHARE *share;
- if (info == NULL)
+ if (info == NULL || maria_is_crashed(info))
{
skip_undo_record(previous_undo_lsn, trn);
return 0;
@@ -2327,6 +2460,7 @@ prototype_undo_exec_hook(UNDO_BULK_INSERT)
LSN previous_undo_lsn= lsn_korr(rec->header);
MARIA_SHARE *share;
+ /* Here we don't check for crashed as we can undo the bulk insert */
if (info == NULL)
{
skip_undo_record(previous_undo_lsn, trn);
@@ -2347,12 +2481,13 @@ prototype_undo_exec_hook(UNDO_BULK_INSERT)
}
-static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply)
+static int run_redo_phase(LSN lsn, LSN lsn_end, enum maria_apply_log_way apply)
{
TRANSLOG_HEADER_BUFFER rec;
struct st_translog_scanner_data scanner;
int len;
uint i;
+ DBUG_ENTER("run_redo_phase");
/* install hooks for execution */
#define install_redo_exec_hook(R) \
@@ -2417,7 +2552,7 @@ static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply)
{
tprint(tracef, "checkpoint address refers to the log end log or "
"log is empty, nothing to do.\n");
- return 0;
+ DBUG_RETURN(0);
}
len= translog_read_record_header(lsn, &rec);
@@ -2425,12 +2560,12 @@ static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply)
if (len == RECHEADER_READ_ERROR)
{
eprint(tracef, "Failed to read header of the first record.");
- return 1;
+ DBUG_RETURN(1);
}
if (translog_scanner_init(lsn, 1, &scanner, 1))
{
tprint(tracef, "Scanner init failed\n");
- return 1;
+ DBUG_RETURN(1);
}
for (i= 1;;i++)
{
@@ -2475,6 +2610,17 @@ static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply)
tprint(tracef, "Cannot find record where it should be\n");
goto err;
}
+ if (lsn_end != LSN_IMPOSSIBLE && rec2.lsn >= lsn_end)
+ {
+ tprint(tracef,
+ "lsn_end reached at (%lu,0x%lx). "
+ "Skipping rest of redo entries",
+ LSN_IN_PARTS(rec2.lsn));
+ translog_destroy_scanner(&scanner);
+ translog_free_record_header(&rec);
+ DBUG_RETURN(0);
+ }
+
if (translog_scanner_init(rec2.lsn, 1, &scanner2, 1))
{
tprint(tracef, "Scanner2 init failed\n");
@@ -2570,12 +2716,12 @@ static int run_redo_phase(LSN lsn, enum maria_apply_log_way apply)
fflush(stderr);
procent_printed= 1;
}
- return 0;
+ DBUG_RETURN(0);
err:
translog_destroy_scanner(&scanner);
translog_free_record_header(&rec);
- return 1;
+ DBUG_RETURN(1);
}
@@ -3114,6 +3260,8 @@ static LSN parse_checkpoint_record(LSN lsn)
return LSN_ERROR;
next_dirty_page_in_pool= dirty_pages_pool;
minimum_rec_lsn_of_dirty_pages= LSN_MAX;
+ if (maria_recovery_verbose)
+ tprint(tracef, "Table_id Is_index Page_id Rec_lsn\n");
for (i= 0; i < nb_dirty_pages ; i++)
{
pgcache_page_no_t page_id;
@@ -3130,6 +3278,9 @@ static LSN parse_checkpoint_record(LSN lsn)
if (new_page((is_index << 16) | table_id,
page_id, rec_lsn, next_dirty_page_in_pool++))
return LSN_ERROR;
+ if (maria_recovery_verbose)
+ tprint(tracef, "%8u %8u %12lu %lu,0x%lx\n", (uint) table_id,
+ (uint) is_index, (ulong) page_id, LSN_IN_PARTS(rec_lsn));
set_if_smaller(minimum_rec_lsn_of_dirty_pages, rec_lsn);
}
/* after that, there will be no insert/delete into the hash */
@@ -3228,7 +3379,12 @@ static int close_all_tables(void)
state while they were used. As Recovery corrected them, don't alarm the
user, don't ask for a table check:
*/
- info->s->state.open_count= 0;
+ if (info->s->state.open_count != 0)
+ {
+ /* let ma_close() mark the table properly closed */
+ info->s->state.open_count= 1;
+ info->s->global_changed= 1;
+ }
prepare_table_for_close(info, addr);
error|= maria_close(info);
pthread_mutex_lock(&THR_LOCK_maria);
diff --git a/storage/maria/ma_recovery.h b/storage/maria/ma_recovery.h
index aa8fa7ecae9..0bfcdd17d39 100644
--- a/storage/maria/ma_recovery.h
+++ b/storage/maria/ma_recovery.h
@@ -26,7 +26,7 @@ C_MODE_START
enum maria_apply_log_way
{ MARIA_LOG_APPLY, MARIA_LOG_DISPLAY_HEADER, MARIA_LOG_CHECK };
int maria_recovery_from_log(void);
-int maria_apply_log(LSN lsn, enum maria_apply_log_way apply,
+int maria_apply_log(LSN lsn, LSN lsn_end, enum maria_apply_log_way apply,
FILE *trace_file,
my_bool execute_undo_phase, my_bool skip_DDLs,
my_bool take_checkpoints, uint *warnings_count);
diff --git a/storage/maria/ma_recovery_util.c b/storage/maria/ma_recovery_util.c
index a45a990472e..19e61daf4ef 100644
--- a/storage/maria/ma_recovery_util.c
+++ b/storage/maria/ma_recovery_util.c
@@ -57,8 +57,16 @@ void tprint(FILE *trace_file __attribute__ ((unused)),
const char *format __attribute__ ((unused)), ...)
{
va_list args;
+#ifndef DBUG_OFF
+ {
+ char buff[1024];
+ va_start(args, format);
+ vsnprintf(buff, sizeof(buff)-1, format, args);
+ DBUG_PRINT("info", ("%s", buff));
+ va_end(args);
+ }
+#endif
va_start(args, format);
- DBUG_PRINT("info", ("%s", format));
if (trace_file != NULL)
{
if (procent_printed)
diff --git a/storage/maria/ma_rt_index.c b/storage/maria/ma_rt_index.c
index d50dd99e5cf..62474dbbad8 100644
--- a/storage/maria/ma_rt_index.c
+++ b/storage/maria/ma_rt_index.c
@@ -625,7 +625,8 @@ static int maria_rtree_insert_req(MARIA_HA *info, MARIA_KEY *key,
{
maria_rtree_combine_rect(keyinfo->seg, k, key->data, k, key_length);
if (share->now_transactional &&
- _ma_log_change(&page, k, key_length))
+ _ma_log_change(&page, k, key_length,
+ KEY_OP_DEBUG_RTREE_COMBINE))
goto err;
page_mark_changed(info, &page);
if (_ma_write_keypage(&page, PAGECACHE_LOCK_LEFT_WRITELOCKED,
@@ -652,7 +653,8 @@ static int maria_rtree_insert_req(MARIA_HA *info, MARIA_KEY *key,
if (maria_rtree_set_key_mbr(info, &k_key, _ma_kpos(nod_flag, k)))
goto err;
if (share->now_transactional &&
- _ma_log_change(&page, k, key_length))
+ _ma_log_change(&page, k, key_length,
+ KEY_OP_DEBUG_RTREE_SPLIT))
goto err;
/* add new key for new page */
_ma_kpointer(info, new_key_buff - nod_flag, *new_page);
@@ -964,7 +966,8 @@ static int maria_rtree_delete_req(MARIA_HA *info, const MARIA_KEY *key,
_ma_kpos(nod_flag, k)))
goto err;
if (share->now_transactional &&
- _ma_log_change(&page, k, key->data_length))
+ _ma_log_change(&page, k, key->data_length,
+ KEY_OP_DEBUG_RTREE_SET_KEY))
goto err;
page_mark_changed(info, &page)
if (_ma_write_keypage(&page,
diff --git a/storage/maria/ma_rt_key.c b/storage/maria/ma_rt_key.c
index bc2c8f71f5d..2e204990a3b 100644
--- a/storage/maria/ma_rt_key.c
+++ b/storage/maria/ma_rt_key.c
@@ -91,7 +91,8 @@ int maria_rtree_delete_key(MARIA_PAGE *page, uchar *key, uint key_length)
page->size-= key_length_with_nod_flag;
page_store_size(share, page);
if (share->now_transactional &&
- _ma_log_delete(page, key_start, 0, key_length_with_nod_flag))
+ _ma_log_delete(page, key_start, 0, key_length_with_nod_flag,
+ 0, KEY_OP_DEBUG_LOG_DEL_CHANGE_RT))
return -1;
return 0;
}
diff --git a/storage/maria/ma_rt_split.c b/storage/maria/ma_rt_split.c
index 8f137c2e0cf..856edc60490 100644
--- a/storage/maria/ma_rt_split.c
+++ b/storage/maria/ma_rt_split.c
@@ -308,7 +308,7 @@ static my_bool _ma_log_rt_split(MARIA_PAGE *page,
LSN lsn;
uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 1 + 2 + 1 + 2 + 2 + 7],
*log_pos;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 5];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 6];
uint translog_parts, extra_length= 0;
my_off_t page_pos;
DBUG_ENTER("_ma_log_rt_split");
@@ -344,24 +344,11 @@ static my_bool _ma_log_rt_split(MARIA_PAGE *page,
translog_parts+= 2;
}
-#ifdef EXTRA_DEBUG_KEY_CHANGES
- {
- int page_length= page->size;
- ha_checksum crc;
- uchar *check_start= log_pos;
- crc= my_checksum(0, page->buff + LSN_STORE_SIZE,
- page_length - LSN_STORE_SIZE);
- log_pos[0]= KEY_OP_CHECK;
- log_pos++;
- int2store(log_pos, page_length);
- log_pos+= 2;
- int4store(log_pos, crc);
- log_pos+= 4;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= check_start;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7;
- translog_parts++;
- }
-#endif
+ _ma_log_key_changes(page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ page->org_size= page->size;
if (translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
diff --git a/storage/maria/ma_sort.c b/storage/maria/ma_sort.c
index cb3e6bc3ee3..f7f79f90cf0 100644
--- a/storage/maria/ma_sort.c
+++ b/storage/maria/ma_sort.c
@@ -154,7 +154,7 @@ int _ma_create_index_by_sort(MARIA_SORT_PARAM *info, my_bool no_messages,
keys < (uint) maxbuffer)
{
_ma_check_print_error(info->sort_info->param,
- "maria_sort_buffer_size is too small");
+ "aria_sort_buffer_size is too small");
goto err;
}
}
@@ -178,7 +178,7 @@ int _ma_create_index_by_sort(MARIA_SORT_PARAM *info, my_bool no_messages,
}
if (memavl < MIN_SORT_MEMORY)
{
- _ma_check_print_error(info->sort_info->param, "Maria sort buffer"
+ _ma_check_print_error(info->sort_info->param, "Aria sort buffer"
" too small"); /* purecov: tested */
goto err; /* purecov: tested */
}
@@ -377,7 +377,7 @@ pthread_handler_t _ma_thr_find_all_keys(void *arg)
keys < maxbuffer)
{
_ma_check_print_error(sort_param->sort_info->param,
- "maria_sort_buffer_size is too small");
+ "aria_sort_buffer_size is too small");
goto err;
}
}
@@ -405,7 +405,7 @@ pthread_handler_t _ma_thr_find_all_keys(void *arg)
if (memavl < MIN_SORT_MEMORY)
{
_ma_check_print_error(sort_param->sort_info->param,
- "Maria sort buffer too small");
+ "Aria sort buffer too small");
goto err; /* purecov: tested */
}
diff --git a/storage/maria/ma_state.c b/storage/maria/ma_state.c
index d7ddc73e2b4..c7eee7d511d 100644
--- a/storage/maria/ma_state.c
+++ b/storage/maria/ma_state.c
@@ -53,12 +53,16 @@
my_bool _ma_setup_live_state(MARIA_HA *info)
{
- TRN *trn= info->trn;
+ TRN *trn;
MARIA_SHARE *share= info->s;
MARIA_USED_TABLES *tables;
MARIA_STATE_HISTORY *history;
DBUG_ENTER("_ma_setup_live_state");
+ if (maria_create_trn_hook(info))
+ DBUG_RETURN(1);
+
+ trn= info->trn;
for (tables= (MARIA_USED_TABLES*) info->trn->used_tables;
tables;
tables= tables->next)
@@ -69,6 +73,7 @@ my_bool _ma_setup_live_state(MARIA_HA *info)
goto end;
}
}
+
/* Table was not used before, create new table state entry */
if (!(tables= (MARIA_USED_TABLES*) my_malloc(sizeof(*tables),
MYF(MY_WME | MY_ZEROFILL))))
@@ -566,7 +571,8 @@ void _ma_block_get_status(void* param, my_bool concurrent_insert)
{
MARIA_HA *info=(MARIA_HA*) param;
DBUG_ENTER("_ma_block_get_status");
- DBUG_PRINT("info", ("concurrent_insert %d", concurrent_insert));
+ DBUG_PRINT("enter", ("concurrent_insert %d", concurrent_insert));
+
info->row_base_length= info->s->base_length;
info->row_flag= info->s->base.default_row_flag;
if (concurrent_insert)
@@ -589,6 +595,21 @@ void _ma_block_get_status(void* param, my_bool concurrent_insert)
*/
(void) _ma_setup_live_state(info);
}
+ else
+ {
+ /*
+ Info->trn is set if this table is already handled and we are
+ called from maria_versioning()
+ */
+ if (info->s->base.born_transactional && !info->trn)
+ {
+ /*
+ Assume for now that this doesn't fail (It can only fail in
+ out of memory conditions)
+ */
+ (void) maria_create_trn_hook(info);
+ }
+ }
DBUG_VOID_RETURN;
}
@@ -616,6 +637,30 @@ my_bool _ma_block_check_status(void *param __attribute__((unused)))
}
+/* Get status when transactional but not versioned */
+
+void _ma_block_get_status_no_versioning(void* param,
+ my_bool concurrent_insert
+ __attribute__((unused)))
+{
+ MARIA_HA *info=(MARIA_HA*) param;
+ DBUG_ENTER("_ma_block_get_status_no_version");
+ DBUG_PRINT("enter", ("concurrent_insert %d", concurrent_insert));
+ DBUG_ASSERT(info->s->base.born_transactional);
+
+ info->state->changed= 0; /* from _ma_reset_update_flag() */
+ if (!info->trn)
+ {
+ /*
+ Assume for now that this doesn't fail (It can only fail in
+ out of memory conditions)
+ */
+ (void) maria_create_trn_hook(info);
+ }
+ DBUG_VOID_RETURN;
+}
+
+
/**
Enable/disable versioning
*/
@@ -633,6 +678,7 @@ void maria_versioning(MARIA_HA *info, my_bool versioning)
info->lock.type= versioning ? TL_WRITE_CONCURRENT_INSERT : TL_WRITE;
_ma_block_get_status((void*) info, versioning);
info->lock.type= save_lock_type;
+ info->state= info->state_start= &info->s->state.common;
}
}
diff --git a/storage/maria/ma_static.c b/storage/maria/ma_static.c
index b4589469caf..917385f9568 100644
--- a/storage/maria/ma_static.c
+++ b/storage/maria/ma_static.c
@@ -37,6 +37,7 @@ my_bool maria_flush= 0, maria_single_user= 0;
my_bool maria_delay_key_write= 0, maria_page_checksums= 1;
my_bool maria_inited= FALSE;
my_bool maria_in_ha_maria= FALSE; /* If used from ha_maria or not */
+my_bool maria_recovery_changed_data= 0, maria_recovery_verbose= 0;
pthread_mutex_t THR_LOCK_maria;
#if defined(THREAD) && !defined(DONT_USE_RW_LOCKS)
ulong maria_concurrent_insert= 2;
@@ -55,6 +56,7 @@ PAGECACHE *maria_log_pagecache= &maria_log_pagecache_var;
MY_TMPDIR *maria_tmpdir; /* Tempdir for redo */
char *maria_data_root;
HASH maria_stored_state;
+int (*maria_create_trn_hook)(MARIA_HA *);
/**
@brief when transactionality does not matter we can use this transaction
diff --git a/storage/maria/ma_test2.c b/storage/maria/ma_test2.c
index 081cac8a2aa..9e2f32f767b 100644
--- a/storage/maria/ma_test2.c
+++ b/storage/maria/ma_test2.c
@@ -83,6 +83,9 @@ int main(int argc, char *argv[])
if (! async_io)
my_disable_async_io=1;
+ /* If we sync or not have no affect on this test */
+ my_disable_sync= 1;
+
maria_data_root= (char *)".";
/* Maria requires that we always have a page cache */
if (maria_init() ||
@@ -351,7 +354,10 @@ int main(int argc, char *argv[])
key3[atoi((char*) read_record+keyinfo[2].seg[0].start)]=0;
}
else
+ {
puts("Warning: Skipping delete test because no dupplicate keys");
+ break;
+ }
}
if (testflag == 3)
goto end;
diff --git a/storage/maria/ma_test_force_start.pl b/storage/maria/ma_test_force_start.pl
index 7ab8190a738..8148b2f212b 100755
--- a/storage/maria/ma_test_force_start.pl
+++ b/storage/maria/ma_test_force_start.pl
@@ -6,7 +6,7 @@ use warnings;
my $usage= <<EOF;
This program tests that the options
---maria-force-start-after-recovery-failures --maria-recover work as
+--aria-force-start-after-recovery-failures --aria-recover work as
expected.
It has to be run from directory mysql-test, and works with non-debug
and debug binaries.
@@ -43,7 +43,7 @@ my $error_log_name= "./var/log/master.err";
my @cmd_output;
my $whatever; # garbage data
$ENV{MTR_VERSION} = 1; # MTR2 does not have --start-and-exit
-my $base_server_cmd= "perl mysql-test-run.pl --mysqld=--maria-force-start-after-recovery-failures=$force_after --suite=maria maria.maria-recover ";
+my $base_server_cmd= "perl mysql-test-run.pl --mysqld=--aria-force-start-after-recovery-failures=$force_after --suite=maria maria.maria-recover ";
if ($^O =~ /^mswin/i)
{
print <<EOF;
@@ -101,7 +101,7 @@ open(FILE, ">", $sql_name) or die;
# sort_get_next_record() whose failure itself does not cause a retry.
print FILE "create table t1 (a varchar(1000)".
- ($corrupt_index ? ", index(a)" : "") .") engine=maria;\n";
+ ($corrupt_index ? ", index(a)" : "") .") engine=aria;\n";
print FILE <<EOF;
insert into t1 values("ThursdayMorningsMarket");
# If Recovery executes REDO_INDEX_NEW_PAGE it will overwrite our
@@ -109,7 +109,7 @@ insert into t1 values("ThursdayMorningsMarket");
# create_rename_lsn using OPTIMIZE TABLE. This also makes sure to put
# the pages on disk, so that we can corrupt them.
optimize table t1;
-# mark table open, so that --maria-recover repairs it
+# mark table open, so that --aria-recover repairs it
insert into t1 select concat(a,'b') from t1 limit 1;
EOF
close FILE;
@@ -123,7 +123,7 @@ kill_server(9);
print "ruining " .
($corrupt_index ? "first page of keys" : "bitmap page") .
- " in table to test maria-recover\n";
+ " in table to test aria-recover\n";
open(FILE, "+<", "./var/master-data/test/t1.$corrupt_file") or die;
$whatever= ("\xAB" x 100);
sysseek (FILE, $corrupt_index ? 8192 : (8192-100-100), 0) or die;
@@ -131,7 +131,7 @@ syswrite (FILE, $whatever) or die;
close FILE;
print "ruining log to make recovery fail; mysqld should fail the $force_after first restarts\n";
-open(FILE, "+<", "./var/tmp/maria_log.00000001") or die;
+open(FILE, "+<", "./var/tmp/aria_log.00000001") or die;
$whatever= ("\xAB" x 8192);
sysseek (FILE, 99, 0) or die;
syswrite (FILE, $whatever) or die;
@@ -148,8 +148,8 @@ for($i= 1; $i <= $force_after; $i= $i + 1)
open(FILE, "<", $error_log_name) or die;
@cmd_output= <FILE>;
close FILE;
- die unless grep(/\[ERROR\] mysqld(.exe)*: Maria engine: log initialization failed/, @cmd_output);
- die unless grep(/\[ERROR\] Plugin 'MARIA' init function returned error./, @cmd_output);
+ die unless grep(/\[ERROR\] mysqld(.exe)*: Aria engine: log initialization failed/, @cmd_output);
+ die unless grep(/\[ERROR\] Plugin 'Aria' init function returned error./, @cmd_output);
print "failed - ok\n";
}
@@ -160,13 +160,13 @@ die if $?;
open(FILE, "<", $error_log_name) or die;
@cmd_output= <FILE>;
close FILE;
-die unless grep(/\[Warning\] mysqld(.exe)*: Maria engine: removed all logs after [\d]+ consecutive failures of recovery from logs/, @cmd_output);
-die unless grep(/\[ERROR\] mysqld(.exe)*: File '.*tmp.maria_log.00000001' not found \(Errcode: 2\)/, @cmd_output);
+die unless grep(/\[Warning\] mysqld(.exe)*: Aria engine: removed all logs after [\d]+ consecutive failures of recovery from logs/, @cmd_output);
+die unless grep(/\[ERROR\] mysqld(.exe)*: File '.*tmp.aria_log.00000001' not found \(Errcode: 2\)/, @cmd_output);
print "success - ok\n";
open(FILE, ">", $sql_name) or die;
print FILE <<EOF;
-set global maria_recover=normal;
+set global aria_recover=normal;
insert into t1 values('aaa');
EOF
close FILE;
diff --git a/storage/maria/ma_unique.c b/storage/maria/ma_unique.c
index bae58fd70cd..a90578c2162 100644
--- a/storage/maria/ma_unique.c
+++ b/storage/maria/ma_unique.c
@@ -68,8 +68,7 @@ my_bool _ma_check_unique(MARIA_HA *info, MARIA_UNIQUEDEF *def, uchar *record,
DBUG_ASSERT(info->last_key.data_length == MARIA_UNIQUE_HASH_LENGTH);
if (_ma_search_next(info, &info->last_key, SEARCH_BIGGER,
info->s->state.key_root[def->key]) ||
- bcmp((char*) info->last_key.data, (char*) key_buff,
- MARIA_UNIQUE_HASH_LENGTH))
+ bcmp(info->last_key.data, key_buff, MARIA_UNIQUE_HASH_LENGTH))
{
info->page_changed= 1; /* Can't optimize read next */
info->cur_row.lastpos= lastpos;
diff --git a/storage/maria/ma_write.c b/storage/maria/ma_write.c
index 3b9ca46899f..c6718299d17 100644
--- a/storage/maria/ma_write.c
+++ b/storage/maria/ma_write.c
@@ -613,7 +613,7 @@ static int w_search(register MARIA_HA *info, uint32 comp_flag, MARIA_KEY *key,
MARIA_KEYDEF *keyinfo= key->keyinfo;
MARIA_PAGE page;
DBUG_ENTER("w_search");
- DBUG_PRINT("enter",("page: %ld", (long) page_pos));
+ DBUG_PRINT("enter", ("page: %lu", (ulong) (page_pos/keyinfo->block_length)));
if (!(temp_buff= (uchar*) my_alloca((uint) keyinfo->block_length+
MARIA_MAX_KEY_BUFF*2)))
@@ -823,9 +823,9 @@ int _ma_insert(register MARIA_HA *info, MARIA_KEY *key,
Check if the new key fits totally into the the page
(anc_buff is big enough to contain a full page + one key)
*/
- if (a_length <= (uint) keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE)
+ if (a_length <= share->max_index_block_size)
{
- if (keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE - a_length < 32 &&
+ if (share->max_index_block_size - a_length < 32 &&
(keyinfo->flag & HA_FULLTEXT) && key_pos == endpos &&
share->base.key_reflength <= share->base.rec_reflength &&
share->options & (HA_OPTION_PACK_RECORD | HA_OPTION_COMPRESS_RECORD))
@@ -885,9 +885,9 @@ ChangeSet@1.2562, 2008-04-09 07:41:40+02:00, serg@janus.mylan +9 -0
}
else
{
- if (share->now_transactional &&
+ if (share->now_transactional &&
_ma_log_add(anc_page, org_anc_length,
- key_pos, s_temp.changed_length, t_length, 0))
+ key_pos, s_temp.changed_length, t_length, 1))
DBUG_RETURN(-1);
}
DBUG_RETURN(0); /* There is room on page */
@@ -1265,7 +1265,7 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
curr_keylength);
if ((right ? right_length : left_length) + curr_keylength <=
- (uint) keyinfo->block_length - KEYPAGE_CHECKSUM_SIZE)
+ share->max_index_block_size)
{
/* Enough space to hold all keys in the two buffers ; Balance bufferts */
new_left_length= share->keypage_header+nod_flag+(keys/2)*curr_keylength;
@@ -1320,7 +1320,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
start of page
*/
if (_ma_log_prefix(&next_page, 0,
- ((int) new_right_length - (int) right_length)))
+ ((int) new_right_length - (int) right_length),
+ KEY_OP_DEBUG_LOG_PREFIX_3))
goto err;
}
else
@@ -1383,7 +1384,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
*/
if (_ma_log_prefix(&next_page,
(uint) (new_right_length - right_length),
- (int) (new_right_length - right_length)))
+ (int) (new_right_length - right_length),
+ KEY_OP_DEBUG_LOG_PREFIX_4))
goto err;
}
else
@@ -1416,7 +1418,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
/* Log changes to father (one level up) page */
if (share->now_transactional &&
- _ma_log_change(father_page, father_key_pos, k_length))
+ _ma_log_change(father_page, father_key_pos, k_length,
+ KEY_OP_DEBUG_FATHER_CHANGED_1))
goto err;
/*
@@ -1544,7 +1547,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
This contains the last 'extra_buff' from 'buff'
*/
if (_ma_log_prefix(&extra_page,
- 0, (int) (extra_buff_length - right_length)))
+ 0, (int) (extra_buff_length - right_length),
+ KEY_OP_DEBUG_LOG_PREFIX_5))
goto err;
/*
@@ -1583,7 +1587,8 @@ static int _ma_balance_page(MARIA_HA *info, MARIA_KEYDEF *keyinfo,
/* Log changes to father (one level up) page */
if (share->now_transactional &&
- _ma_log_change(father_page, father_key_pos, k_length))
+ _ma_log_change(father_page, father_key_pos, k_length,
+ KEY_OP_DEBUG_FATHER_CHANGED_2))
goto err;
}
@@ -1755,7 +1760,7 @@ void maria_flush_bulk_insert(MARIA_HA *info, uint inx)
}
}
-void maria_end_bulk_insert(MARIA_HA *info, my_bool abort)
+void maria_end_bulk_insert(MARIA_HA *info)
{
DBUG_ENTER("maria_end_bulk_insert");
if (info->bulk_insert)
@@ -1765,7 +1770,7 @@ void maria_end_bulk_insert(MARIA_HA *info, my_bool abort)
{
if (is_tree_inited(&info->bulk_insert[i]))
{
- if (abort)
+ if (info->s->deleting)
reset_free_element(&info->bulk_insert[i]);
delete_tree(&info->bulk_insert[i]);
}
@@ -1889,6 +1894,9 @@ my_bool _ma_log_new(MARIA_PAGE *ma_page, my_bool root_page)
log_array[TRANSLOG_INTERNAL_PARTS + 1].str= ma_page->buff + LSN_STORE_SIZE;
log_array[TRANSLOG_INTERNAL_PARTS + 1].length= page_length;
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
+
if (translog_write_record(&lsn, LOGREC_REDO_INDEX_NEW_PAGE,
info->trn, info,
(translog_size_t)
@@ -1905,57 +1913,51 @@ my_bool _ma_log_new(MARIA_PAGE *ma_page, my_bool root_page)
Log when some part of the key page changes
*/
-my_bool _ma_log_change(MARIA_PAGE *ma_page,
- const uchar *key_pos, uint length)
+my_bool _ma_log_change(MARIA_PAGE *ma_page, const uchar *key_pos, uint length,
+ enum en_key_debug debug_marker __attribute__((unused)))
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 6 + 7], *log_pos;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 6 + 7], *log_pos;
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4];
uint offset= (uint) (key_pos - ma_page->buff), translog_parts;
- uint extra_length= 0;
my_off_t page;
MARIA_HA *info= ma_page->info;
DBUG_ENTER("_ma_log_change");
DBUG_PRINT("enter", ("page: %lu length: %u", (ulong) ma_page->pos, length));
DBUG_ASSERT(info->s->now_transactional);
+ DBUG_ASSERT(offset + length <= ma_page->size);
+ DBUG_ASSERT(ma_page->org_size == ma_page->size);
/* Store address of new root page */
page= ma_page->pos / info->s->block_size;
page_store(log_data + FILEID_STORE_SIZE, page);
log_pos= log_data+ FILEID_STORE_SIZE + PAGE_STORE_SIZE;
+
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ (*log_pos++)= KEY_OP_DEBUG;
+ (*log_pos++)= debug_marker;
+#endif
+
log_pos[0]= KEY_OP_OFFSET;
int2store(log_pos+1, offset);
log_pos[3]= KEY_OP_CHANGE;
int2store(log_pos+4, length);
+ log_pos+= 6;
log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
- log_array[TRANSLOG_INTERNAL_PARTS + 0].length= sizeof(log_data) - 7;
+ log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (log_pos - log_data);
log_array[TRANSLOG_INTERNAL_PARTS + 1].str= key_pos;
log_array[TRANSLOG_INTERNAL_PARTS + 1].length= length;
translog_parts= 2;
-#ifdef EXTRA_DEBUG_KEY_CHANGES
- {
- int page_length= ma_page->size;
- ha_checksum crc;
- crc= my_checksum(0, ma_page->buff + LSN_STORE_SIZE,
- page_length - LSN_STORE_SIZE);
- log_pos+= 6;
- log_pos[0]= KEY_OP_CHECK;
- int2store(log_pos+1, page_length);
- int4store(log_pos+3, crc);
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].str= log_pos;
- log_array[TRANSLOG_INTERNAL_PARTS + translog_parts].length= 7;
- extra_length+= 7;
- translog_parts++;
- }
-#endif
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &length, &translog_parts);
if (translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
- (translog_size_t) (sizeof(log_data) - 7 + length +
- extra_length),
+ (translog_size_t) (log_pos - log_data) + length,
TRANSLOG_INTERNAL_PARTS + translog_parts,
log_array, log_data, NULL))
DBUG_RETURN(1);
@@ -1966,17 +1968,27 @@ my_bool _ma_log_change(MARIA_PAGE *ma_page,
/**
@brief Write log entry for page splitting
+ @fn _ma_log_split()
+ @param
+ ma_page Page that is changed
+ org_length Original length of page
+ new_length New length of page
+ key_pos Where key is inserted on page (may be 0 if no key)
+ key_length Number of bytes changed at key_pos
+ move_length Number of bytes moved at key_pos to make room for key
+ prefix_or_suffix KEY_OP_NONE Ignored
+ KEY_OP_ADD_PREFIX Add data to start of page
+ KEY_OP_ADD_SUFFIX Add data to end of page
+ data What data was added
+ data_length Number of bytes added first or last
+ changed_length Number of bytes changed first or last.
+
@note
Write log entry for page that has got a key added to the page under
one and only one of the following senarios:
- Page is shortened from end
- Data is added to end of page
- Data added at front of page
-
- @param prefix_or_suffix KEY_OP_NONE Ignored
- KEY_OP_ADD_PREFIX Add data to start of page
- KEY_OP_ADD_SUFFIX Add data to end of page
-
*/
static my_bool _ma_log_split(MARIA_PAGE *ma_page,
@@ -1987,9 +1999,9 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page,
uint changed_length)
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+3+3+3+3+2];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 2 + 3+3+3+3+3+2 +7];
uchar *log_pos;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 3];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 6];
uint offset= (uint) (key_pos - ma_page->buff);
uint translog_parts, extra_length;
MARIA_HA *info= ma_page->info;
@@ -1998,11 +2010,23 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page,
DBUG_PRINT("enter", ("page: %lu org_length: %u new_length: %u",
(ulong) ma_page->pos, org_length, new_length));
+ DBUG_ASSERT(changed_length >= data_length);
+ DBUG_ASSERT(org_length <= info->s->max_index_block_size);
+
log_pos= log_data + FILEID_STORE_SIZE;
page= ma_page->pos / info->s->block_size;
page_store(log_pos, page);
log_pos+= PAGE_STORE_SIZE;
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ (*log_pos++)= KEY_OP_DEBUG;
+ (*log_pos++)= KEY_OP_DEBUG_LOG_SPLIT;
+#endif
+
+ /* Store keypage_flag */
+ *log_pos++= KEY_OP_SET_PAGEFLAG;
+ *log_pos++= ma_page->buff[KEYPAGE_TRANSFLAG_OFFSET];
+
if (new_length <= offset || !key_pos)
{
/*
@@ -2015,6 +2039,7 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page,
log_pos+= 3;
translog_parts= 1;
extra_length= 0;
+ DBUG_ASSERT(data_length == 0);
}
else
{
@@ -2026,6 +2051,11 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page,
*/
max_key_length= new_length - offset;
extra_length= min(key_length, max_key_length);
+ if (offset + move_length > new_length)
+ {
+ /* This is true when move_length includes changes for next packed key */
+ move_length= new_length - offset;
+ }
if ((int) new_length < (int) (org_length + move_length + data_length))
{
@@ -2034,10 +2064,13 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page,
log_pos[0]= KEY_OP_DEL_SUFFIX;
int2store(log_pos + 1, diff);
log_pos+= 3;
+ DBUG_ASSERT(data_length == 0); /* Page is shortened */
+ DBUG_ASSERT(offset <= org_length - diff);
}
else
{
DBUG_ASSERT(new_length == org_length + move_length + data_length);
+ DBUG_ASSERT(offset <= org_length);
}
log_pos[0]= KEY_OP_OFFSET;
@@ -2085,6 +2118,13 @@ static my_bool _ma_log_split(MARIA_PAGE *ma_page,
log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos -
log_data);
+
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
+
DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
(translog_size_t)
@@ -2122,8 +2162,9 @@ static my_bool _ma_log_del_prefix(MARIA_PAGE *ma_page,
int move_length)
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 12], *log_pos;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 2];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 2 + 12 + 7];
+ uchar *log_pos;
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4];
uint offset= (uint) (key_pos - ma_page->buff);
uint diff_length= org_length + move_length - new_length;
uint translog_parts, extra_length;
@@ -2134,6 +2175,7 @@ static my_bool _ma_log_del_prefix(MARIA_PAGE *ma_page,
(ulong) ma_page->pos, org_length, new_length));
DBUG_ASSERT((int) diff_length > 0);
+ DBUG_ASSERT(ma_page->size == new_length);
log_pos= log_data + FILEID_STORE_SIZE;
page= ma_page->pos / info->s->block_size;
@@ -2143,6 +2185,15 @@ static my_bool _ma_log_del_prefix(MARIA_PAGE *ma_page,
translog_parts= 1;
extra_length= 0;
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ *log_pos++= KEY_OP_DEBUG;
+ *log_pos++= KEY_OP_DEBUG_LOG_DEL_PREFIX;
+#endif
+
+ /* Store keypage_flag */
+ *log_pos++= KEY_OP_SET_PAGEFLAG;
+ *log_pos++= ma_page->buff[KEYPAGE_TRANSFLAG_OFFSET];
+
if (offset < diff_length + info->s->keypage_header)
{
/*
@@ -2190,6 +2241,12 @@ static my_bool _ma_log_del_prefix(MARIA_PAGE *ma_page,
log_array[TRANSLOG_INTERNAL_PARTS + 0].str= log_data;
log_array[TRANSLOG_INTERNAL_PARTS + 0].length= (uint) (log_pos -
log_data);
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
+
DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
(translog_size_t)
@@ -2215,9 +2272,9 @@ static my_bool _ma_log_key_middle(MARIA_PAGE *ma_page,
uint key_length, int move_length)
{
LSN lsn;
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3+5+3+3+3];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 2 + 2 + 3+5+3+3+3 + 7];
uchar *log_pos;
- LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 4];
+ LEX_CUSTRING log_array[TRANSLOG_INTERNAL_PARTS + 6];
uint key_offset;
uint translog_parts, extra_length;
my_off_t page;
@@ -2225,6 +2282,8 @@ static my_bool _ma_log_key_middle(MARIA_PAGE *ma_page,
DBUG_ENTER("_ma_log_key_middle");
DBUG_PRINT("enter", ("page: %lu", (ulong) ma_page->pos));
+ DBUG_ASSERT(ma_page->size == new_length);
+
/* new place of key after changes */
key_pos+= data_added_first;
key_offset= (uint) (key_pos - ma_page->buff);
@@ -2252,6 +2311,15 @@ static my_bool _ma_log_key_middle(MARIA_PAGE *ma_page,
page_store(log_pos, page);
log_pos+= PAGE_STORE_SIZE;
+#ifdef EXTRA_DEBUG_KEY_CHANGES
+ *log_pos++= KEY_OP_DEBUG;
+ *log_pos++= KEY_OP_DEBUG_LOG_MIDDLE;
+#endif
+
+ /* Store keypage_flag */
+ *log_pos++= KEY_OP_SET_PAGEFLAG;
+ *log_pos++= ma_page->buff[KEYPAGE_TRANSFLAG_OFFSET];
+
log_pos[0]= KEY_OP_DEL_SUFFIX;
int2store(log_pos+1, data_deleted_last);
log_pos+= 3;
@@ -2300,6 +2368,12 @@ static my_bool _ma_log_key_middle(MARIA_PAGE *ma_page,
key_length);
}
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
+
DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
(translog_size_t)
@@ -2323,13 +2397,17 @@ static my_bool _ma_log_middle(MARIA_PAGE *ma_page,
uint data_deleted_last)
{
LSN lsn;
- LEX_STRING log_array[TRANSLOG_INTERNAL_PARTS + 2];
- uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3 + 5], *log_pos;
+ LEX_STRING log_array[TRANSLOG_INTERNAL_PARTS + 4];
+ uchar log_data[FILEID_STORE_SIZE + PAGE_STORE_SIZE + 3 + 5 + 7], *log_pos;
MARIA_HA *info= ma_page->info;
my_off_t page;
+ uint translog_parts, extra_length;
DBUG_ENTER("_ma_log_middle");
DBUG_PRINT("enter", ("page: %lu", (ulong) page));
+ DBUG_ASSERT(ma_page->org_size + data_added_first - data_deleted_last ==
+ ma_page->size);
+
page= ma_page->page / info->s->block_size;
log_pos= log_data + FILEID_STORE_SIZE;
@@ -2352,12 +2430,21 @@ static my_bool _ma_log_middle(MARIA_PAGE *ma_page,
log_array[TRANSLOG_INTERNAL_PARTS + 1].str= ((char*) buff +
info->s->keypage_header);
log_array[TRANSLOG_INTERNAL_PARTS + 1].length= data_changed_first;
+ translog_parts= 2;
+ extra_length= data_changed_first;
+
+ _ma_log_key_changes(ma_page,
+ log_array + TRANSLOG_INTERNAL_PARTS + translog_parts,
+ log_pos, &extra_length, &translog_parts);
+ /* Remember new page length for future log entires for same page */
+ ma_page->org_size= ma_page->size;
+
DBUG_RETURN(translog_write_record(&lsn, LOGREC_REDO_INDEX,
info->trn, info,
(translog_size_t)
log_array[TRANSLOG_INTERNAL_PARTS +
- 0].length + data_changed_first,
- TRANSLOG_INTERNAL_PARTS + 2,
+ 0].length + extra_length,
+ TRANSLOG_INTERNAL_PARTS + translog_parts,
log_array, log_data, NULL));
}
#endif
diff --git a/storage/maria/maria_chk.c b/storage/maria/maria_chk.c
index ab3c641b55f..4e19d5878ea 100644
--- a/storage/maria/maria_chk.c
+++ b/storage/maria/maria_chk.c
@@ -36,12 +36,13 @@ SET_STACK_SIZE(9000) /* Minimum stack size for program */
static uint decode_bits;
static char **default_argv;
-static const char *load_default_groups[]= { "maria_chk", 0 };
+static const char *load_default_groups[]= { "aria_chk", 0 };
static const char *set_collation_name, *opt_tmpdir, *opt_log_dir;
static CHARSET_INFO *set_collation;
static int stopwords_inited= 0;
static MY_TMPDIR maria_chk_tmpdir;
static my_bool opt_transaction_logging, opt_debug, opt_require_control_file;
+static my_bool opt_warning_for_wrong_transid;
static const char *type_names[]=
{
@@ -70,9 +71,17 @@ static const char *record_formats[]=
"Fixed length", "Packed", "Compressed", "Block", "?"
};
+static const char *bitmap_description[]=
+{
+ "Empty page", "Part filled head page","Part filled head page",
+ "Part filled head page", "Full head page",
+ "Part filled tail page","Part filled tail page",
+ "Full tail or blob page"
+};
+
static const char *maria_stats_method_str="nulls_unequal";
-static char default_open_errmsg[]= "%d when opening MARIA-table '%s'";
-static char default_close_errmsg[]= "%d when closing MARIA-table '%s'";
+static char default_open_errmsg[]= "%d when opening Aria table '%s'";
+static char default_close_errmsg[]= "%d when closing Aria table '%s'";
static void get_options(int *argc,char * * *argv);
static void print_version(void);
@@ -105,7 +114,9 @@ int main(int argc, char **argv)
error=0;
maria_init();
- if (ma_control_file_open(FALSE, opt_require_control_file) &&
+ maria_block_size= 0; /* Use block size from control file */
+ if (ma_control_file_open(FALSE, opt_require_control_file ||
+ !(check_param.testflag & T_SILENT)) &&
(opt_require_control_file ||
(opt_transaction_logging && (check_param.testflag & T_REP_ANY))))
{
@@ -170,7 +181,7 @@ end:
char buff[22],buff2[22];
if (!(check_param.testflag & T_SILENT) || check_param.testflag & T_INFO)
puts("\n---------");
- printf("\nTotal of all %d MARIA-files:\nData records: %9s Deleted blocks: %9s\n",check_param.total_files,llstr(check_param.total_records,buff),
+ printf("\nTotal of all %d Aria-files:\nData records: %9s Deleted blocks: %9s\n",check_param.total_files,llstr(check_param.total_records,buff),
llstr(check_param.total_deleted,buff2));
}
free_defaults(default_argv);
@@ -193,7 +204,7 @@ enum options_mc {
OPT_FT_MAX_WORD_LEN, OPT_FT_STOPWORD_FILE,
OPT_MAX_RECORD_LENGTH, OPT_AUTO_CLOSE, OPT_STATS_METHOD, OPT_TRANSACTION_LOG,
OPT_SKIP_SAFEMALLOC, OPT_ZEROFILL_KEEP_LSN, OPT_REQUIRE_CONTROL_FILE,
- OPT_LOG_DIR, OPT_DATADIR
+ OPT_LOG_DIR, OPT_DATADIR, OPT_WARNING_FOR_WRONG_TRANSID
};
static struct my_option my_long_options[] =
@@ -213,7 +224,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
"Directory where character sets are.",
- (uchar**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ (char**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"check", 'c',
"Check table for errors.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -233,8 +244,8 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"data-file-length", 'D',
"Max length of data file (when recreating data-file when it's full).",
- (uchar**) &check_param.max_data_file_length,
- (uchar**) &check_param.max_data_file_length,
+ &check_param.max_data_file_length,
+ &check_param.max_data_file_length,
0, GET_LL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"extend-check", 'e',
"If used when checking a table, ensure that the table is 100 percent consistent, which will take a long time. If used when repairing a table, try to recover every possible row from the data file. Normally this will also find a lot of garbage rows; Don't use this option with repair if you are not totally desperate.",
@@ -255,21 +266,21 @@ static struct my_option my_long_options[] =
"Print statistics information about table that is checked.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"keys-used", 'k',
- "Tell MARIA to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.",
- (uchar**) &check_param.keys_in_use,
- (uchar**) &check_param.keys_in_use,
+ "Tell Aria to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.",
+ &check_param.keys_in_use,
+ &check_param.keys_in_use,
0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0},
{"datadir", OPT_DATADIR,
- "Path for control file (and logs if --log-dir not used).",
- (uchar**) &maria_data_root, 0, 0, GET_STR, REQUIRED_ARG,
+ "Path for control file (and logs if --logdir not used).",
+ &maria_data_root, 0, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
- {"log-dir", OPT_LOG_DIR,
+ {"logdir", OPT_LOG_DIR,
"Path for log files.",
- (uchar**) &opt_log_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ (char**) &opt_log_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"max-record-length", OPT_MAX_RECORD_LENGTH,
- "Skip rows bigger than this if maria_chk can't allocate memory to hold it",
- (uchar**) &check_param.max_record_length,
- (uchar**) &check_param.max_record_length,
+ "Skip rows bigger than this if aria_chk can't allocate memory to hold it",
+ &check_param.max_record_length,
+ &check_param.max_record_length,
0, GET_ULL, REQUIRED_ARG, LONGLONG_MAX, 0, LONGLONG_MAX, 0, 0, 0},
{"medium-check", 'm',
"Faster than extend-check, but only finds 99.99% of all errors. Should be good enough for most cases.",
@@ -302,17 +313,15 @@ static struct my_option my_long_options[] =
#endif
{"set-auto-increment", 'A',
"Force auto_increment to start at this or higher value. If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.",
- (uchar**) &check_param.auto_increment_value,
- (uchar**) &check_param.auto_increment_value,
+ &check_param.auto_increment_value,
+ &check_param.auto_increment_value,
0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"set-collation", OPT_SET_COLLATION,
"Change the collation used by the index",
- (uchar**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"set-variable", 'O',
- "Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.",
- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ (char**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG,
+ 0, 0, 0, 0, 0, 0},
{"silent", 's',
- "Only print errors. One can use two -s to make maria_chk very silent.",
+ "Only print errors. One can use two -s to make aria_chk very silent.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DBUG_OFF
#ifdef SAFEMALLOC
@@ -326,22 +335,22 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"sort-records", 'R',
"Sort records according to an index. This makes your data much more localized and may speed up things. (It may be VERY slow to do a sort the first time!)",
- (uchar**) &check_param.opt_sort_key,
- (uchar**) &check_param.opt_sort_key,
+ &check_param.opt_sort_key,
+ &check_param.opt_sort_key,
0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"tmpdir", 't',
- "Path for temporary files.",
- (uchar**) &opt_tmpdir,
+ {"tmpdir", 't', "Path for temporary files.", (char**) &opt_tmpdir,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"transaction-log", OPT_TRANSACTION_LOG,
"Log repair command to transaction log",
- (uchar**) &opt_transaction_logging, (uchar**) &opt_transaction_logging,
+ &opt_transaction_logging, &opt_transaction_logging,
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"update-state", 'U',
- "Mark tables as crashed if any errors were found.",
+ "Mark tables as crashed if any errors were found and clean if check didn't "
+ "find any errors. This allows one to get rid of warnings like 'table not "
+ "properly closed'",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"unpack", 'u',
- "Unpack file packed with mariapack.",
+ "Unpack file packed with aria_pack.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v',
"Print more information. This can be used with --description and --check. Use many -v for more verbosity!",
@@ -350,51 +359,59 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"wait", 'w', "Wait if table is locked.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"warning-for-wrong-transaction-id", OPT_WARNING_FOR_WRONG_TRANSID,
+ "Give a warning if we find a transaction id in the table that is bigger"
+ "than what exists in the control file. Use --skip-... to disable warning",
+ &opt_warning_for_wrong_transid, &opt_warning_for_wrong_transid,
+ 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
{ "page_buffer_size", OPT_PAGE_BUFFER_SIZE,
"Size of page buffer. Used by --safe-repair",
- (uchar**) &check_param.use_buffers, (uchar**) &check_param.use_buffers, 0,
+ &check_param.use_buffers, &check_param.use_buffers, 0,
GET_ULONG, REQUIRED_ARG, (long) USE_BUFFER_INIT, 1024L*1024L,
(long) ~0L, (long) MALLOC_OVERHEAD, (long) IO_SIZE, 0},
- { "read_buffer_size", OPT_READ_BUFFER_SIZE, "",
- (uchar**) &check_param.read_buffer_length,
- (uchar**) &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
+ { "read_buffer_size", OPT_READ_BUFFER_SIZE,
+ "Read buffer size for sequential reads during scanning",
+ &check_param.read_buffer_length,
+ &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD,
(long) ~0L, (long) MALLOC_OVERHEAD, (long) 1L, 0},
- { "write_buffer_size", OPT_WRITE_BUFFER_SIZE, "",
- (uchar**) &check_param.write_buffer_length,
- (uchar**) &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
+ { "write_buffer_size", OPT_WRITE_BUFFER_SIZE,
+ "Write buffer size for sequential writes during repair of fixed size or dynamic size rows",
+ &check_param.write_buffer_length,
+ &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD,
(long) ~0L, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "sort_buffer_size", OPT_SORT_BUFFER_SIZE,
"Size of sort buffer. Used by --recover",
- (uchar**) &check_param.sort_buffer_length,
- (uchar**) &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
+ &check_param.sort_buffer_length,
+ &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) SORT_BUFFER_INIT, (long) (MIN_SORT_BUFFER + MALLOC_OVERHEAD),
(long) ~0L, (long) MALLOC_OVERHEAD, (long) 1L, 0},
- { "sort_key_blocks", OPT_SORT_KEY_BLOCKS, "",
- (uchar**) &check_param.sort_key_blocks,
- (uchar**) &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG,
+ { "sort_key_blocks", OPT_SORT_KEY_BLOCKS,
+ "Internal buffer for sorting keys; Don't touch :)",
+ &check_param.sort_key_blocks,
+ &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG,
BUFFERS_WHEN_SORTING, 4L, 100L, 0L, 1L, 0},
- { "decode_bits", OPT_DECODE_BITS, "", (uchar**) &decode_bits,
- (uchar**) &decode_bits, 0, GET_UINT, REQUIRED_ARG, 9L, 4L, 17L, 0L, 1L, 0},
- { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, "", (uchar**) &ft_min_word_len,
- (uchar**) &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN,
+ { "decode_bits", OPT_DECODE_BITS, "", &decode_bits,
+ &decode_bits, 0, GET_UINT, REQUIRED_ARG, 9L, 4L, 17L, 0L, 1L, 0},
+ { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, "", &ft_min_word_len,
+ &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN,
0, 1, 0},
- { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, "", (uchar**) &ft_max_word_len,
- (uchar**) &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10,
+ { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, "", &ft_max_word_len,
+ &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10,
HA_FT_MAXCHARLEN, 0, 1, 0},
- { "maria_ft_stopword_file", OPT_FT_STOPWORD_FILE,
+ { "aria_ft_stopword_file", OPT_FT_STOPWORD_FILE,
"Use stopwords from this file instead of built-in list.",
- (uchar**) &ft_stopword_file, (uchar**) &ft_stopword_file, 0, GET_STR,
+ (char**) &ft_stopword_file, (char**) &ft_stopword_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ "stats_method", OPT_STATS_METHOD,
"Specifies how index statistics collection code should treat NULLs. "
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), "
"\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".",
- (uchar**) &maria_stats_method_str, (uchar**) &maria_stats_method_str, 0,
+ (char**) &maria_stats_method_str, (char**) &maria_stats_method_str, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ "zerofill", 'z',
- "Fill empty space in data and index files with zeroes",
+ "Fill empty space in data and index files with zeroes,",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{ "zerofill-keep-lsn", OPT_ZEROFILL_KEEP_LSN,
"Like --zerofill but does not zero out LSN of data/index pages;"
@@ -419,7 +436,7 @@ static void usage(void)
print_version();
puts("By Monty, for your professional use");
puts("This software comes with NO WARRANTY: see the PUBLIC for details.\n");
- puts("Description, check and repair of MARIA tables.");
+ puts("Description, check and repair of Aria tables.");
puts("Used without options all tables on the command will be checked for errors");
printf("Usage: %s [OPTIONS] tables[.MAI]\n", my_progname_short);
printf("\nGlobal options:\n");
@@ -430,10 +447,12 @@ static void usage(void)
printf("\
-H, --HELP Display this help and exit.\n\
-?, --help Display this help and exit.\n\
- -O, --set-variable var=option.\n\
- Change the value of a variable. Please note that\n\
- this option is deprecated; you can set variables\n\
- directly with '--variable-name=value'.\n\
+ --datadir=path Path for control file (and logs if --logdir not used)\n\
+ --logdir=path Path for log files\n\
+ --require-control-file Abort if we can't find/read the maria_log_control\n\
+ file\n\
+ -s, --silent Only print errors. One can use two -s to make\n\
+ maria_chk very silent.\n\
-t, --tmpdir=path Path for temporary files. Multiple paths can be\n\
specified, separated by ");
#if defined( __WIN__) || defined(__NETWARE__)
@@ -441,12 +460,8 @@ static void usage(void)
#else
printf("colon (:)");
#endif
- printf(", they will be used\n\
+ printf(", they will be used\n\
in a round-robin fashion.\n\
- --require-control-file Abort if we can't find/read the maria_log_control\n\
- file\n\
- -s, --silent Only print errors. One can use two -s to make\n\
- maria_chk very silent.\n\
-v, --verbose Print more information. This can be used with\n\
--description and --check. Use many -v for more verbosity.\n\
-V, --version Print version and exit.\n\
@@ -455,10 +470,10 @@ static void usage(void)
puts(" --start-check-pos=# Start reading file at given offset.\n");
#endif
- puts("Check options (check is the default action for maria_chk):\n\
+ puts("Check options (check is the default action for aria_chk):\n\
-c, --check Check table for errors.\n\
-e, --extend-check Check the table VERY throughly. Only use this in\n\
- extreme cases as maria_chk should normally be able to\n\
+ extreme cases as aria_chk should normally be able to\n\
find out if the table is ok even without this switch.\n\
-F, --fast Check only tables that haven't been closed properly.\n\
-C, --check-only-changed\n\
@@ -468,10 +483,11 @@ static void usage(void)
-i, --information Print statistics information about table that is checked.\n\
-m, --medium-check Faster than extend-check, but only finds 99.99% of\n\
all errors. Should be good enough for most cases.\n\
- -U --update-state Mark tables as crashed if you find any errors.\n\
+ -U, --update-state Mark tables as crashed if you find any errors.\n\
-T, --read-only Don't mark table as checked.\n");
- puts("Recover (repair)/ options (When using '-r' or '-o'):\n\
+ puts("\
+Recover (repair)/ options (When using '--recover' or '--safe-recover'):\n\
-B, --backup Make a backup of the .MAD file as 'filename-time.BAK'.\n\
--correct-checksum Correct checksum information for table.\n\
-D, --data-file-length=# Max length of data file (when recreating data\n\
@@ -480,11 +496,11 @@ static void usage(void)
Normally this will also find a lot of garbage rows;\n\
Don't use this option if you are not totally desperate.\n\
-f, --force Overwrite old temporary files.\n\
- -k, --keys-used=# Tell MARIA to update only some specific keys. # is a\n\
+ -k, --keys-used=# Tell Aria to update only some specific keys. # is a\n\
bit mask of which keys to use. This can be used to\n\
get faster inserts.\n\
--max-record-length=#\n\
- Skip rows bigger than this if maria_chk can't allocate\n\
+ Skip rows bigger than this if aria_chk can't allocate\n\
memory to hold it.\n\
-r, --recover Can fix almost anything except unique keys that aren't\n\
unique.\n\
@@ -498,23 +514,23 @@ static void usage(void)
handle a couple of cases where '-r' reports that it\n\
can't fix the data file.\n\
--transaction-log Log repair command to transaction log. This is needed\n\
- if one wants to use the maria_read_log to repeat the \n\
+ if one wants to use the aria_read_log to repeat the \n\
repair\n\
--character-sets-dir=...\n\
Directory where character sets are.\n\
--set-collation=name\n\
Change the collation used by the index.\n\
-q, --quick Faster repair by not modifying the data file.\n\
- One can give a second '-q' to force maria_chk to\n\
+ One can give a second '-q' to force aria_chk to\n\
modify the original datafile in case of duplicate keys.\n\
NOTE: Tables where the data file is currupted can't be\n\
fixed with this option.\n\
- -u, --unpack Unpack file packed with mariapack.\n\
+ -u, --unpack Unpack file packed with ariapack.\n\
");
puts("Other actions:\n\
-a, --analyze Analyze distribution of keys. Will make some joins in\n\
- MySQL faster. You can check the calculated distribution\n\
+ MariaDB faster. You can check the calculated distribution\n\
by using '--description --verbose table_name'.\n\
--stats_method=name Specifies how index statistics collection code should\n\
treat NULLs. Possible values of name are \"nulls_unequal\"\n\
@@ -537,6 +553,13 @@ static void usage(void)
--zerofill-keep-lsn Like --zerofill but does not zero out LSN of\n\
data/index pages.");
+ puts("Variables:\n\
+--page_buffer_size=# Size of page buffer. Used by --safe-repair\n\
+--read_buffer_size=# Read buffer size for sequential reads during scanning\n\
+--sort_buffer_size=# Size of sort buffer. Used by --recover\n\
+--sort_key_blocks=# Internal buffer for sorting keys; Don't touch :)\n\
+--write_buffer_size=# Write buffer size for sequential writes during repair");
+
print_defaults("my", load_default_groups);
my_print_variables(my_long_options);
}
@@ -754,7 +777,7 @@ get_one_option(int optid,
check_param.testflag|= T_UPDATE_STATE;
break;
case '#':
- DBUG_SET_INITIAL(argument ? argument : "d:t:o,/tmp/maria_chk.trace");
+ DBUG_SET_INITIAL(argument ? argument : "d:t:o,/tmp/aria_chk.trace");
opt_debug= 1;
break;
case OPT_SKIP_SAFEMALLOC:
@@ -918,7 +941,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
_ma_check_print_error(param,"'%s' doesn't have a correct index definition. You need to recreate it before you can do a repair",filename);
break;
case HA_ERR_NOT_A_TABLE:
- _ma_check_print_error(param,"'%s' is not a MARIA-table",filename);
+ _ma_check_print_error(param,"'%s' is not a Aria table",filename);
break;
case HA_ERR_CRASHED_ON_USAGE:
_ma_check_print_error(param,"'%s' is marked as crashed",filename);
@@ -927,10 +950,10 @@ static int maria_chk(HA_CHECK *param, char *filename)
_ma_check_print_error(param,"'%s' is marked as crashed after last repair",filename);
break;
case HA_ERR_OLD_FILE:
- _ma_check_print_error(param,"'%s' is a old type of MARIA-table", filename);
+ _ma_check_print_error(param,"'%s' is a old type of Aria table", filename);
break;
case HA_ERR_NEW_FILE:
- _ma_check_print_error(param,"'%s' uses new features not supported by this version of the MARIA library", filename);
+ _ma_check_print_error(param,"'%s' uses new features not supported by this version of the Aria library", filename);
break;
case HA_ERR_END_OF_FILE:
_ma_check_print_error(param,"Couldn't read complete header from '%s'", filename);
@@ -946,7 +969,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
filename);
break;
default:
- _ma_check_print_error(param,"%d when opening MARIA-table '%s'",
+ _ma_check_print_error(param,"%d when opening Aria table '%s'",
my_errno,filename);
break;
}
@@ -990,7 +1013,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
if ((param->testflag & (T_REP_ANY | T_SORT_RECORDS)) &&
((share->state.changed & (STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR) ||
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR) ||
!(param->testflag & T_CHECK_ONLY_CHANGED))))
need_to_check=1;
@@ -1008,15 +1031,15 @@ static int maria_chk(HA_CHECK *param, char *filename)
}
if ((param->testflag & T_CHECK_ONLY_CHANGED) &&
(share->state.changed & (STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR)))
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR)))
need_to_check=1;
if (!need_to_check)
{
if (!(param->testflag & T_SILENT) || param->testflag & T_INFO)
- printf("MARIA file: %s is already checked\n",filename);
+ printf("Aria file: %s is already checked\n",filename);
if (maria_close(info))
{
- _ma_check_print_error(param,"%d when closing MARIA-table '%s'",
+ _ma_check_print_error(param,"%d when closing Aria table '%s'",
my_errno,filename);
DBUG_RETURN(1);
}
@@ -1043,7 +1066,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
if (maria_recreate_table(param, &info,filename))
{
VOID(fprintf(stderr,
- "MARIA-table '%s' is not fixed because of errors\n",
+ "Aria table '%s' is not fixed because of errors\n",
filename));
return(-1);
}
@@ -1094,7 +1117,7 @@ static int maria_chk(HA_CHECK *param, char *filename)
*/
maria_lock_database(info, F_EXTRA_LCK);
datafile= info->dfile.file;
- if (init_pagecache(maria_pagecache, param->use_buffers, 0, 0,
+ if (init_pagecache(maria_pagecache, (size_t) param->use_buffers, 0, 0,
maria_block_size, MY_WME) == 0)
{
_ma_check_print_error(param, "Can't initialize page cache with %lu memory",
@@ -1225,20 +1248,25 @@ static int maria_chk(HA_CHECK *param, char *filename)
if (!error && (param->testflag & T_ZEROFILL))
error= maria_zerofill(param, info, filename);
if (!error)
+ {
+ DBUG_PRINT("info", ("Reseting crashed state"));
share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR);
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR);
+ }
else
maria_mark_crashed(info);
}
else if ((param->testflag & T_CHECK) || !(param->testflag & T_AUTO_INC))
{
- if (!(param->testflag & T_SILENT) || param->testflag & T_INFO)
- printf("Checking MARIA file: %s\n",filename);
+ if (!(param->testflag & T_VERY_SILENT) || param->testflag & T_INFO)
+ printf("Checking Aria file: %s\n",filename);
if (!(param->testflag & T_SILENT))
printf("Data records: %7s Deleted blocks: %7s\n",
llstr(info->state->records,llbuff),
llstr(info->state->del,llbuff2));
maria_chk_init_for_check(param, info);
+ if (opt_warning_for_wrong_transid == 0)
+ param->max_trid= ~ (ulonglong) 0;
error= maria_chk_status(param,info);
maria_intersect_keys_active(share->state.key_map, param->keys_in_use);
error|= maria_chk_size(param,info);
@@ -1275,11 +1303,15 @@ static int maria_chk(HA_CHECK *param, char *filename)
}
if (!error)
{
- if ((share->state.changed & STATE_CHANGED) &&
- (param->testflag & T_UPDATE_STATE))
+ if (((share->state.changed &
+ (STATE_CHANGED | STATE_CRASHED | STATE_CRASHED_ON_REPAIR |
+ STATE_IN_REPAIR)) ||
+ share->state.open_count != 0)
+ && (param->testflag & T_UPDATE_STATE))
info->update|=HA_STATE_CHANGED | HA_STATE_ROW_CHANGED;
+ DBUG_PRINT("info", ("Reseting crashed state"));
share->state.changed&= ~(STATE_CHANGED | STATE_CRASHED |
- STATE_CRASHED_ON_REPAIR);
+ STATE_CRASHED_ON_REPAIR | STATE_IN_REPAIR);
}
else if (!maria_is_crashed(info) &&
(param->testflag & T_UPDATE_STATE))
@@ -1343,7 +1375,7 @@ end2:
if (param->testflag & (T_REP_ANY | T_SORT_RECORDS | T_SORT_INDEX))
{
VOID(fprintf(stderr,
- "MARIA-table '%s' is not fixed because of errors\n",
+ "Aria table '%s' is not fixed because of errors\n",
filename));
if (param->testflag & T_REP_ANY)
VOID(fprintf(stderr,
@@ -1352,13 +1384,13 @@ end2:
else if (!(param->error_printed & 2) &&
!(param->testflag & T_FORCE_CREATE))
VOID(fprintf(stderr,
- "MARIA-table '%s' is corrupted\nFix it using switch \"-r\" or \"-o\"\n",
+ "Aria table '%s' is corrupted\nFix it using switch \"-r\" or \"-o\"\n",
filename));
}
else if (param->warning_printed &&
! (param->testflag & (T_REP_ANY | T_SORT_RECORDS | T_SORT_INDEX |
T_FORCE_CREATE)))
- VOID(fprintf(stderr, "MARIA-table '%s' is usable but should be fixed\n",
+ VOID(fprintf(stderr, "Aria table '%s' is usable but should be fixed\n",
filename));
VOID(fflush(stderr));
DBUG_RETURN(error);
@@ -1389,7 +1421,7 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name)
DBUG_VOID_RETURN;
}
- printf("MARIA file: %s\n",name);
+ printf("Aria file: %s\n",name);
printf("Record format: %s\n", record_formats[share->data_file_type]);
printf("Crashsafe: %s\n",
share->base.born_transactional ? "yes" : "no");
@@ -1496,11 +1528,11 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name)
printf("Recordlength: %16d\n",(int) share->base.pack_reclength);
if (! maria_is_all_keys_active(share->state.key_map, share->base.keys))
{
- longlong2str(share->state.key_map,buff,2);
+ longlong2str(share->state.key_map,buff,2,1);
printf("Using only keys '%s' of %d possibly keys\n",
buff, share->base.keys);
}
- puts("\ntable description:");
+ puts("\nTable description:");
printf("Key Start Len Index Type");
if (param->testflag & T_VERBOSE)
printf(" Rec/key Root Blocksize");
@@ -1642,6 +1674,14 @@ static void descript(HA_CHECK *param, register MARIA_HA *info, char *name)
}
VOID(putchar('\n'));
}
+ if (share->data_file_type == BLOCK_RECORD)
+ {
+ uint i;
+ puts("\nBitmap Data size Description");
+ for (i=0 ; i <= 7 ; i++)
+ printf("%u %5u %s\n", i, share->bitmap.sizes[i],
+ bitmap_description[i]);
+ }
}
DBUG_VOID_RETURN;
} /* describe */
@@ -1711,7 +1751,7 @@ static int maria_sort_records(HA_CHECK *param,
}
if (!(param->testflag & T_SILENT))
{
- printf("- Sorting records for MARIA-table '%s'\n",name);
+ printf("- Sorting records for Aria table '%s'\n",name);
if (write_info)
printf("Data records: %9s Deleted: %9s\n",
llstr(info->state->records,llbuff),
@@ -1954,7 +1994,7 @@ static my_bool write_log_record(HA_CHECK *param)
{
if (write_log_record_for_repair(param, info))
_ma_check_print_error(param, "%d when writing log record for"
- " MARIA-table '%s'", my_errno,
+ " Aria table '%s'", my_errno,
param->isam_file_name);
else if (maria_close(info))
_ma_check_print_error(param, default_close_errmsg, my_errno,
diff --git a/storage/maria/maria_def.h b/storage/maria/maria_def.h
index d32dfbad06e..e58b149a051 100644
--- a/storage/maria/maria_def.h
+++ b/storage/maria/maria_def.h
@@ -39,6 +39,7 @@
#define SANITY_CHECKS 1
#ifdef EXTRA_DEBUG
#define EXTRA_DEBUG_KEY_CHANGES
+#define EXTRA_STORE_FULL_PAGE_IN_KEY_CHANGES
#endif
#define MAX_NONMAPPED_INSERTS 1000
@@ -243,7 +244,8 @@ typedef struct st_maria_file_bitmap
uchar *map;
pgcache_page_no_t page; /* Page number for current bitmap */
uint used_size; /* Size of bitmap head that is not 0 */
- my_bool changed; /* 1 if page needs to be flushed */
+ my_bool changed; /* 1 if page needs to be written */
+ my_bool changed_not_flushed; /* 1 if some bitmap is not flushed */
my_bool flush_all_requested; /**< If _ma_bitmap_flush_all waiting */
uint non_flushable; /**< 0 if bitmap and log are in sync */
PAGECACHE_FILE file; /* datafile where bitmap is stored */
@@ -361,6 +363,7 @@ typedef struct st_maria_share
uint in_trans; /* Number of references by trn */
uint w_locks, r_locks, tot_locks; /* Number of read/write locks */
uint block_size; /* block_size of keyfile & data file*/
+ uint max_index_block_size; /* block_size - end_of_page_info */
/* Fixed length part of a packed row in BLOCK_RECORD format */
uint base_length;
myf write_flag;
@@ -459,8 +462,9 @@ typedef struct st_maria_row
uint *null_field_lengths; /* All null field lengths */
ulong *blob_lengths; /* Length for each blob */
ulong min_length, normal_length, char_length, varchar_length;
- ulong blob_length, head_length, total_length;
+ ulong blob_length, total_length;
size_t extents_buffer_length; /* Size of 'extents' buffer */
+ uint head_length, header_length;
uint field_lengths_length; /* Length of data in field_lengths */
uint extents_count; /* number of extents in 'extents' */
uint full_page_count, tail_count; /* For maria_chk */
@@ -483,7 +487,8 @@ typedef ICP_RESULT (*index_cond_func_t)(void *param);
struct st_maria_handler
{
MARIA_SHARE *s; /* Shared between open:s */
- struct st_ma_transaction *trn; /* Pointer to active transaction */
+ struct st_ma_transaction *trn; /* Pointer to active transaction */
+ void *external_ptr; /* Pointer to THD in mysql */
MARIA_STATUS_INFO *state, state_save;
MARIA_STATUS_INFO *state_start; /* State at start of transaction */
MARIA_ROW cur_row; /* The active row that we just read */
@@ -614,6 +619,7 @@ struct st_maria_handler
#define STATE_NOT_ZEROFILLED 128
#define STATE_NOT_MOVABLE 256
#define STATE_MOVED 512 /* set if base->uuid != maria_uuid */
+#define STATE_IN_REPAIR 1024 /* We are running repair on table */
/* options to maria_read_cache */
@@ -669,11 +675,17 @@ struct st_maria_handler
#define maria_mark_crashed_on_repair(x) do{(x)->s->state.changed|= \
STATE_CRASHED|STATE_CRASHED_ON_REPAIR; \
(x)->update|= HA_STATE_CHANGED; \
- DBUG_PRINT("error", \
- ("Marked table crashed")); \
+ DBUG_PRINT("error", ("Marked table crashed on repair")); \
+ }while(0)
+#define maria_mark_in_repair(x) do{(x)->s->state.changed|= \
+ STATE_CRASHED | STATE_IN_REPAIR; \
+ (x)->update|= HA_STATE_CHANGED; \
+ DBUG_PRINT("error", ("Marked table crashed for repair")); \
}while(0)
#define maria_is_crashed(x) ((x)->s->state.changed & STATE_CRASHED)
#define maria_is_crashed_on_repair(x) ((x)->s->state.changed & STATE_CRASHED_ON_REPAIR)
+#define maria_in_repair(x) ((x)->s->state.changed & STATE_IN_REPAIR)
+
#ifdef EXTRA_DEBUG
/**
Brings additional information in certain debug builds and in standalone
@@ -792,8 +804,10 @@ extern uint32 maria_read_vec[], maria_readnext_vec[];
extern uint maria_quick_table_bits;
extern char *maria_data_root;
extern uchar maria_zero_string[];
-extern my_bool maria_inited, maria_in_ha_maria;
+extern my_bool maria_inited, maria_in_ha_maria, maria_recovery_changed_data;
+extern my_bool maria_recovery_verbose;
extern HASH maria_stored_state;
+extern int (*maria_create_trn_hook)(MARIA_HA *);
/* This is used by _ma_calc_xxx_key_length och _ma_store_key */
typedef struct st_maria_s_param
@@ -826,6 +840,7 @@ typedef struct st_maria_page
uchar *buff; /* Data for page */
my_off_t pos; /* Disk address to page */
uint size; /* Size of data on page */
+ uint org_size; /* Size of page at read or after log */
uint node; /* 0 or share->base.key_reflength */
uint flag; /* Page flag */
uint link_offset;
@@ -1076,7 +1091,7 @@ typedef struct st_maria_block_info
#define USE_BUFFER_INIT (((1024L*1024L*128-MALLOC_OVERHEAD)/8192)*8192)
#define READ_BUFFER_INIT (1024L*256L-MALLOC_OVERHEAD)
-#define SORT_BUFFER_INIT (1024L*1024L*64-MALLOC_OVERHEAD)
+#define SORT_BUFFER_INIT (1024L*1024L*256-MALLOC_OVERHEAD)
#define MIN_SORT_BUFFER (4096-MALLOC_OVERHEAD)
#define fast_ma_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _ma_writeinfo((INFO),0)
@@ -1246,7 +1261,6 @@ extern my_bool maria_flush_log_for_page(uchar *page,
extern my_bool maria_flush_log_for_page_none(uchar *page,
pgcache_page_no_t page_no,
uchar *data_ptr);
-void maria_concurrent_inserts(MARIA_HA *info, my_bool concurrent_insert);
extern PAGECACHE *maria_log_pagecache;
extern void ma_set_index_cond_func(MARIA_HA *info, index_cond_func_t func,
void *func_arg);
diff --git a/storage/maria/maria_ftdump.c b/storage/maria/maria_ftdump.c
index 8b545e6e9af..870d07fa96e 100644
--- a/storage/maria/maria_ftdump.c
+++ b/storage/maria/maria_ftdump.c
@@ -46,7 +46,7 @@ static struct my_option my_long_options[] =
{"stats", 's', "Report global stats.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Be verbose.",
- (uchar**) &verbose, (uchar**) &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &verbose, &verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -263,7 +263,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
static void usage()
{
- printf("Use: maria_ft_dump <table_name> <index_num>\n");
+ printf("Use: aria_ft_dump <table_name> <index_num>\n");
my_print_help(my_long_options);
my_print_variables(my_long_options);
NETWARE_SET_SCREEN_MODE(1);
diff --git a/storage/maria/maria_pack.c b/storage/maria/maria_pack.c
index 6c38cab294e..1d2d3995bd8 100644
--- a/storage/maria/maria_pack.c
+++ b/storage/maria/maria_pack.c
@@ -197,7 +197,7 @@ static struct st_file_buffer file_buffer;
static QUEUE queue;
static HUFF_COUNTS *global_count;
static char zero_string[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-static const char *load_default_groups[]= { "mariapack",0 };
+static const char *load_default_groups[]= { "ariapack",0 };
/* The main program */
@@ -238,7 +238,7 @@ int main(int argc, char **argv)
}
}
if (ok && isamchk_neaded && !silent)
- puts("Remember to run maria_chk -rq on compressed tables");
+ puts("Remember to run aria_chk -rq on compressed tables");
VOID(fflush(stdout));
VOID(fflush(stderr));
free_defaults(default_argv);
@@ -259,10 +259,10 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"backup", 'b', "Make a backup of the table as table_name.OLD.",
- (uchar**) &backup, (uchar**) &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &backup, &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR_MP,
- "Directory where character sets are.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory where character sets are.", (char**) &charsets_dir,
+ (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"force", 'f',
@@ -270,7 +270,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"join", 'j',
"Join all given tables into 'new_table_name'. All tables MUST have identical layouts.",
- (uchar**) &join_table, (uchar**) &join_table, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
+ &join_table, &join_table, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
0, 0, 0},
{"help", '?', "Display this help and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -284,8 +284,8 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"wait", 'w', "Wait and retry if table is in use.", (uchar**) &opt_wait,
- (uchar**) &opt_wait, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"wait", 'w', "Wait and retry if table is in use.", &opt_wait,
+ &opt_wait, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -306,11 +306,11 @@ static void usage(void)
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,");
puts("and you are welcome to modify and redistribute it under the GPL license\n");
- puts("Pack a MARIA-table to take much less space.");
- puts("Keys are not updated, you must run maria_chk -rq on the index (.MAI) file");
+ puts("Pack a Aria-table to take much less space.");
+ puts("Keys are not updated, you must run aria_chk -rq on the index (.MAI) file");
puts("afterwards to update the keys.");
puts("You should give the .MAI file as the filename argument.");
- puts("To unpack a packed table, run maria_chk -u on the table");
+ puts("To unpack a packed table, run aria_chk -u on the table");
VOID(printf("\nUsage: %s [OPTIONS] filename...\n", my_progname));
my_print_help(my_long_options);
@@ -359,7 +359,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
silent= 0;
break;
case '#':
- DBUG_PUSH(argument ? argument : "d:t:o,/tmp/maria_pack.trace");
+ DBUG_PUSH(argument ? argument : "d:t:o,/tmp/aria_pack.trace");
break;
case 'V':
print_version();
@@ -2982,7 +2982,7 @@ static int save_state(MARIA_HA *isam_file,PACK_MRG_INFO *mrg,
}
/*
If there are no disabled indexes, keep key_file_length value from
- original file so "maria_chk -rq" can use this value (this is necessary
+ original file so "aria_chk -rq" can use this value (this is necessary
because index size cannot be easily calculated for fulltext keys)
*/
maria_clear_all_keys_active(share->state.key_map);
diff --git a/storage/maria/maria_read_log.c b/storage/maria/maria_read_log.c
index 2b2fa692f24..de45eb0bcb6 100644
--- a/storage/maria/maria_read_log.c
+++ b/storage/maria/maria_read_log.c
@@ -1,4 +1,5 @@
/* Copyright (C) 2007 MySQL AB
+ Copyright (C) 2010 Monty Program Ab
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
@@ -19,20 +20,20 @@
#define LOG_FLAGS 0
-static const char *load_default_groups[]= { "maria_read_log",0 };
+static const char *load_default_groups[]= { "aria_read_log",0 };
static void get_options(int *argc,char * * *argv);
#ifndef DBUG_OFF
#if defined(__WIN__)
-const char *default_dbug_option= "d:t:O,\\maria_read_log.trace";
+const char *default_dbug_option= "d:t:O,\\aria_read_log.trace";
#else
-const char *default_dbug_option= "d:t:o,/tmp/maria_read_log.trace";
+const char *default_dbug_option= "d:t:o,/tmp/aria_read_log.trace";
#endif
#endif /* DBUG_OFF */
static my_bool opt_display_only, opt_apply, opt_apply_undo, opt_silent;
static my_bool opt_check;
static const char *opt_tmpdir;
static ulong opt_page_buffer_size;
-static ulonglong opt_start_from_lsn;
+static ulonglong opt_start_from_lsn, opt_end_lsn, opt_start_from_checkpoint;
static MY_TMPDIR maria_chk_tmpdir;
@@ -52,9 +53,10 @@ int main(int argc, char **argv)
if (maria_init())
{
- fprintf(stderr, "Can't init Maria engine (%d)\n", errno);
+ fprintf(stderr, "Can't init Aria engine (%d)\n", errno);
goto err;
}
+ maria_block_size= 0; /* Use block size from file */
/* we don't want to create a control file, it MUST exist */
if (ma_control_file_open(FALSE, TRUE))
{
@@ -67,7 +69,7 @@ int main(int argc, char **argv)
goto err;
}
if (init_pagecache(maria_pagecache, opt_page_buffer_size, 0, 0,
- TRANSLOG_PAGE_SIZE, MY_WME) == 0)
+ maria_block_size, MY_WME) == 0)
{
fprintf(stderr, "Got error in init_pagecache() (errno: %d)\n", errno);
goto err;
@@ -92,7 +94,6 @@ int main(int argc, char **argv)
if (opt_display_only)
printf("You are using --display-only, NOTHING will be written to disk\n");
- /* LSN could be also --start-from-lsn=# */
lsn= translog_first_lsn_in_log();
if (lsn == LSN_ERROR)
{
@@ -103,8 +104,16 @@ int main(int argc, char **argv)
{
fprintf(stdout, "The transaction log is empty\n");
}
- fprintf(stdout, "The transaction log starts from lsn (%lu,0x%lx)\n",
- LSN_IN_PARTS(lsn));
+ if (opt_start_from_checkpoint && !opt_start_from_lsn &&
+ last_checkpoint_lsn != LSN_IMPOSSIBLE)
+ {
+ lsn= LSN_IMPOSSIBLE; /* LSN set in maria_apply_log() */
+ fprintf(stdout, "Starting from checkpoint (%lu,0x%lx)\n",
+ LSN_IN_PARTS(last_checkpoint_lsn));
+ }
+ else
+ fprintf(stdout, "The transaction log starts from lsn (%lu,0x%lx)\n",
+ LSN_IN_PARTS(lsn));
if (opt_start_from_lsn)
{
@@ -119,8 +128,14 @@ int main(int argc, char **argv)
LSN_IN_PARTS(lsn));
}
- fprintf(stdout, "TRACE of the last maria_read_log\n");
- if (maria_apply_log(lsn, opt_apply ? MARIA_LOG_APPLY :
+ if (opt_end_lsn != LSN_IMPOSSIBLE)
+ {
+ /* We can't apply undo if we use end_lsn */
+ opt_apply_undo= 0;
+ }
+
+ fprintf(stdout, "TRACE of the last aria_read_log\n");
+ if (maria_apply_log(lsn, opt_end_lsn, opt_apply ? MARIA_LOG_APPLY :
(opt_check ? MARIA_LOG_CHECK :
MARIA_LOG_DISPLAY_HEADER), opt_silent ? NULL : stdout,
opt_apply_undo, FALSE, FALSE, &warnings_count))
@@ -150,6 +165,9 @@ err:
#include "ma_check_standalone.h"
+enum options_mc {
+ OPT_CHARSETS_DIR=256
+};
static struct my_option my_long_options[] =
{
@@ -158,6 +176,9 @@ static struct my_option my_long_options[] =
" Displays a lot of information if not run with --silent",
(uchar **) &opt_apply, (uchar **) &opt_apply, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"character-sets-dir", OPT_CHARSETS_DIR,
+ "Directory where character sets are.",
+ (char**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"check", 'c',
"if --display-only, check if record is fully readable (for debugging)",
(uchar **) &opt_check, (uchar **) &opt_check, 0,
@@ -169,22 +190,31 @@ static struct my_option my_long_options[] =
{"help", '?', "Display this help and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"display-only", 'd', "display brief info read from records' header",
- (uchar **) &opt_display_only, (uchar **) &opt_display_only, 0, GET_BOOL,
+ &opt_display_only, &opt_display_only, 0, GET_BOOL,
NO_ARG,0, 0, 0, 0, 0, 0},
- {"maria_log_dir_path", 'l',
+ {"aria-log-dir-path", 'l',
"Path to the directory where to store transactional log",
(uchar **) &maria_data_root, (uchar **) &maria_data_root, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- { "page_buffer_size", 'P', "",
- (uchar**) &opt_page_buffer_size, (uchar**) &opt_page_buffer_size, 0,
+ { "page-buffer-size", 'P', "",
+ &opt_page_buffer_size, &opt_page_buffer_size, 0,
GET_ULONG, REQUIRED_ARG, (long) USE_BUFFER_INIT,
(long) USE_BUFFER_INIT, (long) ~(ulong) 0, (long) MALLOC_OVERHEAD,
(long) IO_SIZE, 0},
- { "start_from_lsn", 'o', "Start reading log from this lsn",
- (uchar**) &opt_start_from_lsn, (uchar**) &opt_start_from_lsn,
+ { "start-from-lsn", 'o', "Start reading log from this lsn",
+ &opt_start_from_lsn, &opt_start_from_lsn,
+ 0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 },
+ {"start-from-checkpoint", 'C', "Start applying from last checkpoint",
+ &opt_start_from_checkpoint, &opt_start_from_checkpoint, 0,
+ GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ { "end-lsn", 'e', "Stop applying at this lsn. If end-lsn is used, UNDO:s "
+ "will not be applied", &opt_end_lsn, &opt_end_lsn,
0, GET_ULL, REQUIRED_ARG, 0, 0, ~(longlong) 0, 0, 0, 0 },
{"silent", 's', "Print less information during apply/undo phase",
- (uchar **) &opt_silent, (uchar **) &opt_silent, 0,
+ &opt_silent, &opt_silent, 0,
+ GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"verbose", 'v', "Print more information during apply/undo phase",
+ &maria_recovery_verbose, &maria_recovery_verbose, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"tmpdir", 't', "Path for temporary files. Multiple paths can be specified, "
"separated by "
@@ -193,7 +223,7 @@ static struct my_option my_long_options[] =
#else
"colon (:)"
#endif
- , (uchar**) &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ , (char**) &opt_tmpdir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"undo", 'u', "Apply UNDO records to tables. (disable with --disable-undo)",
(uchar **) &opt_apply_undo, (uchar **) &opt_apply_undo, 0,
GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
@@ -206,7 +236,7 @@ static struct my_option my_long_options[] =
static void print_version(void)
{
- VOID(printf("%s Ver 1.2 for %s on %s\n",
+ VOID(printf("%s Ver 1.3 for %s on %s\n",
my_progname_short, SYSTEM_TYPE, MACHINE_TYPE));
NETWARE_SET_SCREEN_MODE(1);
}
@@ -219,10 +249,10 @@ static void usage(void)
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,");
puts("and you are welcome to modify and redistribute it under the GPL license\n");
- puts("Display and apply log records from a MARIA transaction log");
+ puts("Display and apply log records from a Aria transaction log");
puts("found in the current directory (for now)");
#ifndef IDENTICAL_PAGES_AFTER_RECOVERY
- puts("\nNote: Maria is compiled without -DIDENTICAL_PAGES_AFTER_RECOVERY\n"
+ puts("\nNote: Aria is compiled without -DIDENTICAL_PAGES_AFTER_RECOVERY\n"
"which means that the table files are not byte-to-byte identical to\n"
"files created during normal execution. This should be ok, except for\n"
"test scripts that tries to compare files before and after recovery.");
diff --git a/storage/maria/plug.in b/storage/maria/plug.in
index 686c8361a87..008d82250c8 100644
--- a/storage/maria/plug.in
+++ b/storage/maria/plug.in
@@ -1,21 +1,19 @@
-MYSQL_STORAGE_ENGINE(maria,, [Maria Storage Engine],
+MYSQL_STORAGE_ENGINE(aria,, [Aria Storage Engine],
[Crash-safe tables with MyISAM heritage], [default,max,max-no-ndb])
-MYSQL_PLUGIN_DIRECTORY(maria, [storage/maria])
-MYSQL_PLUGIN_STATIC(maria, [libmaria.a])
-# Maria will probably go first into max builds, not all builds,
-# so we don't declare it mandatory.
-MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(maria, [ha_maria.cc])
+MYSQL_PLUGIN_DIRECTORY(aria, [storage/maria])
+MYSQL_PLUGIN_STATIC(aria, [libaria.a])
+MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(aria, [ha_maria.cc])
-MYSQL_PLUGIN_ACTIONS(maria, [
+MYSQL_PLUGIN_ACTIONS(aria, [
# AC_CONFIG_FILES(storage/maria/unittest/Makefile)
-AC_ARG_WITH(maria-tmp-tables,
- AC_HELP_STRING([--with-maria-tmp-tables],[Use Maria for internal temporary tables]),
- [with_maria_tmp_tables=$withval],
- [with_maria_tmp_tables=yes]
+AC_ARG_WITH(aria-tmp-tables,
+ AC_HELP_STRING([--with-aria-tmp-tables],[Use Aria for internal temporary tables]),
+ [with_aria_tmp_tables=$withval],
+ [with_aria_tmp_tables=yes]
)
-if test "$with_maria_tmp_tables" = "yes"
+if test "$with_aria_tmp_tables" = "yes"
then
- AC_DEFINE([USE_MARIA_FOR_TMP_TABLES], [1], [Maria is used for internal temporary tables])
+ AC_DEFINE([USE_MARIA_FOR_TMP_TABLES], [1], [Aria is used for internal temporary tables])
fi
])
diff --git a/storage/maria/trnman.c b/storage/maria/trnman.c
index ceb8ad2ae2d..05330baed76 100644
--- a/storage/maria/trnman.c
+++ b/storage/maria/trnman.c
@@ -145,6 +145,7 @@ static uchar *trn_get_hash_key(const uchar *trn, size_t *len,
int trnman_init(TrID initial_trid)
{
DBUG_ENTER("trnman_init");
+ DBUG_PRINT("enter", ("initial_trid: %lu", (ulong) initial_trid));
short_trid_to_active_trn= (TRN **)my_malloc(SHORT_TRID_MAX*sizeof(TRN*),
MYF(MY_WME|MY_ZEROFILL));
@@ -176,6 +177,8 @@ int trnman_init(TrID initial_trid)
trnman_active_transactions= 0;
trnman_committed_transactions= 0;
trnman_allocated_transactions= 0;
+ /* This is needed for recovery and repair */
+ dummy_transaction_object.min_read_from= ~(TrID) 0;
pool= 0;
global_trid_generator= initial_trid;
@@ -361,6 +364,7 @@ TRN *trnman_new_trn(WT_THD *wt)
trn->used_tables= 0;
trn->locked_tables= 0;
+ trn->flags= 0;
/*
only after the following function TRN is considered initialized,
diff --git a/storage/maria/unittest/Makefile.am b/storage/maria/unittest/Makefile.am
index 28c75a06b29..b5bc8587066 100644
--- a/storage/maria/unittest/Makefile.am
+++ b/storage/maria/unittest/Makefile.am
@@ -20,9 +20,9 @@ INCLUDES = @ZLIB_INCLUDES@ -I$(top_builddir)/include \
EXTRA_DIST= ma_test_all-t CMakeLists.txt \
ma_test_recovery.pl ma_test_recovery.expected
# Only reason to link with libmyisam.a here is that it's where some fulltext
-# pieces are (but soon we'll remove fulltext dependencies from Maria).
+# pieces are (but soon we'll remove fulltext dependencies from Aria).
LDADD= $(top_builddir)/unittest/mytap/libmytap.a \
- $(top_builddir)/storage/maria/libmaria.a \
+ $(top_builddir)/storage/maria/libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
$(top_builddir)/mysys/libmysys.a \
$(top_builddir)/dbug/libdbug.a \
@@ -108,8 +108,8 @@ ma_pagecache_rwconsist2_1k_t_CPPFLAGS = -DTEST_PAGE_SIZE=1024
# the generic lock manager may not be used in the end and lockman1-t crashes,
# and lockman2-t takes at least quarter an hour,
# so we don't build lockman-t and lockman1-t and lockman2-t
-CLEANFILES = maria_log_control page_cache_test_file_1 \
- maria_log.????????
+CLEANFILES = aria_log_control page_cache_test_file_1 \
+ aria_log.????????
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/storage/maria/unittest/ma_control_file-t.c b/storage/maria/unittest/ma_control_file-t.c
index 6702e4deb2f..164ea284f31 100644
--- a/storage/maria/unittest/ma_control_file-t.c
+++ b/storage/maria/unittest/ma_control_file-t.c
@@ -13,7 +13,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-/* Unit test of the control file module of the Maria engine WL#3234 */
+/* Unit test of the control file module of the Aria engine WL#3234 */
/*
Note that it is not possible to test the durability of the write (can't
@@ -24,11 +24,11 @@
#include <my_sys.h>
#include <tap.h>
-#ifndef WITH_MARIA_STORAGE_ENGINE
+#ifndef WITH_ARIA_STORAGE_ENGINE
/*
- If Maria is not compiled in, normally we don't come to building this test.
+ If Aria is not compiled in, normally we don't come to building this test.
*/
-#error "Maria engine is not compiled in, test cannot be built"
+#error "Aria engine is not compiled in, test cannot be built"
#endif
#include "maria.h"
@@ -547,7 +547,7 @@ static struct my_option my_long_options[] =
static void version(void)
{
printf("ma_control_file_test: unit test for the control file "
- "module of the Maria storage engine. Ver 1.0 \n");
+ "module of the Aria storage engine. Ver 1.0 \n");
}
static my_bool
diff --git a/storage/maria/unittest/ma_maria_log_cleanup.c b/storage/maria/unittest/ma_maria_log_cleanup.c
index 7c78bf3a1a4..f85c75b1a88 100644
--- a/storage/maria/unittest/ma_maria_log_cleanup.c
+++ b/storage/maria/unittest/ma_maria_log_cleanup.c
@@ -38,7 +38,8 @@ my_bool maria_log_remove()
for (i= 0; i < dirp->number_off_files; i++)
{
char *file= dirp->dir_entry[i].name;
- if (strncmp(file, "maria_log.", 10) == 0 &&
+ if (strncmp(file, "aria_log.", 9) == 0 &&
+ file[9] >= '0' && file[9] <= '9' &&
file[10] >= '0' && file[10] <= '9' &&
file[11] >= '0' && file[11] <= '9' &&
file[12] >= '0' && file[12] <= '9' &&
@@ -46,8 +47,7 @@ my_bool maria_log_remove()
file[14] >= '0' && file[14] <= '9' &&
file[15] >= '0' && file[15] <= '9' &&
file[16] >= '0' && file[16] <= '9' &&
- file[17] >= '0' && file[17] <= '9' &&
- file[18] == '\0')
+ file[17] == '\0')
{
if (fn_format(file_name, file,
maria_data_root, "", MYF(MY_WME)) == NullS ||
diff --git a/storage/maria/unittest/ma_pagecache_single.c b/storage/maria/unittest/ma_pagecache_single.c
index 53c820dcd2e..32e588e165a 100644
--- a/storage/maria/unittest/ma_pagecache_single.c
+++ b/storage/maria/unittest/ma_pagecache_single.c
@@ -246,7 +246,7 @@ int simple_read_change_write_read_test()
/*
Prepare page, read page 0 (and pin) then write page 1 and page 0.
- Flush the file (shold flush only page 1 and return 1 (page 0 is
+ Flush the file (should flush only page 1 and return 1 (page 0 is
still pinned).
Check file on the disk.
Unpin and flush.
@@ -284,7 +284,7 @@ int simple_pin_test()
bfill(buffw + TEST_PAGE_SIZE/2, TEST_PAGE_SIZE/2, ((unsigned char) 129));
pagecache_write(&pagecache, &file1, 0, 3, buffw,
PAGECACHE_PLAIN_PAGE,
- PAGECACHE_LOCK_WRITE_TO_READ,
+ PAGECACHE_LOCK_LEFT_WRITELOCKED,
PAGECACHE_PIN_LEFT_PINNED,
PAGECACHE_WRITE_DELAY,
0, LSN_IMPOSSIBLE);
@@ -304,7 +304,7 @@ int simple_pin_test()
pagecache_unlock(&pagecache,
&file1,
0,
- PAGECACHE_LOCK_READ_UNLOCK,
+ PAGECACHE_LOCK_WRITE_UNLOCK,
PAGECACHE_UNPIN,
0, 0, 0);
if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE))
@@ -324,6 +324,93 @@ err:
}
/*
+ Prepare page, read page 0 (and pin) then write page 1 and page 0.
+ Flush the file (should flush only page 1 and return 1 (page 0 is
+ still pinned).
+ Check file on the disk.
+ Unpin and flush.
+ Check file on the disk.
+*/
+int simple_pin_test2()
+{
+ unsigned char *buffw= malloc(TEST_PAGE_SIZE);
+ int res;
+ DBUG_ENTER("simple_pin_test2");
+ /* prepare the file */
+ bfill(buffw, TEST_PAGE_SIZE, '\1');
+ pagecache_write(&pagecache, &file1, 0, 3, buffw,
+ PAGECACHE_PLAIN_PAGE,
+ PAGECACHE_LOCK_LEFT_UNLOCKED,
+ PAGECACHE_PIN_LEFT_UNPINNED,
+ PAGECACHE_WRITE_DELAY,
+ 0, LSN_IMPOSSIBLE);
+ /* test */
+ if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE))
+ {
+ diag("Got error during flushing pagecache\n");
+ exit(1);
+ }
+ pagecache_read(&pagecache, &file1, 0, 3, buffw,
+ PAGECACHE_PLAIN_PAGE,
+ PAGECACHE_LOCK_WRITE,
+ 0);
+ pagecache_write(&pagecache, &file1, 1, 3, buffw,
+ PAGECACHE_PLAIN_PAGE,
+ PAGECACHE_LOCK_LEFT_UNLOCKED,
+ PAGECACHE_PIN_LEFT_UNPINNED,
+ PAGECACHE_WRITE_DELAY,
+ 0, LSN_IMPOSSIBLE);
+ bfill(buffw + TEST_PAGE_SIZE/2, TEST_PAGE_SIZE/2, ((unsigned char) 129));
+ pagecache_write(&pagecache, &file1, 0, 3, buffw,
+ PAGECACHE_PLAIN_PAGE,
+ PAGECACHE_LOCK_WRITE_TO_READ,
+ PAGECACHE_PIN_LEFT_PINNED,
+ PAGECACHE_WRITE_DELAY,
+ 0, LSN_IMPOSSIBLE);
+ /*
+ We have to get error because one page of the file is pinned,
+ other page should be flushed
+ */
+ if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_KEEP_LAZY))
+ {
+ diag("Did not get error in flush_pagecache_blocks 2\n");
+ res= 0;
+ goto err;
+ }
+ ok((res= test(test_file(file1, file1_name, TEST_PAGE_SIZE*2, TEST_PAGE_SIZE*2,
+ simple_pin_test_file1))),
+ "Simple pin page file with pin 2");
+
+ /* Test that a normal flush goes through */
+ if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE))
+ {
+ diag("Got error in flush_pagecache_blocks 3\n");
+ res= 0;
+ goto err;
+ }
+ pagecache_unlock(&pagecache,
+ &file1,
+ 0,
+ PAGECACHE_LOCK_READ_UNLOCK,
+ PAGECACHE_UNPIN,
+ 0, 0, 0);
+ if (flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE))
+ {
+ diag("Got error in flush_pagecache_blocks 4\n");
+ res= 0;
+ goto err;
+ }
+ ok((res&= test(test_file(file1, file1_name, TEST_PAGE_SIZE*2, TEST_PAGE_SIZE,
+ simple_pin_test_file2))),
+ "Simple pin page result file 2");
+ if (res)
+ reset_file(&file1, file1_name);
+err:
+ free(buffw);
+ DBUG_RETURN(res);
+}
+
+/*
Checks pins without lock.
*/
int simple_pin_no_lock_test()
@@ -357,7 +444,7 @@ int simple_pin_no_lock_test()
We have to get error because one page of the file is pinned,
other page should be flushed
*/
- if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE))
+ if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_KEEP_LAZY))
{
diag("Did not get error in flush_pagecache_blocks 2\n");
res= 0;
@@ -392,7 +479,7 @@ int simple_pin_no_lock_test()
pagecache_unlock_by_link(&pagecache, link,
PAGECACHE_LOCK_WRITE_UNLOCK,
PAGECACHE_PIN_LEFT_PINNED, 0, 0, 1, FALSE);
- if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_FORCE_WRITE))
+ if (!flush_pagecache_blocks(&pagecache, &file1, FLUSH_KEEP_LAZY))
{
diag("Did not get error in flush_pagecache_blocks 3\n");
res= 0;
@@ -609,6 +696,7 @@ static void *test_thread(void *arg)
if (!simple_read_write_test() ||
!simple_read_change_write_read_test() ||
!simple_pin_test() ||
+ !simple_pin_test2() ||
!simple_pin_no_lock_test() ||
!simple_delete_forget_test() ||
!simple_delete_flush_test())
@@ -657,8 +745,8 @@ int main(int argc __attribute__((unused)),
DBUG_ENTER("main");
DBUG_PRINT("info", ("Main thread: %s\n", my_thread_name()));
- plan(16);
- SKIP_BIG_TESTS(16)
+ plan(18);
+ SKIP_BIG_TESTS(18)
{
if ((tmp_file= my_open(file2_name, O_CREAT | O_TRUNC | O_RDWR,
diff --git a/storage/maria/unittest/ma_test_all-t b/storage/maria/unittest/ma_test_all-t
index 8e52f42b483..0b11daf7f98 100755
--- a/storage/maria/unittest/ma_test_all-t
+++ b/storage/maria/unittest/ma_test_all-t
@@ -20,7 +20,7 @@ $opt_number_of_tests= 0;
$opt_run_tests= undef();
my $maria_path; # path to "storage/maria"
-my $maria_exe_path; # path to executables (ma_test1, maria_chk etc)
+my $maria_exe_path; # path to executables (ma_test1, aria_chk etc)
my $my_progname= $0;
$my_progname=~ s/.*[\/]//;
my $runtime_error= 0; # Return 1 if error(s) occur during run
@@ -146,7 +146,7 @@ sub run_tests
# clean-up
#
- unlink <*.TMD maria_log*>; # Delete temporary files
+ unlink <*.TMD aria_log*>; # Delete temporary files
#
# Run tests
@@ -280,38 +280,38 @@ sub run_check_tests
for ($i= 0; defined($ma_test1_opt[$i]); $i++)
{
- unlink <maria_log_control maria_log.*>;
+ unlink <aria_log_control aria_log.*>;
ok("$maria_exe_path/ma_test1$suffix $silent $ma_test1_opt[$i][0] $row_type",
$verbose, $i + 1);
- ok("$maria_exe_path/maria_chk$suffix $ma_test1_opt[$i][1] test1",
+ ok("$maria_exe_path/aria_chk$suffix $ma_test1_opt[$i][1] test1",
$verbose, $i + 1);
}
#
# These tests are outside the loops. Make sure to include them in
# nr_tests manually
#
- ok("$maria_exe_path/maria_pack$suffix --force -s test1", $verbose, 0);
- ok("$maria_exe_path/maria_chk$suffix -ess test1", $verbose, 0);
+ ok("$maria_exe_path/aria_pack$suffix --force -s test1", $verbose, 0);
+ ok("$maria_exe_path/aria_chk$suffix -ess test1", $verbose, 0);
for ($i= 0; defined($ma_test2_opt[$i]); $i++)
{
- unlink <maria_log_control maria_log.*>;
+ unlink <aria_log_control aria_log.*>;
ok("$maria_exe_path/ma_test2$suffix $silent $ma_test2_opt[$i][0] $row_type",
$verbose, $i + 1);
- ok("$maria_exe_path/maria_chk$suffix $ma_test2_opt[$i][1] test2",
+ ok("$maria_exe_path/aria_chk$suffix $ma_test2_opt[$i][1] test2",
$verbose, $i + 1);
}
for ($i= 0; defined($ma_rt_test_opt[$i]); $i++)
{
- unlink <maria_log_control maria_log.*>;
+ unlink <aria_log_control aria_log.*>;
ok("$maria_exe_path/ma_rt_test$suffix $silent $ma_rt_test_opt[$i][0] $row_type",
$verbose, $i + 1);
- ok("$maria_exe_path/maria_chk$suffix $ma_rt_test_opt[$i][1] rt_test",
+ ok("$maria_exe_path/aria_chk$suffix $ma_rt_test_opt[$i][1] rt_test",
$verbose, $i + 1);
}
- unlink <maria_log_control maria_log.*>;
+ unlink <aria_log_control aria_log.*>;
return 0;
}
@@ -327,34 +327,34 @@ sub run_repair_tests()
my @t= ($NEW_TEST,
"$maria_exe_path/ma_test1$suffix $silent --checksum $row_type",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix --silent -re --transaction-log test1",
- "$maria_exe_path/maria_chk$suffix -rs test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -rqs test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -rs --correct-checksum test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -rqs --correct-checksum test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -ros --correct-checksum test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -rqos --correct-checksum test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -sz test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix --silent -re --transaction-log test1",
+ "$maria_exe_path/aria_chk$suffix -rs test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -rqs test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -rs --correct-checksum test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -rqs --correct-checksum test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -ros --correct-checksum test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -rqos --correct-checksum test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -sz test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
"$maria_exe_path/ma_test2$suffix $silent -c -d1 $row_type",
- "$maria_exe_path/maria_chk$suffix -s --parallel-recover test2",
- "$maria_exe_path/maria_chk$suffix -se test2",
- "$maria_exe_path/maria_chk$suffix -s --parallel-recover --quick test2",
- "$maria_exe_path/maria_chk$suffix -se test2",
+ "$maria_exe_path/aria_chk$suffix -s --parallel-recover test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
+ "$maria_exe_path/aria_chk$suffix -s --parallel-recover --quick test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
"$maria_exe_path/ma_test2$suffix $silent -c $row_type",
- "$maria_exe_path/maria_chk$suffix -se test2",
- "$maria_exe_path/maria_chk$suffix -sr test2",
- "$maria_exe_path/maria_chk$suffix -se test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
+ "$maria_exe_path/aria_chk$suffix -sr test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
"$maria_exe_path/ma_test2$suffix $silent -c -t4 -b32768 $row_type",
- "$maria_exe_path/maria_chk$suffix -s --zerofill test1",
- "$maria_exe_path/maria_chk$suffix -se test1"
+ "$maria_exe_path/aria_chk$suffix -s --zerofill test1",
+ "$maria_exe_path/aria_chk$suffix -se test1"
);
return &count_tests(\@t) if ($count);
@@ -373,48 +373,48 @@ sub run_pack_tests()
my @t= ($NEW_TEST,
"$maria_exe_path/ma_test1$suffix $silent --checksum $row_type",
- "$maria_exe_path/maria_pack$suffix --force -s test1",
- "$maria_exe_path/maria_chk$suffix -ess test1",
- "$maria_exe_path/maria_chk$suffix -rqs test1",
- "$maria_exe_path/maria_chk$suffix -es test1",
- "$maria_exe_path/maria_chk$suffix -rs test1",
- "$maria_exe_path/maria_chk$suffix -es test1",
- "$maria_exe_path/maria_chk$suffix -rus test1",
- "$maria_exe_path/maria_chk$suffix -es test1",
+ "$maria_exe_path/aria_pack$suffix --force -s test1",
+ "$maria_exe_path/aria_chk$suffix -ess test1",
+ "$maria_exe_path/aria_chk$suffix -rqs test1",
+ "$maria_exe_path/aria_chk$suffix -es test1",
+ "$maria_exe_path/aria_chk$suffix -rs test1",
+ "$maria_exe_path/aria_chk$suffix -es test1",
+ "$maria_exe_path/aria_chk$suffix -rus test1",
+ "$maria_exe_path/aria_chk$suffix -es test1",
$NEW_TEST,
"$maria_exe_path/ma_test1$suffix $silent --checksum $row_type",
- "$maria_exe_path/maria_pack$suffix --force -s test1",
- "$maria_exe_path/maria_chk$suffix -rus --safe-recover test1",
- "$maria_exe_path/maria_chk$suffix -es test1",
+ "$maria_exe_path/aria_pack$suffix --force -s test1",
+ "$maria_exe_path/aria_chk$suffix -rus --safe-recover test1",
+ "$maria_exe_path/aria_chk$suffix -es test1",
$NEW_TEST,
"$maria_exe_path/ma_test1$suffix $silent --checksum -S $row_type",
- "$maria_exe_path/maria_chk$suffix -se test1",
- "$maria_exe_path/maria_chk$suffix -ros test1",
- "$maria_exe_path/maria_chk$suffix -rqs test1",
- "$maria_exe_path/maria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
+ "$maria_exe_path/aria_chk$suffix -ros test1",
+ "$maria_exe_path/aria_chk$suffix -rqs test1",
+ "$maria_exe_path/aria_chk$suffix -se test1",
$NEW_TEST,
- "$maria_exe_path/maria_pack$suffix --force -s test1",
- "$maria_exe_path/maria_chk$suffix -rqs test1",
- "$maria_exe_path/maria_chk$suffix -es test1",
- "$maria_exe_path/maria_chk$suffix -rus test1",
- "$maria_exe_path/maria_chk$suffix -es test1",
+ "$maria_exe_path/aria_pack$suffix --force -s test1",
+ "$maria_exe_path/aria_chk$suffix -rqs test1",
+ "$maria_exe_path/aria_chk$suffix -es test1",
+ "$maria_exe_path/aria_chk$suffix -rus test1",
+ "$maria_exe_path/aria_chk$suffix -es test1",
$NEW_TEST,
"$maria_exe_path/ma_test2$suffix $silent -c -d1 $row_type",
- "$maria_exe_path/maria_chk$suffix -s --parallel-recover test2",
- "$maria_exe_path/maria_chk$suffix -se test2",
- "$maria_exe_path/maria_chk$suffix -s --unpack --parallel-recover test2",
- "$maria_exe_path/maria_chk$suffix -se test2",
- "$maria_exe_path/maria_pack$suffix --force -s test1",
- "$maria_exe_path/maria_chk$suffix -s --unpack --parallel-recover test2",
- "$maria_exe_path/maria_chk$suffix -se test2",
+ "$maria_exe_path/aria_chk$suffix -s --parallel-recover test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
+ "$maria_exe_path/aria_chk$suffix -s --unpack --parallel-recover test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
+ "$maria_exe_path/aria_pack$suffix --force -s test1",
+ "$maria_exe_path/aria_chk$suffix -s --unpack --parallel-recover test2",
+ "$maria_exe_path/aria_chk$suffix -se test2",
$NEW_TEST,
"$maria_exe_path/ma_test1$suffix $silent -c $row_type",
"cp test1.MAD test2.MAD",
"cp test1.MAI test2.MAI",
- "$maria_exe_path/maria_pack$suffix --force -s --join=test3 test1 test2",
- "$maria_exe_path/maria_chk -s test3",
- "$maria_exe_path/maria_chk -s --safe-recover test3",
- "$maria_exe_path/maria_chk -s test3"
+ "$maria_exe_path/aria_pack$suffix --force -s --join=test3 test1 test2",
+ "$maria_exe_path/aria_chk -s test3",
+ "$maria_exe_path/aria_chk -s --safe-recover test3",
+ "$maria_exe_path/aria_chk -s test3"
);
return &count_tests(\@t) if ($count);
@@ -435,7 +435,7 @@ sub run_tests_on_warnings_and_errors
ok("$maria_exe_path/ma_test2$suffix $silent -L -K -W -P -S -R1 -m500",
$verbose, 0);
- ok("$maria_exe_path/maria_chk$suffix -sm test2", $verbose, 0);
+ ok("$maria_exe_path/aria_chk$suffix -sm test2", $verbose, 0);
# ma_test2$suffix $silent -L -K -R1 -m2000 ; Should give error 135\n
# In the following a failure is a success and success is a failure
$com= "$maria_exe_path/ma_test2$suffix $silent -L -K -R1 -m2000 ";
@@ -443,15 +443,15 @@ sub run_tests_on_warnings_and_errors
ok($com, $verbose, 0, 1);
ok("cat ma_test2_message.txt", $verbose, 0);
ok("grep \"Error: 135\" ma_test2_message.txt > /dev/null", $verbose, 0);
- # maria_exe_path/maria_chk$suffix -sm test2 will warn that
+ # maria_exe_path/aria_chk$suffix -sm test2 will warn that
# Datafile is almost full
- ok("$maria_exe_path/maria_chk$suffix -sm test2 >ma_test2_message.txt 2>&1",
+ ok("$maria_exe_path/aria_chk$suffix -sm test2 >ma_test2_message.txt 2>&1",
$verbose, 0);
ok("cat ma_test2_message.txt", $verbose, 0);
ok("grep \"warning: Datafile is almost full\" ma_test2_message.txt>/dev/null",
$verbose, 0);
unlink <ma_test2_message.txt>;
- ok("$maria_exe_path/maria_chk$suffix -ssm test2", $verbose, 0);
+ ok("$maria_exe_path/aria_chk$suffix -ssm test2", $verbose, 0);
return 0;
}
@@ -480,31 +480,31 @@ sub run_tests_on_clrs
my @t= ($NEW_TEST,
"$maria_exe_path/ma_test2$suffix -s -L -K -W -P -M -T -c -b -t2 -A1",
- "cp maria_log_control tmp",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -s -e test2",
- "cp tmp/maria_log_control .",
+ "cp aria_log_control tmp",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -s -e test2",
+ "cp tmp/aria_log_control .",
"rm test2.MA?",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -s -e test2",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -s -e test2",
"rm test2.MA?",
$NEW_TEST,
"$maria_exe_path/ma_test2$suffix -s -L -K -W -P -M -T -c -b -t2 -A1",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -s -e test2",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -s -e test2",
"rm test2.MA?",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -e -s test2",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -e -s test2",
"rm test2.MA?",
$NEW_TEST,
"$maria_exe_path/ma_test2$suffix -s -L -K -W -P -M -T -c -b32768 -t4 -A1",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -es test2",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -es test2",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -es test2",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -es test2",
"rm test2.MA?",
- "$maria_exe_path/maria_read_log$suffix -a -s",
- "$maria_exe_path/maria_chk$suffix -es test2",
+ "$maria_exe_path/aria_read_log$suffix -a -s",
+ "$maria_exe_path/aria_chk$suffix -es test2",
"rm test2.MA?"
);
@@ -666,7 +666,7 @@ sub run_test_bunch
{
if ($clear && @$t[$i] eq $NEW_TEST)
{
- unlink <maria_log.* maria_log_control>;
+ unlink <aria_log.* aria_log_control>;
}
if (@$t[$i] ne $NEW_TEST)
{
@@ -686,7 +686,7 @@ $my_progname version $VER
Description:
-Run various Maria related tests. Typically used via make test as a unittest.
+Run various Aria related tests. Typically used via make test as a unittest.
Options
--help Show this help and exit.
diff --git a/storage/maria/unittest/ma_test_loghandler_pagecache-t.c b/storage/maria/unittest/ma_test_loghandler_pagecache-t.c
index bfbba5407c1..1644aa4885c 100644
--- a/storage/maria/unittest/ma_test_loghandler_pagecache-t.c
+++ b/storage/maria/unittest/ma_test_loghandler_pagecache-t.c
@@ -31,7 +31,7 @@ static const char *default_dbug_option;
#define LOG_FILE_SIZE (1024L*1024L*1024L + 1024L*1024L*512)
#define LOG_FLAGS 0
-static char *first_translog_file= (char*)"maria_log.00000001";
+static char *first_translog_file= (char*)"aria_log.00000001";
static char *file1_name= (char*)"page_cache_test_file_1";
static PAGECACHE_FILE file1;
diff --git a/storage/maria/unittest/ma_test_recovery.expected b/storage/maria/unittest/ma_test_recovery.expected
index b95575173ee..5f7dd54e673 100644
--- a/storage/maria/unittest/ma_test_recovery.expected
+++ b/storage/maria/unittest/ma_test_recovery.expected
@@ -67,7 +67,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t2 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -76,7 +76,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -85,7 +85,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -96,7 +96,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t6 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -105,7 +105,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -114,7 +114,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -164,7 +164,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t2 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -173,7 +173,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -182,7 +182,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -193,7 +193,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t6 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -202,7 +202,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -211,7 +211,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -261,7 +261,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t2 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -270,7 +270,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -279,7 +279,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -290,7 +290,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t6 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -299,7 +299,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -308,7 +308,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -358,7 +358,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t2 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -367,7 +367,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -376,7 +376,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -387,7 +387,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -t6 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -396,7 +396,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -405,7 +405,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -455,7 +455,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t2 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -464,7 +464,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -473,7 +473,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -484,7 +484,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t6 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -493,7 +493,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -502,7 +502,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -552,7 +552,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t2 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -561,7 +561,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -570,7 +570,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -581,7 +581,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t6 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -590,7 +590,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -599,7 +599,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -649,7 +649,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t2 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -658,7 +658,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -667,7 +667,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -678,7 +678,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t6 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -687,7 +687,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -696,7 +696,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -746,7 +746,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t2 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -755,7 +755,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -764,7 +764,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -775,7 +775,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -t6 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -784,7 +784,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -793,7 +793,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -843,7 +843,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t2 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -852,7 +852,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -861,7 +861,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -872,7 +872,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t6 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -881,7 +881,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -890,7 +890,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -940,7 +940,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t2 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -949,7 +949,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -958,7 +958,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -969,7 +969,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t6 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -978,7 +978,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -987,7 +987,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1037,7 +1037,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t2 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1046,7 +1046,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1055,7 +1055,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1066,7 +1066,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t6 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1075,7 +1075,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1084,7 +1084,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1134,7 +1134,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t2 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1143,7 +1143,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1152,7 +1152,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1163,7 +1163,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -H1 -t6 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1172,7 +1172,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1181,7 +1181,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1231,7 +1231,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t2 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1240,7 +1240,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1249,7 +1249,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1260,7 +1260,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t6 -A1 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1269,7 +1269,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1278,7 +1278,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1328,7 +1328,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t2 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1337,7 +1337,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1346,7 +1346,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1357,7 +1357,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t6 -A2 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1366,7 +1366,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1375,7 +1375,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1425,7 +1425,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t2 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1434,7 +1434,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1443,7 +1443,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1454,7 +1454,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t6 -A3 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1463,7 +1463,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1472,7 +1472,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1522,7 +1522,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t2 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1531,7 +1531,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1540,7 +1540,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1551,7 +1551,7 @@ TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t1 (commit at end)
TEST WITH ma_test2 -s -L -K -W -P -M -T -c -b32768 -H1 -t6 -A4 (additional aborted work)
Dying on request without maria_commit()/maria_close()
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1560,7 +1560,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing idempotency
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
@@ -1569,7 +1569,7 @@ Differences in maria_chk -dvv, recovery not yet perfect !
========DIFF END=======
testing applying of CLRs to recreate table
applying log
-Differences in maria_chk -dvv, recovery not yet perfect !
+Differences in aria_chk -dvv, recovery not yet perfect !
========DIFF START=======
6c6
< Status: checked,analyzed,optimized keys,sorted index pages,zerofilled,movable
diff --git a/storage/maria/unittest/ma_test_recovery.pl b/storage/maria/unittest/ma_test_recovery.pl
index 58b9cc3b56b..d9be82f4e58 100755
--- a/storage/maria/unittest/ma_test_recovery.pl
+++ b/storage/maria/unittest/ma_test_recovery.pl
@@ -17,7 +17,7 @@ $opt_abort_on_error=0;
my $silent= "-s";
my $maria_path; # path to "storage/maria"
-my $maria_exe_path; # path to executables (ma_test1, maria_chk etc)
+my $maria_exe_path; # path to executables (ma_test1, aria_chk etc)
my $tmp= "./tmp";
my $my_progname= $0;
my $suffix;
@@ -74,7 +74,7 @@ sub main
{
mkdir $tmp;
}
- print "MARIA RECOVERY TESTS\n";
+ print "ARIA RECOVERY TESTS\n";
# To not flood the screen, we redirect all the commands below to a text file
# and just give a final error if their output is not as expected
@@ -98,7 +98,7 @@ sub main
foreach my $prog (@t)
{
- unlink <maria_log.* maria_log_control>;
+ unlink <aria_log.* aria_log_control>;
my $prog_no_suffix= $prog;
$prog_no_suffix=~ s/$suffix// if ($suffix);
print MY_LOG "TEST WITH $prog_no_suffix\n";
@@ -113,11 +113,11 @@ sub main
{
die("can't guess table name");
}
- $com= "$maria_exe_path/maria_chk$suffix -dvv $table ";
+ $com= "$maria_exe_path/aria_chk$suffix -dvv $table ";
$com.= "| grep -v \"Creation time:\" | grep -v \"file length\" | grep -v \"LSNs:\" | grep -v \"UUID:\"";
- $com.= "> $tmp/maria_chk_message.good.txt 2>&1";
+ $com.= "> $tmp/aria_chk_message.good.txt 2>&1";
my_exec($com);
- my $checksum= my_exec("$maria_exe_path/maria_chk$suffix -dss $table");
+ my $checksum= my_exec("$maria_exe_path/aria_chk$suffix -dss $table");
move("$table.MAD", "$tmp/$table-good.MAD") ||
die "Can't move $table.MAD to $tmp/$table-good.MAD\n";
move("$table.MAI", "$tmp/$table-good.MAI") ||
@@ -181,7 +181,7 @@ sub main
}
$commit_run_args= $t2[$k + 1];
$abort_run_args= $t2[$k + 2];
- unlink <maria_log.* maria_log_control>;
+ unlink <aria_log.* aria_log_control>;
my $prog_no_suffix= $prog;
$prog_no_suffix=~ s/$suffix// if ($suffix);
print MY_LOG "TEST WITH $prog_no_suffix $commit_run_args (commit at end)\n";
@@ -196,17 +196,17 @@ sub main
{
die("can't guess table name");
}
- $com= "$maria_exe_path/maria_chk$suffix -dvv $table ";
+ $com= "$maria_exe_path/aria_chk$suffix -dvv $table ";
$com.= "| grep -v \"Creation time:\" | grep -v \"file length\" | grep -v \"LSNs:\" | grep -v \"UUID:\" ";
- $com.= "> $tmp/maria_chk_message.good.txt 2>&1";
+ $com.= "> $tmp/aria_chk_message.good.txt 2>&1";
$res= my_exec($com);
print MY_LOG $res;
- $checksum= my_exec("$maria_exe_path/maria_chk$suffix -dss $table");
+ $checksum= my_exec("$maria_exe_path/aria_chk$suffix -dss $table");
move("$table.MAD", "$tmp/$table-good.MAD") ||
die "Can't move $table.MAD to $tmp/$table-good.MAD\n";
move("$table.MAI", "$tmp/$table-good.MAI") ||
die "Can't move $table.MAI to $tmp/$table-good.MAI\n";
- unlink <maria_log.* maria_log_control>;
+ unlink <aria_log.* aria_log_control>;
print MY_LOG "TEST WITH $prog_no_suffix $abort_run_args$test_undo[$j] (additional aborted work)\n";
$res= my_exec("$maria_exe_path/$prog $abort_run_args$test_undo[$j]");
print MY_LOG $res;
@@ -216,10 +216,10 @@ sub main
die "Can't copy $table.MAI to $tmp/$table-before_undo.MAI\n";
# The lines below seem unneeded, will be removed soon
- # We have to copy and restore logs, as running maria_read_log will
- # change the maria_control_file
- # rm -f $tmp/maria_log.* $tmp/maria_log_control
- # cp $maria_path/maria_log* $tmp
+ # We have to copy and restore logs, as running aria_read_log will
+ # change the aria_control_file
+ # rm -f $tmp/aria_log.* $tmp/aria_log_control
+ # cp $maria_path/aria_log* $tmp
if ($test_undo[$j] != 3) {
apply_log($table, "shouldchangelog"); # should undo aborted work
@@ -246,13 +246,13 @@ sub main
print MY_LOG $res;
print MY_LOG "testing applying of CLRs to recreate table\n";
unlink <$table.MA?>;
- # cp $tmp/maria_log* $maria_path #unneeded
+ # cp $tmp/aria_log* $maria_path #unneeded
apply_log($table, "shouldnotchangelog");
check_table_is_same($table, $checksum);
$res= physical_cmp($table, "$tmp/$table-after_undo");
print MY_LOG $res;
}
- unlink <$table.* $tmp/$table* $tmp/maria_chk_*.txt $tmp/maria_read_log_$table.txt>;
+ unlink <$table.* $tmp/$table* $tmp/aria_chk_*.txt $tmp/aria_read_log_$table.txt>;
}
}
}
@@ -263,7 +263,7 @@ sub main
}
close(MY_LOG);
- # also note that maria_chk -dvv shows differences for ma_test2 in UNDO phase,
+ # also note that aria_chk -dvv shows differences for ma_test2 in UNDO phase,
# this is normal: removing records does not shrink the data/key file,
# does not put back the "analyzed,optimized keys"(etc) index state.
`diff -b $maria_path/unittest/ma_test_recovery.expected $tmp/ma_test_recovery.output`;
@@ -296,29 +296,29 @@ sub check_table_is_same
print "checking if table $table has changed\n";
}
- $com= "$maria_exe_path/maria_chk$suffix -dvv $table | grep -v \"Creation time:\" ";
- $com.= "| grep -v \"file length\" | grep -v \"LSNs:\" | grep -v \"UUID:\" > $tmp/maria_chk_message.txt 2>&1";
+ $com= "$maria_exe_path/aria_chk$suffix -dvv $table | grep -v \"Creation time:\" ";
+ $com.= "| grep -v \"file length\" | grep -v \"LSNs:\" | grep -v \"UUID:\" > $tmp/aria_chk_message.txt 2>&1";
$res= `$com`;
print MY_LOG $res;
- $res= `$maria_exe_path/maria_chk$suffix -s -e --read-only $table`;
+ $res= `$maria_exe_path/aria_chk$suffix -ss -e --read-only $table`;
print MY_LOG $res;
- $checksum2= `$maria_exe_path/maria_chk$suffix -dss $table`;
+ $checksum2= `$maria_exe_path/aria_chk$suffix -dss $table`;
if ("$checksum" ne "$checksum2")
{
print MY_LOG "checksum differs for $table before and after recovery\n";
return 1;
}
- $com= "diff $tmp/maria_chk_message.good.txt $tmp/maria_chk_message.txt ";
- $com.= "> $tmp/maria_chk_diff.txt || true";
+ $com= "diff $tmp/aria_chk_message.good.txt $tmp/aria_chk_message.txt ";
+ $com.= "> $tmp/aria_chk_diff.txt || true";
$res= `$com`;
print MY_LOG $res;
- if (-s "$tmp/maria_chk_diff.txt")
+ if (-s "$tmp/aria_chk_diff.txt")
{
- print MY_LOG "Differences in maria_chk -dvv, recovery not yet perfect !\n";
+ print MY_LOG "Differences in aria_chk -dvv, recovery not yet perfect !\n";
print MY_LOG "========DIFF START=======\n";
- open(MY_FILE, "<$tmp/maria_chk_diff.txt") || die "Can't open file maria_chk_diff.txt\n";
+ open(MY_FILE, "<$tmp/aria_chk_diff.txt") || die "Can't open file aria_chk_diff.txt\n";
while (<MY_FILE>)
{
print MY_LOG $_;
@@ -346,13 +346,13 @@ sub apply_log
print MY_LOG "bad argument '$shouldchangelog'\n";
return 1;
}
- foreach (<maria_log.*>)
+ foreach (<aria_log.*>)
{
$log_md5.= md5_conv($_);
}
print MY_LOG "applying log\n";
- my_exec("$maria_exe_path/maria_read_log$suffix -a > $tmp/maria_read_log_$table.txt");
- foreach (<maria_log.*>)
+ my_exec("$maria_exe_path/aria_read_log$suffix -a > $tmp/aria_read_log_$table.txt");
+ foreach (<aria_log.*>)
{
$log_md5_2.= md5_conv($_);
}
@@ -360,13 +360,13 @@ sub apply_log
{
if ("$shouldchangelog" eq "shouldnotchangelog")
{
- print MY_LOG "maria_read_log should not have modified the log\n";
+ print MY_LOG "aria_read_log should not have modified the log\n";
return 1;
}
}
elsif ("$shouldchangelog" eq "shouldchangelog")
{
- print MY_LOG "maria_read_log should have modified the log\n";
+ print MY_LOG "aria_read_log should have modified the log\n";
return 1;
}
}
@@ -415,7 +415,7 @@ sub physical_cmp
# save original tables to restore them later
copy("$table.MAD", "$tmp/before_zerofill$table_no.MAD") || die();
copy("$table.MAI", "$tmp/before_zerofill$table_no.MAI") || die();
- $com= "$maria_exe_path/maria_chk$suffix -s --zerofill-keep-lsn $table";
+ $com= "$maria_exe_path/aria_chk$suffix -ss --zerofill-keep-lsn $table";
$res= `$com`;
print MY_LOG $res;
$table_no= $table_no + 1;
@@ -467,7 +467,7 @@ $my_progname version $VER
Description:
-Run various maria recovery tests and print the results
+Run various Aria recovery tests and print the results
Options
--help Show this help and exit.
diff --git a/storage/myisam/CMakeLists.txt b/storage/myisam/CMakeLists.txt
index 1a667e271af..7744f4337ef 100644
--- a/storage/myisam/CMakeLists.txt
+++ b/storage/myisam/CMakeLists.txt
@@ -70,4 +70,6 @@ IF(NOT SOURCE_SUBLIBS)
MYSQL_EMBED_MANIFEST("myisampack" "asInvoker")
ENDIF(EMBED_MANIFESTS)
+ INSTALL(TARGETS myisam_ftdump myisamchk myisamlog myisampack DESTINATION bin COMPONENT runtime)
+
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc
index 8f30f31f0db..cb7c8d49d9f 100644
--- a/storage/myisam/ha_myisam.cc
+++ b/storage/myisam/ha_myisam.cc
@@ -1591,11 +1591,11 @@ void ha_myisam::start_bulk_insert(ha_rows rows)
!= 0 Error
*/
-int ha_myisam::end_bulk_insert(bool abort)
+int ha_myisam::end_bulk_insert()
{
mi_end_bulk_insert(file);
int err=mi_extra(file, HA_EXTRA_NO_CACHE, 0);
- if (!err && !abort)
+ if (!err && !file->s->deleting)
{
if (can_enable_indexes)
{
diff --git a/storage/myisam/ha_myisam.h b/storage/myisam/ha_myisam.h
index db3c4737811..3fed26632fa 100644
--- a/storage/myisam/ha_myisam.h
+++ b/storage/myisam/ha_myisam.h
@@ -115,7 +115,7 @@ class ha_myisam: public handler
int enable_indexes(uint mode);
int indexes_are_disabled(void);
void start_bulk_insert(ha_rows rows);
- int end_bulk_insert(bool abort);
+ int end_bulk_insert();
ha_rows records_in_range(uint inx, key_range *min_key, key_range *max_key);
void update_create_info(HA_CREATE_INFO *create_info);
int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info);
diff --git a/storage/myisam/mi_dbug.c b/storage/myisam/mi_dbug.c
index 659abdce131..1a61d4823b5 100644
--- a/storage/myisam/mi_dbug.c
+++ b/storage/myisam/mi_dbug.c
@@ -118,7 +118,7 @@ void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg,
case HA_KEYTYPE_LONGLONG:
{
char buff[21];
- longlong2str(mi_sint8korr(key),buff,-10);
+ longlong10_to_str(mi_sint8korr(key),buff,-10);
VOID(fprintf(stream,"%s",buff));
key=end;
break;
@@ -126,7 +126,7 @@ void _mi_print_key(FILE *stream, register HA_KEYSEG *keyseg,
case HA_KEYTYPE_ULONGLONG:
{
char buff[21];
- longlong2str(mi_sint8korr(key),buff,10);
+ longlong10_to_str(mi_sint8korr(key),buff,10);
VOID(fprintf(stream,"%s",buff));
key=end;
break;
diff --git a/storage/myisam/mi_dynrec.c b/storage/myisam/mi_dynrec.c
index adae7076858..f08e9f32a3f 100644
--- a/storage/myisam/mi_dynrec.c
+++ b/storage/myisam/mi_dynrec.c
@@ -66,9 +66,12 @@ static int _mi_cmp_buffer(File file, const uchar *buff, my_off_t filepos,
my_bool mi_dynmap_file(MI_INFO *info, my_off_t size)
{
DBUG_ENTER("mi_dynmap_file");
- if (size > (my_off_t) (~((size_t) 0)))
+ if (size == 0 || size > (my_off_t) (~((size_t) 0)))
{
- DBUG_PRINT("warning", ("File is too large for mmap"));
+ if (size)
+ DBUG_PRINT("warning", ("File is too large for mmap"));
+ else
+ DBUG_PRINT("warning", ("Do not mmap zero-length"));
DBUG_RETURN(1);
}
/*
@@ -116,7 +119,7 @@ int mi_munmap_file(MI_INFO *info)
{
int ret;
DBUG_ENTER("mi_unmap_file");
- if ((ret= my_munmap(info->s->file_map, info->s->mmaped_length)))
+ if ((ret= my_munmap(info->s->file_map, (size_t) info->s->mmaped_length)))
DBUG_RETURN(ret);
info->s->file_read= mi_nommap_pread;
info->s->file_write= mi_nommap_pwrite;
diff --git a/storage/myisam/mi_locking.c b/storage/myisam/mi_locking.c
index 860c9c57889..741b9b01986 100644
--- a/storage/myisam/mi_locking.c
+++ b/storage/myisam/mi_locking.c
@@ -29,7 +29,6 @@ int mi_lock_database(MI_INFO *info, int lock_type)
int error;
uint count;
MYISAM_SHARE *share=info->s;
- uint flag;
DBUG_ENTER("mi_lock_database");
DBUG_PRINT("enter",("lock_type: %d old lock %d r_locks: %u w_locks: %u "
"global_changed: %d open_count: %u name: '%s'",
@@ -48,7 +47,7 @@ int mi_lock_database(MI_INFO *info, int lock_type)
DBUG_RETURN(0);
}
- flag=error=0;
+ error= 0;
pthread_mutex_lock(&share->intern_lock);
if (share->kfile >= 0) /* May only be false on windows */
{
@@ -128,14 +127,12 @@ int mi_lock_database(MI_INFO *info, int lock_type)
{
if (share->r_locks)
{ /* Only read locks left */
- flag=1;
if (my_lock(share->kfile,F_RDLCK,0L,F_TO_EOF,
MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error)
error=my_errno;
}
else if (!share->w_locks)
{ /* No more locks */
- flag=1;
if (my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,
MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error)
error=my_errno;
@@ -156,7 +153,6 @@ int mi_lock_database(MI_INFO *info, int lock_type)
*/
if (share->w_locks == 1)
{
- flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
MYF(MY_SEEK_NOT_DONE)))
{
@@ -171,7 +167,6 @@ int mi_lock_database(MI_INFO *info, int lock_type)
}
if (!share->r_locks && !share->w_locks)
{
- flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
info->lock_wait | MY_SEEK_NOT_DONE))
{
@@ -196,7 +191,6 @@ int mi_lock_database(MI_INFO *info, int lock_type)
{ /* Change READONLY to RW */
if (share->r_locks == 1)
{
- flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
MYF(info->lock_wait | MY_SEEK_NOT_DONE)))
{
@@ -213,7 +207,6 @@ int mi_lock_database(MI_INFO *info, int lock_type)
{
if (!share->w_locks)
{
- flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
info->lock_wait | MY_SEEK_NOT_DONE))
{
@@ -260,11 +253,6 @@ int mi_lock_database(MI_INFO *info, int lock_type)
}
#endif
pthread_mutex_unlock(&share->intern_lock);
-#if defined(FULL_LOG) || defined(_lint)
- lock_type|=(int) (flag << 8); /* Set bit to set if real lock */
- myisam_log_command(MI_LOG_LOCK,info,(uchar*) &lock_type,sizeof(lock_type),
- error);
-#endif
DBUG_RETURN(error);
} /* mi_lock_database */
diff --git a/storage/myisam/mi_open.c b/storage/myisam/mi_open.c
index 7436548c7e1..e4240dec90c 100644
--- a/storage/myisam/mi_open.c
+++ b/storage/myisam/mi_open.c
@@ -139,8 +139,7 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
my_errno= HA_ERR_NOT_A_TABLE;
goto err;
}
- if (memcmp((uchar*) share->state.header.file_version,
- (uchar*) myisam_file_magic, 4))
+ if (bcmp(share->state.header.file_version, myisam_file_magic, 4))
{
DBUG_PRINT("error",("Wrong header in %s",name_buff));
DBUG_DUMP("error_dump", share->state.header.file_version,
diff --git a/storage/myisam/mi_page.c b/storage/myisam/mi_page.c
index 17a5820d768..82acb801c90 100644
--- a/storage/myisam/mi_page.c
+++ b/storage/myisam/mi_page.c
@@ -49,7 +49,7 @@ uchar *_mi_fetch_keypage(register MI_INFO *info, MI_KEYDEF *keyinfo,
{
DBUG_PRINT("error",("page %lu had wrong page length: %u",
(ulong) page, page_size));
- DBUG_DUMP("page",tmp, keyinfo->block_length);
+ DBUG_DUMP("page", tmp, keyinfo->block_length);
info->last_keypage = HA_OFFSET_ERROR;
mi_print_error(info->s, HA_ERR_CRASHED);
my_errno = HA_ERR_CRASHED;
diff --git a/storage/myisam/mi_search.c b/storage/myisam/mi_search.c
index 03e0c72d7e0..52e28f8a5e9 100644
--- a/storage/myisam/mi_search.c
+++ b/storage/myisam/mi_search.c
@@ -819,7 +819,7 @@ uint _mi_get_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
DBUG_PRINT("error",
("Found too long null packed key: %u of %u at 0x%lx",
length, keyseg->length, (long) *page_pos));
- DBUG_DUMP("key",*page_pos,16);
+ DBUG_DUMP("key", *page_pos, 16);
mi_print_error(keyinfo->share, HA_ERR_CRASHED);
my_errno=HA_ERR_CRASHED;
return 0;
@@ -876,7 +876,7 @@ uint _mi_get_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
{
DBUG_PRINT("error",("Found too long packed key: %u of %u at 0x%lx",
length, keyseg->length, (long) *page_pos));
- DBUG_DUMP("key",*page_pos,16);
+ DBUG_DUMP("key", *page_pos, 16);
mi_print_error(keyinfo->share, HA_ERR_CRASHED);
my_errno=HA_ERR_CRASHED;
return 0; /* Error */
@@ -948,7 +948,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
DBUG_PRINT("error",
("Found too long binary packed key: %u of %u at 0x%lx",
length, keyinfo->maxlength, (long) *page_pos));
- DBUG_DUMP("key",*page_pos,16);
+ DBUG_DUMP("key", *page_pos, 16);
mi_print_error(keyinfo->share, HA_ERR_CRASHED);
my_errno=HA_ERR_CRASHED;
DBUG_RETURN(0); /* Wrong key */
diff --git a/storage/myisam/mi_test1.c b/storage/myisam/mi_test1.c
index aea8d86e380..39303fb80e5 100644
--- a/storage/myisam/mi_test1.c
+++ b/storage/myisam/mi_test1.c
@@ -539,21 +539,21 @@ static struct my_option my_long_options[] =
{"debug", '#', "Undocumented",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"delete_rows", 'd', "Undocumented", (uchar**) &remove_count,
- (uchar**) &remove_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0},
+ {"delete_rows", 'd', "Undocumented", &remove_count,
+ &remove_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0},
{"help", '?', "Display help and exit",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"insert_rows", 'i', "Undocumented", (uchar**) &insert_count,
- (uchar**) &insert_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0},
+ {"insert_rows", 'i', "Undocumented", &insert_count,
+ &insert_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0},
{"key_alpha", 'a', "Use a key of type HA_KEYTYPE_TEXT",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"key_binary_pack", 'B', "Undocumented",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"key_blob", 'b', "Undocumented",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"key_cache", 'K', "Undocumented", (uchar**) &key_cacheing,
- (uchar**) &key_cacheing, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"key_length", 'k', "Undocumented", (uchar**) &key_length, (uchar**) &key_length,
+ {"key_cache", 'K', "Undocumented", &key_cacheing,
+ &key_cacheing, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"key_length", 'k', "Undocumented", &key_length, &key_length,
0, GET_UINT, REQUIRED_ARG, 6, 0, 0, 0, 0, 0},
{"key_multiple", 'm', "Undocumented",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -564,21 +564,21 @@ static struct my_option my_long_options[] =
{"key_varchar", 'w', "Test VARCHAR keys",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"null_fields", 'N', "Define fields with NULL",
- (uchar**) &null_fields, (uchar**) &null_fields, 0, GET_BOOL, NO_ARG,
+ &null_fields, &null_fields, 0, GET_BOOL, NO_ARG,
0, 0, 0, 0, 0, 0},
{"row_fixed_size", 'S', "Undocumented",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"row_pointer_size", 'R', "Undocumented", (uchar**) &rec_pointer_size,
- (uchar**) &rec_pointer_size, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"row_pointer_size", 'R', "Undocumented", &rec_pointer_size,
+ &rec_pointer_size, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"silent", 's', "Undocumented",
- (uchar**) &silent, (uchar**) &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"skip_update", 'U', "Undocumented", (uchar**) &skip_update,
- (uchar**) &skip_update, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"unique", 'C', "Undocumented", (uchar**) &opt_unique, (uchar**) &opt_unique, 0,
+ &silent, &silent, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"skip_update", 'U', "Undocumented", &skip_update,
+ &skip_update, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"unique", 'C', "Undocumented", &opt_unique, &opt_unique, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"update_rows", 'u', "Undocumented", (uchar**) &update_count,
- (uchar**) &update_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0},
- {"verbose", 'v', "Be more verbose", (uchar**) &verbose, (uchar**) &verbose, 0,
+ {"update_rows", 'u', "Undocumented", &update_count,
+ &update_count, 0, GET_UINT, REQUIRED_ARG, 1000, 0, 0, 0, 0, 0},
+ {"verbose", 'v', "Be more verbose", &verbose, &verbose, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Print version number and exit",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
diff --git a/storage/myisam/mi_test2.c b/storage/myisam/mi_test2.c
index 67da89e55ef..527c5e03a27 100644
--- a/storage/myisam/mi_test2.c
+++ b/storage/myisam/mi_test2.c
@@ -410,7 +410,7 @@ int main(int argc, char *argv[])
}
ant=0;
while (mi_rprev(file,read_record3,0) == 0 &&
- bcmp(read_record3+start,key,length) == 0) ant++;
+ memcmp(read_record3+start,key,length) == 0) ant++;
if (ant != dupp_keys)
{
printf("prev: Found: %d records of %d\n",ant,dupp_keys);
@@ -448,7 +448,7 @@ int main(int argc, char *argv[])
goto end;
}
if (mi_rlast(file,read_record2,0) ||
- bcmp(read_record2,read_record3,reclength))
+ memcmp(read_record2,read_record3,reclength))
{
printf("Can't find last record\n");
DBUG_DUMP("record2",(uchar*) read_record2,reclength);
@@ -463,7 +463,7 @@ int main(int argc, char *argv[])
printf("prev: I found: %d records of %d\n",ant,write_count);
goto end;
}
- if (bcmp(read_record,read_record3,reclength))
+ if (memcmp(read_record,read_record3,reclength))
{
printf("Can't find first record\n");
goto end;
@@ -478,7 +478,7 @@ int main(int argc, char *argv[])
mi_rprev(file,read_record3,0) == 0 ||
mi_rnext(file,read_record3,0))
goto err;
- if (bcmp(read_record,read_record3,reclength) != 0)
+ if (memcmp(read_record,read_record3,reclength) != 0)
printf("Can't find first record\n");
if (!silent)
@@ -490,7 +490,7 @@ int main(int argc, char *argv[])
mi_rnext(file,read_record3,0) == 0 ||
mi_rprev(file,read_record3,0))
goto err;
- if (bcmp(read_record2,read_record3,reclength))
+ if (memcmp(read_record2,read_record3,reclength))
printf("Can't find last record\n");
#ifdef NOT_ANYMORE
if (!silent)
@@ -504,7 +504,7 @@ int main(int argc, char *argv[])
bzero((char*) file->lastkey,file->s->base.max_key_length*2);
if (mi_rkey(file,read_record,0,key2,(uint) i,HA_READ_PREFIX))
goto err;
- if (bcmp(read_record+start,key,(uint) i))
+ if (memcmp(read_record+start,key,(uint) i))
{
puts("Didn't find right record");
goto end;
@@ -523,7 +523,7 @@ int main(int argc, char *argv[])
opt_delete++;
ant=1;
while (mi_rnext(file,read_record3,0) == 0 &&
- bcmp(read_record3+start,key,length) == 0) ant++;
+ memcmp(read_record3+start,key,length) == 0) ant++;
if (ant != dupp_keys-1)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-1);
@@ -541,7 +541,7 @@ int main(int argc, char *argv[])
opt_delete++;
ant=1;
while (mi_rprev(file,read_record3,0) == 0 &&
- bcmp(read_record3+start,key,length) == 0) ant++;
+ memcmp(read_record3+start,key,length) == 0) ant++;
if (ant != dupp_keys-2)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-2);
@@ -561,7 +561,7 @@ int main(int argc, char *argv[])
if (mi_rnext(file,read_record,0))
goto err; /* Skall finnas poster */
while (mi_rnext(file,read_record3,0) == 0 &&
- bcmp(read_record3+start,key,length) == 0) ant++;
+ memcmp(read_record3+start,key,length) == 0) ant++;
if (ant != dupp_keys-3)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-3);
@@ -576,7 +576,7 @@ int main(int argc, char *argv[])
opt_delete++;
ant=0;
while (mi_rprev(file,read_record3,0) == 0 &&
- bcmp(read_record3+start,key,length) == 0) ant++;
+ memcmp(read_record3+start,key,length) == 0) ant++;
if (ant != dupp_keys-4)
{
printf("next: I can only find: %d keys of %d\n",ant,dupp_keys-4);
@@ -599,7 +599,7 @@ int main(int argc, char *argv[])
for (i=min(2,keys) ; i-- > 0 ;)
{
if (mi_rsame(file,read_record2,(int) i)) goto err;
- if (bcmp(read_record,read_record2,reclength) != 0)
+ if (memcmp(read_record,read_record2,reclength) != 0)
{
printf("mi_rsame didn't find same record\n");
goto end;
diff --git a/storage/myisam/mi_unique.c b/storage/myisam/mi_unique.c
index 02fcd9289dd..fdba84a2e67 100644
--- a/storage/myisam/mi_unique.c
+++ b/storage/myisam/mi_unique.c
@@ -56,7 +56,7 @@ my_bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, uchar *record,
if (_mi_search_next(info,info->s->keyinfo+def->key, info->lastkey,
MI_UNIQUE_HASH_LENGTH, SEARCH_BIGGER,
info->s->state.key_root[def->key]) ||
- bcmp((char*) info->lastkey, (char*) key_buff, MI_UNIQUE_HASH_LENGTH))
+ memcmp(info->lastkey, key_buff, MI_UNIQUE_HASH_LENGTH))
{
info->page_changed=1; /* Can't optimize read next */
info->lastpos=lastpos;
diff --git a/storage/myisam/myisamchk.c b/storage/myisam/myisamchk.c
index d5d1c548717..592426a3690 100644
--- a/storage/myisam/myisamchk.c
+++ b/storage/myisam/myisamchk.c
@@ -168,7 +168,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR,
"Directory where character sets are.",
- (uchar**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ (char**) &charsets_dir, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"check", 'c',
"Check table for errors.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -188,8 +188,8 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"data-file-length", 'D',
"Max length of data file (when recreating data-file when it's full).",
- (uchar**) &check_param.max_data_file_length,
- (uchar**) &check_param.max_data_file_length,
+ &check_param.max_data_file_length,
+ &check_param.max_data_file_length,
0, GET_LL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"extend-check", 'e',
"If used when checking a table, ensure that the table is 100 percent consistent, which will take a long time. If used when repairing a table, try to recover every possible row from the data file. Normally this will also find a lot of garbage rows; Don't use this option with repair if you are not totally desperate.",
@@ -211,13 +211,13 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"keys-used", 'k',
"Tell MyISAM to update only some specific keys. # is a bit mask of which keys to use. This can be used to get faster inserts.",
- (uchar**) &check_param.keys_in_use,
- (uchar**) &check_param.keys_in_use,
+ &check_param.keys_in_use,
+ &check_param.keys_in_use,
0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0},
{"max-record-length", OPT_MAX_RECORD_LENGTH,
"Skip rows bigger than this if myisamchk can't allocate memory to hold it",
- (uchar**) &check_param.max_record_length,
- (uchar**) &check_param.max_record_length,
+ &check_param.max_record_length,
+ &check_param.max_record_length,
0, GET_ULL, REQUIRED_ARG, LONGLONG_MAX, 0, LONGLONG_MAX, 0, 0, 0},
{"medium-check", 'm',
"Faster than extend-check, but only finds 99.99% of all errors. Should be good enough for most cases.",
@@ -246,12 +246,13 @@ static struct my_option my_long_options[] =
#endif
{"set-auto-increment", 'A',
"Force auto_increment to start at this or higher value. If no value is given, then sets the next auto_increment value to the highest used value for the auto key + 1.",
- (uchar**) &check_param.auto_increment_value,
- (uchar**) &check_param.auto_increment_value,
+ &check_param.auto_increment_value,
+ &check_param.auto_increment_value,
0, GET_ULL, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"set-collation", OPT_SET_COLLATION,
"Change the collation used by the index",
- (uchar**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ (char**) &set_collation_name, 0, 0, GET_STR, REQUIRED_ARG,
+ 0, 0, 0, 0, 0, 0},
{"set-variable", 'O',
"Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -263,12 +264,11 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"sort-records", 'R',
"Sort records according to an index. This makes your data much more localized and may speed up things. (It may be VERY slow to do a sort the first time!)",
- (uchar**) &check_param.opt_sort_key,
- (uchar**) &check_param.opt_sort_key,
+ &check_param.opt_sort_key,
+ &check_param.opt_sort_key,
0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"tmpdir", 't',
- "Path for temporary files.",
- (uchar**) &opt_tmpdir,
+ "Path for temporary files.", (char**) &opt_tmpdir,
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"update-state", 'U',
"Mark tables as crashed if any errors were found.",
@@ -286,54 +286,54 @@ static struct my_option my_long_options[] =
"Wait if table is locked.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{ "key_buffer_size", OPT_KEY_BUFFER_SIZE, "",
- (uchar**) &check_param.use_buffers, (uchar**) &check_param.use_buffers, 0,
+ &check_param.use_buffers, &check_param.use_buffers, 0,
GET_ULL, REQUIRED_ARG, USE_BUFFER_INIT, MALLOC_OVERHEAD,
SIZE_T_MAX, MALLOC_OVERHEAD, IO_SIZE, 0},
{ "key_cache_block_size", OPT_KEY_CACHE_BLOCK_SIZE, "",
- (uchar**) &opt_key_cache_block_size,
- (uchar**) &opt_key_cache_block_size, 0,
+ &opt_key_cache_block_size,
+ &opt_key_cache_block_size, 0,
GET_LONG, REQUIRED_ARG, MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH,
MI_MAX_KEY_BLOCK_LENGTH, 0, MI_MIN_KEY_BLOCK_LENGTH, 0},
{ "myisam_block_size", OPT_MYISAM_BLOCK_SIZE, "",
- (uchar**) &opt_myisam_block_size, (uchar**) &opt_myisam_block_size, 0,
+ &opt_myisam_block_size, &opt_myisam_block_size, 0,
GET_LONG, REQUIRED_ARG, MI_KEY_BLOCK_LENGTH, MI_MIN_KEY_BLOCK_LENGTH,
MI_MAX_KEY_BLOCK_LENGTH, 0, MI_MIN_KEY_BLOCK_LENGTH, 0},
{ "read_buffer_size", OPT_READ_BUFFER_SIZE, "",
- (uchar**) &check_param.read_buffer_length,
- (uchar**) &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
+ &check_param.read_buffer_length,
+ &check_param.read_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD,
INT_MAX32, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "write_buffer_size", OPT_WRITE_BUFFER_SIZE, "",
- (uchar**) &check_param.write_buffer_length,
- (uchar**) &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
+ &check_param.write_buffer_length,
+ &check_param.write_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) READ_BUFFER_INIT, (long) MALLOC_OVERHEAD,
INT_MAX32, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "sort_buffer_size", OPT_SORT_BUFFER_SIZE, "",
- (uchar**) &check_param.sort_buffer_length,
- (uchar**) &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
+ &check_param.sort_buffer_length,
+ &check_param.sort_buffer_length, 0, GET_ULONG, REQUIRED_ARG,
(long) SORT_BUFFER_INIT, (long) (MIN_SORT_BUFFER + MALLOC_OVERHEAD),
ULONG_MAX, (long) MALLOC_OVERHEAD, (long) 1L, 0},
{ "sort_key_blocks", OPT_SORT_KEY_BLOCKS, "",
- (uchar**) &check_param.sort_key_blocks,
- (uchar**) &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG,
+ &check_param.sort_key_blocks,
+ &check_param.sort_key_blocks, 0, GET_ULONG, REQUIRED_ARG,
BUFFERS_WHEN_SORTING, 4L, 100L, 0L, 1L, 0},
- { "decode_bits", OPT_DECODE_BITS, "", (uchar**) &decode_bits,
- (uchar**) &decode_bits, 0, GET_UINT, REQUIRED_ARG, 9L, 4L, 17L, 0L, 1L, 0},
- { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, "", (uchar**) &ft_min_word_len,
- (uchar**) &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN,
+ { "decode_bits", OPT_DECODE_BITS, "", &decode_bits,
+ &decode_bits, 0, GET_UINT, REQUIRED_ARG, 9L, 4L, 17L, 0L, 1L, 0},
+ { "ft_min_word_len", OPT_FT_MIN_WORD_LEN, "", &ft_min_word_len,
+ &ft_min_word_len, 0, GET_ULONG, REQUIRED_ARG, 4, 1, HA_FT_MAXCHARLEN,
0, 1, 0},
- { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, "", (uchar**) &ft_max_word_len,
- (uchar**) &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10,
+ { "ft_max_word_len", OPT_FT_MAX_WORD_LEN, "", &ft_max_word_len,
+ &ft_max_word_len, 0, GET_ULONG, REQUIRED_ARG, HA_FT_MAXCHARLEN, 10,
HA_FT_MAXCHARLEN, 0, 1, 0},
{ "ft_stopword_file", OPT_FT_STOPWORD_FILE,
"Use stopwords from this file instead of built-in list.",
- (uchar**) &ft_stopword_file, (uchar**) &ft_stopword_file, 0, GET_STR,
+ (char**) &ft_stopword_file, (char**) &ft_stopword_file, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"stats_method", OPT_STATS_METHOD,
"Specifies how index statistics collection code should treat NULLs. "
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), "
"\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".",
- (uchar**) &myisam_stats_method_str, (uchar**) &myisam_stats_method_str, 0,
+ (char**) &myisam_stats_method_str, (char**) &myisam_stats_method_str, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -1314,7 +1314,7 @@ static void descript(HA_CHECK *param, register MI_INFO *info, char * name)
printf("Recordlength: %13d\n",(int) share->base.pack_reclength);
if (! mi_is_all_keys_active(share->state.key_map, share->base.keys))
{
- longlong2str(share->state.key_map,buff,2);
+ longlong2str(share->state.key_map,buff,2,1);
printf("Using only keys '%s' of %d possibly keys\n",
buff, share->base.keys);
}
diff --git a/storage/myisam/myisamlog.c b/storage/myisam/myisamlog.c
index 8b4ccfe3256..c441acf6c3f 100644
--- a/storage/myisam/myisamlog.c
+++ b/storage/myisam/myisamlog.c
@@ -382,18 +382,18 @@ static int examine_log(char * file_name, char **table_names)
curr_file_info->show_name);
if (my_b_read(&cache,(uchar*) head,2))
goto err;
+ buff= 0;
file_info.name=0;
file_info.show_name=0;
file_info.record=0;
- if (read_string(&cache,(uchar**) (char*) &file_info.name,
- (uint) mi_uint2korr(head)))
+ if (read_string(&cache, &buff, (uint) mi_uint2korr(head)))
goto err;
{
uint i;
char *pos,*to;
/* Fix if old DOS files to new format */
- for (pos=file_info.name; (pos=strchr(pos,'\\')) ; pos++)
+ for (pos=file_info.name=(char*)buff; (pos=strchr(pos,'\\')) ; pos++)
*pos= '/';
pos=file_info.name;
@@ -692,7 +692,7 @@ static int read_string(IO_CACHE *file, register uchar* *to, register uint length
*to= 0;
DBUG_RETURN(1);
}
- *((char*) *to+length)= '\0';
+ *((uchar*) *to+length)= '\0';
DBUG_RETURN (0);
} /* read_string */
diff --git a/storage/myisam/myisampack.c b/storage/myisam/myisampack.c
index 300bab58305..54ff8a258ad 100644
--- a/storage/myisam/myisampack.c
+++ b/storage/myisam/myisampack.c
@@ -257,10 +257,10 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"backup", 'b', "Make a backup of the table as table_name.OLD.",
- (uchar**) &backup, (uchar**) &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ &backup, &backup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"character-sets-dir", OPT_CHARSETS_DIR_MP,
- "Directory where character sets are.", (uchar**) &charsets_dir,
- (uchar**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ "Directory where character sets are.", (char**) &charsets_dir,
+ (char**) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"force", 'f',
@@ -268,7 +268,7 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"join", 'j',
"Join all given tables into 'new_table_name'. All tables MUST have identical layouts.",
- (uchar**) &join_table, (uchar**) &join_table, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
+ &join_table, &join_table, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,
0, 0, 0},
{"help", '?', "Display this help and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -282,8 +282,8 @@ static struct my_option my_long_options[] =
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"version", 'V', "Output version information and exit.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
- {"wait", 'w', "Wait and retry if table is in use.", (uchar**) &opt_wait,
- (uchar**) &opt_wait, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
+ {"wait", 'w', "Wait and retry if table is in use.", &opt_wait,
+ &opt_wait, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
diff --git a/storage/myisam/rt_split.c b/storage/myisam/rt_split.c
index 88cf643faf9..03d22de68fa 100644
--- a/storage/myisam/rt_split.c
+++ b/storage/myisam/rt_split.c
@@ -255,7 +255,6 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
SplitStruct *stop;
double *coord_buf;
double *next_coord;
- double *old_coord;
int n_dim;
uchar *source_cur, *cur1, *cur2;
uchar *new_page= info->buff;
@@ -293,8 +292,6 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
rtree_d_mbr(keyinfo->seg, key, key_length, cur->coords);
cur->key = key;
- old_coord = next_coord;
-
if (split_rtree_node(task, max_keys + 1,
mi_getint(page) + full_length + 2, full_length,
rt_PAGE_MIN_SIZE(keyinfo->block_length),
diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc
index f27f22761b1..be3f0ca4813 100644
--- a/storage/myisammrg/ha_myisammrg.cc
+++ b/storage/myisammrg/ha_myisammrg.cc
@@ -295,8 +295,8 @@ static int myisammrg_parent_open_callback(void *callback_param,
}
}
- DBUG_PRINT("myrg", ("open: '%.*s'.'%.*s'", (int)(child_l->db_length),
- child_l->db, (int)(child_l->table_name_length),
+ DBUG_PRINT("myrg", ("open: '%.*s'.'%.*s'", (int) child_l->db_length,
+ child_l->db, (int) child_l->table_name_length,
child_l->table_name));
/* Convert to lowercase if required. */
@@ -1134,8 +1134,8 @@ void ha_myisammrg::update_create_info(HA_CREATE_INFO *create_info)
goto err;
create_info->merge_list.elements++;
- (*create_info->merge_list.next) = (uchar*) ptr;
- create_info->merge_list.next= (uchar**) &ptr->next_local;
+ (*create_info->merge_list.next) = ptr;
+ create_info->merge_list.next= &ptr->next_local;
}
*create_info->merge_list.next=0;
}
@@ -1157,7 +1157,7 @@ int ha_myisammrg::create(const char *name, register TABLE *form,
{
char buff[FN_REFLEN];
const char **table_names, **pos;
- TABLE_LIST *tables= (TABLE_LIST*) create_info->merge_list.first;
+ TABLE_LIST *tables= create_info->merge_list.first;
THD *thd= current_thd;
size_t dirlgt= dirname_length(name);
DBUG_ENTER("ha_myisammrg::create");
diff --git a/storage/myisammrg/myrg_open.c b/storage/myisammrg/myrg_open.c
index ea306c5ba9c..17c9b4ba4d1 100644
--- a/storage/myisammrg/myrg_open.c
+++ b/storage/myisammrg/myrg_open.c
@@ -227,9 +227,7 @@ MYRG_INFO *myrg_parent_open(const char *parent_name,
int save_errno;
int insert_method;
uint length;
- uint dir_length;
uint child_count;
- size_t name_buff_length;
File fd;
IO_CACHE file_cache;
char parent_name_buff[FN_REFLEN * 2];
@@ -300,7 +298,6 @@ MYRG_INFO *myrg_parent_open(const char *parent_name,
}
/* Call callback for each child. */
- dir_length= dirname_part(parent_name_buff, parent_name, &name_buff_length);
my_b_seek(&file_cache, 0);
while ((length= my_b_gets(&file_cache, child_name_buff, FN_REFLEN - 1)))
{
@@ -380,7 +377,6 @@ int myrg_attach_children(MYRG_INFO *m_info, int handle_locking,
{
ulonglong file_offset;
MI_INFO *myisam;
- int rc;
int errpos;
int save_errno;
uint idx;
@@ -399,7 +395,6 @@ int myrg_attach_children(MYRG_INFO *m_info, int handle_locking,
here and in ha_myisammrg::store_lock() forces consistent data.
*/
pthread_mutex_lock(&m_info->mutex);
- rc= 1;
errpos= 0;
file_offset= 0;
min_keys= 0;
diff --git a/storage/mysql_storage_engine.cmake b/storage/mysql_storage_engine.cmake
index b920f16452b..5424beca33a 100644
--- a/storage/mysql_storage_engine.cmake
+++ b/storage/mysql_storage_engine.cmake
@@ -38,6 +38,8 @@ IF(NOT SOURCE_SUBLIBS)
IF(${engine}_LIBS)
TARGET_LINK_LIBRARIES(${dyn_libname} ${${engine}_LIBS})
ENDIF(${engine}_LIBS)
+ # Install the plugin
+ INSTALL(TARGETS ${dyn_libname} DESTINATION lib/plugin COMPONENT runtime)
MESSAGE("build ${engine} as DLL")
ENDIF(${ENGINE_BUILD_TYPE} STREQUAL "STATIC")
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/storage/ndb/src/common/portlib/NdbMutex.c b/storage/ndb/src/common/portlib/NdbMutex.c
index c9184e5d1f2..5595baba7c4 100644
--- a/storage/ndb/src/common/portlib/NdbMutex.c
+++ b/storage/ndb/src/common/portlib/NdbMutex.c
@@ -24,36 +24,31 @@ NdbMutex* NdbMutex_Create(void)
{
NdbMutex* pNdbMutex;
int result;
- DBUG_ENTER("NdbMutex_Create");
-
+
pNdbMutex = (NdbMutex*)NdbMem_Allocate(sizeof(NdbMutex));
- DBUG_PRINT("info",("NdbMem_Allocate 0x%lx", (long) pNdbMutex));
-
+
if (pNdbMutex == NULL)
- DBUG_RETURN(NULL);
-
+ return NULL;
+
result = pthread_mutex_init(pNdbMutex, NULL);
assert(result == 0);
-
- DBUG_RETURN(pNdbMutex);
+
+ return pNdbMutex;
}
int NdbMutex_Destroy(NdbMutex* p_mutex)
{
int result;
- DBUG_ENTER("NdbMutex_Destroy");
if (p_mutex == NULL)
- DBUG_RETURN(-1);
+ return -1;
result = pthread_mutex_destroy(p_mutex);
- DBUG_PRINT("info",("NdbMem_Free 0x%lx", (long) p_mutex));
NdbMem_Free(p_mutex);
-
- DBUG_RETURN(result);
+ return result;
}
diff --git a/storage/ndb/src/ndbapi/DictCache.cpp b/storage/ndb/src/ndbapi/DictCache.cpp
index 04be3711847..9c66b2be9d2 100644
--- a/storage/ndb/src/ndbapi/DictCache.cpp
+++ b/storage/ndb/src/ndbapi/DictCache.cpp
@@ -20,8 +20,10 @@
#include <NdbCondition.h>
#include <NdbSleep.h>
-static NdbTableImpl f_invalid_table;
-static NdbTableImpl f_altered_table;
+static NdbTableImpl * f_invalid_table = 0;
+static NdbTableImpl * f_altered_table = 0;
+
+static int ndb_dict_cache_count = 0;
Ndb_local_table_info *
Ndb_local_table_info::create(NdbTableImpl *table_impl, Uint32 sz)
@@ -93,11 +95,29 @@ GlobalDictCache::GlobalDictCache(){
DBUG_ENTER("GlobalDictCache::GlobalDictCache");
m_tableHash.createHashTable();
m_waitForTableCondition = NdbCondition_Create();
+ if (f_invalid_table == NULL)
+ f_invalid_table = new NdbTableImpl();
+ if (f_altered_table == NULL)
+ f_altered_table = new NdbTableImpl();
+ ndb_dict_cache_count++;
DBUG_VOID_RETURN;
}
GlobalDictCache::~GlobalDictCache(){
DBUG_ENTER("GlobalDictCache::~GlobalDictCache");
+ if (--ndb_dict_cache_count == 0)
+ {
+ if (f_invalid_table)
+ {
+ delete f_invalid_table;
+ f_invalid_table = 0;
+ }
+ if (f_altered_table)
+ {
+ delete f_altered_table;
+ f_altered_table = 0;
+ }
+ }
NdbElement_t<Vector<TableVersion> > * curr = m_tableHash.getNext(0);
while(curr != 0){
Vector<TableVersion> * vers = curr->theData;
@@ -254,7 +274,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab)
TableVersion & ver = vers->back();
if(ver.m_status != RETREIVING ||
!(ver.m_impl == 0 ||
- ver.m_impl == &f_invalid_table || ver.m_impl == &f_altered_table) ||
+ ver.m_impl == f_invalid_table || ver.m_impl == f_altered_table) ||
ver.m_version != 0 ||
ver.m_refCount == 0){
abort();
@@ -271,7 +291,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab)
ver.m_version = tab->m_version;
ver.m_status = OK;
}
- else if (ver.m_impl == &f_invalid_table)
+ else if (ver.m_impl == f_invalid_table)
{
DBUG_PRINT("info", ("Table DROPPED invalid"));
ver.m_impl = tab;
@@ -279,7 +299,7 @@ GlobalDictCache::put(const char * name, NdbTableImpl * tab)
ver.m_status = DROPPED;
ver.m_impl->m_status = NdbDictionary::Object::Invalid;
}
- else if(ver.m_impl == &f_altered_table)
+ else if(ver.m_impl == f_altered_table)
{
DBUG_PRINT("info", ("Table DROPPED altered"));
ver.m_impl = tab;
@@ -440,7 +460,7 @@ GlobalDictCache::alter_table_rep(const char * name,
if(i == sz - 1 && ver.m_status == RETREIVING)
{
- ver.m_impl = altered ? &f_altered_table : &f_invalid_table;
+ ver.m_impl = altered ? f_altered_table : f_invalid_table;
DBUG_VOID_RETURN;
}
}
diff --git a/storage/oqgraph/CMakeLists.txt b/storage/oqgraph/CMakeLists.txt
new file mode 100644
index 00000000000..d81dbe323b6
--- /dev/null
+++ b/storage/oqgraph/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Copyright (C) 2006 MySQL AB
+#
+# 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-1301 USA
+
+INCLUDE (CheckCXXSourceCompiles)
+CHECK_CXX_SOURCE_COMPILES(
+"#include <boost/version.hpp>
+#if BOOST_VERSION >= 104000
+#else
+#error oops
+#endif
+int main() { return 0; }" BOOST_OK)
+
+IF(BOOST_OK)
+ INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
+
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OQGRAPH /EHsc")
+
+ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
+ ${CMAKE_SOURCE_DIR}/regex
+ ${CMAKE_SOURCE_DIR}/extra/yassl/include)
+
+ SET(OQGRAPH_SOURCES ha_oqgraph.cc graphcore.cc)
+ MYSQL_STORAGE_ENGINE(OQGRAPH)
+ENDIF()
+
diff --git a/storage/oqgraph/Makefile.am b/storage/oqgraph/Makefile.am
index 56eea4cb87a..e99e134db02 100644
--- a/storage/oqgraph/Makefile.am
+++ b/storage/oqgraph/Makefile.am
@@ -47,11 +47,11 @@ BOOST_CXXFLAGS+= -funroll-loops -fno-trapping-math
EXTRA_DIST = ha_oqgraph.h ha_oqgraph.cc graphcore.cc \
graphcore-graph.h graphcore-types.h graphcore.h \
- CMakeFiles.txt plug.in oqgraph_probes.d
+ CMakeLists.txt plug.in oqgraph_probes.d
# DTRACE = @DTRACE@
# DTRACEFLAGS = @DTRACEFLAGS@
-# DTRACEFILES = .libs/liboqgraph_engine_la-ha_oqgraph.o
+# DTRACEFILES = .libs/libha_oqgraph_la-ha_oqgraph.o
ORIG_CXXFLAGS = @CXXFLAGS@
CXXFLAGS=
@@ -71,18 +71,18 @@ else
INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)/regex -I$(top_srcdir)/sql -I$(srcdir) -DHAVE_OQGRAPH
endif !BUILD_OQGRAPH_STANDALONE
-EXTRA_LTLIBRARIES = oqgraph_engine.la
+EXTRA_LTLIBRARIES = ha_oqgraph.la
mysqlplugin_LTLIBRARIES = @plugin_oqgraph_shared_target@
-oqgraph_engine_la_SOURCES = ha_oqgraph.cc
-oqgraph_engine_la_LIBADD = libgraphcore.la
+ha_oqgraph_la_SOURCES = ha_oqgraph.cc
+ha_oqgraph_la_LIBADD = libgraphcore.la
# if HAVE_DTRACE
-# oqgraph_engine_la_LIBADD += oqgraph_probes.o
+# ha_oqgraph_la_LIBADD += oqgraph_probes.o
# endif
-oqgraph_engine_la_LDFLAGS = -module -rpath $(mysqlplugindir)
-oqgraph_engine_la_CFLAGS = $(ORIG_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
-oqgraph_engine_la_CXXFLAGS = $(ORIG_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_oqgraph_la_LDFLAGS = -shared -module -rpath $(mysqlplugindir)
+ha_oqgraph_la_CFLAGS = $(ORIG_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_oqgraph_la_CXXFLAGS = $(ORIG_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
# oqgraph_probes.h: oqgraph_probes.d
# $(DTRACE) $(DTRACEFLAGS) -h -s oqgraph_probes.d
diff --git a/storage/oqgraph/graphcore.cc b/storage/oqgraph/graphcore.cc
index f19f99d0756..0b856ac253f 100644
--- a/storage/oqgraph/graphcore.cc
+++ b/storage/oqgraph/graphcore.cc
@@ -24,7 +24,7 @@
======================================================================
*/
-#include <strings.h>
+#include <string.h>
#define BOOST_ALL_NO_LIB 1
@@ -49,7 +49,7 @@
using namespace open_query;
using namespace boost;
-static const row empty_row = { 0 };
+static const row empty_row = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
namespace open_query
{
@@ -997,7 +997,7 @@ int stack_cursor::fetch_row(const row &row_info, row &result,
const reference &ref)
{
last= ref;
- if (optional<Vertex> v= last.vertex())
+ if (last.vertex())
{
optional<int> seq;
optional<EdgeWeight> w;
diff --git a/storage/oqgraph/plug.in b/storage/oqgraph/plug.in
index 6331dade3dd..38c8310a915 100644
--- a/storage/oqgraph/plug.in
+++ b/storage/oqgraph/plug.in
@@ -1,6 +1,6 @@
MYSQL_STORAGE_ENGINE(oqgraph,,[Graph Storage Engine],
[Open Query Graph Computation Engine], [])
-MYSQL_PLUGIN_DYNAMIC(oqgraph, [oqgraph_engine.la])
+MYSQL_PLUGIN_DYNAMIC(oqgraph, [ha_oqgraph.la])
MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS(oqgraph, [ha_oqgraph.cc])
MYSQL_PLUGIN_ACTIONS(oqgraph,[
AC_LANG_PUSH([C++])
@@ -35,6 +35,6 @@ AC_PREPROC_IFELSE(
],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
- with_plugin_oqgraph=no])
+ MYSQL_PLUGIN_WITHOUT(oqgraph)])
AC_LANG_POP()
diff --git a/storage/pbxt/CMakeLists.txt b/storage/pbxt/CMakeLists.txt
index a05b1f97083..6da0717043c 100644
--- a/storage/pbxt/CMakeLists.txt
+++ b/storage/pbxt/CMakeLists.txt
@@ -22,6 +22,8 @@
#
# This file is used to make the Windows version
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMYSQL_SERVER")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMYSQL_SERVER")
@@ -101,3 +103,4 @@ src/xt_defs.h
src/xt_errno.h)
MYSQL_STORAGE_ENGINE(PBXT)
+
diff --git a/storage/pbxt/ChangeLog b/storage/pbxt/ChangeLog
index b6023d26139..f0f9864d0d5 100644
--- a/storage/pbxt/ChangeLog
+++ b/storage/pbxt/ChangeLog
@@ -1,7 +1,49 @@
PBXT Release Notes
==================
-+------- 1.0.11 Pre-GA - 2010-05-11
+------- 1.0.11-7 Pre-GA - 2010-09-09
+
+RN336: Compiled and tested with MySQL 5.1.50.
+
+RN335: Fixed bug #523994: Deleting all records does not update table statistics.
+
+RN334: Made a change to reduce the time that only temporary tables exist during the ALTER TABLE and REPAIR TABLE statements. This increases the chance of recovery if a crash occurs during these operations.
+
+RN333: Log name of table when PBXT recovers an index on startup. If an error occurs during index recovery, the index is set to "repair pending".
+
+RN332: Fixed an inifinite loop when a record in a row is corrupt. Added logging and set the table to "repair pending" in this case.
+
+RN331: Fixed bug #626890: Crash on truncate table operation.
+
+RN330: Added additional checks for corruption of the index free list.
+
+------- 1.0.11-6 Pre-GA - 2010-07-08
+
+RN329: Fixed bug #601245: make fails. PBXT did not compile if the partition engine was disabled in the MySQL build.
+
+------- 1.0.11-5 Pre-GA - 2010-06-18
+
+RN328: Fixed bug #595478: Compile fails (1.0.11-4).
+
+------- 1.0.11-4 Pre-GA - 2010-06-15
+
+RN327: Fixed a bug that caused a crash during delete on the index. The crash occurred due to memory overwrite when a long key is promoted after a shorter key is deleted, and the difference causes a node size overflow.
+
+------- 1.0.11-3 Pre-GA - 2010-06-11
+
+RN326: Fixed bug #587740: pbxt-1.0.11-pre2-ga first time create partition table error. This was not a new bug. The problem was the PBXT system table's .frm files are corrupted when the first PBXT table created is a partition table.
+
+RN325: Fixed the "to-sweep" column output in xtstat.
+
+------- 1.0.11-2 Pre-GA - 2010-05-26
+
+RN324: Fixed bug #584070:pbxt-1.0.11-pre-ga does not work with mysql 5.1.47. This bug fix removes a hack which was done to avoid running into the LOCK_plugin lock.
+
+------- 1.0.11-1 Pre-GA - 2010-05-19
+
+RN323: Detect corruption of a key length in an index page. This bug fix avoids a possible crash due to index page corruption.
+
+------- 1.0.11 Pre-GA - 2010-05-11
RN322: Creating a table the references a non-existing table can now only be done if you set: foreign_key_checks = 0. Also fixed a failure when creating tables with recursive foreign key declarations.
diff --git a/storage/pbxt/src/cache_xt.cc b/storage/pbxt/src/cache_xt.cc
index 85eea41dd79..24e42d9e984 100644
--- a/storage/pbxt/src/cache_xt.cc
+++ b/storage/pbxt/src/cache_xt.cc
@@ -668,6 +668,9 @@ xtPublic void xt_ind_init(XTThreadPtr self, size_t cache_size)
block->cb_data = buffer;
buffer += XT_INDEX_PAGE_SIZE;
#endif
+#ifdef CHECK_BLOCK_TRAILERS
+ XT_SET_DISK_4(block->cp_check, 0xDEADBEEF);
+#endif
ind_cac_globals.cg_free_list = block;
block++;
}
@@ -684,6 +687,19 @@ xtPublic void xt_ind_init(XTThreadPtr self, size_t cache_size)
cont_(a);
}
+#ifdef CHECK_BLOCK_TRAILERS
+xtPublic void check_block_trailers()
+{
+ XTIndBlockPtr block;
+
+ block = ind_cac_globals.cg_blocks;
+ for (u_int i=0; i<ind_cac_globals.cg_block_count; i++) {
+ ASSERT_NS(XT_GET_DISK_4(block->cp_check) == 0xDEADBEEF);
+ block++;
+ }
+}
+#endif
+
xtPublic void xt_ind_exit(XTThreadPtr self)
{
#ifdef XT_USE_MYSYS
@@ -1283,7 +1299,7 @@ static XTIndBlockPtr ind_cac_fetch(XTOpenTablePtr ot, XTIndexPtr ind, xtIndexNod
* Conditionally count the number of deleted entries in the index:
* We do this before other threads can read the block.
*/
- if (ind->mi_lazy_delete && read_data)
+ if (ind && ind->mi_lazy_delete && read_data)
xt_ind_count_deleted_items(ot->ot_table, ind, block);
/* Add to the hash table: */
@@ -1358,6 +1374,9 @@ xtPublic xtBool xt_ind_write(XTOpenTablePtr ot, XTIndexPtr ind, xtIndexNodeID ad
#ifdef XT_TRACK_INDEX_UPDATES
ot->ot_ind_changed++;
#endif
+#ifdef CHECK_BLOCK_TRAILERS
+ check_block_trailers();
+#endif
return OK;
}
diff --git a/storage/pbxt/src/cache_xt.h b/storage/pbxt/src/cache_xt.h
index ca796ab1a74..63a5164e466 100644
--- a/storage/pbxt/src/cache_xt.h
+++ b/storage/pbxt/src/cache_xt.h
@@ -33,6 +33,7 @@ struct XTIdxReadBuffer;
#ifdef DEBUG
//#define XT_USE_CACHE_DEBUG_SIZES
+//#define CHECK_BLOCK_TRAILERS
#endif
#ifdef XT_USE_CACHE_DEBUG_SIZES
@@ -116,6 +117,9 @@ typedef struct XTIndBlock {
#else
xtWord1 cb_data[XT_INDEX_PAGE_SIZE];
#endif
+#ifdef CHECK_BLOCK_TRAILERS
+ xtWord1 cp_check[4];
+#endif
} XTIndBlockRec, *XTIndBlockPtr;
typedef struct XTIndReference {
@@ -177,6 +181,10 @@ xtBool xt_ind_copy_on_write(XTIndReferencePtr iref);
XTIndHandlePtr xt_ind_get_handle(struct XTOpenTable *ot, XTIndexPtr ind, XTIndReferencePtr iref);
void xt_ind_release_handle(XTIndHandlePtr handle, xtBool have_lock, XTThreadPtr thread);
+#ifdef CHECK_BLOCK_TRAILERS
+extern void check_block_trailers();
+#endif
+
#ifdef DEBUG
//#define DEBUG_CHECK_IND_CACHE
#endif
diff --git a/storage/pbxt/src/database_xt.h b/storage/pbxt/src/database_xt.h
index 1b1863d2045..7744aeeac31 100644
--- a/storage/pbxt/src/database_xt.h
+++ b/storage/pbxt/src/database_xt.h
@@ -117,6 +117,7 @@ typedef struct XTDatabase : public XTHeap {
XTSortedListPtr db_table_by_id;
XTSortedListPtr db_table_paths; /* A list of table paths used by this database. */
xtBool db_multi_path;
+ XTSortedListPtr db_error_list; /* A list of errors already reported. */
/* The open table pool: */
XTAllTablePoolsRec db_ot_pool;
diff --git a/storage/pbxt/src/datadic_xt.cc b/storage/pbxt/src/datadic_xt.cc
index 075d28edabe..6a58d23d980 100644
--- a/storage/pbxt/src/datadic_xt.cc
+++ b/storage/pbxt/src/datadic_xt.cc
@@ -396,7 +396,7 @@ void XTToken::expectNumber(XTThreadPtr self)
struct charset_info_st;
class XTTokenizer {
- const struct charset_info_st *tkn_charset;
+ MX_CONST_CHARSET_INFO *tkn_charset;
char *tkn_cstring;
char *tkn_curr_pos;
XTToken *tkn_current;
@@ -1324,7 +1324,7 @@ void XTParseTable::parseDropIndex(XTThreadPtr self)
class XTCreateTable : public XTParseTable {
public:
bool ct_convert;
- const struct charset_info_st *ct_charset;
+ MX_CONST_CHARSET_INFO *ct_charset;
XTPathStrPtr ct_tab_path;
u_int ct_contraint_no;
XTDDTable *ct_curr_table;
@@ -2039,11 +2039,6 @@ void XTDDTableRef::deleteAllRows(XTThreadPtr self)
if (!(ot = xt_db_open_table_using_tab(tr_fkey->co_table->dt_table, self)))
xt_throw(self);
- /* {FREE-ROWS-BAD} */
- /*
- row_count = ((xtInt8) ot->ot_table->tab_row_eof_id) - 1;
- row_count -= (xtInt8) ot->ot_table->tab_row_fnum;
- */
/* Check if there are any rows in the referencing table: */
if (!xt_tab_seq_init(ot))
goto failed;
diff --git a/storage/pbxt/src/datalog_xt.cc b/storage/pbxt/src/datalog_xt.cc
index ff58a122e10..3238f0cbd17 100644
--- a/storage/pbxt/src/datalog_xt.cc
+++ b/storage/pbxt/src/datalog_xt.cc
@@ -1249,7 +1249,7 @@ xtBool XTDataLogBuffer::dlb_write_thru_log(xtLogID XT_NDEBUG_UNUSED(log_id), xtL
*/
dlb_data_log->dlf_log_eof += size;
#ifdef DEBUG
- if ((ulonglong) (log_offset + size) > (ulonglong) dlb_max_write_offset)
+ if (log_offset + (xtLogOffset) size > (xtLogOffset) dlb_max_write_offset)
dlb_max_write_offset = log_offset + size;
#endif
dlb_flush_required = TRUE;
@@ -1291,7 +1291,7 @@ xtBool XTDataLogBuffer::dlb_append_log(xtLogID XT_NDEBUG_UNUSED(log_id), xtLogOf
if (!xt_pwrite_file(dlb_data_log->dlf_log_file, log_offset, size, data, &thread->st_statistics.st_data, thread))
return FAILED;
#ifdef DEBUG
- if ((ulonglong) (log_offset + size) > (ulonglong) dlb_max_write_offset)
+ if (log_offset + (xtLogOffset) size > (xtLogOffset) dlb_max_write_offset)
dlb_max_write_offset = log_offset + size;
#endif
dlb_flush_required = TRUE;
@@ -1734,8 +1734,8 @@ static xtBool dl_collect_garbage(XTThreadPtr self, XTDatabaseHPtr db, XTDataLogF
xtLogOffset src_log_offset;
xtLogID curr_log_id;
xtLogOffset curr_log_offset;
- xtLogID dest_log_id= 0;
- xtLogOffset dest_log_offset= 0;
+ xtLogID dest_log_id = 0;
+ xtLogOffset dest_log_offset = 0;
off_t garbage_count = 0;
memset(&cs, 0, sizeof(XTCompactorStateRec));
diff --git a/storage/pbxt/src/discover_xt.cc b/storage/pbxt/src/discover_xt.cc
index 09a2b09015e..7f7281d8c30 100644
--- a/storage/pbxt/src/discover_xt.cc
+++ b/storage/pbxt/src/discover_xt.cc
@@ -1622,8 +1622,11 @@ int xt_create_table_frm(handlerton *hton, THD* thd, const char *db, const char *
COLUMN_FORMAT_TYPE_FIXED,
#endif
NULL /*default_value*/, NULL /*on_update_value*/, &comment, NULL /*change*/,
- NULL /*interval_list*/, info->field_charset, 0 /*uint_geom_type*/,
- NULL /*vcol_info*/, NULL /* create options */))
+ NULL /*interval_list*/, info->field_charset, 0 /*uint_geom_type*/
+#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 50200
+ , NULL /*vcol_info*/, NULL /* create options */
+#endif
+ ))
#endif
goto error;
@@ -1655,8 +1658,17 @@ int xt_create_table_frm(handlerton *hton, THD* thd, const char *db, const char *
if (mysql_create_table_no_lock(thd, db, name, &create_info, &table_proto, &stmt->alter_info, 1, 0))
goto error;
#else
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ partition_info *part_info;
+
+ part_info = thd->work_part_info;
+ thd->work_part_info = NULL;
+#endif
if (mysql_create_table_no_lock(thd, db, name, &mylex.create_info, &mylex.alter_info, 1, 0))
goto error;
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ thd->work_part_info = part_info;
+#endif
#endif
noerror:
diff --git a/storage/pbxt/src/ha_pbxt.cc b/storage/pbxt/src/ha_pbxt.cc
index ba3aa756516..ef0ae582c07 100644
--- a/storage/pbxt/src/ha_pbxt.cc
+++ b/storage/pbxt/src/ha_pbxt.cc
@@ -1232,6 +1232,11 @@ static int pbxt_init(void *p)
THD *thd = NULL;
#ifndef DRIZZLED
+#if MYSQL_VERSION_ID < 50147
+ /* A hack which is no longer required after 5.1.46 */
+ extern myxt_mutex_t LOCK_plugin;
+#endif
+
/* {MYSQL QUIRK}
* I have to release this lock for PBXT recovery to
* work, because it needs to open .frm files.
@@ -1248,6 +1253,9 @@ static int pbxt_init(void *p)
* Only real problem, 2 threads try to load the same
* plugin at the same time.
*/
+#if MYSQL_VERSION_ID < 50147
+ myxt_mutex_unlock(&LOCK_plugin);
+#endif
#endif
/* Can't do this here yet, because I need a THD! */
@@ -1281,6 +1289,11 @@ static int pbxt_init(void *p)
if (thd)
myxt_destroy_thread(thd, FALSE);
+#ifndef DRIZZLED
+#if MYSQL_VERSION_ID < 50147
+ myxt_mutex_lock(&LOCK_plugin);
+#endif
+#endif
}
#endif
}
@@ -1941,8 +1954,13 @@ xtPublic int ha_pbxt::reopen()
* selectity of the indices, as soon as the number of rows
* exceeds 200 (see [**])
*/
+#ifdef XT_ROW_COUNT_CORRECTED
+ /* {CORRECTED-ROW-COUNT} */
+ pb_share->sh_recalc_selectivity = (pb_share->sh_table->tab_row_eof_id - 1 - pb_share->sh_table->tab_row_fnum) < 150;
+#else
/* {FREE-ROWS-BAD} */
pb_share->sh_recalc_selectivity = (pb_share->sh_table->tab_row_eof_id - 1 /* - pb_share->sh_table->tab_row_fnum */) < 150;
+#endif
}
/* I am not doing this anymore because it was only required
@@ -2289,6 +2307,36 @@ void ha_pbxt::internal_close(THD *thd, struct XTThread *self)
*/
if (!thd || thd_sql_command(thd) == SQLCOM_FLUSH) // FLUSH TABLES
xt_sync_flush_table(self, ot);
+ else {
+ /* This change is a result of a problem mentioned by Arjen.
+ * REPAIR and ALTER lead to the following sequence:
+ * 1. tab -- copy --> tmp1
+ * 2. tab -- rename --> tmp2
+ * 3. tmp1 -- rename --> tab
+ * 4. delete tmp2
+ *
+ * PBXT flushes a table before rename.
+ * In the sequence above results in a table flush in step 3 which can
+ * take a very long time.
+ *
+ * The problem is, during this time frame we have only temp tables.
+ * A crash in this state leaves the database in a bad state.
+ *
+ * To reduce the time in this state, the flush needs to be done
+ * elsewhere. The code below causes the flish to occur after
+ * step 1:
+ */
+ switch (thd_sql_command(thd)) {
+ case SQLCOM_REPAIR:
+ case SQLCOM_RENAME_TABLE:
+ case SQLCOM_OPTIMIZE:
+ case SQLCOM_ANALYZE:
+ case SQLCOM_ALTER_TABLE:
+ case SQLCOM_CREATE_INDEX:
+ xt_sync_flush_table(self, ot);
+ break;
+ }
+ }
}
freer_(); // xt_db_return_table_to_pool(ot);
}
@@ -2349,9 +2397,15 @@ int ha_pbxt::open(const char *table_path, int XT_UNUSED(mode), uint XT_UNUSED(te
#else
xt_tab_load_row_pointers(self, pb_open_tab);
#endif
+
xt_ind_set_index_selectivity(pb_open_tab, self);
+#ifdef XT_ROW_COUNT_CORRECTED
+ /* {CORRECTED-ROW-COUNT} */
+ pb_share->sh_recalc_selectivity = (pb_share->sh_table->tab_row_eof_id - 1 - pb_share->sh_table->tab_row_fnum) < 150;
+#else
/* {FREE-ROWS-BAD} */
pb_share->sh_recalc_selectivity = (pb_share->sh_table->tab_row_eof_id - 1 /* - pb_share->sh_table->tab_row_fnum */) < 150;
+#endif
}
init_auto_increment(0);
@@ -3922,6 +3976,8 @@ int ha_pbxt::info(uint flag)
if ((ot = pb_open_tab)) {
if (flag & HA_STATUS_VARIABLE) {
+ register XTTableHPtr tab = ot->ot_table;
+
/* {FREE-ROWS-BAD}
* Free row count is not reliable, so ignore it.
* The problem is if tab_row_fnum > tab_row_eof_id - 1 then
@@ -3948,11 +4004,26 @@ int ha_pbxt::info(uint flag)
* the actual number of vectors. But it must assume that it has at
* least EXTRA_RECORDS vectors.
*/
- stats.deleted = /* ot->ot_table->tab_row_fnum */ 0;
- stats.records = (ha_rows) (ot->ot_table->tab_row_eof_id - 1 /* - stats.deleted */);
- stats.data_file_length = xt_rec_id_to_rec_offset(ot->ot_table, ot->ot_table->tab_rec_eof_id);
- stats.index_file_length = xt_ind_node_to_offset(ot->ot_table, ot->ot_table->tab_ind_eof);
- stats.delete_length = ot->ot_table->tab_rec_fnum * ot->ot_rec_size;
+#ifdef XT_ROW_COUNT_CORRECTED
+ if (tab->tab_row_eof_id <= tab->tab_row_fnum ||
+ (!tab->tab_row_free_id && tab->tab_row_fnum))
+ xt_tab_check_free_lists(NULL, ot, false, true);
+ stats.records = (ha_rows) tab->tab_row_eof_id - 1;
+ if (stats.records >= tab->tab_row_fnum) {
+ stats.deleted = tab->tab_row_fnum;
+ stats.records -= stats.deleted;
+ }
+ else {
+ stats.deleted = 0;
+ stats.records = 2;
+ }
+#else
+ stats.deleted = /* tab->tab_row_fnum */ 0;
+ stats.records = (ha_rows) (tab->tab_row_eof_id - 1 /* - stats.deleted */);
+#endif
+ stats.data_file_length = xt_rec_id_to_rec_offset(tab, tab->tab_rec_eof_id);
+ stats.index_file_length = xt_ind_node_to_offset(tab, tab->tab_ind_eof);
+ stats.delete_length = tab->tab_rec_fnum * ot->ot_rec_size;
//check_time = info.check_time;
stats.mean_rec_length = (ulong) ot->ot_rec_size;
}
@@ -4577,13 +4648,24 @@ xtPublic int ha_pbxt::external_lock(THD *thd, int lock_type)
}
if (pb_share->sh_recalc_selectivity) {
+#ifdef XT_ROW_COUNT_CORRECTED
+ /* {CORRECTED-ROW-COUNT} */
+ if ((pb_share->sh_table->tab_row_eof_id - 1 - pb_share->sh_table->tab_row_fnum) >= 200)
+#else
/* {FREE-ROWS-BAD} */
- if ((pb_share->sh_table->tab_row_eof_id - 1 /* - pb_share->sh_table->tab_row_fnum */) >= 200) {
+ if ((pb_share->sh_table->tab_row_eof_id - 1 /* - pb_share->sh_table->tab_row_fnum */) >= 200)
+#endif
+ {
/* [**] */
pb_share->sh_recalc_selectivity = FALSE;
xt_ind_set_index_selectivity(pb_open_tab, self);
+#ifdef XT_ROW_COUNT_CORRECTED
+ /* {CORRECTED-ROW-COUNT} */
+ pb_share->sh_recalc_selectivity = (pb_share->sh_table->tab_row_eof_id - 1 - pb_share->sh_table->tab_row_fnum) < 150;
+#else
/* {FREE-ROWS-BAD} */
pb_share->sh_recalc_selectivity = (pb_share->sh_table->tab_row_eof_id - 1 /* - pb_share->sh_table->tab_row_fnum */) < 150;
+#endif
}
}
}
@@ -4631,6 +4713,17 @@ xtPublic int ha_pbxt::external_lock(THD *thd, int lock_type)
goto complete;
}
cont_(a);
+
+ /* Occurs if you do:
+ * truncate table t1;
+ * truncate table t1;
+ */
+ if (!pb_open_tab) {
+ if ((err = reopen())) {
+ pb_ex_in_use = 0;
+ goto complete;
+ }
+ }
}
else {
pb_ex_in_use = 1;
@@ -6069,7 +6162,7 @@ mysql_declare_plugin(pbxt)
drizzle_declare_plugin_end;
#else
mysql_declare_plugin_end;
-#ifdef MARIADB_BASE_VERSION
+#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 50200
maria_declare_plugin(pbxt)
{ /* PBXT */
MYSQL_STORAGE_ENGINE_PLUGIN,
@@ -6083,7 +6176,7 @@ maria_declare_plugin(pbxt)
0x0001 /* 0.1 */,
NULL, /* status variables */
pbxt_system_variables, /* system variables */
- "1.0.09g RC3", /* string version */
+ "1.0.11-7 Pre-GA", /* string version */
MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
},
{ /* PBXT_STATISTICS */
@@ -6098,7 +6191,7 @@ maria_declare_plugin(pbxt)
0x0005,
NULL, /* status variables */
NULL, /* system variables */
- "1.0.09g RC3", /* string version */
+ "1.0.11-7 Pre-GA", /* string version */
MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
}
maria_declare_plugin_end;
diff --git a/storage/pbxt/src/index_xt.cc b/storage/pbxt/src/index_xt.cc
index c8995fe253c..f6c4b4d8aa3 100644
--- a/storage/pbxt/src/index_xt.cc
+++ b/storage/pbxt/src/index_xt.cc
@@ -272,10 +272,17 @@ static xtBool idx_new_branch(XTOpenTablePtr ot, XTIndexPtr ind, xtIndexNodeID *a
}
if ((XT_NODE_ID(wrote_pos) = XT_NODE_ID(tab->tab_ind_free))) {
+ xtIndexNodeID next_node;
+
/* Use the block on the free list: */
- if (!xt_ind_read_bytes(ot, ind, wrote_pos, sizeof(XTIndFreeBlockRec), (xtWord1 *) &free_block))
+ if (!xt_ind_read_bytes(ot, NULL, wrote_pos, sizeof(XTIndFreeBlockRec), (xtWord1 *) &free_block))
+ goto failed;
+ XT_NODE_ID(next_node) = (xtIndexNodeID) XT_GET_DISK_8(free_block.if_next_block_8);
+ if (XT_NODE_ID(next_node) >= XT_NODE_ID(tab->tab_ind_eof)) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, tab->tab_name);
goto failed;
- XT_NODE_ID(tab->tab_ind_free) = (xtIndexNodeID) XT_GET_DISK_8(free_block.if_next_block_8);
+ }
+ XT_NODE_ID(tab->tab_ind_free) = XT_NODE_ID(next_node);
xt_unlock_mutex_ns(&tab->tab_ind_lock);
*address = wrote_pos;
TRACK_BLOCK_ALLOC(wrote_pos);
@@ -1415,30 +1422,45 @@ static xtBool idx_replace_node_key(XTOpenTablePtr ot, XTIndexPtr ind, IdxStackIt
if (idx_is_item_deleted(iref.ir_branch, &item->i_pos))
iref.ir_block->cp_del_count--;
}
- memmove(&iref.ir_branch->tb_data[item->i_pos.i_item_offset + item_size],
- &iref.ir_branch->tb_data[item->i_pos.i_item_offset + item->i_pos.i_item_size],
- item->i_pos.i_total_size - item->i_pos.i_item_offset - item->i_pos.i_item_size);
- memcpy(&iref.ir_branch->tb_data[item->i_pos.i_item_offset],
- item_buf, item_size);
- if (ind->mi_lazy_delete) {
- if (idx_is_item_deleted(iref.ir_branch, &item->i_pos))
- iref.ir_block->cp_del_count++;
- }
- item->i_pos.i_total_size = item->i_pos.i_total_size + item_size - item->i_pos.i_item_size;
- XT_SET_DISK_2(iref.ir_branch->tb_size_2, XT_MAKE_NODE_SIZE(item->i_pos.i_total_size));
- IDX_TRACE("%d-> %x\n", (int) XT_NODE_ID(current), (int) XT_GET_DISK_2(iref.ir_branch->tb_size_2));
- iref.ir_updated = TRUE;
+
+ if (item->i_pos.i_total_size + item_size - item->i_pos.i_item_size <= XT_INDEX_PAGE_DATA_SIZE) {
+ /* The new item is larger than the old, this can result
+ * in overflow of the node!
+ */
+ memmove(&iref.ir_branch->tb_data[item->i_pos.i_item_offset + item_size],
+ &iref.ir_branch->tb_data[item->i_pos.i_item_offset + item->i_pos.i_item_size],
+ item->i_pos.i_total_size - item->i_pos.i_item_offset - item->i_pos.i_item_size);
+ memcpy(&iref.ir_branch->tb_data[item->i_pos.i_item_offset],
+ item_buf, item_size);
+ if (ind->mi_lazy_delete) {
+ if (idx_is_item_deleted(iref.ir_branch, &item->i_pos))
+ iref.ir_block->cp_del_count++;
+ }
+ item->i_pos.i_total_size = item->i_pos.i_total_size + item_size - item->i_pos.i_item_size;
+ XT_SET_DISK_2(iref.ir_branch->tb_size_2, XT_MAKE_NODE_SIZE(item->i_pos.i_total_size));
+ IDX_TRACE("%d-> %x\n", (int) XT_NODE_ID(current), (int) XT_GET_DISK_2(iref.ir_branch->tb_size_2));
+ iref.ir_updated = TRUE;
#ifdef DEBUG
- if (ind->mi_lazy_delete)
ASSERT_NS(item->i_pos.i_total_size <= XT_INDEX_PAGE_DATA_SIZE);
#endif
- if (item->i_pos.i_total_size <= XT_INDEX_PAGE_DATA_SIZE)
return xt_ind_release(ot, ind, XT_UNLOCK_W_UPDATE, &iref);
+ }
/* The node has overflowed!! */
result.sr_item = item->i_pos;
+ memcpy(ot->ot_ind_wbuf.tb_data, iref.ir_branch->tb_data, item->i_pos.i_item_offset); // First part of the buffer
+ memcpy(&ot->ot_ind_wbuf.tb_data[item->i_pos.i_item_offset], item_buf, item_size); // The new item
+ memcpy(&ot->ot_ind_wbuf.tb_data[item->i_pos.i_item_offset + item_size],
+ &iref.ir_branch->tb_data[item->i_pos.i_item_offset + item->i_pos.i_item_size],
+ item->i_pos.i_total_size - item->i_pos.i_item_offset - item->i_pos.i_item_size);
+ item->i_pos.i_total_size += item_size - item->i_pos.i_item_size;
+ item->i_pos.i_item_size = item_size;
+ XT_SET_DISK_2(ot->ot_ind_wbuf.tb_size_2, XT_MAKE_LEAF_SIZE(item->i_pos.i_total_size));
+ IDX_TRACE("%d-> %x\n", (int) XT_NODE_ID(current), (int) XT_GET_DISK_2(ot->ot_ind_wbuf.tb_size_2));
+ ASSERT_NS(item->i_pos.i_total_size > XT_INDEX_PAGE_DATA_SIZE && item->i_pos.i_total_size <= XT_INDEX_PAGE_DATA_SIZE*2);
+
/* Adjust the stack (we want the parents of the delete node): */
for (;;) {
if (idx_pop(stack) == item)
@@ -1448,7 +1470,7 @@ static xtBool idx_replace_node_key(XTOpenTablePtr ot, XTIndexPtr ind, IdxStackIt
/* We assume that value can be overwritten (which is the case) */
key_value.sv_flags = XT_SEARCH_WHOLE_KEY;
key_value.sv_key = key_buf;
- if (!idx_get_middle_branch_item(ot, ind, iref.ir_branch, &key_value, &result))
+ if (!idx_get_middle_branch_item(ot, ind, &ot->ot_ind_wbuf, &key_value, &result))
goto failed_1;
if (!idx_new_branch(ot, ind, &new_branch))
@@ -1456,7 +1478,6 @@ static xtBool idx_replace_node_key(XTOpenTablePtr ot, XTIndexPtr ind, IdxStackIt
/* Split the node: */
new_size = result.sr_item.i_total_size - result.sr_item.i_item_offset - result.sr_item.i_item_size;
- // TODO: Are 2 buffers now required?
new_branch_ptr = (XTIdxBranchDPtr) &ot->ot_ind_wbuf.tb_data[XT_INDEX_PAGE_DATA_SIZE];
memmove(new_branch_ptr->tb_data, &iref.ir_branch->tb_data[result.sr_item.i_item_offset + result.sr_item.i_item_size], new_size);
@@ -1466,10 +1487,10 @@ static xtBool idx_replace_node_key(XTOpenTablePtr ot, XTIndexPtr ind, IdxStackIt
goto failed_2;
/* Change the size of the old branch: */
- XT_SET_DISK_2(iref.ir_branch->tb_size_2, XT_MAKE_NODE_SIZE(result.sr_item.i_item_offset));
- IDX_TRACE("%d-> %x\n", (int) XT_NODE_ID(current), (int) XT_GET_DISK_2(iref.ir_branch->tb_size_2));
+ XT_SET_DISK_2(ot->ot_ind_wbuf.tb_size_2, XT_MAKE_NODE_SIZE(result.sr_item.i_item_offset));
+ IDX_TRACE("%d-> %x\n", (int) XT_NODE_ID(current), (int) XT_GET_DISK_2(ot->ot_ind_wbuf.tb_size_2));
+ memcpy(iref.ir_branch, &ot->ot_ind_wbuf, offsetof(XTIdxBranchDRec, tb_data) + result.sr_item.i_item_offset);
iref.ir_updated = TRUE;
-
xt_ind_release(ot, ind, XT_UNLOCK_W_UPDATE, &iref);
/* Insert the new branch into the parent node, using the new middle key value: */
@@ -2071,6 +2092,11 @@ xtPublic xtBool xt_idx_insert(XTOpenTablePtr ot, XTIndexPtr ind, xtRowID row_id,
if (!idx_new_branch(ot, ind, &new_branch))
goto failed_1;
+ if (XT_NODE_ID(current) == XT_NODE_ID(new_branch)) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ goto failed_1;
+ }
+
/* Copy and write the rest of the data to the new node: */
new_size = result.sr_item.i_total_size - result.sr_item.i_item_offset - result.sr_item.i_item_size;
new_branch_ptr = (XTIdxBranchDPtr) &ot->ot_ind_wbuf.tb_data[XT_INDEX_PAGE_DATA_SIZE];
@@ -2723,6 +2749,10 @@ xtPublic xtBool xt_idx_search(XTOpenTablePtr ot, XTIndexPtr ind, register XTIdxS
#endif
ASSERT_NS(iref.ir_xlock == 2);
ASSERT_NS(iref.ir_updated == 2);
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
failed:
@@ -2874,6 +2904,10 @@ xtPublic xtBool xt_idx_search_prev(XTOpenTablePtr ot, XTIndexPtr ind, register X
//idx_check_index(ot, ind, TRUE);
//idx_check_on_key(ot);
#endif
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
failed:
@@ -2964,6 +2998,10 @@ xtPublic xtBool xt_idx_next(register XTOpenTablePtr ot, register XTIndexPtr ind,
if (!(XT_NODE_ID(current) = XT_NODE_ID(ind->mi_root))) {
XT_INDEX_UNLOCK(ind, ot);
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
}
@@ -3071,6 +3109,10 @@ xtPublic xtBool xt_idx_next(register XTOpenTablePtr ot, register XTIndexPtr ind,
ot->ot_curr_rec_id = 0;
ot->ot_curr_row_id = 0;
XT_INDEX_UNLOCK(ind, ot);
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
}
@@ -3112,6 +3154,10 @@ xtPublic xtBool xt_idx_next(register XTOpenTablePtr ot, register XTIndexPtr ind,
ot->ot_curr_row_id = result.sr_row_id;
ot->ot_ind_state = result.sr_item;
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
failed:
@@ -3178,6 +3224,10 @@ xtPublic xtBool xt_idx_prev(register XTOpenTablePtr ot, register XTIndexPtr ind,
if (!(XT_NODE_ID(current) = XT_NODE_ID(ind->mi_root))) {
XT_INDEX_UNLOCK(ind, ot);
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
}
@@ -3274,6 +3324,10 @@ xtPublic xtBool xt_idx_prev(register XTOpenTablePtr ot, register XTIndexPtr ind,
ot->ot_curr_row_id = 0;
XT_INDEX_UNLOCK(ind, ot);
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
unlock_check_on_key:
@@ -3302,6 +3356,10 @@ xtPublic xtBool xt_idx_prev(register XTOpenTablePtr ot, register XTIndexPtr ind,
ot->ot_curr_rec_id = result.sr_rec_id;
ot->ot_curr_row_id = result.sr_row_id;
ot->ot_ind_state = result.sr_item;
+ if (ind->mi_key_corrupted) {
+ xt_register_taberr(XT_REG_CONTEXT, XT_ERR_INDEX_CORRUPTED, ot->ot_table->tab_name);
+ return FAILED;
+ }
return OK;
failed:
@@ -3648,7 +3706,7 @@ xtPublic void xt_check_indices(XTOpenTablePtr ot)
track_block_exists(current);
#endif
printf("%d ", (int) XT_NODE_ID(current));
- if (!xt_ind_read_bytes(ot, *ind, current, sizeof(XTIndFreeBlockRec), (xtWord1 *) &free_block)) {
+ if (!xt_ind_read_bytes(ot, NULL, current, sizeof(XTIndFreeBlockRec), (xtWord1 *) &free_block)) {
xt_log_and_clear_exception_ns();
break;
}
@@ -4141,11 +4199,18 @@ void XTIndexLogPool::ilp_init(struct XTThread *self, struct XTDatabase *db, size
if (!ilp_open_log(&il, log_id, FALSE, self))
goto failed;
if (il->il_tab_id && il->il_log_eof) {
+ char table_name[XT_IDENTIFIER_NAME_SIZE*3+3];
+
if (!il->il_open_table(&ot))
goto failed;
if (ot) {
- if (!il->il_apply_log(ot))
- goto failed;
+ xt_tab_make_table_name(ot->ot_table, table_name, sizeof(table_name));
+ xt_logf(XT_NT_INFO, "PBXT: Recovering index, table: %s, bytes to read: %llu\n", table_name, (u_llong) il->il_log_eof);
+ if (!il->il_apply_log(ot)) {
+ /* If recovery of an index fails, then it is corrupt! */
+ xt_tab_disable_index(ot->ot_table, XT_INDEX_CORRUPTED);
+ xt_log_and_clear_exception_ns();
+ }
ot->ot_thread = self;
il->il_close_table(ot);
}
@@ -4468,8 +4533,7 @@ xtBool XTIndexLog::il_apply_log(struct XTOpenTable *ot)
/* Corrupt log?! */
if (il_buffer_len < req_size) {
xt_register_ixterr(XT_REG_CONTEXT, XT_ERR_INDEX_LOG_CORRUPT, xt_file_path(il_of));
- xt_log_and_clear_exception_ns();
- return OK;
+ return FAILED;
}
if (!xt_pread_file(il_of, offset, il_buffer_len, il_buffer_len, il_buffer, NULL, &ot->ot_thread->st_statistics.st_ilog, ot->ot_thread))
return FAILED;
@@ -4548,8 +4612,7 @@ xtBool XTIndexLog::il_apply_log(struct XTOpenTable *ot)
/* Corrupt log?! */
if (il_buffer_len < req_size) {
xt_register_ixterr(XT_REG_CONTEXT, XT_ERR_INDEX_LOG_CORRUPT, xt_file_path(il_of));
- xt_log_and_clear_exception_ns();
- return OK;
+ return FAILED;
}
if (!xt_pread_file(il_of, offset, il_buffer_len, il_buffer_len, il_buffer, NULL, &ot->ot_thread->st_statistics.st_ilog, ot->ot_thread))
return FAILED;
@@ -4597,8 +4660,7 @@ xtBool XTIndexLog::il_apply_log(struct XTOpenTable *ot)
break;
default:
xt_register_ixterr(XT_REG_CONTEXT, XT_ERR_INDEX_LOG_CORRUPT, xt_file_path(il_of));
- xt_log_and_clear_exception_ns();
- return OK;
+ return FAILED;
}
}
diff --git a/storage/pbxt/src/index_xt.h b/storage/pbxt/src/index_xt.h
index 52f8f32dd33..a56e7b3cdb7 100644
--- a/storage/pbxt/src/index_xt.h
+++ b/storage/pbxt/src/index_xt.h
@@ -312,7 +312,7 @@ typedef struct XTIndex {
u_int mi_flags;
u_int mi_key_size;
u_int mi_max_items; /* The maximum number of items that can fit in a leaf node. */
- xtBool mi_low_byte_first;
+ xtBool mi_key_corrupted; /* Set to TRUE if a currupted index key is detected. */
xtBool mi_fix_key;
xtBool mi_lazy_delete; /* TRUE if index entries are "lazy deleted". */
u_int mi_single_type; /* Used when the index contains a single field. */
diff --git a/storage/pbxt/src/myxt_xt.cc b/storage/pbxt/src/myxt_xt.cc
index 51490fc00f5..410bf2d2f3c 100644
--- a/storage/pbxt/src/myxt_xt.cc
+++ b/storage/pbxt/src/myxt_xt.cc
@@ -1088,7 +1088,10 @@ xtPublic u_int myxt_get_key_length(XTIndexPtr ind, xtWord1 *key_buf)
}
end:
- return (xtWord1 *) key_data - key_buf;
+ u_int ilen = (xtWord1 *) key_data - key_buf;
+ if (ilen > XT_INDEX_MAX_KEY_SIZE)
+ ind->mi_key_corrupted = TRUE;
+ return ilen;
}
/* Derived from ha_key_cmp */
@@ -2183,7 +2186,8 @@ static XTIndexPtr my_create_index(XTThreadPtr self, TABLE *table_arg, u_int idx,
xt_spinlock_init_with_autoname(self, &ind->mi_dirty_lock);
ind->mi_index_no = idx;
ind->mi_flags = (index->flags & (HA_NOSAME | HA_NULL_ARE_EQUAL | HA_UNIQUE_CHECK));
- ind->mi_low_byte_first = TS(table_arg)->db_low_byte_first;
+ //ind->mi_low_byte_first = TS(table_arg)->db_low_byte_first;
+ ind->mi_key_corrupted = FALSE;
ind->mi_fix_key = TRUE;
ind->mi_select_total = 0;
ind->mi_subset_of = 0;
diff --git a/storage/pbxt/src/myxt_xt.h b/storage/pbxt/src/myxt_xt.h
index 62caf1c3b61..3898c8e30c6 100644
--- a/storage/pbxt/src/myxt_xt.h
+++ b/storage/pbxt/src/myxt_xt.h
@@ -69,17 +69,17 @@ void myxt_free_dictionary(XTThreadPtr self, XTDictionary *dic);
void myxt_move_dictionary(XTDictionaryPtr dic, XTDictionaryPtr source_dic);
XTDDTable *myxt_create_table_from_table(XTThreadPtr self, STRUCT_TABLE *my_tab);
-void myxt_static_convert_identifier(XTThreadPtr self, const struct charset_info_st *cs, char *from, char *to, size_t to_len);
-char *myxt_convert_identifier(XTThreadPtr self, const struct charset_info_st *cs, char *from);
+void myxt_static_convert_identifier(XTThreadPtr self, MX_CONST_CHARSET_INFO *cs, char *from, char *to, size_t to_len);
+char *myxt_convert_identifier(XTThreadPtr self, MX_CONST_CHARSET_INFO *cs, char *from);
void myxt_static_convert_table_name(XTThreadPtr self, char *from, char *to, size_t to_len);
void myxt_static_convert_file_name(char *from, char *to, size_t to_len);
char *myxt_convert_table_name(XTThreadPtr self, char *from);
int myxt_strcasecmp(char * a, char *b);
-int myxt_isspace(const struct charset_info_st *cs, char a);
-int myxt_ispunct(const struct charset_info_st *cs, char a);
-int myxt_isdigit(const struct charset_info_st *cs, char a);
+int myxt_isspace(MX_CONST_CHARSET_INFO *cs, char a);
+int myxt_ispunct(MX_CONST_CHARSET_INFO *cs, char a);
+int myxt_isdigit(MX_CONST_CHARSET_INFO *cs, char a);
-const struct charset_info_st *myxt_getcharset(bool convert);
+MX_CONST_CHARSET_INFO *myxt_getcharset(bool convert);
void *myxt_create_thread();
void myxt_destroy_thread(void *thread, xtBool end_threads);
diff --git a/storage/pbxt/src/restart_xt.cc b/storage/pbxt/src/restart_xt.cc
index b0c8f2854ae..93720f2b113 100644
--- a/storage/pbxt/src/restart_xt.cc
+++ b/storage/pbxt/src/restart_xt.cc
@@ -1359,6 +1359,57 @@ static xtBool xres_sync_operations(XTThreadPtr self, XTDatabaseHPtr db, XTWriter
return op_synced;
}
+#ifdef XT_CORRECT_TABLE_FREE_COUNT
+#define CORRECT_COUNT TRUE
+#else
+#define CORRECT_COUNT FALSE
+#endif
+#ifdef XT_CHECK_RECORD_FREE_COUNT
+#define CHECK_RECS TRUE
+#else
+#define CHECK_RECS FALSE
+#endif
+#if defined(XT_CHECK_RECORD_FREE_COUNT) || defined(XT_CHECK_ROW_FREE_COUNT)
+#define RECOVER_FREE_COUNTS
+#endif
+
+#ifdef RECOVER_FREE_COUNTS
+/* {CORRECTED-ROW-COUNT}
+ * This error can be repeated by crashing the server during
+ * high activitity, after flush table writes the table header
+ *
+ * On recovery, the free count "from the future" is used as
+ * the starting point for subsequent allocation and frees.
+ * The count is wrong after that point.
+ *
+ * The recovery of the count only works correctly if a
+ * checkpoint is complete successfully after that table
+ * header is flushed. Basically the writing of the table
+ * header should be synchronsized with the writing of the
+ * end of the checkpoint.
+ *
+ * Another solution would be to log the count, along with
+ * the allocate and free commannds.
+ *
+ * The 3rd solution is the one used here. The count is corrected
+ * after recovery.
+ */
+static void xres_recover_table_free_counts(XTThreadPtr self, XTDatabaseHPtr db, XTWriterStatePtr ws)
+{
+ u_int edx;
+ XTTableEntryPtr te_ptr;
+ XTTableHPtr tab;
+
+ xt_enum_tables_init(&edx);
+ while ((te_ptr = xt_enum_tables_next(self, db, &edx))) {
+ if ((tab = te_ptr->te_table)) {
+ if (xres_open_table(self, ws, te_ptr->te_tab_id))
+ xt_tab_check_free_lists(self, ws->ws_ot, CHECK_RECS, CORRECT_COUNT);
+ }
+ }
+}
+#endif
+
/*
* Operations from the log are applied in sequence order.
* If the operations are out of sequence, they are buffered
@@ -2175,6 +2226,13 @@ xtBool XTXactRestart::xres_restart(XTThreadPtr self, xtLogID *log_id, xtLogOffse
/* This is true because if no transaction was placed in RAM then
* the next transaction in RAM will have the next ID: */
db->db_xn_min_ram_id = db->db_xn_curr_id + 1;
+
+#ifdef RECOVER_FREE_COUNTS
+ if (xres_cp_log_id != *log_id || xres_cp_log_offset != *log_offset) {
+ /* Recovery took place, correct the row count! */
+ xres_recover_table_free_counts(self, db, &ws);
+ }
+#endif
}
failed:
diff --git a/storage/pbxt/src/strutil_xt.cc b/storage/pbxt/src/strutil_xt.cc
index 02132fbb06b..8183034a204 100644
--- a/storage/pbxt/src/strutil_xt.cc
+++ b/storage/pbxt/src/strutil_xt.cc
@@ -380,7 +380,7 @@ xtPublic void xt_int8_to_byte_size(xtInt8 value, char *string)
/* Version number must also be set in configure.in! */
xtPublic c_char *xt_get_version(void)
{
- return "1.0.11 Pre-GA";
+ return "1.0.11-7 Pre-GA";
}
/* Copy and URL decode! */
diff --git a/storage/pbxt/src/table_xt.cc b/storage/pbxt/src/table_xt.cc
index b01f4404ce3..2d93f161ac9 100644
--- a/storage/pbxt/src/table_xt.cc
+++ b/storage/pbxt/src/table_xt.cc
@@ -80,6 +80,65 @@
/*
* -----------------------------------------------------------------------
+ * Handle Error Detected in a Table
+ */
+
+struct XTTableError {
+ xtTableID ter_tab_id;
+ xtRecordID ter_rec_id;
+};
+
+static int tab_comp_tab_error(XTThreadPtr XT_UNUSED(self), register const void *XT_UNUSED(thunk), register const void *a, register const void *b)
+{
+ XTTableError *ter_a = ((XTTableError *) a);
+ XTTableError *ter_b = (XTTableError *) b;
+
+ if (ter_a->ter_tab_id < ter_b->ter_tab_id)
+ return -1;
+ if (ter_a->ter_tab_id == ter_b->ter_tab_id) {
+ if (ter_a->ter_rec_id < ter_b->ter_rec_id)
+ return -1;
+ if (ter_a->ter_rec_id == ter_b->ter_rec_id)
+ return 0;
+ return 1;
+ }
+ return 1;
+}
+
+static xtBool tab_record_corrupt(XTOpenTablePtr ot, xtRowID row_id, xtRecordID rec_id, bool not_valid, int where)
+{
+ XTTableHPtr tab = ot->ot_table;
+ XTDatabaseHPtr db = tab->tab_db;
+ XTTableError ter;
+ XTTableError *ter_ptr;
+
+ ter.ter_tab_id = tab->tab_id;
+ ter.ter_rec_id = rec_id;
+
+ xt_sl_lock_ns(db->db_error_list, ot->ot_thread);
+ if (!(ter_ptr = (XTTableError *) xt_sl_find(NULL, db->db_error_list, &ter))) {
+ xtBool ok;
+ char table_name[XT_IDENTIFIER_NAME_SIZE*3+3];
+
+ ok = xt_sl_insert(NULL, db->db_error_list, &ter, &ter);
+ xt_sl_unlock_ns(db->db_error_list);
+ if (!ok)
+ return FAILED;
+ xt_tab_set_table_repair_pending(tab);
+ xt_tab_make_table_name(tab, table_name, sizeof(table_name));
+ xt_logf(XT_NT_ERROR, "#%d Table %s: row %llu, record %llu, is %s, REPAIR TABLE required.\n", where,
+ table_name,
+ (u_llong) row_id,
+ (u_llong) rec_id,
+ not_valid ? "not valid" : "free");
+ }
+ else
+ xt_sl_unlock_ns(db->db_error_list);
+ return OK;
+}
+
+/*
+ * -----------------------------------------------------------------------
* Compare paths:
*/
@@ -425,6 +484,7 @@ xtPublic void xt_tab_init_db(XTThreadPtr self, XTDatabaseHPtr db)
db->db_tables = xt_new_hashtable(self, tab_list_comp, tab_list_hash, tab_list_free, TRUE, TRUE);
db->db_table_by_id = xt_new_sortedlist(self, sizeof(XTTableEntryRec), 20, 20, tab_comp_by_id, db, tab_free_by_id, FALSE, FALSE);
db->db_table_paths = xt_new_sortedlist(self, sizeof(XTTablePathPtr), 20, 20, tab_comp_path, db, tab_free_path, FALSE, FALSE);
+ db->db_error_list = xt_new_sortedlist(self, sizeof(XTTableError), 20, 20, tab_comp_tab_error, db, NULL, TRUE, FALSE);
if (db->db_multi_path) {
XTOpenFilePtr of;
@@ -649,6 +709,10 @@ xtPublic void xt_tab_exit_db(XTThreadPtr self, XTDatabaseHPtr db)
xt_free_sortedlist(self, db->db_table_paths);
db->db_table_paths = NULL;
}
+ if (db->db_error_list) {
+ xt_free_sortedlist(self, db->db_error_list);
+ db->db_error_list = NULL;
+ }
}
static void tab_check_table(XTThreadPtr self, XTTableHPtr XT_UNUSED(tab))
@@ -1713,6 +1777,116 @@ xtPublic void xt_drop_table(XTThreadPtr self, XTPathStrPtr tab_name, xtBool drop
exit_();
}
+xtPublic void xt_tab_check_free_lists(XTThreadPtr self, XTOpenTablePtr ot, bool check_recs, bool correct_count)
+{
+ char table_name[XT_IDENTIFIER_NAME_SIZE*3+3];
+ register XTTableHPtr tab = ot->ot_table;
+ xtRowID prev_row_id;
+ xtRowID row_id;
+ xtRefID next_row_id;
+ u_llong free_count;
+
+ xt_tab_make_table_name(tab, table_name, sizeof(table_name));
+ if (check_recs) {
+ xtRecordID prev_rec_id;
+ xtRecordID rec_id;
+ XTTabRecExtDRec rec_buf;
+
+ xt_lock_mutex_ns(&tab->tab_rec_lock);
+ /* Checking the free list: */
+ prev_rec_id = 0;
+ free_count = 0;
+ rec_id = tab->tab_rec_free_id;
+ while (rec_id) {
+ if (rec_id >= tab->tab_rec_eof_id) {
+ xt_logf(XT_NT_ERROR, "Table %s: invalid reference on free list: %llu, ", table_name, (u_llong) rec_id);
+ if (prev_rec_id)
+ xt_logf(XT_NT_ERROR, "reference by: %llu\n", (u_llong) prev_rec_id);
+ else
+ xt_logf(XT_NT_ERROR, "reference by list head pointer\n");
+ xt_tab_set_table_repair_pending(tab);
+ break;
+ }
+ if (!xt_tab_get_rec_data(ot, rec_id, XT_REC_FIX_HEADER_SIZE, (xtWord1 *) &rec_buf)) {
+ if (self)
+ xt_throw(self);
+ else
+ xt_log_and_clear_warning(ot->ot_thread);
+ break;
+ }
+ if ((rec_buf.tr_rec_type_1 & XT_TAB_STATUS_MASK) != XT_TAB_STATUS_FREED)
+ xt_logf(XT_NT_INFO, "Table %s: record, %llu, on free list is not free\n", table_name, (u_llong) rec_id);
+ free_count++;
+ prev_rec_id = rec_id;
+ rec_id = XT_GET_DISK_4(rec_buf.tr_prev_rec_id_4);
+ }
+ if (free_count != tab->tab_rec_fnum) {
+ if (correct_count) {
+ tab->tab_rec_fnum = free_count;
+ tab->tab_head_rec_fnum = free_count;
+ tab->tab_flush_pending = TRUE;
+ xt_logf(XT_NT_INFO, "Table %s: free record count (%llu) has been set to the number of records on the list: %llu\n", table_name, (u_llong) tab->tab_rec_fnum, (u_llong) free_count);
+ }
+ else
+ xt_logf(XT_NT_INFO, "Table %s: free record count (%llu) differs from the number of records on the list: %llu\n", table_name, (u_llong) tab->tab_rec_fnum, (u_llong) free_count);
+ }
+ xt_unlock_mutex_ns(&tab->tab_rec_lock);
+ }
+
+ /* Check the row free list: */
+ xt_lock_mutex_ns(&tab->tab_row_lock);
+
+ prev_row_id = 0;
+ free_count = 0;
+ row_id = tab->tab_row_free_id;
+ while (row_id) {
+ if (row_id >= tab->tab_row_eof_id) {
+ xt_logf(XT_NT_ERROR, "Table %s: invalid reference on free row: %llu, ", table_name, (u_llong) row_id);
+ if (prev_row_id)
+ xt_logf(XT_NT_ERROR, "reference by: %llu\n", (u_llong) prev_row_id);
+ else
+ xt_logf(XT_NT_ERROR, "reference by list head pointer\n");
+ xt_tab_set_table_repair_pending(tab);
+ break;
+ }
+ if (!tab->tab_rows.xt_tc_read_4(ot->ot_row_file, row_id, &next_row_id, ot->ot_thread)) {
+ if (self)
+ xt_throw(self);
+ else
+ xt_log_and_clear_warning(ot->ot_thread);
+ break;
+ }
+ free_count++;
+ prev_row_id = row_id;
+ row_id = next_row_id;
+ }
+ if (free_count != tab->tab_row_fnum) {
+ if (correct_count) {
+ /* tab_row_fnum is the current value, and tab_head_row_fnum is the value on
+ * disk. tab_head_row_fnum is set by the writer as the changes are applied
+ * to the database.
+ *
+ * This is the value then stored in the header of the file. This value
+ * is in sync with other changes to the file.
+ *
+ * So the fact that I am setting both value means this will not work at
+ * runtime, unless all changes have been applied by the writer.
+ *
+ * The correct way to do this at run time would be to add the change to the
+ * transaction log, so that it is applied by the writer.
+ */
+ tab->tab_row_fnum = free_count;
+ tab->tab_head_row_fnum = free_count;
+ tab->tab_flush_pending = TRUE;
+ xt_logf(XT_NT_INFO, "Table %s: free row count (%llu) has been set to the number of rows on the list: %llu\n", table_name, (u_llong) tab->tab_row_fnum, (u_llong) free_count);
+ }
+ else
+ xt_logf(XT_NT_INFO, "Table %s: free row count (%llu) differs from the number of rows on the list: %llu\n", table_name, (u_llong) tab->tab_row_fnum, (u_llong) free_count);
+ }
+
+ xt_unlock_mutex_ns(&tab->tab_row_lock);
+}
+
/*
* Record buffer size:
* -------------------
@@ -2010,7 +2184,7 @@ xtPublic void xt_check_table(XTThreadPtr self, XTOpenTablePtr ot)
prec_id = rec_id;
rec_id = XT_GET_DISK_4(rec_buf->tr_prev_rec_id_4);
}
- if (free_count2 < free_rec_count)
+ if (free_count2 != free_rec_count)
xt_logf(XT_INFO, "Table %s: not all free blocks (%llu) on free list: %llu\n", tab->tab_name, (u_llong) free_rec_count, (u_llong) free_count2);
freer_(); // xt_unlock_mutex_ns(&tab->tab_rec_lock);
@@ -2042,6 +2216,29 @@ xtPublic void xt_check_table(XTThreadPtr self, XTOpenTablePtr ot)
rec_id++;
}
+ prec_id = 0;
+ free_count2 = 0;
+ row_id = tab->tab_row_free_id;
+ while (row_id) {
+ if (row_id >= tab->tab_row_eof_id) {
+ xt_logf(XT_INFO, "Table %s: invalid reference on free row: %llu, ", tab->tab_name, (u_llong) row_id);
+ if (prec_id)
+ xt_logf(XT_INFO, "reference by: %llu\n", (u_llong) prec_id);
+ else
+ xt_logf(XT_INFO, "reference by list head pointer\n");
+ break;
+ }
+ if (!tab->tab_rows.xt_tc_read_4(ot->ot_row_file, row_id, &ref_id, self)) {
+ xt_log_and_clear_exception(self);
+ break;
+ }
+ free_count2++;
+ prec_id = row_id;
+ row_id = ref_id;
+ }
+ if (free_count2 != tab->tab_row_fnum)
+ xt_logf(XT_INFO, "Table %s: free row count (%llu) differs from the number of row on the list: %llu\n", tab->tab_name, (u_llong) tab->tab_row_fnum, (u_llong) free_count2);
+
freer_(); // xt_unlock_mutex(&tab->tab_row_lock);
#ifdef CHECK_INDEX_ON_CHECK_TABLE
@@ -3117,10 +3314,18 @@ static int tab_visible(register XTOpenTablePtr ot, XTTabRecHeadDPtr rec_head, xt
#endif
break;
case XT_XN_REREAD:
+ /* {RETRY-READ}
+ * TODO: This is not as "correct" as it could be.
+ * Such records should be considered to be aborted,
+ * and removed from the list.
+ */
if (invalid_rec != var_rec_id) {
invalid_rec = var_rec_id;
goto retry_3;
}
+ if (!tab_record_corrupt(ot, row_id, var_rec_id, true, 1))
+ goto failed;
+
/* Assume end of list. */
#ifdef XT_CRASH_DEBUG
/* Should not happen! */
@@ -3308,6 +3513,8 @@ xtPublic int xt_tab_visible(XTOpenTablePtr ot)
/* Avoid infinite loop: */
if (read_again) {
/* Should not happen! */
+ if (!tab_record_corrupt(ot, row_id, ot->ot_curr_rec_id, true, 2))
+ return XT_ERR;
#ifdef XT_CRASH_DEBUG
/* Generate a core dump! */
xt_crash_me();
@@ -3364,6 +3571,8 @@ xtPublic int xt_tab_read_record(register XTOpenTablePtr ot, xtWord1 *buffer)
/* Avoid infinite loop: */
if (read_again) {
/* Should not happen! */
+ if (!tab_record_corrupt(ot, XT_GET_DISK_4(((XTTabRecHeadDPtr) ot->ot_row_rbuffer)->tr_row_id_4), ot->ot_curr_rec_id, true, 3))
+ return XT_ERR;
#ifdef XT_CRASH_DEBUG
/* Generate a core dump! */
xt_crash_me();
@@ -3580,6 +3789,7 @@ xtPublic xtBool xt_tab_free_row(XTOpenTablePtr ot, XTTableHPtr tab, xtRowID row_
}
tab->tab_row_free_id = row_id;
tab->tab_row_fnum++;
+ ASSERT_NS(tab->tab_row_fnum < tab->tab_row_eof_id);
xt_unlock_mutex_ns(&tab->tab_row_lock);
if (!xt_xlog_modify_table(tab->tab_id, XT_LOG_ENT_ROW_FREED, op_seq, 0, row_id, sizeof(XTTabRowRefDRec), (xtWord1 *) &free_row, ot->ot_thread))
@@ -3776,7 +3986,7 @@ xtPublic int xt_tab_remove_record(XTOpenTablePtr ot, xtRecordID rec_id, xtWord1
xt_lock_mutex_ns(&tab->tab_db->db_co_ext_lock);
if (!xt_tab_get_rec_data(ot, rec_id, XT_REC_EXT_HEADER_SIZE, ot->ot_row_rbuffer)) {
xt_unlock_mutex_ns(&tab->tab_db->db_co_ext_lock);
- return FAILED;
+ return XT_ERR;
}
xt_unlock_mutex_ns(&tab->tab_db->db_co_ext_lock);
@@ -3824,7 +4034,7 @@ xtPublic int xt_tab_remove_record(XTOpenTablePtr ot, xtRecordID rec_id, xtWord1
XT_SET_DISK_4(free_rec->rf_next_rec_id_4, prev_rec_id);
if (!xt_tab_put_rec_data(ot, rec_id, sizeof(XTTabRecFreeDRec), ot->ot_row_rbuffer, &op_seq)) {
xt_unlock_mutex_ns(&tab->tab_rec_lock);
- return FAILED;
+ return XT_ERR;
}
tab->tab_rec_free_id = rec_id;
ASSERT_NS(tab->tab_rec_free_id < tab->tab_rec_eof_id);
@@ -3832,7 +4042,9 @@ xtPublic int xt_tab_remove_record(XTOpenTablePtr ot, xtRecordID rec_id, xtWord1
xt_unlock_mutex_ns(&tab->tab_rec_lock);
free_rec->rf_rec_type_1 = old_rec_type;
- return xt_xlog_modify_table(tab->tab_id, XT_LOG_ENT_REC_REMOVED_BI, op_seq, (xtRecordID) new_rec_type, rec_id, rec_size, ot->ot_row_rbuffer, ot->ot_thread);
+ if (!xt_xlog_modify_table(tab->tab_id, XT_LOG_ENT_REC_REMOVED_BI, op_seq, (xtRecordID) new_rec_type, rec_id, rec_size, ot->ot_row_rbuffer, ot->ot_thread))
+ return XT_ERR;
+ return OK;
}
static xtRowID tab_new_row(XTOpenTablePtr ot, XTTableHPtr tab)
@@ -3851,6 +4063,7 @@ static xtRowID tab_new_row(XTOpenTablePtr ot, XTTableHPtr tab)
return 0;
}
tab->tab_row_free_id = next_row_id;
+ ASSERT_NS(tab->tab_row_fnum > 0);
tab->tab_row_fnum--;
}
else {
@@ -4170,9 +4383,12 @@ static xtBool tab_wait_for_rollback(XTOpenTablePtr ot, xtRowID row_id, xtRecordI
return FAILED;
if (XT_REC_IS_CLEAN(var_head.tr_rec_type_1))
goto locked;
- if (XT_REC_IS_FREE(var_head.tr_rec_type_1))
+ if (XT_REC_IS_FREE(var_head.tr_rec_type_1)) {
/* Should not happen: */
+ if (!tab_record_corrupt(ot, row_id, var_rec_id, false, 4))
+ return FAILED;
goto record_invalid;
+ }
xn_id = XT_GET_DISK_4(var_head.tr_xact_id_4);
switch (xt_xn_status(ot, xn_id, var_rec_id)) {
case XT_XN_VISIBLE:
@@ -4195,6 +4411,8 @@ static xtBool tab_wait_for_rollback(XTOpenTablePtr ot, xtRowID row_id, xtRecordI
XT_TAB_ROW_WRITE_LOCK(&tab->tab_row_rwlock[row_id % XT_ROW_RWLOCKS], ot->ot_thread);
goto retry;
case XT_XN_REREAD:
+ if (!tab_record_corrupt(ot, row_id, var_rec_id, true, 5))
+ return FAILED;
goto record_invalid;
}
var_rec_id = XT_GET_DISK_4(var_head.tr_prev_rec_id_4);
@@ -4206,9 +4424,10 @@ static xtBool tab_wait_for_rollback(XTOpenTablePtr ot, xtRowID row_id, xtRecordI
return FAILED;
record_invalid:
+ /* {RETRY-READ} */
/* Prevent an infinite loop due to a bad record: */
if (invalid_rec != var_rec_id) {
- var_rec_id = invalid_rec;
+ invalid_rec = var_rec_id;
goto retry;
}
/* The record is invalid, it will be "overwritten"... */
@@ -4280,9 +4499,12 @@ xtPublic int xt_tab_maybe_committed(XTOpenTablePtr ot, xtRecordID rec_id, xtXact
#ifdef TRACE_VARIATIONS_IN_DUP_CHECK
t_type="Re-read";
#endif
+ /* {RETRY-READ} */
/* Avoid infinite loop: */
if (invalid_rec == rec_id) {
/* Should not happen! */
+ if (!tab_record_corrupt(ot, XT_GET_DISK_4(rec_head.tr_row_id_4), rec_id, true, 6))
+ goto failed;
#ifdef XT_CRASH_DEBUG
/* Generate a core dump! */
xt_crash_me();
@@ -4327,7 +4549,7 @@ xtPublic int xt_tab_maybe_committed(XTOpenTablePtr ot, xtRecordID rec_id, xtXact
if (XT_REC_IS_FREE(rec_head.tr_rec_type_1)) {
/* Should not happen: */
if (invalid_rec != var_rec_id) {
- var_rec_id = invalid_rec;
+ invalid_rec = var_rec_id;
goto retry;
}
/* Assume end of list. */
@@ -4364,11 +4586,14 @@ xtPublic int xt_tab_maybe_committed(XTOpenTablePtr ot, xtRecordID rec_id, xtXact
}
break;
case XT_XN_REREAD:
+ /* {RETRY-READ} */
if (invalid_rec != var_rec_id) {
- var_rec_id = invalid_rec;
+ invalid_rec = var_rec_id;
goto retry;
}
/* Assume end of list. */
+ if (!tab_record_corrupt(ot, row_id, invalid_rec, true, 7))
+ goto failed;
#ifdef XT_CRASH_DEBUG
/* Should not happen! */
xt_crash_me();
@@ -5068,6 +5293,8 @@ xtPublic xtBool xt_tab_seq_next(XTOpenTablePtr ot, xtWord1 *buffer, xtBool *eof)
ot->ot_on_page = FALSE;
goto next_page;
}
+ if (!tab_record_corrupt(ot, XT_GET_DISK_4(((XTTabRecHeadDPtr) buff_ptr)->tr_row_id_4), invalid_rec, true, 8))
+ return XT_ERR;
#ifdef XT_CRASH_DEBUG
/* Should not happen! */
xt_crash_me();
@@ -5240,7 +5467,7 @@ static xtBool tab_exec_repair_pending(XTDatabaseHPtr db, int what, char *table_n
return FALSE;
}
-static void tab_make_table_name(XTTableHPtr tab, char *table_name, size_t size)
+xtPublic void xt_tab_make_table_name(XTTableHPtr tab, char *table_name, size_t size)
{
char *nptr;
@@ -5316,7 +5543,7 @@ xtPublic xtBool xt_tab_is_table_repair_pending(XTTableHPtr tab)
{
char table_name[XT_IDENTIFIER_NAME_SIZE*3+3];
- tab_make_table_name(tab, table_name, sizeof(table_name));
+ xt_tab_make_table_name(tab, table_name, sizeof(table_name));
return tab_exec_repair_pending(tab->tab_db, REP_FIND, table_name);
}
@@ -5326,7 +5553,7 @@ xtPublic void xt_tab_table_repaired(XTTableHPtr tab)
char table_name[XT_IDENTIFIER_NAME_SIZE*3+3];
tab->tab_repair_pending = FALSE;
- tab_make_table_name(tab, table_name, sizeof(table_name));
+ xt_tab_make_table_name(tab, table_name, sizeof(table_name));
tab_exec_repair_pending(tab->tab_db, REP_DEL, table_name);
}
}
@@ -5337,7 +5564,7 @@ xtPublic void xt_tab_set_table_repair_pending(XTTableHPtr tab)
char table_name[XT_IDENTIFIER_NAME_SIZE*3+3];
tab->tab_repair_pending = TRUE;
- tab_make_table_name(tab, table_name, sizeof(table_name));
+ xt_tab_make_table_name(tab, table_name, sizeof(table_name));
tab_exec_repair_pending(tab->tab_db, REP_ADD, table_name);
}
}
diff --git a/storage/pbxt/src/table_xt.h b/storage/pbxt/src/table_xt.h
index 83f2168dd6e..f6c32587419 100644
--- a/storage/pbxt/src/table_xt.h
+++ b/storage/pbxt/src/table_xt.h
@@ -507,6 +507,7 @@ int xt_tab_compare_names(const char *n1, const char *n2);
int xt_tab_compare_paths(char *n1, char *n2);
void xt_tab_init_db(struct XTThread *self, struct XTDatabase *db);
void xt_tab_exit_db(struct XTThread *self, struct XTDatabase *db);
+void xt_tab_check_free_lists(struct XTThread *self, XTOpenTablePtr ot, bool check_recs, bool correct_count);
void xt_check_tables(struct XTThread *self);
char *xt_tab_file_to_name(size_t size, char *tab_name, char *file_name);
@@ -572,6 +573,7 @@ xtBool xt_tab_get_rec_data(register XTOpenTablePtr ot, xtRecordID rec_id, siz
void xt_tab_disable_index(XTTableHPtr tab, u_int ind_error);
void xt_tab_set_index_error(XTTableHPtr tab);
+void xt_tab_make_table_name(XTTableHPtr tab, char *table_name, size_t size);
xtBool xt_tab_is_table_repair_pending(XTTableHPtr tab);
void xt_tab_table_repaired(XTTableHPtr tab);
void xt_tab_set_table_repair_pending(XTTableHPtr tab);
diff --git a/storage/pbxt/src/thread_xt.cc b/storage/pbxt/src/thread_xt.cc
index ac42896d22f..52c2c6c29c5 100644
--- a/storage/pbxt/src/thread_xt.cc
+++ b/storage/pbxt/src/thread_xt.cc
@@ -224,11 +224,16 @@ static void thr_log_va(XTThreadPtr self, c_char *func, c_char *file, u_int line,
#else
/* Use the buffer, unless it is too small */
va_list ap2;
+ int bufsize;
va_copy(ap2, ap);
- if (vsnprintf(buffer, DEFAULT_LOG_BUFFER_SIZE, fmt, ap) >= DEFAULT_LOG_BUFFER_SIZE) {
- if (vasprintf(&log_string, fmt, ap2) == -1)
+ bufsize = vsnprintf(buffer, DEFAULT_LOG_BUFFER_SIZE, fmt, ap);
+ if (bufsize >= DEFAULT_LOG_BUFFER_SIZE) {
+ log_string = (char *) malloc(bufsize + 1);
+ if (vsnprintf(log_string, bufsize + 1, fmt, ap2) > bufsize) {
+ free(log_string);
log_string = NULL;
+ }
}
else
log_string = buffer;
diff --git a/storage/pbxt/src/xaction_xt.cc b/storage/pbxt/src/xaction_xt.cc
index 7281eafd8db..48abc5d2b66 100644
--- a/storage/pbxt/src/xaction_xt.cc
+++ b/storage/pbxt/src/xaction_xt.cc
@@ -1558,6 +1558,8 @@ xtPublic int xt_xn_status(XTOpenTablePtr ot, xtXactID xn_id, xtRecordID XT_UNUSE
* Because we are only here because the record was valid but not
* clean (you can confirm this by looking at the code that
* calls this function).
+ *
+ * See {RETRY-READ}
*/
return XT_XN_REREAD;
}
@@ -1743,7 +1745,7 @@ xtPublic xtWord8 xt_xn_bytes_to_sweep(XTDatabaseHPtr db, XTThreadPtr thread)
}
else {
xn_log_id = x_log_id;
- x_log_offset = x_log_offset;
+ xn_log_offset = x_log_offset;
}
}
xn_id++;
diff --git a/storage/pbxt/src/xt_defs.h b/storage/pbxt/src/xt_defs.h
index 98ebe0957a5..3c77415265c 100644
--- a/storage/pbxt/src/xt_defs.h
+++ b/storage/pbxt/src/xt_defs.h
@@ -397,6 +397,24 @@ typedef struct XTPathStr {
*/
#define XT_XLOG_FLUSH_FREQ 1000
+/*
+ * Define here if you want to check (and correct) the table free list
+ * counts. The free list counts are not durable, because they are not
+ * written to the log.
+ *
+ * The row free count is most critical because it can be used to
+ * estimate the the of rows in the record.
+ */
+#define XT_CHECK_ROW_FREE_COUNT
+#ifdef DEBUG
+#define XT_CHECK_RECORD_FREE_COUNT
+#endif
+#define XT_CORRECT_TABLE_FREE_COUNT
+
+#if defined(XT_CHECK_ROW_FREE_COUNT) && defined(XT_CORRECT_TABLE_FREE_COUNT)
+#define XT_ROW_COUNT_CORRECTED
+#endif
+
/* ----------------------------------------------------------------------
* GLOBAL CONSTANTS
*/
@@ -782,7 +800,7 @@ extern xtBool pbxt_crash_debug;
#define MX_ULONG_T uint32_t
#define MX_ULONGLONG_T uint64_t
#define MX_LONGLONG_T uint64_t
-#define MX_CHARSET_INFO const struct charset_info_st
+#define MX_CHARSET_INFO struct charset_info_st
#define MX_CONST_CHARSET_INFO const struct charset_info_st
#define MX_CONST const
#define MX_BITMAP MyBitmap
@@ -873,7 +891,11 @@ extern "C" void session_mark_transaction_to_rollback(Session *session, bool all)
#define MX_ULONGLONG_T ulonglong
#define MX_LONGLONG_T longlong
#define MX_CHARSET_INFO CHARSET_INFO
-#define MX_CONST_CHARSET_INFO const struct charset_info_st
+#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 50200
+#define MX_CONST_CHARSET_INFO const struct charset_info_st
+#else
+#define MX_CONST_CHARSET_INFO struct charset_info_st
+#endif
#define MX_CONST
#define MX_BITMAP MY_BITMAP
#define MX_BIT_SIZE() n_bits
diff --git a/storage/sphinx/CMakeLists.txt b/storage/sphinx/CMakeLists.txt
new file mode 100644
index 00000000000..1a46f50f4a7
--- /dev/null
+++ b/storage/sphinx/CMakeLists.txt
@@ -0,0 +1,12 @@
+INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake")
+
+ADD_DEFINITIONS(-DMYSQL_SERVER)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_SOURCE_DIR}/sql
+ ${CMAKE_SOURCE_DIR}/extra/yassl/include
+ ${CMAKE_SOURCE_DIR}/regex)
+
+SET(SPHINX_SOURCES ha_sphinx.cc)
+SET(SPHINX_LIBS ws2_32.lib)
+MYSQL_STORAGE_ENGINE(SPHINX)
diff --git a/storage/sphinx/Makefile.am b/storage/sphinx/Makefile.am
new file mode 100644
index 00000000000..5f58d673547
--- /dev/null
+++ b/storage/sphinx/Makefile.am
@@ -0,0 +1,55 @@
+# Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+#
+# 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; either version 2 of the License, or
+# (at your option) any later version.
+#
+# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+#called from the top level Makefile
+
+MYSQLDATAdir = $(localstatedir)
+MYSQLSHAREdir = $(pkgdatadir)
+MYSQLBASEdir= $(prefix)
+MYSQLLIBdir= $(pkglibdir)
+pkgplugindir = $(pkglibdir)/plugin
+INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
+ -I$(top_srcdir)/regex \
+ -I$(top_srcdir)/sql \
+ -I$(srcdir)
+
+DEFS= @DEFS@ -D_REENTRANT -D_PTHREADS -DMYSQL_SERVER
+
+noinst_HEADERS = ha_sphinx.h
+
+EXTRA_LTLIBRARIES = ha_sphinx.la
+pkgplugin_LTLIBRARIES = @plugin_sphinx_shared_target@ sphinx.la
+
+ha_sphinx_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) \
+ -L$(top_builddir)/libservices -lmysqlservices
+ha_sphinx_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_sphinx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ha_sphinx_la_SOURCES = ha_sphinx.cc
+
+sphinx_la_LDFLAGS = -module
+sphinx_la_CXXFLAGS = $(AM_CFLAGS)
+sphinx_la_CFLAGS = $(AM_CFLAGS)
+sphinx_la_SOURCES = snippets_udf.cc
+
+EXTRA_LIBRARIES = libsphinx.a
+noinst_LIBRARIES = @plugin_sphinx_static_target@
+libsphinx_a_CXXFLAGS = $(AM_CFLAGS)
+libsphinx_a_CFLAGS = $(AM_CFLAGS)
+libsphinx_a_SOURCES= ha_sphinx.cc
+
+EXTRA_DIST = CMakeLists.txt
+# Don't update the files from bitkeeper
+%::SCCS/s.%
diff --git a/storage/sphinx/gen_data.php b/storage/sphinx/gen_data.php
new file mode 100644
index 00000000000..dac374f095d
--- /dev/null
+++ b/storage/sphinx/gen_data.php
@@ -0,0 +1,37 @@
+<?php
+
+$file_name= $argv[1];
+
+//echo $file_name;
+
+$cont= file_get_contents($file_name);
+
+$words= explode(" ", $cont);
+
+//echo "words: ".(count($words))."\n";
+
+$cw = count($words);
+
+echo "REPLACE INTO test.documents ( id, group_id, date_added, title, content ) VALUES\n";
+
+
+for ($i=1; $i<=100000; $i++)
+{
+ $count_words= mt_rand(10,30);
+ $pred = "";
+ for ($j=0; $j<$count_words; $j++)
+ {
+ $pred .= chop($words[mt_rand(1, $cw-1)])." ";
+ }
+ $count_words= mt_rand(3,5);
+ $tit = "";
+ for ($j=0; $j<$count_words; $j++)
+ {
+ $tit .= chop($words[mt_rand(1, $cw-1)])." ";
+ }
+ echo "($i,".mt_rand(1,20).",NOW(),'".addslashes($tit)."','".addslashes($pred)."'),\n";
+}
+ echo "(0,1,now(),'end','eND');\n";
+
+
+?>
diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc
new file mode 100644
index 00000000000..e88464eb16c
--- /dev/null
+++ b/storage/sphinx/ha_sphinx.cc
@@ -0,0 +1,3115 @@
+//
+// $Id: ha_sphinx.cc 2058 2009-11-07 04:01:57Z shodan $
+//
+
+#ifdef USE_PRAGMA_IMPLEMENTATION
+#pragma implementation // gcc: Class implementation
+#endif
+
+#if _MSC_VER>=1400
+#define _CRT_SECURE_NO_DEPRECATE 1
+#define _CRT_NONSTDC_NO_DEPRECATE 1
+#endif
+
+#include <mysql_version.h>
+
+#if MYSQL_VERSION_ID>50100
+#include "mysql_priv.h"
+#include <mysql/plugin.h>
+#else
+#include "../mysql_priv.h"
+#endif
+
+#include <mysys_err.h>
+#include <my_sys.h>
+
+#ifndef __WIN__
+ // UNIX-specific
+ #include <my_net.h>
+ #include <netdb.h>
+ #include <sys/un.h>
+
+ #define RECV_FLAGS MSG_WAITALL
+
+ #define sphSockClose(_sock) ::close(_sock)
+#else
+ // Windows-specific
+ #include <io.h>
+ #define strcasecmp stricmp
+ #define snprintf _snprintf
+
+ #define RECV_FLAGS 0
+
+ #define sphSockClose(_sock) ::closesocket(_sock)
+#endif
+
+#include <ctype.h>
+#include "ha_sphinx.h"
+
+#ifndef MSG_WAITALL
+#define MSG_WAITALL 0
+#endif
+
+#if _MSC_VER>=1400
+#pragma warning(push,4)
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+/// there might be issues with min() on different platforms (eg. Gentoo, they say)
+#define Min(a,b) ((a)<(b)?(a):(b))
+
+/// unaligned RAM accesses are forbidden on SPARC
+#if defined(sparc) || defined(__sparc__)
+#define UNALIGNED_RAM_ACCESS 0
+#else
+#define UNALIGNED_RAM_ACCESS 1
+#endif
+
+#if MYSQL_VERSION_ID<50100
+#define thd_ha_data(X,Y) (X)->ha_data[sphinx_hton.slot]
+#define ha_thd() current_thd
+#endif // <50100
+
+#if UNALIGNED_RAM_ACCESS
+
+/// pass-through wrapper
+template < typename T > inline T sphUnalignedRead ( const T & tRef )
+{
+ return tRef;
+}
+
+/// pass-through wrapper
+template < typename T > void sphUnalignedWrite ( void * pPtr, const T & tVal )
+{
+ *(T*)pPtr = tVal;
+}
+
+#else
+
+/// unaligned read wrapper for some architectures (eg. SPARC)
+template < typename T >
+inline T sphUnalignedRead ( const T & tRef )
+{
+ T uTmp;
+ byte * pSrc = (byte *) &tRef;
+ byte * pDst = (byte *) &uTmp;
+ for ( int i=0; i<(int)sizeof(T); i++ )
+ *pDst++ = *pSrc++;
+ return uTmp;
+}
+
+/// unaligned write wrapper for some architectures (eg. SPARC)
+template < typename T >
+void sphUnalignedWrite ( void * pPtr, const T & tVal )
+{
+ byte * pDst = (byte *) pPtr;
+ byte * pSrc = (byte *) &tVal;
+ for ( int i=0; i<(int)sizeof(T); i++ )
+ *pDst++ = *pSrc++;
+}
+
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+
+// FIXME! make this all dynamic
+#define SPHINXSE_MAX_FILTERS 32
+
+#define SPHINXSE_DEFAULT_HOST "127.0.0.1"
+#define SPHINXSE_DEFAULT_PORT 9312
+#define SPHINXSE_DEFAULT_INDEX "*"
+
+#define SPHINXSE_SYSTEM_COLUMNS 3
+
+#define SPHINXSE_MAX_ALLOC (16*1024*1024)
+#define SPHINXSE_MAX_KEYWORDSTATS 4096
+
+// FIXME! all the following is cut-n-paste from sphinx.h and searchd.cpp
+#define SPHINX_VERSION "0.9.9"
+
+enum
+{
+ SPHINX_SEARCHD_PROTO = 1,
+ SEARCHD_COMMAND_SEARCH = 0,
+ VER_COMMAND_SEARCH = 0x116,
+};
+
+/// search query sorting orders
+enum ESphSortOrder
+{
+ SPH_SORT_RELEVANCE = 0, ///< sort by document relevance desc, then by date
+ SPH_SORT_ATTR_DESC = 1, ///< sort by document date desc, then by relevance desc
+ SPH_SORT_ATTR_ASC = 2, ///< sort by document date asc, then by relevance desc
+ SPH_SORT_TIME_SEGMENTS = 3, ///< sort by time segments (hour/day/week/etc) desc, then by relevance desc
+ SPH_SORT_EXTENDED = 4, ///< sort by SQL-like expression (eg. "@relevance DESC, price ASC, @id DESC")
+ SPH_SORT_EXPR = 5, ///< sort by expression
+
+ SPH_SORT_TOTAL
+};
+
+/// search query matching mode
+enum ESphMatchMode
+{
+ SPH_MATCH_ALL = 0, ///< match all query words
+ SPH_MATCH_ANY, ///< match any query word
+ SPH_MATCH_PHRASE, ///< match this exact phrase
+ SPH_MATCH_BOOLEAN, ///< match this boolean query
+ SPH_MATCH_EXTENDED, ///< match this extended query
+ SPH_MATCH_FULLSCAN, ///< match all document IDs w/o fulltext query, apply filters
+ SPH_MATCH_EXTENDED2, ///< extended engine V2
+
+ SPH_MATCH_TOTAL
+};
+
+/// search query relevance ranking mode
+enum ESphRankMode
+{
+ SPH_RANK_PROXIMITY_BM25 = 0, ///< default mode, phrase proximity major factor and BM25 minor one
+ SPH_RANK_BM25 = 1, ///< statistical mode, BM25 ranking only (faster but worse quality)
+ SPH_RANK_NONE = 2, ///< no ranking, all matches get a weight of 1
+ SPH_RANK_WORDCOUNT = 3, ///< simple word-count weighting, rank is a weighted sum of per-field keyword occurence counts
+ SPH_RANK_PROXIMITY = 4, ///< phrase proximity
+ SPH_RANK_MATCHANY = 5, ///< emulate old match-any weighting
+ SPH_RANK_FIELDMASK = 6, ///< sets bits where there were matches
+
+ SPH_RANK_TOTAL,
+ SPH_RANK_DEFAULT = SPH_RANK_PROXIMITY_BM25
+};
+
+/// search query grouping mode
+enum ESphGroupBy
+{
+ SPH_GROUPBY_DAY = 0, ///< group by day
+ SPH_GROUPBY_WEEK = 1, ///< group by week
+ SPH_GROUPBY_MONTH = 2, ///< group by month
+ SPH_GROUPBY_YEAR = 3, ///< group by year
+ SPH_GROUPBY_ATTR = 4 ///< group by attribute value
+};
+
+/// known attribute types
+enum
+{
+ SPH_ATTR_NONE = 0, ///< not an attribute at all
+ SPH_ATTR_INTEGER = 1, ///< this attr is just an integer
+ SPH_ATTR_TIMESTAMP = 2, ///< this attr is a timestamp
+ SPH_ATTR_ORDINAL = 3, ///< this attr is an ordinal string number (integer at search time, specially handled at indexing time)
+ SPH_ATTR_BOOL = 4, ///< this attr is a boolean bit field
+ SPH_ATTR_FLOAT = 5,
+ SPH_ATTR_BIGINT = 6,
+
+ SPH_ATTR_MULTI = 0x40000000UL ///< this attr has multiple values (0 or more)
+};
+
+/// known answers
+enum
+{
+ SEARCHD_OK = 0, ///< general success, command-specific reply follows
+ SEARCHD_ERROR = 1, ///< general failure, error message follows
+ SEARCHD_RETRY = 2, ///< temporary failure, error message follows, client should retry later
+ SEARCHD_WARNING = 3 ///< general success, warning message and command-specific reply follow
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#define SPHINX_DEBUG_OUTPUT 0
+#define SPHINX_DEBUG_CALLS 0
+
+#include <stdarg.h>
+
+#if SPHINX_DEBUG_OUTPUT
+inline void SPH_DEBUG ( const char * format, ... )
+{
+ va_list ap;
+ va_start ( ap, format );
+ fprintf ( stderr, "SphinxSE: " );
+ vfprintf ( stderr, format, ap );
+ fprintf ( stderr, "\n" );
+ va_end ( ap );
+}
+#else
+inline void SPH_DEBUG ( const char *, ... ) {}
+#endif
+
+#if SPHINX_DEBUG_CALLS
+
+#define SPH_ENTER_FUNC() { SPH_DEBUG ( "enter %s", __FUNCTION__ ); }
+#define SPH_ENTER_METHOD() { SPH_DEBUG ( "enter %s(this=%08x)", __FUNCTION__, this ); }
+#define SPH_RET(_arg) { SPH_DEBUG ( "leave %s", __FUNCTION__ ); return _arg; }
+#define SPH_VOID_RET() { SPH_DEBUG ( "leave %s", __FUNCTION__ ); return; }
+
+#else
+
+#define SPH_ENTER_FUNC()
+#define SPH_ENTER_METHOD()
+#define SPH_RET(_arg) { return(_arg); }
+#define SPH_VOID_RET() { return; }
+
+#endif
+
+
+#define SafeDelete(_arg) { if ( _arg ) delete ( _arg ); (_arg) = NULL; }
+#define SafeDeleteArray(_arg) { if ( _arg ) delete [] ( _arg ); (_arg) = NULL; }
+
+//////////////////////////////////////////////////////////////////////////////
+
+/// a structure that will be shared among all open Sphinx SE handlers
+struct CSphSEShare
+{
+ pthread_mutex_t m_tMutex;
+ THR_LOCK m_tLock;
+
+ char * m_sTable;
+ char * m_sScheme;
+ char * m_sHost; ///< points into m_sScheme buffer, DO NOT FREE EXPLICITLY
+ char * m_sSocket; ///< points into m_sScheme buffer, DO NOT FREE EXPLICITLY
+ char * m_sIndex; ///< points into m_sScheme buffer, DO NOT FREE EXPLICITLY
+ ushort m_iPort;
+ uint m_iTableNameLen;
+ uint m_iUseCount;
+ CHARSET_INFO * m_pTableQueryCharset;
+
+ int m_iTableFields;
+ char ** m_sTableField;
+ enum_field_types * m_eTableFieldType;
+
+ CSphSEShare ()
+ : m_sTable ( NULL )
+ , m_sScheme ( NULL )
+ , m_sHost ( NULL )
+ , m_sSocket ( NULL )
+ , m_sIndex ( NULL )
+ , m_iPort ( 0 )
+ , m_iTableNameLen ( 0 )
+ , m_iUseCount ( 1 )
+ , m_pTableQueryCharset ( NULL )
+
+ , m_iTableFields ( 0 )
+ , m_sTableField ( NULL )
+ , m_eTableFieldType ( NULL )
+ {
+ thr_lock_init ( &m_tLock );
+ pthread_mutex_init ( &m_tMutex, MY_MUTEX_INIT_FAST );
+ }
+
+ ~CSphSEShare ()
+ {
+ pthread_mutex_destroy ( &m_tMutex );
+ thr_lock_delete ( &m_tLock );
+
+ SafeDeleteArray ( m_sTable );
+ SafeDeleteArray ( m_sScheme );
+ ResetTable ();
+ }
+
+ void ResetTable ()
+ {
+ for ( int i=0; i<m_iTableFields; i++ )
+ SafeDeleteArray ( m_sTableField[i] );
+ SafeDeleteArray ( m_sTableField );
+ SafeDeleteArray ( m_eTableFieldType );
+ }
+};
+
+/// schema attribute
+struct CSphSEAttr
+{
+ char * m_sName; ///< attribute name (received from Sphinx)
+ uint32 m_uType; ///< attribute type (received from Sphinx)
+ int m_iField; ///< field index in current table (-1 if none)
+
+ CSphSEAttr()
+ : m_sName ( NULL )
+ , m_uType ( SPH_ATTR_NONE )
+ , m_iField ( -1 )
+ {}
+
+ ~CSphSEAttr ()
+ {
+ SafeDeleteArray ( m_sName );
+ }
+};
+
+/// word stats
+struct CSphSEWordStats
+{
+ char * m_sWord;
+ int m_iDocs;
+ int m_iHits;
+
+ CSphSEWordStats ()
+ : m_sWord ( NULL )
+ , m_iDocs ( 0 )
+ , m_iHits ( 0 )
+ {}
+
+ ~CSphSEWordStats ()
+ {
+ SafeDeleteArray ( m_sWord );
+ }
+};
+
+/// request stats
+struct CSphSEStats
+{
+public:
+ int m_iMatchesTotal;
+ int m_iMatchesFound;
+ int m_iQueryMsec;
+ int m_iWords;
+ CSphSEWordStats * m_dWords;
+ bool m_bLastError;
+ char m_sLastMessage[1024];
+
+ CSphSEStats()
+ : m_dWords ( NULL )
+ {
+ Reset ();
+ }
+
+ void Reset ()
+ {
+ m_iMatchesTotal = 0;
+ m_iMatchesFound = 0;
+ m_iQueryMsec = 0;
+ m_iWords = 0;
+ SafeDeleteArray ( m_dWords );
+ m_bLastError = false;
+ m_sLastMessage[0] = '\0';
+ }
+
+ ~CSphSEStats()
+ {
+ Reset ();
+ }
+};
+
+/// thread local storage
+struct CSphSEThreadData
+{
+ static const int MAX_QUERY_LEN = 262144; // 256k should be enough, right?
+
+ bool m_bStats;
+ CSphSEStats m_tStats;
+
+ bool m_bQuery;
+ char m_sQuery[MAX_QUERY_LEN];
+
+ CHARSET_INFO * m_pQueryCharset;
+
+ CSphSEThreadData ()
+ : m_bStats ( false )
+ , m_bQuery ( false )
+ , m_pQueryCharset ( NULL )
+ {}
+};
+
+/// filter types
+enum ESphFilter
+{
+ SPH_FILTER_VALUES = 0, ///< filter by integer values set
+ SPH_FILTER_RANGE = 1, ///< filter by integer range
+ SPH_FILTER_FLOATRANGE = 2 ///< filter by float range
+};
+
+
+/// search query filter
+struct CSphSEFilter
+{
+public:
+ ESphFilter m_eType;
+ char * m_sAttrName;
+ longlong m_uMinValue;
+ longlong m_uMaxValue;
+ float m_fMinValue;
+ float m_fMaxValue;
+ int m_iValues;
+ longlong * m_pValues;
+ int m_bExclude;
+
+public:
+ CSphSEFilter ()
+ : m_eType ( SPH_FILTER_VALUES )
+ , m_sAttrName ( NULL )
+ , m_uMinValue ( 0 )
+ , m_uMaxValue ( UINT_MAX )
+ , m_fMinValue ( 0.0f )
+ , m_fMaxValue ( 0.0f )
+ , m_iValues ( 0 )
+ , m_pValues ( NULL )
+ , m_bExclude ( 0 )
+ {
+ }
+
+ ~CSphSEFilter ()
+ {
+ SafeDeleteArray ( m_pValues );
+ }
+};
+
+
+/// float vs dword conversion
+inline uint32 sphF2DW ( float f ) { union { float f; uint32 d; } u; u.f = f; return u.d; }
+
+/// dword vs float conversion
+inline float sphDW2F ( uint32 d ) { union { float f; uint32 d; } u; u.d = d; return u.f; }
+
+
+/// client-side search query
+struct CSphSEQuery
+{
+public:
+ const char * m_sHost;
+ int m_iPort;
+
+private:
+ char * m_sQueryBuffer;
+
+ const char * m_sIndex;
+ int m_iOffset;
+ int m_iLimit;
+
+ bool m_bQuery;
+ char * m_sQuery;
+ uint32 * m_pWeights;
+ int m_iWeights;
+ ESphMatchMode m_eMode;
+ ESphRankMode m_eRanker;
+ ESphSortOrder m_eSort;
+ char * m_sSortBy;
+ int m_iMaxMatches;
+ int m_iMaxQueryTime;
+ uint32 m_iMinID;
+ uint32 m_iMaxID;
+
+ int m_iFilters;
+ CSphSEFilter m_dFilters[SPHINXSE_MAX_FILTERS];
+
+ ESphGroupBy m_eGroupFunc;
+ char * m_sGroupBy;
+ char * m_sGroupSortBy;
+ int m_iCutoff;
+ int m_iRetryCount;
+ int m_iRetryDelay;
+ char * m_sGroupDistinct; ///< points to query buffer; do NOT delete
+ int m_iIndexWeights;
+ char * m_sIndexWeight[SPHINXSE_MAX_FILTERS]; ///< points to query buffer; do NOT delete
+ int m_iIndexWeight[SPHINXSE_MAX_FILTERS];
+ int m_iFieldWeights;
+ char * m_sFieldWeight[SPHINXSE_MAX_FILTERS]; ///< points to query buffer; do NOT delete
+ int m_iFieldWeight[SPHINXSE_MAX_FILTERS];
+
+ bool m_bGeoAnchor;
+ char * m_sGeoLatAttr;
+ char * m_sGeoLongAttr;
+ float m_fGeoLatitude;
+ float m_fGeoLongitude;
+
+ char * m_sComment;
+
+ struct Override_t
+ {
+ union Value_t
+ {
+ uint32 m_uValue;
+ longlong m_iValue64;
+ float m_fValue;
+ };
+ char * m_sName; ///< points to query buffer
+ int m_iType;
+ Dynamic_array<ulonglong> m_dIds;
+ Dynamic_array<Value_t> m_dValues;
+ };
+ Dynamic_array<Override_t *> m_dOverrides;
+
+public:
+ char m_sParseError[256];
+
+public:
+ CSphSEQuery ( const char * sQuery, int iLength, const char * sIndex );
+ ~CSphSEQuery ();
+
+ bool Parse ();
+ int BuildRequest ( char ** ppBuffer );
+
+protected:
+ char * m_pBuf;
+ char * m_pCur;
+ int m_iBufLeft;
+ bool m_bBufOverrun;
+
+ template < typename T > int ParseArray ( T ** ppValues, const char * sValue );
+ bool ParseField ( char * sField );
+
+ void SendBytes ( const void * pBytes, int iBytes );
+ void SendWord ( short int v ) { v = ntohs(v); SendBytes ( &v, sizeof(short int) ); }
+ void SendInt ( int v ) { v = ntohl(v); SendBytes ( &v, sizeof(int) ); }
+ void SendDword ( uint v ) { v = ntohl(v) ;SendBytes ( &v, sizeof(uint) ); }
+ void SendUint64 ( ulonglong v ) { SendDword ( uint(v>>32) ); SendDword ( uint(v&0xFFFFFFFFUL) ); }
+ void SendString ( const char * v ) { int iLen = strlen(v); SendDword(iLen); SendBytes ( v, iLen ); }
+ void SendFloat ( float v ) { SendDword ( sphF2DW(v) ); }
+};
+
+template int CSphSEQuery::ParseArray<uint32> ( uint32 **, const char * );
+template int CSphSEQuery::ParseArray<longlong> ( longlong **, const char * );
+
+//////////////////////////////////////////////////////////////////////////////
+
+#if MYSQL_VERSION_ID>50100
+
+#if MYSQL_VERSION_ID<50114
+#error Sphinx SE requires MySQL 5.1.14 or higher if compiling for 5.1.x series!
+#endif
+
+static handler * sphinx_create_handler ( handlerton * hton, TABLE_SHARE * table, MEM_ROOT * mem_root );
+static int sphinx_init_func ( void * p );
+static int sphinx_close_connection ( handlerton * hton, THD * thd );
+static int sphinx_panic ( handlerton * hton, enum ha_panic_function flag );
+static bool sphinx_show_status ( handlerton * hton, THD * thd, stat_print_fn * stat_print, enum ha_stat_type stat_type );
+
+#else
+
+static bool sphinx_init_func_for_handlerton ();
+static int sphinx_close_connection ( THD * thd );
+bool sphinx_show_status ( THD * thd );
+
+#endif // >50100
+
+//////////////////////////////////////////////////////////////////////////////
+
+static const char sphinx_hton_name[] = "SPHINX";
+static const char sphinx_hton_comment[] = "Sphinx storage engine " SPHINX_VERSION;
+
+#if MYSQL_VERSION_ID<50100
+handlerton sphinx_hton =
+{
+ #ifdef MYSQL_HANDLERTON_INTERFACE_VERSION
+ MYSQL_HANDLERTON_INTERFACE_VERSION,
+ #endif
+ sphinx_hton_name,
+ SHOW_OPTION_YES,
+ sphinx_hton_comment,
+ DB_TYPE_SPHINX_DB,
+ sphinx_init_func_for_handlerton,
+ 0, // slot
+ 0, // savepoint size
+ sphinx_close_connection, // close_connection
+ NULL, // savepoint
+ NULL, // rollback to savepoint
+ NULL, // release savepoint
+ NULL, // commit
+ NULL, // rollback
+ NULL, // prepare
+ NULL, // recover
+ NULL, // commit_by_xid
+ NULL, // rollback_by_xid
+ NULL, // create_cursor_read_view
+ NULL, // set_cursor_read_view
+ NULL, // close_cursor_read_view
+ HTON_CAN_RECREATE
+};
+#else
+static handlerton * sphinx_hton_ptr = NULL;
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+
+// variables for Sphinx shared methods
+pthread_mutex_t sphinx_mutex; // mutex to init the hash
+static int sphinx_init = 0; // flag whether the hash was initialized
+static HASH sphinx_open_tables; // hash used to track open tables
+
+//////////////////////////////////////////////////////////////////////////////
+// INITIALIZATION AND SHUTDOWN
+//////////////////////////////////////////////////////////////////////////////
+
+// hashing function
+#if MYSQL_VERSION_ID>=50120
+typedef size_t GetKeyLength_t;
+#else
+typedef uint GetKeyLength_t;
+#endif
+
+static byte * sphinx_get_key ( const byte * pSharePtr, GetKeyLength_t * pLength, my_bool )
+{
+ CSphSEShare * pShare = (CSphSEShare *) pSharePtr;
+ *pLength = (size_t) pShare->m_iTableNameLen;
+ return (byte*) pShare->m_sTable;
+}
+
+#if MYSQL_VERSION_ID<50100
+static int sphinx_init_func ( void * ) // to avoid unused arg warning
+#else
+static int sphinx_init_func ( void * p )
+#endif
+{
+ SPH_ENTER_FUNC();
+ if ( !sphinx_init )
+ {
+ sphinx_init = 1;
+ VOID ( pthread_mutex_init ( &sphinx_mutex, MY_MUTEX_INIT_FAST ) );
+ hash_init ( &sphinx_open_tables, system_charset_info, 32, 0, 0,
+ sphinx_get_key, 0, 0 );
+
+ #if MYSQL_VERSION_ID > 50100
+ handlerton * hton = (handlerton*) p;
+ hton->state = SHOW_OPTION_YES;
+ hton->db_type = DB_TYPE_AUTOASSIGN;
+ hton->create = sphinx_create_handler;
+ hton->close_connection = sphinx_close_connection;
+ hton->show_status = sphinx_show_status;
+ hton->panic = sphinx_panic;
+ hton->flags = HTON_CAN_RECREATE;
+ sphinx_hton_ptr = hton;
+ #endif
+ }
+ SPH_RET(0);
+}
+
+
+#if MYSQL_VERSION_ID<50100
+static bool sphinx_init_func_for_handlerton ()
+{
+ return sphinx_init_func ( &sphinx_hton );
+}
+#endif
+
+
+#if MYSQL_VERSION_ID>50100
+
+static int sphinx_close_connection ( handlerton * hton, THD * thd )
+{
+ // deallocate common handler data
+ SPH_ENTER_FUNC();
+ void ** tmp = thd_ha_data ( thd, hton );
+ CSphSEThreadData * pTls = (CSphSEThreadData*) (*tmp);
+ SafeDelete ( pTls );
+ *tmp = NULL;
+ SPH_RET(0);
+}
+
+
+static int sphinx_done_func ( void * )
+{
+ SPH_ENTER_FUNC();
+
+ int error = 0;
+ if ( sphinx_init )
+ {
+ sphinx_init = 0;
+ if ( sphinx_open_tables.records )
+ error = 1;
+ hash_free ( &sphinx_open_tables );
+ pthread_mutex_destroy ( &sphinx_mutex );
+ }
+
+ SPH_RET(0);
+}
+
+
+static int sphinx_panic ( handlerton * hton, enum ha_panic_function )
+{
+ return sphinx_done_func ( hton );
+}
+
+#else
+
+static int sphinx_close_connection ( THD * thd )
+{
+ // deallocate common handler data
+ SPH_ENTER_FUNC();
+ CSphSEThreadData * pTls = (CSphSEThreadData*) thd->ha_data[sphinx_hton.slot];
+ SafeDelete ( pTls );
+ thd->ha_data[sphinx_hton.slot] = NULL;
+ SPH_RET(0);
+}
+
+#endif // >50100
+
+//////////////////////////////////////////////////////////////////////////////
+// SHOW STATUS
+//////////////////////////////////////////////////////////////////////////////
+
+#if MYSQL_VERSION_ID>50100
+static bool sphinx_show_status ( handlerton * hton, THD * thd, stat_print_fn * stat_print,
+ enum ha_stat_type )
+#else
+bool sphinx_show_status ( THD * thd )
+#endif
+{
+ SPH_ENTER_FUNC();
+
+#if MYSQL_VERSION_ID<50100
+ Protocol * protocol = thd->protocol;
+ List<Item> field_list;
+#endif
+
+ char buf1[IO_SIZE];
+ uint buf1len;
+ char buf2[IO_SIZE];
+ uint buf2len= 0;
+ String words;
+
+ buf1[0] = '\0';
+ buf2[0] = '\0';
+
+#if MYSQL_VERSION_ID>50100
+ CSphSEThreadData * pTls = (CSphSEThreadData*) ( *thd_ha_data ( thd, hton ) );
+#else
+ if ( have_sphinx_db!=SHOW_OPTION_YES )
+ {
+ my_message ( ER_NOT_SUPPORTED_YET,
+ "failed to call SHOW SPHINX STATUS: --skip-sphinx was specified",
+ MYF(0) );
+ SPH_RET(TRUE);
+ }
+ CSphSEThreadData * pTls = (CSphSEThreadData*) thd->ha_data[sphinx_hton.slot];
+#endif
+
+ if ( pTls && pTls->m_bStats )
+ {
+ const CSphSEStats * pStats = &pTls->m_tStats;
+ buf1len = my_snprintf ( buf1, sizeof(buf1),
+ "total: %d, total found: %d, time: %d, words: %d",
+ pStats->m_iMatchesTotal, pStats->m_iMatchesFound, pStats->m_iQueryMsec, pStats->m_iWords );
+
+#if MYSQL_VERSION_ID>50100
+ stat_print ( thd, sphinx_hton_name, strlen(sphinx_hton_name),
+ STRING_WITH_LEN("stats"), buf1, buf1len );
+#else
+ field_list.push_back ( new Item_empty_string ( "Type",10 ) );
+ field_list.push_back ( new Item_empty_string ( "Name",FN_REFLEN ) );
+ field_list.push_back ( new Item_empty_string ( "Status",10 ) );
+ if ( protocol->send_fields ( &field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF ) )
+ SPH_RET(TRUE);
+
+ protocol->prepare_for_resend ();
+ protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info );
+ protocol->store ( STRING_WITH_LEN("stats"), system_charset_info );
+ protocol->store ( buf1, buf1len, system_charset_info );
+ if ( protocol->write() )
+ SPH_RET(TRUE);
+#endif
+
+ if ( pStats->m_iWords )
+ {
+ for ( int i=0; i<pStats->m_iWords; i++ )
+ {
+ CSphSEWordStats & tWord = pStats->m_dWords[i];
+ buf2len = my_snprintf ( buf2, sizeof(buf2), "%s%s:%d:%d ",
+ buf2, tWord.m_sWord, tWord.m_iDocs, tWord.m_iHits );
+ }
+
+ // convert it if we can
+ const char * sWord = buf2;
+ int iWord = buf2len;
+
+ String sBuf3;
+ if ( pTls->m_pQueryCharset )
+ {
+ uint iErrors;
+ sBuf3.copy ( buf2, buf2len, pTls->m_pQueryCharset, system_charset_info, &iErrors );
+ sWord = sBuf3.c_ptr();
+ iWord = sBuf3.length();
+ }
+
+#if MYSQL_VERSION_ID>50100
+ stat_print ( thd, sphinx_hton_name, strlen(sphinx_hton_name),
+ STRING_WITH_LEN("words"), sWord, iWord );
+#else
+ protocol->prepare_for_resend ();
+ protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info );
+ protocol->store ( STRING_WITH_LEN("words"), system_charset_info );
+ protocol->store ( sWord, iWord, system_charset_info );
+ if ( protocol->write() )
+ SPH_RET(TRUE);
+#endif
+ }
+
+ // send last error or warning
+ if ( pStats->m_sLastMessage && pStats->m_sLastMessage[0] )
+ {
+ const char * sMessageType = pStats->m_bLastError ? "error" : "warning";
+
+#if MYSQL_VERSION_ID>50100
+ stat_print ( thd, sphinx_hton_name, strlen(sphinx_hton_name),
+ sMessageType, strlen(sMessageType), pStats->m_sLastMessage, strlen(pStats->m_sLastMessage) );
+#else
+ protocol->prepare_for_resend ();
+ protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info );
+ protocol->store ( sMessageType, strlen(sMessageType), system_charset_info );
+ protocol->store ( pStats->m_sLastMessage, strlen(pStats->m_sLastMessage), system_charset_info );
+ if ( protocol->write() )
+ SPH_RET(TRUE);
+#endif
+ }
+
+ } else
+ {
+ #if MYSQL_VERSION_ID < 50100
+ field_list.push_back ( new Item_empty_string ( "Type", 10 ) );
+ field_list.push_back ( new Item_empty_string ( "Name", FN_REFLEN ) );
+ field_list.push_back ( new Item_empty_string ( "Status", 10 ) );
+ if ( protocol->send_fields ( &field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF ) )
+ SPH_RET(TRUE);
+
+ protocol->prepare_for_resend ();
+ protocol->store ( STRING_WITH_LEN("SPHINX"), system_charset_info );
+ protocol->store ( STRING_WITH_LEN("stats"), system_charset_info );
+ protocol->store ( STRING_WITH_LEN("no query has been executed yet"), system_charset_info );
+ if ( protocol->write() )
+ SPH_RET(TRUE);
+ #endif
+ }
+
+ #if MYSQL_VERSION_ID < 50100
+ send_eof(thd);
+ #endif
+
+ SPH_RET(FALSE);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// HELPERS
+//////////////////////////////////////////////////////////////////////////////
+
+static char * sphDup ( const char * sSrc, int iLen=-1 )
+{
+ if ( !sSrc )
+ return NULL;
+
+ if ( iLen<0 )
+ iLen = strlen(sSrc);
+
+ char * sRes = new char [ 1+iLen ];
+ memcpy ( sRes, sSrc, iLen );
+ sRes[iLen] = '\0';
+ return sRes;
+}
+
+
+static void sphLogError ( const char * sFmt, ... )
+{
+ // emit timestamp
+#ifdef __WIN__
+ SYSTEMTIME t;
+ GetLocalTime ( &t );
+
+ fprintf ( stderr, "%02d%02d%02d %2d:%02d:%02d SphinxSE: internal error: ",
+ (int)t.wYear % 100, (int)t.wMonth, (int)t.wDay,
+ (int)t.wHour, (int)t.wMinute, (int)t.wSecond );
+#else
+ // Unix version
+ time_t tStamp;
+ time ( &tStamp );
+
+ struct tm * pParsed;
+#ifdef HAVE_LOCALTIME_R
+ struct tm tParsed;
+ localtime_r ( &tStamp, &tParsed );
+ pParsed = &tParsed;
+#else
+ pParsed = localtime ( &tStamp );
+#endif // HAVE_LOCALTIME_R
+
+ fprintf ( stderr, "%02d%02d%02d %2d:%02d:%02d SphinxSE: internal error: ",
+ pParsed->tm_year % 100, pParsed->tm_mon + 1, pParsed->tm_mday,
+ pParsed->tm_hour, pParsed->tm_min, pParsed->tm_sec);
+#endif // __WIN__
+
+ // emit message
+ va_list ap;
+ va_start ( ap, sFmt );
+ vfprintf ( stderr, sFmt, ap );
+ va_end ( ap );
+
+ // emit newline
+ fprintf ( stderr, "\n" );
+}
+
+
+
+// the following scheme variants are recognized
+//
+// sphinx://host/index
+// sphinx://host:port/index
+// unix://unix/domain/socket:index
+// unix://unix/domain/socket
+static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate )
+{
+ SPH_ENTER_FUNC();
+
+ if ( share )
+ {
+ // check incoming stuff
+ if ( !table )
+ {
+ sphLogError ( "table==NULL in ParseUrl()" );
+ return false;
+ }
+ if ( !table->s )
+ {
+ sphLogError ( "(table->s)==NULL in ParseUrl()" );
+ return false;
+ }
+
+ // free old stuff
+ share->ResetTable ();
+
+ // fill new stuff
+ share->m_iTableFields = table->s->fields;
+ if ( share->m_iTableFields )
+ {
+ share->m_sTableField = new char * [ share->m_iTableFields ];
+ share->m_eTableFieldType = new enum_field_types [ share->m_iTableFields ];
+
+ for ( int i=0; i<share->m_iTableFields; i++ )
+ {
+ share->m_sTableField[i] = sphDup ( table->field[i]->field_name );
+ share->m_eTableFieldType[i] = table->field[i]->type();
+ }
+ }
+ }
+
+ char * sScheme = NULL;
+ char * sHost = (char*) SPHINXSE_DEFAULT_HOST;
+ char * sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ int iPort = SPHINXSE_DEFAULT_PORT;
+
+ bool bOk = true;
+ while ( table->s->connect_string.length!=0 )
+ {
+ bOk = false;
+ sScheme = sphDup ( table->s->connect_string.str, table->s->connect_string.length );
+
+ sHost = strstr ( sScheme, "://" );
+ if ( !sHost )
+ break;
+ sHost[0] = '\0';
+ sHost += 2;
+
+ if ( !strcmp ( sScheme, "unix" ) )
+ {
+ // unix-domain socket
+ iPort = 0;
+ if (!( sIndex = strrchr ( sHost, ':' ) ))
+ sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ else
+ {
+ *sIndex++ = '\0';
+ if ( !*sIndex )
+ sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ }
+ bOk = true;
+ break;
+ }
+ if( strcmp ( sScheme, "sphinx" )!=0 && strcmp ( sScheme, "inet" )!=0 )
+ break;
+
+ // tcp
+ sHost++;
+ char * sPort = strchr ( sHost, ':' );
+ if ( sPort )
+ {
+ *sPort++ = '\0';
+ if ( *sPort )
+ {
+ sIndex = strchr ( sPort, '/' );
+ if ( sIndex )
+ *sIndex++ = '\0';
+ else
+ sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+
+ iPort = atoi(sPort);
+ if ( !iPort )
+ iPort = SPHINXSE_DEFAULT_PORT;
+ }
+ } else
+ {
+ sIndex = strchr ( sHost, '/' );
+ if ( sIndex )
+ *sIndex++ = '\0';
+ else
+ sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ }
+
+ bOk = true;
+ break;
+ }
+
+ if ( !bOk )
+ {
+ my_error ( bCreate ? ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE : ER_FOREIGN_DATA_STRING_INVALID,
+ MYF(0), table->s->connect_string );
+ } else
+ {
+ if ( share )
+ {
+ SafeDeleteArray ( share->m_sScheme );
+ share->m_sScheme = sScheme;
+ share->m_sHost = sHost;
+ share->m_sIndex = sIndex;
+ share->m_iPort = (ushort)iPort;
+ }
+ }
+ if ( !bOk && !share )
+ SafeDeleteArray ( sScheme );
+
+ SPH_RET(bOk);
+}
+
+
+// Example of simple lock controls. The "share" it creates is structure we will
+// pass to each sphinx handler. Do you have to have one of these? Well, you have
+// pieces that are used for locking, and they are needed to function.
+static CSphSEShare * get_share ( const char * table_name, TABLE * table )
+{
+ SPH_ENTER_FUNC();
+ pthread_mutex_lock ( &sphinx_mutex );
+
+ CSphSEShare * pShare = NULL;
+ for ( ;; )
+ {
+ // check if we already have this share
+#if MYSQL_VERSION_ID>=50120
+ pShare = (CSphSEShare*) hash_search ( &sphinx_open_tables, (const uchar *) table_name, strlen(table_name) );
+#else
+#ifdef __WIN__
+ pShare = (CSphSEShare*) hash_search ( &sphinx_open_tables, (const byte *) table_name, strlen(table_name) );
+#else
+ pShare = (CSphSEShare*) hash_search ( &sphinx_open_tables, table_name, strlen(table_name) );
+#endif // win
+#endif // pre-5.1.20
+
+ if ( pShare )
+ {
+ pShare->m_iUseCount++;
+ break;
+ }
+
+ // try to allocate new share
+ pShare = new CSphSEShare ();
+ if ( !pShare )
+ break;
+
+ // try to setup it
+ pShare->m_pTableQueryCharset = table->field[2]->charset();
+ if ( !ParseUrl ( pShare, table, false ) )
+ {
+ SafeDelete ( pShare );
+ break;
+ }
+
+ // try to hash it
+ pShare->m_iTableNameLen = strlen(table_name);
+ pShare->m_sTable = sphDup ( table_name );
+ if ( my_hash_insert ( &sphinx_open_tables, (const byte *)pShare ) )
+ {
+ SafeDelete ( pShare );
+ break;
+ }
+
+ // all seems fine
+ break;
+ }
+
+ pthread_mutex_unlock ( &sphinx_mutex );
+ SPH_RET(pShare);
+}
+
+
+// Free lock controls. We call this whenever we close a table. If the table had
+// the last reference to the share then we free memory associated with it.
+static int free_share ( CSphSEShare * pShare )
+{
+ SPH_ENTER_FUNC();
+ pthread_mutex_lock ( &sphinx_mutex );
+
+ if ( !--pShare->m_iUseCount )
+ {
+ hash_delete ( &sphinx_open_tables, (byte *)pShare );
+ SafeDelete ( pShare );
+ }
+
+ pthread_mutex_unlock ( &sphinx_mutex );
+ SPH_RET(0);
+}
+
+
+#if MYSQL_VERSION_ID>50100
+static handler * sphinx_create_handler ( handlerton * hton, TABLE_SHARE * table, MEM_ROOT * mem_root )
+{
+ return new ( mem_root ) ha_sphinx ( hton, table );
+}
+#endif
+
+//////////////////////////////////////////////////////////////////////////////
+// CLIENT-SIDE REQUEST STUFF
+//////////////////////////////////////////////////////////////////////////////
+
+CSphSEQuery::CSphSEQuery ( const char * sQuery, int iLength, const char * sIndex )
+ : m_sHost ( "" )
+ , m_iPort ( 0 )
+ , m_sIndex ( sIndex ? sIndex : (char*) "*" )
+ , m_iOffset ( 0 )
+ , m_iLimit ( 20 )
+ , m_bQuery ( false )
+ , m_sQuery ( (char*) "" )
+ , m_pWeights ( NULL )
+ , m_iWeights ( 0 )
+ , m_eMode ( SPH_MATCH_ALL )
+ , m_eRanker ( SPH_RANK_PROXIMITY_BM25 )
+ , m_eSort ( SPH_SORT_RELEVANCE )
+ , m_sSortBy ( (char*) "" )
+ , m_iMaxMatches ( 1000 )
+ , m_iMaxQueryTime ( 0 )
+ , m_iMinID ( 0 )
+ , m_iMaxID ( 0 )
+ , m_iFilters ( 0 )
+ , m_eGroupFunc ( SPH_GROUPBY_DAY )
+ , m_sGroupBy ( (char*) "" )
+ , m_sGroupSortBy ( (char*) "@group desc" )
+ , m_iCutoff ( 0 )
+ , m_iRetryCount ( 0 )
+ , m_iRetryDelay ( 0 )
+ , m_sGroupDistinct ( (char*) "" )
+ , m_iIndexWeights ( 0 )
+ , m_iFieldWeights ( 0 )
+ , m_bGeoAnchor ( false )
+ , m_sGeoLatAttr ( (char*) "" )
+ , m_sGeoLongAttr ( (char*) "" )
+ , m_fGeoLatitude ( 0.0f )
+ , m_fGeoLongitude ( 0.0f )
+ , m_sComment ( (char*) "" )
+
+ , m_pBuf ( NULL )
+ , m_pCur ( NULL )
+ , m_iBufLeft ( 0 )
+ , m_bBufOverrun ( false )
+{
+ m_sQueryBuffer = new char [ iLength+2 ];
+ memcpy ( m_sQueryBuffer, sQuery, iLength );
+ m_sQueryBuffer[iLength]= ';';
+ m_sQueryBuffer[iLength+1]= '\0';
+}
+
+
+CSphSEQuery::~CSphSEQuery ()
+{
+ SPH_ENTER_METHOD();
+ SafeDeleteArray ( m_sQueryBuffer );
+ SafeDeleteArray ( m_pWeights );
+ SafeDeleteArray ( m_pBuf );
+ for ( int i=0; i<m_dOverrides.elements(); i++ )
+ SafeDelete ( m_dOverrides.at(i) );
+ SPH_VOID_RET();
+}
+
+
+template < typename T >
+int CSphSEQuery::ParseArray ( T ** ppValues, const char * sValue )
+{
+ SPH_ENTER_METHOD();
+
+ assert ( ppValues );
+ assert ( !(*ppValues) );
+
+ const char * pValue;
+ bool bPrevDigit = false;
+ int iValues = 0;
+
+ // count the values
+ for ( pValue=sValue; *pValue; pValue++ )
+ {
+ bool bDigit = (*pValue)>='0' && (*pValue)<='9';
+ if ( bDigit && !bPrevDigit )
+ iValues++;
+ bPrevDigit = bDigit;
+ }
+ if ( !iValues )
+ SPH_RET(0);
+
+ // extract the values
+ T * pValues = new T [ iValues ];
+ *ppValues = pValues;
+
+ int iIndex = 0, iSign = 1;
+ T uValue = 0;
+
+ bPrevDigit = false;
+ for ( pValue=sValue ;; pValue++ )
+ {
+ bool bDigit = (*pValue)>='0' && (*pValue)<='9';
+
+ if ( bDigit )
+ {
+ if ( !bPrevDigit )
+ uValue = 0;
+ uValue = uValue*10 + ( (*pValue)-'0' );
+ }
+ else if ( bPrevDigit )
+ {
+ assert ( iIndex<iValues );
+ pValues [ iIndex++ ] = uValue * iSign;
+ iSign = 1;
+ }
+ else if ( *pValue=='-' )
+ iSign = -1;
+ bPrevDigit = bDigit;
+
+ if ( !*pValue )
+ break;
+ }
+
+ SPH_RET(iValues);
+}
+
+
+static char * chop ( char * s )
+{
+ while ( *s && isspace(*s) )
+ s++;
+
+ char * p = s + strlen(s);
+ while ( p>s && isspace(p[-1]) )
+ p--;
+ *p = '\0';
+
+ return s;
+}
+
+
+static bool myisattr ( char c )
+{
+ return
+ ( c>='0' && c<='9' ) ||
+ ( c>='a' && c<='z' ) ||
+ ( c>='A' && c<='Z' ) ||
+ c=='_';
+}
+
+
+bool CSphSEQuery::ParseField ( char * sField )
+{
+ SPH_ENTER_METHOD();
+
+ // look for option name/value separator
+ char * sValue = strchr ( sField, '=' );
+ if ( !sValue || sValue==sField || sValue[-1]=='\\' )
+ {
+ // by default let's assume it's just query
+ if ( sField[0] )
+ {
+ if ( m_bQuery )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "search query already specified; '%s' is redundant", sField );
+ SPH_RET(false);
+ } else
+ {
+ m_sQuery = sField;
+ m_bQuery = true;
+
+ // unescape
+ char *s = sField, *d = sField;
+ while ( *s )
+ {
+ if ( *s!='\\' ) *d++ = *s;
+ s++;
+ }
+ *d = '\0';
+ }
+ }
+ SPH_RET(true);
+ }
+
+ // split
+ *sValue++ = '\0';
+ sValue = chop ( sValue );
+ int iValue = atoi ( sValue );
+
+ // handle options
+ char * sName = chop ( sField );
+
+ if ( !strcmp ( sName, "query" ) ) m_sQuery = sValue;
+ else if ( !strcmp ( sName, "host" ) ) m_sHost = sValue;
+ else if ( !strcmp ( sName, "port" ) ) m_iPort = iValue;
+ else if ( !strcmp ( sName, "index" ) ) m_sIndex = sValue;
+ else if ( !strcmp ( sName, "offset" ) ) m_iOffset = iValue;
+ else if ( !strcmp ( sName, "limit" ) ) m_iLimit = iValue;
+ else if ( !strcmp ( sName, "weights" ) ) m_iWeights = ParseArray<uint32> ( &m_pWeights, sValue );
+ else if ( !strcmp ( sName, "minid" ) ) m_iMinID = iValue;
+ else if ( !strcmp ( sName, "maxid" ) ) m_iMaxID = iValue;
+ else if ( !strcmp ( sName, "maxmatches" ) ) m_iMaxMatches = iValue;
+ else if ( !strcmp ( sName, "maxquerytime" ) ) m_iMaxQueryTime = iValue;
+ else if ( !strcmp ( sName, "groupsort" ) ) m_sGroupSortBy = sValue;
+ else if ( !strcmp ( sName, "distinct" ) ) m_sGroupDistinct = sValue;
+ else if ( !strcmp ( sName, "cutoff" ) ) m_iCutoff = iValue;
+ else if ( !strcmp ( sName, "comment" ) ) m_sComment = sValue;
+
+ else if ( !strcmp ( sName, "mode" ) )
+ {
+
+ m_eMode = SPH_MATCH_ALL;
+ if ( !strcmp ( sValue, "any") ) m_eMode = SPH_MATCH_ANY;
+ else if ( !strcmp ( sValue, "phrase" ) ) m_eMode = SPH_MATCH_PHRASE;
+ else if ( !strcmp ( sValue, "boolean") ) m_eMode = SPH_MATCH_BOOLEAN;
+ else if ( !strcmp ( sValue, "ext") ) m_eMode = SPH_MATCH_EXTENDED;
+ else if ( !strcmp ( sValue, "extended") ) m_eMode = SPH_MATCH_EXTENDED;
+ else if ( !strcmp ( sValue, "ext2") ) m_eMode = SPH_MATCH_EXTENDED2;
+ else if ( !strcmp ( sValue, "extended2") ) m_eMode = SPH_MATCH_EXTENDED2;
+ else if ( !strcmp ( sValue, "all") ) m_eMode = SPH_MATCH_ALL;
+ else if ( !strcmp ( sValue, "fullscan") ) m_eMode = SPH_MATCH_FULLSCAN;
+ else
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "unknown matching mode '%s'", sValue );
+ SPH_RET(false);
+ }
+ } else if ( !strcmp ( sName, "ranker" ) )
+ {
+
+ m_eRanker = SPH_RANK_PROXIMITY_BM25;
+ if ( !strcmp ( sValue, "proximity_bm25") ) m_eRanker = SPH_RANK_PROXIMITY_BM25;
+ else if ( !strcmp ( sValue, "bm25" ) ) m_eRanker = SPH_RANK_BM25;
+ else if ( !strcmp ( sValue, "none" ) ) m_eRanker = SPH_RANK_NONE;
+ else if ( !strcmp ( sValue, "wordcount" ) ) m_eRanker = SPH_RANK_WORDCOUNT;
+ else if ( !strcmp ( sValue, "proximity" ) ) m_eRanker = SPH_RANK_PROXIMITY;
+ else if ( !strcmp ( sValue, "matchany" ) ) m_eRanker = SPH_RANK_MATCHANY;
+ else if ( !strcmp ( sValue, "fieldmask" ) ) m_eRanker = SPH_RANK_FIELDMASK;
+ else
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "unknown ranking mode '%s'", sValue );
+ SPH_RET(false);
+ }
+ } else if ( !strcmp ( sName, "sort" ) )
+ {
+ static const struct
+ {
+ const char * m_sName;
+ ESphSortOrder m_eSort;
+ } dSortModes[] =
+ {
+ { "relevance", SPH_SORT_RELEVANCE },
+ { "attr_desc:", SPH_SORT_ATTR_DESC },
+ { "attr_asc:", SPH_SORT_ATTR_ASC },
+ { "time_segments:", SPH_SORT_TIME_SEGMENTS },
+ { "extended:", SPH_SORT_EXTENDED },
+ { "expr:", SPH_SORT_EXPR }
+ };
+
+ int i;
+ const int nModes = sizeof(dSortModes)/sizeof(dSortModes[0]);
+ for ( i=0; i<nModes; i++ )
+ if ( !strncmp ( sValue, dSortModes[i].m_sName, strlen(dSortModes[i].m_sName) ) )
+ {
+ m_eSort = dSortModes[i].m_eSort;
+ m_sSortBy = sValue + strlen(dSortModes[i].m_sName);
+ break;
+ }
+ if ( i==nModes )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "unknown sorting mode '%s'", sValue );
+ SPH_RET(false);
+ }
+
+ } else if ( !strcmp ( sName, "groupby" ) )
+ {
+ static const struct
+ {
+ const char * m_sName;
+ ESphGroupBy m_eFunc;
+ } dGroupModes[] =
+ {
+ { "day:", SPH_GROUPBY_DAY },
+ { "week:", SPH_GROUPBY_WEEK },
+ { "month:", SPH_GROUPBY_MONTH },
+ { "year:", SPH_GROUPBY_YEAR },
+ { "attr:", SPH_GROUPBY_ATTR },
+ };
+
+ int i;
+ const int nModes = sizeof(dGroupModes)/sizeof(dGroupModes[0]);
+ for ( i=0; i<nModes; i++ )
+ if ( !strncmp ( sValue, dGroupModes[i].m_sName, strlen(dGroupModes[i].m_sName) ) )
+ {
+ m_eGroupFunc = dGroupModes[i].m_eFunc;
+ m_sGroupBy = sValue + strlen(dGroupModes[i].m_sName);
+ break;
+ }
+ if ( i==nModes )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "unknown groupby mode '%s'", sValue );
+ SPH_RET(false);
+ }
+
+ } else if ( m_iFilters<SPHINXSE_MAX_FILTERS &&
+ ( !strcmp ( sName, "range" ) || !strcmp ( sName, "!range" ) || !strcmp ( sName, "floatrange" ) || !strcmp ( sName, "!floatrange" ) ) )
+ {
+ for ( ;; )
+ {
+ char * p = sName;
+ CSphSEFilter & tFilter = m_dFilters [ m_iFilters ];
+ tFilter.m_bExclude = ( *p=='!' ); if ( tFilter.m_bExclude ) p++;
+ tFilter.m_eType = ( *p=='f' ) ? SPH_FILTER_FLOATRANGE : SPH_FILTER_RANGE;
+
+ if (!( p = strchr ( sValue, ',' ) ))
+ break;
+ *p++ = '\0';
+
+ tFilter.m_sAttrName = chop ( sValue );
+ sValue = p;
+
+ if (!( p = strchr ( sValue, ',' ) ))
+ break;
+ *p++ = '\0';
+
+ if ( tFilter.m_eType==SPH_FILTER_RANGE )
+ {
+ tFilter.m_uMinValue = strtoll ( sValue, NULL, 0 );
+ tFilter.m_uMaxValue = strtoll ( p, NULL, 0 );
+ } else
+ {
+ tFilter.m_fMinValue = (float)atof(sValue);
+ tFilter.m_fMaxValue = (float)atof(p);
+ }
+
+ // all ok
+ m_iFilters++;
+ break;
+ }
+
+ } else if ( m_iFilters<SPHINXSE_MAX_FILTERS &&
+ ( !strcmp ( sName, "filter" ) || !strcmp ( sName, "!filter" ) ) )
+ {
+ for ( ;; )
+ {
+ CSphSEFilter & tFilter = m_dFilters [ m_iFilters ];
+ tFilter.m_eType = SPH_FILTER_VALUES;
+ tFilter.m_bExclude = ( strcmp ( sName, "!filter")==0 );
+
+ // get the attr name
+ while ( (*sValue) && !myisattr(*sValue) )
+ sValue++;
+ if ( !*sValue )
+ break;
+
+ tFilter.m_sAttrName = sValue;
+ while ( (*sValue) && myisattr(*sValue) )
+ sValue++;
+ if ( !*sValue )
+ break;
+ *sValue++ = '\0';
+
+ // get the values
+ tFilter.m_iValues = ParseArray<longlong> ( &tFilter.m_pValues, sValue );
+ if ( !tFilter.m_iValues )
+ {
+ assert ( !tFilter.m_pValues );
+ break;
+ }
+
+ // all ok
+ m_iFilters++;
+ break;
+ }
+
+ } else if ( !strcmp ( sName, "indexweights" ) || !strcmp ( sName, "fieldweights" ) )
+ {
+ bool bIndex = !strcmp ( sName, "indexweights" );
+ int * pCount = bIndex ? &m_iIndexWeights : &m_iFieldWeights;
+ char ** pNames = bIndex ? &m_sIndexWeight[0] : &m_sFieldWeight[0];
+ int * pWeights = bIndex ? &m_iIndexWeight[0] : &m_iFieldWeight[0];
+
+ *pCount = 0;
+
+ char * p = sValue;
+ while ( *p && *pCount<SPHINXSE_MAX_FILTERS )
+ {
+ // extract attr name
+ if ( !myisattr(*p) )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "%s: index name expected near '%s'", sName, p );
+ SPH_RET(false);
+ }
+
+ pNames[*pCount] = p;
+ while ( myisattr(*p) ) p++;
+
+ if ( *p!=',' )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "%s: comma expected near '%s'", sName, p );
+ SPH_RET(false);
+ }
+ *p++ = '\0';
+
+ // extract attr value
+ char * sVal = p;
+ while ( isdigit(*p) ) p++;
+ if ( p==sVal )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "%s: integer weight expected near '%s'", sName, sVal );
+ SPH_RET(false);
+ }
+ pWeights[*pCount] = atoi(sVal);
+ (*pCount)++;
+
+ if ( !*p ) break;
+ if ( *p!=',' )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "%s: comma expected near '%s'", sName, p );
+ SPH_RET(false);
+ }
+ p++;
+ }
+
+ } else if ( !strcmp ( sName, "geoanchor" ) )
+ {
+ m_bGeoAnchor = false;
+ for ( ;; )
+ {
+ char * sLat = sValue;
+ char * p = sValue;
+
+ if (!( p = strchr ( p, ',' ) )) break; *p++ = '\0';
+ char * sLong = p;
+
+ if (!( p = strchr ( p, ',' ) )) break; *p++ = '\0';
+ char * sLatVal = p;
+
+ if (!( p = strchr ( p, ',' ) )) break; *p++ = '\0';
+ char * sLongVal = p;
+
+ m_sGeoLatAttr = chop(sLat);
+ m_sGeoLongAttr = chop(sLong);
+ m_fGeoLatitude = (float)atof(sLatVal);
+ m_fGeoLongitude = (float)atof(sLongVal);
+ m_bGeoAnchor = true;
+ break;
+ }
+ if ( !m_bGeoAnchor )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "geoanchor: parse error, not enough comma-separated arguments" );
+ SPH_RET(false);
+ }
+ }
+ else if ( !strcmp ( sName, "override" ) ) // name,type,id:value,id:value,...
+ {
+ char * sName = NULL;
+ int iType = 0;
+ CSphSEQuery::Override_t * pOverride = NULL;
+
+ // get name and type
+ char * sRest = sValue;
+ for ( ;; )
+ {
+ sName = sRest;
+ if ( !*sName )
+ break;
+
+ if (!( sRest = strchr ( sRest, ',' ) )) break; *sRest++ = '\0';
+ char * sType = sRest;
+ if (!( sRest = strchr ( sRest, ',' ) )) break;
+
+ static const struct
+ {
+ const char * m_sName;
+ int m_iType;
+ }
+ dAttrTypes[] =
+ {
+ { "int", SPH_ATTR_INTEGER },
+ { "timestamp", SPH_ATTR_TIMESTAMP },
+ { "bool", SPH_ATTR_BOOL },
+ { "float", SPH_ATTR_FLOAT },
+ { "bigint", SPH_ATTR_BIGINT }
+ };
+ for ( uint i=0; i<sizeof(dAttrTypes)/sizeof(*dAttrTypes); i++ )
+ if ( !strncmp( sType, dAttrTypes[i].m_sName, sRest - sType ) )
+ {
+ iType = dAttrTypes[i].m_iType;
+ break;
+ }
+ break;
+ }
+
+ // fail
+ if ( !sName || !*sName || !iType )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "override: malformed query" );
+ SPH_RET(false);
+ }
+
+ // grab id:value pairs
+ sRest++;
+ while ( sRest )
+ {
+ char * sId = sRest;
+ if (!( sRest = strchr ( sRest, ':' ) )) break; *sRest++ = '\0';
+ if (!( sRest - sId )) break;
+
+ char * sValue = sRest;
+ if (( sRest = strchr ( sRest, ',' ) )) *sRest++ = '\0';
+ if ( !*sValue )
+ break;
+
+ if ( !pOverride )
+ {
+ pOverride = new CSphSEQuery::Override_t;
+ pOverride->m_sName = chop(sName);
+ pOverride->m_iType = iType;
+ m_dOverrides.append(pOverride);
+ }
+
+ ulonglong uId = strtoull ( sId, NULL, 10 );
+ CSphSEQuery::Override_t::Value_t tValue;
+ if ( iType == SPH_ATTR_FLOAT )
+ tValue.m_fValue = (float)atof(sValue);
+ else if ( iType == SPH_ATTR_BIGINT )
+ tValue.m_iValue64 = strtoll ( sValue, NULL, 10 );
+ else
+ tValue.m_uValue = (uint32)strtoul ( sValue, NULL, 10 );
+
+ pOverride->m_dIds.append ( uId );
+ pOverride->m_dValues.append ( tValue );
+ }
+
+ if ( !pOverride )
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "override: id:value mapping expected" );
+ SPH_RET(false);
+ }
+ SPH_RET(true);
+ }
+ else
+ {
+ snprintf ( m_sParseError, sizeof(m_sParseError), "unknown parameter '%s'", sName );
+ SPH_RET(false);
+ }
+
+ // !COMMIT handle syntax errors
+
+ SPH_RET(true);
+}
+
+
+bool CSphSEQuery::Parse ()
+{
+ SPH_ENTER_METHOD();
+ SPH_DEBUG ( "query [[ %s ]]", m_sQueryBuffer );
+
+ m_bQuery = false;
+ char * pCur = m_sQueryBuffer;
+ char * pNext = pCur;
+
+ while (( pNext = strchr ( pNext, ';' ) ))
+ {
+ // handle escaped semicolons
+ if ( pNext>m_sQueryBuffer && pNext[-1]=='\\' && pNext[1]!='\0' )
+ {
+ pNext++;
+ continue;
+ }
+
+ // handle semicolon-separated clauses
+ *pNext++ = '\0';
+ if ( !ParseField ( pCur ) )
+ SPH_RET(false);
+ pCur = pNext;
+ }
+
+ SPH_RET(true);
+}
+
+
+void CSphSEQuery::SendBytes ( const void * pBytes, int iBytes )
+{
+ SPH_ENTER_METHOD();
+ if ( m_iBufLeft<iBytes )
+ {
+ m_bBufOverrun = true;
+ SPH_VOID_RET();
+ }
+
+ memcpy ( m_pCur, pBytes, iBytes );
+
+ m_pCur += iBytes;
+ m_iBufLeft -= iBytes;
+ SPH_VOID_RET();
+}
+
+
+int CSphSEQuery::BuildRequest ( char ** ppBuffer )
+{
+ SPH_ENTER_METHOD();
+
+ // calc request length
+ int iReqSize = 124 + 4*m_iWeights
+ + strlen ( m_sSortBy )
+ + strlen ( m_sQuery )
+ + strlen ( m_sIndex )
+ + strlen ( m_sGroupBy )
+ + strlen ( m_sGroupSortBy )
+ + strlen ( m_sGroupDistinct )
+ + strlen ( m_sComment );
+ for ( int i=0; i<m_iFilters; i++ )
+ {
+ const CSphSEFilter & tFilter = m_dFilters[i];
+ iReqSize += 12 + strlen ( tFilter.m_sAttrName ); // string attr-name; int type; int exclude-flag
+ switch ( tFilter.m_eType )
+ {
+ case SPH_FILTER_VALUES: iReqSize += 4 + 8*tFilter.m_iValues; break;
+ case SPH_FILTER_RANGE: iReqSize += 16; break;
+ case SPH_FILTER_FLOATRANGE: iReqSize += 8; break;
+ }
+ }
+ if ( m_bGeoAnchor ) // 1.14+
+ iReqSize += 16 + strlen ( m_sGeoLatAttr ) + strlen ( m_sGeoLongAttr );
+ for ( int i=0; i<m_iIndexWeights; i++ ) // 1.15+
+ iReqSize += 8 + strlen(m_sIndexWeight[i] );
+ for ( int i=0; i<m_iFieldWeights; i++ ) // 1.18+
+ iReqSize += 8 + strlen(m_sFieldWeight[i] );
+ // overrides
+ iReqSize += 4;
+ for ( int i=0; i<m_dOverrides.elements(); i++ )
+ {
+ CSphSEQuery::Override_t * pOverride = m_dOverrides.at(i);
+ const uint32 uSize = pOverride->m_iType == SPH_ATTR_BIGINT ? 16 : 12; // id64 + value
+ iReqSize += strlen ( pOverride->m_sName ) + 12 + uSize*pOverride->m_dIds.elements();
+ }
+ // select
+ iReqSize += 4;
+
+ m_iBufLeft = 0;
+ SafeDeleteArray ( m_pBuf );
+
+ m_pBuf = new char [ iReqSize ];
+ if ( !m_pBuf )
+ SPH_RET(-1);
+
+ m_pCur = m_pBuf;
+ m_iBufLeft = iReqSize;
+ m_bBufOverrun = false;
+ (*ppBuffer) = m_pBuf;
+
+ // build request
+ SendWord ( SEARCHD_COMMAND_SEARCH ); // command id
+ SendWord ( VER_COMMAND_SEARCH ); // command version
+ SendInt ( iReqSize-8 ); // packet body length
+
+ SendInt ( 1 ); // number of queries
+ SendInt ( m_iOffset );
+ SendInt ( m_iLimit );
+ SendInt ( m_eMode );
+ SendInt ( m_eRanker ); // 1.16+
+ SendInt ( m_eSort );
+ SendString ( m_sSortBy ); // sort attr
+ SendString ( m_sQuery ); // query
+ SendInt ( m_iWeights );
+ for ( int j=0; j<m_iWeights; j++ )
+ SendInt ( m_pWeights[j] ); // weights
+ SendString ( m_sIndex ); // indexes
+ SendInt ( 1 ); // id64 range follows
+ SendUint64 ( m_iMinID ); // id/ts ranges
+ SendUint64 ( m_iMaxID );
+
+ SendInt ( m_iFilters );
+ for ( int j=0; j<m_iFilters; j++ )
+ {
+ const CSphSEFilter & tFilter = m_dFilters[j];
+ SendString ( tFilter.m_sAttrName );
+ SendInt ( tFilter.m_eType );
+
+ switch ( tFilter.m_eType )
+ {
+ case SPH_FILTER_VALUES:
+ SendInt ( tFilter.m_iValues );
+ for ( int k=0; k<tFilter.m_iValues; k++ )
+ SendUint64 ( tFilter.m_pValues[k] );
+ break;
+
+ case SPH_FILTER_RANGE:
+ SendUint64 ( tFilter.m_uMinValue );
+ SendUint64 ( tFilter.m_uMaxValue );
+ break;
+
+ case SPH_FILTER_FLOATRANGE:
+ SendFloat ( tFilter.m_fMinValue );
+ SendFloat ( tFilter.m_fMaxValue );
+ break;
+ }
+
+ SendInt ( tFilter.m_bExclude );
+ }
+
+ SendInt ( m_eGroupFunc );
+ SendString ( m_sGroupBy );
+ SendInt ( m_iMaxMatches );
+ SendString ( m_sGroupSortBy );
+ SendInt ( m_iCutoff ); // 1.9+
+ SendInt ( m_iRetryCount ); // 1.10+
+ SendInt ( m_iRetryDelay );
+ SendString ( m_sGroupDistinct ); // 1.11+
+ SendInt ( m_bGeoAnchor ); // 1.14+
+ if ( m_bGeoAnchor )
+ {
+ SendString ( m_sGeoLatAttr );
+ SendString ( m_sGeoLongAttr );
+ SendFloat ( m_fGeoLatitude );
+ SendFloat ( m_fGeoLongitude );
+ }
+ SendInt ( m_iIndexWeights ); // 1.15+
+ for ( int i=0; i<m_iIndexWeights; i++ )
+ {
+ SendString ( m_sIndexWeight[i] );
+ SendInt ( m_iIndexWeight[i] );
+ }
+ SendInt ( m_iMaxQueryTime ); // 1.17+
+ SendInt ( m_iFieldWeights ); // 1.18+
+ for ( int i=0; i<m_iFieldWeights; i++ )
+ {
+ SendString ( m_sFieldWeight[i] );
+ SendInt ( m_iFieldWeight[i] );
+ }
+ SendString ( m_sComment );
+
+ // overrides
+ SendInt ( m_dOverrides.elements() );
+ for ( int i=0; i<m_dOverrides.elements(); i++ )
+ {
+ CSphSEQuery::Override_t * pOverride = m_dOverrides.at(i);
+ SendString ( pOverride->m_sName );
+ SendDword ( pOverride->m_iType );
+ SendInt ( pOverride->m_dIds.elements() );
+ for ( int j=0; j<pOverride->m_dIds.elements(); j++ )
+ {
+ SendUint64 ( pOverride->m_dIds.at(j) );
+ if ( pOverride->m_iType == SPH_ATTR_FLOAT )
+ SendFloat ( pOverride->m_dValues.at(j).m_fValue );
+ else if ( pOverride->m_iType == SPH_ATTR_BIGINT )
+ SendUint64 ( pOverride->m_dValues.at(j).m_iValue64 );
+ else
+ SendDword ( pOverride->m_dValues.at(j).m_uValue );
+ }
+ }
+
+ // select
+ SendString ( "" );
+
+ // detect buffer overruns and underruns, and report internal error
+ if ( m_bBufOverrun || m_iBufLeft!=0 || m_pCur-m_pBuf!=iReqSize )
+ SPH_RET(-1);
+
+ // all fine
+ SPH_RET(iReqSize);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// SPHINX HANDLER
+//////////////////////////////////////////////////////////////////////////////
+
+static const char * ha_sphinx_exts[] = { NullS };
+
+
+#if MYSQL_VERSION_ID<50100
+ha_sphinx::ha_sphinx ( TABLE_ARG * table )
+ : handler ( &sphinx_hton, table )
+#else
+ha_sphinx::ha_sphinx ( handlerton * hton, TABLE_ARG * table )
+ : handler ( hton, table )
+#endif
+ , m_pShare ( NULL )
+ , m_iMatchesTotal ( 0 )
+ , m_iCurrentPos ( 0 )
+ , m_pCurrentKey ( NULL )
+ , m_iCurrentKeyLen ( 0 )
+ , m_pResponse ( NULL )
+ , m_pResponseEnd ( NULL )
+ , m_pCur ( NULL )
+ , m_bUnpackError ( false )
+ , m_iFields ( 0 )
+ , m_dFields ( NULL )
+ , m_iAttrs ( 0 )
+ , m_dAttrs ( NULL )
+ , m_bId64 ( 0 )
+ , m_dUnboundFields ( NULL )
+{
+ SPH_ENTER_METHOD();
+ SPH_VOID_RET();
+}
+
+
+// If frm_error() is called then we will use this to to find out what file extentions
+// exist for the storage engine. This is also used by the default rename_table and
+// delete_table method in handler.cc.
+const char ** ha_sphinx::bas_ext() const
+{
+ return ha_sphinx_exts;
+}
+
+
+// Used for opening tables. The name will be the name of the file.
+// A table is opened when it needs to be opened. For instance
+// when a request comes in for a select on the table (tables are not
+// open and closed for each request, they are cached).
+//
+// Called from handler.cc by handler::ha_open(). The server opens all tables by
+// calling ha_open() which then calls the handler specific open().
+int ha_sphinx::open ( const char * name, int, uint )
+{
+ SPH_ENTER_METHOD();
+ m_pShare = get_share ( name, table );
+ if ( !m_pShare )
+ SPH_RET(1);
+
+ thr_lock_data_init ( &m_pShare->m_tLock, &m_tLock, NULL );
+
+ *thd_ha_data ( table->in_use, ht ) = NULL;
+
+ SPH_RET(0);
+}
+
+
+int ha_sphinx::ConnectToSearchd ( const char * sQueryHost, int iQueryPort )
+{
+ SPH_ENTER_METHOD();
+
+ struct sockaddr_in sin;
+#ifndef __WIN__
+ struct sockaddr_un saun;
+#endif
+
+ int iDomain = 0;
+ int iSockaddrSize = 0;
+ struct sockaddr * pSockaddr = NULL;
+
+ in_addr_t ip_addr;
+ int version;
+ uint uClientVersion = htonl ( SPHINX_SEARCHD_PROTO );
+
+ const char * sHost = ( sQueryHost && *sQueryHost ) ? sQueryHost : m_pShare->m_sHost;
+ ushort iPort = iQueryPort ? (ushort)iQueryPort : m_pShare->m_iPort;
+
+ if ( iPort )
+ {
+ iDomain = AF_INET;
+ iSockaddrSize = sizeof(sin);
+ pSockaddr = (struct sockaddr *) &sin;
+
+ memset ( &sin, 0, sizeof(sin) );
+ sin.sin_family = AF_INET;
+ sin.sin_port = htons(iPort);
+
+ // prepare host address
+ if ( (int)( ip_addr=inet_addr(sHost) ) != (int)INADDR_NONE )
+ {
+ memcpy ( &sin.sin_addr, &ip_addr, sizeof(ip_addr) );
+ } else
+ {
+ int tmp_errno;
+ struct hostent tmp_hostent, *hp;
+ char buff2 [ GETHOSTBYNAME_BUFF_SIZE ];
+
+ hp = my_gethostbyname_r ( sHost, &tmp_hostent,
+ buff2, sizeof(buff2), &tmp_errno );
+ if ( !hp )
+ {
+ my_gethostbyname_r_free();
+
+ char sError[256];
+ my_snprintf ( sError, sizeof(sError), "failed to resolve searchd host (name=%s)", sHost );
+
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SPH_RET(-1);
+ }
+
+ memcpy ( &sin.sin_addr, hp->h_addr,
+ Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) );
+ my_gethostbyname_r_free();
+ }
+ } else
+ {
+#ifndef __WIN__
+ iDomain = AF_UNIX;
+ iSockaddrSize = sizeof(saun);
+ pSockaddr = (struct sockaddr *) &saun;
+
+ memset ( &saun, 0, sizeof(saun) );
+ saun.sun_family = AF_UNIX;
+ strncpy ( saun.sun_path, sHost, sizeof(saun.sun_path)-1 );
+#else
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "UNIX sockets are not supported on Windows" );
+ SPH_RET(-1);
+#endif
+ }
+
+ char sError[512];
+ int iSocket = socket ( iDomain, SOCK_STREAM, 0 );
+
+ if ( iSocket<0 )
+ {
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "failed to create client socket" );
+ SPH_RET(-1);
+ }
+
+ if ( connect ( iSocket, pSockaddr, iSockaddrSize )<0 )
+ {
+ sphSockClose ( iSocket );
+ my_snprintf ( sError, sizeof(sError), "failed to connect to searchd (host=%s, errno=%d, port=%d)",
+ sHost, errno, iPort );
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SPH_RET(-1);
+ }
+
+ if ( ::recv ( iSocket, (char *)&version, sizeof(version), 0 )!=sizeof(version) )
+ {
+ sphSockClose ( iSocket );
+ my_snprintf ( sError, sizeof(sError), "failed to receive searchd version (host=%s, port=%d)",
+ sHost, iPort );
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SPH_RET(-1);
+ }
+
+ if ( ::send ( iSocket, (char*)&uClientVersion, sizeof(uClientVersion), 0 )!=sizeof(uClientVersion) )
+ {
+ sphSockClose ( iSocket );
+ my_snprintf ( sError, sizeof(sError), "failed to send client version (host=%s, port=%d)",
+ sHost, iPort );
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SPH_RET(-1);
+ }
+
+ SPH_RET(iSocket);
+}
+
+
+// Closes a table. We call the free_share() function to free any resources
+// that we have allocated in the "shared" structure.
+//
+// Called from sql_base.cc, sql_select.cc, and table.cc.
+// In sql_select.cc it is only used to close up temporary tables or during
+// the process where a temporary table is converted over to being a
+// myisam table.
+// For sql_base.cc look at close_data_tables().
+int ha_sphinx::close()
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( free_share(m_pShare) );
+}
+
+
+int ha_sphinx::write_row ( uchar * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+int ha_sphinx::update_row ( const uchar *, uchar * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+int ha_sphinx::delete_row ( const uchar * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+// keynr is key (index) number
+// sorted is 1 if result MUST be sorted according to index
+int ha_sphinx::index_init ( uint keynr, bool )
+{
+ SPH_ENTER_METHOD();
+ active_index = keynr;
+ SPH_RET(0);
+}
+
+
+int ha_sphinx::index_end()
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(0);
+}
+
+
+uint32 ha_sphinx::UnpackDword ()
+{
+ if ( m_pCur+sizeof(uint32)>m_pResponseEnd )
+ {
+ m_pCur = m_pResponseEnd;
+ m_bUnpackError = true;
+ return 0;
+ }
+
+ uint32 uRes = ntohl ( sphUnalignedRead ( *(uint32*)m_pCur ) );
+ m_pCur += sizeof(uint32);
+ return uRes;
+}
+
+
+char * ha_sphinx::UnpackString ()
+{
+ uint32 iLen = UnpackDword ();
+ if ( !iLen )
+ return NULL;
+
+ if ( m_pCur+iLen>m_pResponseEnd )
+ {
+ m_pCur = m_pResponseEnd;
+ m_bUnpackError = true;
+ return NULL;
+ }
+
+ char * sRes = new char [ 1+iLen ];
+ memcpy ( sRes, m_pCur, iLen );
+ sRes[iLen] = '\0';
+ m_pCur += iLen;
+ return sRes;
+}
+
+
+static inline const char * FixNull ( const char * s )
+{
+ return s ? s : "(null)";
+}
+
+
+bool ha_sphinx::UnpackSchema ()
+{
+ SPH_ENTER_METHOD();
+
+ // cleanup
+ if ( m_dFields )
+ for ( int i=0; i<(int)m_iFields; i++ )
+ SafeDeleteArray ( m_dFields[i] );
+ SafeDeleteArray ( m_dFields );
+
+ // unpack network packet
+ uint32 uStatus = UnpackDword ();
+ char * sMessage = NULL;
+
+ if ( uStatus!=SEARCHD_OK )
+ {
+ sMessage = UnpackString ();
+ CSphSEThreadData * pTls = GetTls ();
+ if ( pTls )
+ {
+ strncpy ( pTls->m_tStats.m_sLastMessage, sMessage, sizeof(pTls->m_tStats.m_sLastMessage) );
+ pTls->m_tStats.m_bLastError = ( uStatus==SEARCHD_ERROR );
+ }
+
+ if ( uStatus==SEARCHD_ERROR )
+ {
+ char sError[1024];
+ my_snprintf ( sError, sizeof(sError), "searchd error: %s", sMessage );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SafeDeleteArray ( sMessage );
+ SPH_RET ( false );
+ }
+ }
+
+ m_iFields = UnpackDword ();
+ m_dFields = new char * [ m_iFields ];
+ if ( !m_dFields )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackSchema() failed (fields alloc error)" );
+ SPH_RET(false);
+ }
+
+ for ( uint32 i=0; i<m_iFields; i++ )
+ m_dFields[i] = UnpackString ();
+
+ SafeDeleteArray ( m_dAttrs );
+ m_iAttrs = UnpackDword ();
+ m_dAttrs = new CSphSEAttr [ m_iAttrs ];
+ if ( !m_dAttrs )
+ {
+ for ( int i=0; i<(int)m_iFields; i++ )
+ SafeDeleteArray ( m_dFields[i] );
+ SafeDeleteArray ( m_dFields );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackSchema() failed (attrs alloc error)" );
+ SPH_RET(false);
+ }
+
+ for ( uint32 i=0; i<m_iAttrs; i++ )
+ {
+ m_dAttrs[i].m_sName = UnpackString ();
+ m_dAttrs[i].m_uType = UnpackDword ();
+ if ( m_bUnpackError ) // m_sName may be null
+ break;
+
+ m_dAttrs[i].m_iField = -1;
+ for ( int j=SPHINXSE_SYSTEM_COLUMNS; j<m_pShare->m_iTableFields; j++ )
+ {
+ const char * sTableField = m_pShare->m_sTableField[j];
+ const char * sAttrField = m_dAttrs[i].m_sName;
+ if ( m_dAttrs[i].m_sName[0]=='@' )
+ {
+ const char * sAtPrefix = "_sph_";
+ if ( strncmp ( sTableField, sAtPrefix, strlen(sAtPrefix) ) )
+ continue;
+ sTableField += strlen(sAtPrefix);
+ sAttrField++;
+ }
+
+ if ( !strcasecmp ( sAttrField, sTableField ) )
+ {
+ // we're almost good, but
+ // let's enforce that timestamp columns can only receive timestamp attributes
+ if ( m_pShare->m_eTableFieldType[j]!=MYSQL_TYPE_TIMESTAMP || m_dAttrs[i].m_uType==SPH_ATTR_TIMESTAMP )
+ m_dAttrs[i].m_iField = j;
+ break;
+ }
+ }
+ }
+
+ m_iMatchesTotal = UnpackDword ();
+
+ m_bId64 = UnpackDword ();
+ if ( m_bId64 && m_pShare->m_eTableFieldType[0] != MYSQL_TYPE_LONGLONG )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: 1st column must be bigint to accept 64-bit DOCIDs" );
+ SPH_RET(false);
+ }
+
+ // network packet unpacked; build unbound fields map
+ SafeDeleteArray ( m_dUnboundFields );
+ m_dUnboundFields = new int [ m_pShare->m_iTableFields ];
+
+ for ( int i=0; i<m_pShare->m_iTableFields; i++ )
+ {
+ if ( i<SPHINXSE_SYSTEM_COLUMNS )
+ m_dUnboundFields[i] = SPH_ATTR_NONE;
+
+ else if ( m_pShare->m_eTableFieldType[i]==MYSQL_TYPE_TIMESTAMP )
+ m_dUnboundFields[i] = SPH_ATTR_TIMESTAMP;
+
+ else
+ m_dUnboundFields[i] = SPH_ATTR_INTEGER;
+ }
+
+ for ( uint32 i=0; i<m_iAttrs; i++ )
+ if ( m_dAttrs[i].m_iField>=0 )
+ m_dUnboundFields [ m_dAttrs[i].m_iField ] = SPH_ATTR_NONE;
+
+ if ( m_bUnpackError )
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackSchema() failed (unpack error)" );
+
+ SPH_RET(!m_bUnpackError);
+}
+
+
+bool ha_sphinx::UnpackStats ( CSphSEStats * pStats )
+{
+ assert ( pStats );
+
+ char * pCurSave = m_pCur;
+ for ( uint i=0; i<m_iMatchesTotal && m_pCur<m_pResponseEnd-sizeof(uint32); i++ )
+ {
+ m_pCur += m_bId64 ? 12 : 8; // skip id+weight
+ for ( uint32 i=0; i<m_iAttrs && m_pCur<m_pResponseEnd-sizeof(uint32); i++ )
+ {
+ if ( m_dAttrs[i].m_uType & SPH_ATTR_MULTI )
+ {
+ // skip MVA list
+ uint32 uCount = UnpackDword ();
+ m_pCur += uCount*4;
+ }
+ else // skip normal value
+ m_pCur += m_dAttrs[i].m_uType == SPH_ATTR_BIGINT ? 8 : 4;
+ }
+ }
+
+ pStats->m_iMatchesTotal = UnpackDword ();
+ pStats->m_iMatchesFound = UnpackDword ();
+ pStats->m_iQueryMsec = UnpackDword ();
+ pStats->m_iWords = UnpackDword ();
+
+ if ( m_bUnpackError )
+ return false;
+
+ SafeDeleteArray ( pStats->m_dWords );
+ if ( pStats->m_iWords<0 || pStats->m_iWords>=SPHINXSE_MAX_KEYWORDSTATS )
+ return false;
+ pStats->m_dWords = new CSphSEWordStats [ pStats->m_iWords ];
+ if ( !pStats->m_dWords )
+ return false;
+
+ for ( int i=0; i<pStats->m_iWords; i++ )
+ {
+ CSphSEWordStats & tWord = pStats->m_dWords[i];
+ tWord.m_sWord = UnpackString ();
+ tWord.m_iDocs = UnpackDword ();
+ tWord.m_iHits = UnpackDword ();
+ }
+
+ if ( m_bUnpackError )
+ return false;
+
+ m_pCur = pCurSave;
+ return true;
+}
+
+
+/// condition pushdown implementation, to properly intercept WHERE clauses on my columns
+const COND * ha_sphinx::cond_push ( const COND * cond )
+{
+ // catch the simplest case: query_column="some text"
+ for ( ;; )
+ {
+ if ( cond->type()!=COND::FUNC_ITEM )
+ break;
+
+ Item_func * condf = (Item_func *)cond;
+ if ( condf->functype()!=Item_func::EQ_FUNC || condf->argument_count()!=2 )
+ break;
+
+ Item ** args = condf->arguments();
+ if ( args[0]->type()!=COND::FIELD_ITEM || args[1]->type()!=COND::STRING_ITEM )
+ break;
+
+ Item_field * pField = (Item_field *) args[0];
+ if ( pField->field->field_index!=2 ) // FIXME! magic key index
+ break;
+
+ // get my tls
+ CSphSEThreadData * pTls = GetTls ();
+ if ( !pTls )
+ break;
+
+ // copy the query, and let know that we intercepted this condition
+ Item_string * pString = (Item_string *) args[1];
+ pTls->m_bQuery = true;
+ strncpy ( pTls->m_sQuery, pString->str_value.c_ptr(), sizeof(pTls->m_sQuery) );
+ pTls->m_sQuery[sizeof(pTls->m_sQuery)-1] = '\0';
+ pTls->m_pQueryCharset = pString->str_value.charset();
+ return NULL;
+ }
+
+ // don't change anything
+ return cond;
+}
+
+
+/// condition popup
+void ha_sphinx::cond_pop ()
+{
+ CSphSEThreadData * pTls = GetTls ();
+ if ( pTls && pTls->m_bQuery )
+ pTls->m_bQuery = false;
+ return;
+}
+
+
+/// get TLS (maybe allocate it, too)
+CSphSEThreadData * ha_sphinx::GetTls()
+{
+ // where do we store that pointer in today's version?
+ CSphSEThreadData ** ppTls;
+ ppTls = (CSphSEThreadData**) thd_ha_data ( ha_thd(), ht );
+
+ // allocate if needed
+ if ( !*ppTls )
+ *ppTls = new CSphSEThreadData ();
+
+ // errors will be handled by caller
+ return *ppTls;
+}
+
+
+// Positions an index cursor to the index specified in the handle. Fetches the
+// row if available. If the key value is null, begin at the first key of the
+// index.
+int ha_sphinx::index_read ( byte * buf, const byte * key, uint key_len, enum ha_rkey_function )
+{
+ SPH_ENTER_METHOD();
+ char sError[256];
+
+ // set new data for thd->ha_data, it is used in show_status
+ CSphSEThreadData * pTls = GetTls();
+ if ( !pTls )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: TLS malloc() failed" );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+ pTls->m_tStats.Reset ();
+
+ // parse query
+ if ( pTls->m_bQuery )
+ {
+ // we have a query from condition pushdown
+ m_pCurrentKey = (const byte *) pTls->m_sQuery;
+ m_iCurrentKeyLen = strlen(pTls->m_sQuery);
+ } else
+ {
+ // just use the key (might be truncated)
+ m_pCurrentKey = key+HA_KEY_BLOB_LENGTH;
+ m_iCurrentKeyLen = uint2korr(key); // or maybe key_len?
+ pTls->m_pQueryCharset = m_pShare ? m_pShare->m_pTableQueryCharset : NULL;
+ }
+
+ CSphSEQuery q ( (const char*)m_pCurrentKey, m_iCurrentKeyLen, m_pShare->m_sIndex );
+ if ( !q.Parse () )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), q.m_sParseError );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ // do connect
+ int iSocket = ConnectToSearchd ( q.m_sHost, q.m_iPort );
+ if ( iSocket<0 )
+ SPH_RET ( HA_ERR_END_OF_FILE );
+
+ // my buffer
+ char * pBuffer; // will be free by CSphSEQuery dtor; do NOT free manually
+ int iReqLen = q.BuildRequest ( &pBuffer );
+
+ if ( iReqLen<=0 )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: q.BuildRequest() failed" );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ // send request
+ ::send ( iSocket, pBuffer, iReqLen, 0 );
+
+ // receive reply
+ char sHeader[8];
+ int iGot = ::recv ( iSocket, sHeader, sizeof(sHeader), RECV_FLAGS );
+ if ( iGot!=sizeof(sHeader) )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "failed to receive response header (searchd went away?)" );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ short int uRespStatus = ntohs ( sphUnalignedRead ( *(short int*)( &sHeader[0] ) ) );
+ short int uRespVersion = ntohs ( sphUnalignedRead ( *(short int*)( &sHeader[2] ) ) );
+ uint uRespLength = ntohl ( sphUnalignedRead ( *(uint *)( &sHeader[4] ) ) );
+ SPH_DEBUG ( "got response header (status=%d version=%d length=%d)",
+ uRespStatus, uRespVersion, uRespLength );
+
+ SafeDeleteArray ( m_pResponse );
+ if ( uRespLength<=SPHINXSE_MAX_ALLOC )
+ m_pResponse = new char [ uRespLength+1 ];
+
+ if ( !m_pResponse )
+ {
+ my_snprintf ( sError, sizeof(sError), "bad searchd response length (length=%u)", uRespLength );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ int iRecvLength = 0;
+ while ( iRecvLength<(int)uRespLength )
+ {
+ int iRecv = ::recv ( iSocket, m_pResponse+iRecvLength, uRespLength-iRecvLength, RECV_FLAGS );
+ if ( iRecv<0 )
+ break;
+ iRecvLength += iRecv;
+ }
+
+ ::closesocket ( iSocket );
+ iSocket = -1;
+
+ if ( iRecvLength!=(int)uRespLength )
+ {
+ my_snprintf ( sError, sizeof(sError), "net read error (expected=%d, got=%d)", uRespLength, iRecvLength );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ // we'll have a message, at least
+ pTls->m_bStats = true;
+
+ // parse reply
+ m_iCurrentPos = 0;
+ m_pCur = m_pResponse;
+ m_pResponseEnd = m_pResponse + uRespLength;
+ m_bUnpackError = false;
+
+ if ( uRespStatus!=SEARCHD_OK )
+ {
+ char * sMessage = UnpackString ();
+ if ( !sMessage )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "no valid response from searchd (status=%d, resplen=%d)",
+ uRespStatus, uRespLength );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ strncpy ( pTls->m_tStats.m_sLastMessage, sMessage, sizeof(pTls->m_tStats.m_sLastMessage) );
+ SafeDeleteArray ( sMessage );
+
+ if ( uRespStatus!=SEARCHD_WARNING )
+ {
+ my_snprintf ( sError, sizeof(sError), "searchd error: %s", pTls->m_tStats.m_sLastMessage );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError );
+
+ pTls->m_tStats.m_bLastError = true;
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+ }
+
+ if ( !UnpackSchema () )
+ SPH_RET ( HA_ERR_END_OF_FILE );
+
+ if ( !UnpackStats ( &pTls->m_tStats ) )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: UnpackStats() failed" );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ SPH_RET ( get_rec ( buf, key, key_len ) );
+}
+
+
+// Positions an index cursor to the index specified in key. Fetches the
+// row if any. This is only used to read whole keys.
+int ha_sphinx::index_read_idx ( byte *, uint, const byte *, uint, enum ha_rkey_function )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+// Used to read forward through the index.
+int ha_sphinx::index_next ( byte * buf )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( get_rec ( buf, m_pCurrentKey, m_iCurrentKeyLen ) );
+}
+
+
+int ha_sphinx::index_next_same ( byte * buf, const byte * key, uint keylen )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( get_rec ( buf, key, keylen ) );
+}
+
+
+int ha_sphinx::get_rec ( byte * buf, const byte *, uint )
+{
+ SPH_ENTER_METHOD();
+
+ if ( m_iCurrentPos>=m_iMatchesTotal )
+ {
+ SafeDeleteArray ( m_pResponse );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ #if MYSQL_VERSION_ID>50100
+ my_bitmap_map * org_bitmap = dbug_tmp_use_all_columns ( table, table->write_set );
+ #endif
+ Field ** field = table->field;
+
+ // unpack and return the match
+ longlong uMatchID = UnpackDword ();
+ if ( m_bId64 )
+ uMatchID = ( uMatchID<<32 ) + UnpackDword();
+ uint32 uMatchWeight = UnpackDword ();
+
+ field[0]->store ( uMatchID, 1 );
+ field[1]->store ( uMatchWeight, 1 );
+ field[2]->store ( (const char*)m_pCurrentKey, m_iCurrentKeyLen, &my_charset_bin );
+
+ for ( uint32 i=0; i<m_iAttrs; i++ )
+ {
+ longlong iValue64= 0;
+ uint32 uValue = UnpackDword ();
+ if ( m_dAttrs[i].m_uType == SPH_ATTR_BIGINT )
+ iValue64 = ( (longlong)uValue<<32 ) | UnpackDword();
+ if ( m_dAttrs[i].m_iField<0 )
+ {
+ // skip MVA
+ if ( m_dAttrs[i].m_uType & SPH_ATTR_MULTI )
+ for ( ; uValue>0 && !m_bUnpackError; uValue-- )
+ UnpackDword();
+ continue;
+ }
+
+ Field * af = field [ m_dAttrs[i].m_iField ];
+ switch ( m_dAttrs[i].m_uType )
+ {
+ case SPH_ATTR_INTEGER:
+ case SPH_ATTR_ORDINAL:
+ case SPH_ATTR_BOOL:
+ af->store ( uValue, 1 );
+ break;
+
+ case SPH_ATTR_FLOAT:
+ af->store ( sphDW2F(uValue) );
+ break;
+
+ case SPH_ATTR_TIMESTAMP:
+ if ( af->type()==MYSQL_TYPE_TIMESTAMP )
+ longstore ( af->ptr, uValue ); // because store() does not accept timestamps
+ else
+ af->store ( uValue, 1 );
+ break;
+
+ case SPH_ATTR_BIGINT:
+ af->store ( iValue64, 0 );
+ break;
+
+ case ( SPH_ATTR_MULTI | SPH_ATTR_INTEGER ):
+ if ( uValue<=0 )
+ {
+ // shortcut, empty MVA set
+ af->store ( "", 0, &my_charset_bin );
+
+ } else
+ {
+ // convert MVA set to comma-separated string
+ char sBuf[1024]; // FIXME! magic size
+ char * pCur = sBuf;
+
+ for ( ; uValue>0 && !m_bUnpackError; uValue-- )
+ {
+ uint32 uEntry = UnpackDword ();
+ if ( pCur < sBuf+sizeof(sBuf)-16 ) // 10 chars per 32bit value plus some safety bytes
+ {
+ sprintf ( pCur, "%u", uEntry );
+ while ( *pCur ) *pCur++;
+ if ( uValue>1 )
+ *pCur++ = ','; // non-trailing commas
+ }
+ }
+
+ af->store ( sBuf, pCur-sBuf, &my_charset_bin );
+ }
+ break;
+
+ default:
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: unhandled attr type" );
+ SafeDeleteArray ( m_pResponse );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+ }
+
+ if ( m_bUnpackError )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: response unpacker failed" );
+ SafeDeleteArray ( m_pResponse );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ // zero out unmapped fields
+ for ( int i=SPHINXSE_SYSTEM_COLUMNS; i<(int)table->s->fields; i++ )
+ if ( m_dUnboundFields[i]!=SPH_ATTR_NONE )
+ switch ( m_dUnboundFields[i] )
+ {
+ case SPH_ATTR_INTEGER: table->field[i]->store ( 0, 1 ); break;
+ case SPH_ATTR_TIMESTAMP: longstore ( table->field[i]->ptr, 0 ); break;
+ default:
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0),
+ "INTERNAL ERROR: unhandled unbound field type %d", m_dUnboundFields[i] );
+ SafeDeleteArray ( m_pResponse );
+ SPH_RET ( HA_ERR_END_OF_FILE );
+ }
+
+ memset ( buf, 0, table->s->null_bytes );
+ m_iCurrentPos++;
+
+ #if MYSQL_VERSION_ID > 50100
+ dbug_tmp_restore_column_map(table->write_set, org_bitmap);
+ #endif
+
+ SPH_RET(0);
+}
+
+
+// Used to read backwards through the index.
+int ha_sphinx::index_prev ( byte * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+// index_first() asks for the first key in the index.
+//
+// Called from opt_range.cc, opt_sum.cc, sql_handler.cc,
+// and sql_select.cc.
+int ha_sphinx::index_first ( byte * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_END_OF_FILE );
+}
+
+// index_last() asks for the last key in the index.
+//
+// Called from opt_range.cc, opt_sum.cc, sql_handler.cc,
+// and sql_select.cc.
+int ha_sphinx::index_last ( byte * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+int ha_sphinx::rnd_init ( bool )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(0);
+}
+
+
+int ha_sphinx::rnd_end()
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(0);
+}
+
+
+int ha_sphinx::rnd_next ( byte * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_END_OF_FILE );
+}
+
+
+void ha_sphinx::position ( const byte * )
+{
+ SPH_ENTER_METHOD();
+ SPH_VOID_RET();
+}
+
+
+// This is like rnd_next, but you are given a position to use
+// to determine the row. The position will be of the type that you stored in
+// ref. You can use ha_get_ptr(pos,ref_length) to retrieve whatever key
+// or position you saved when position() was called.
+// Called from filesort.cc records.cc sql_insert.cc sql_select.cc sql_update.cc.
+int ha_sphinx::rnd_pos ( byte *, byte * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+#if MYSQL_VERSION_ID>=50030
+int ha_sphinx::info ( uint )
+#else
+void ha_sphinx::info ( uint )
+#endif
+{
+ SPH_ENTER_METHOD();
+
+ if ( table->s->keys>0 )
+ table->key_info[0].rec_per_key[0] = 1;
+
+ #if MYSQL_VERSION_ID>50100
+ stats.records = 20;
+ #else
+ records = 20;
+ #endif
+
+#if MYSQL_VERSION_ID>=50030
+ SPH_RET(0);
+#else
+ SPH_VOID_RET();
+#endif
+}
+
+
+int ha_sphinx::reset ()
+{
+ SPH_ENTER_METHOD();
+ CSphSEThreadData * pTls = GetTls ();
+ if ( pTls )
+ pTls->m_bQuery = false;
+ SPH_RET(0);
+}
+
+
+int ha_sphinx::delete_all_rows()
+{
+ SPH_ENTER_METHOD();
+ SPH_RET ( HA_ERR_WRONG_COMMAND );
+}
+
+
+// First you should go read the section "locking functions for mysql" in
+// lock.cc to understand this.
+// This create a lock on the table. If you are implementing a storage engine
+// that can handle transacations look at ha_berkely.cc to see how you will
+// want to go about doing this. Otherwise you should consider calling flock()
+// here.
+//
+// Called from lock.cc by lock_external() and unlock_external(). Also called
+// from sql_table.cc by copy_data_between_tables().
+int ha_sphinx::external_lock ( THD *, int )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(0);
+}
+
+
+THR_LOCK_DATA ** ha_sphinx::store_lock ( THD *, THR_LOCK_DATA ** to,
+ enum thr_lock_type lock_type )
+{
+ SPH_ENTER_METHOD();
+
+ if ( lock_type!=TL_IGNORE && m_tLock.type==TL_UNLOCK )
+ m_tLock.type=lock_type;
+
+ *to++ = &m_tLock;
+ SPH_RET(to);
+}
+
+
+int ha_sphinx::delete_table ( const char * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(0);
+}
+
+
+// Renames a table from one name to another from alter table call.
+//
+// If you do not implement this, the default rename_table() is called from
+// handler.cc and it will delete all files with the file extentions returned
+// by bas_ext().
+//
+// Called from sql_table.cc by mysql_rename_table().
+int ha_sphinx::rename_table ( const char *, const char * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(0);
+}
+
+
+// Given a starting key, and an ending key estimate the number of rows that
+// will exist between the two. end_key may be empty which in case determine
+// if start_key matches any rows.
+//
+// Called from opt_range.cc by check_quick_keys().
+ha_rows ha_sphinx::records_in_range ( uint, key_range *, key_range * )
+{
+ SPH_ENTER_METHOD();
+ SPH_RET(3); // low number to force index usage
+}
+
+
+static inline bool IsIntegerFieldType ( enum_field_types eType )
+{
+ return eType==MYSQL_TYPE_LONG || eType==MYSQL_TYPE_LONGLONG;
+}
+
+
+// create() is called to create a database. The variable name will have the name
+// of the table. When create() is called you do not need to worry about opening
+// the table. Also, the FRM file will have already been created so adjusting
+// create_info will not do you any good. You can overwrite the frm file at this
+// point if you wish to change the table definition, but there are no methods
+// currently provided for doing that.
+//
+// Called from handle.cc by ha_create_table().
+int ha_sphinx::create ( const char * name, TABLE * table, HA_CREATE_INFO * )
+{
+ SPH_ENTER_METHOD();
+ char sError[256];
+
+ if ( !ParseUrl ( NULL, table, true ) )
+ SPH_RET(-1);
+
+ for ( ;; )
+ {
+ // check system fields (count and types)
+ if ( table->s->fields<SPHINXSE_SYSTEM_COLUMNS )
+ {
+ my_snprintf ( sError, sizeof(sError), "%s: there MUST be at least %d columns",
+ name, SPHINXSE_SYSTEM_COLUMNS );
+ break;
+ }
+
+ if ( !IsIntegerFieldType ( table->field[0]->type() ) || !((Field_num *)table->field[0])->unsigned_flag )
+ {
+ my_snprintf ( sError, sizeof(sError), "%s: 1st column (docid) MUST be unsigned integer or bigint", name );
+ break;
+ }
+
+ if ( !IsIntegerFieldType ( table->field[1]->type() ) )
+ {
+ my_snprintf ( sError, sizeof(sError), "%s: 2nd column (weight) MUST be integer or bigint", name );
+ break;
+ }
+
+ enum_field_types f2 = table->field[2]->type();
+ if ( f2!=MYSQL_TYPE_VARCHAR
+ && f2!=MYSQL_TYPE_BLOB && f2!=MYSQL_TYPE_MEDIUM_BLOB && f2!=MYSQL_TYPE_LONG_BLOB && f2!=MYSQL_TYPE_TINY_BLOB )
+ {
+ my_snprintf ( sError, sizeof(sError), "%s: 3rd column (search query) MUST be varchar or text", name );
+ break;
+ }
+
+ // check attributes
+ int i;
+ for ( i=3; i<(int)table->s->fields; i++ )
+ {
+ enum_field_types eType = table->field[i]->type();
+ if ( eType!=MYSQL_TYPE_TIMESTAMP && !IsIntegerFieldType(eType) && eType!=MYSQL_TYPE_VARCHAR && eType!=MYSQL_TYPE_FLOAT )
+ {
+ my_snprintf ( sError, sizeof(sError), "%s: %dth column (attribute %s) MUST be integer, bigint, timestamp, varchar, or float",
+ name, i+1, table->field[i]->field_name );
+ break;
+ }
+ }
+
+ if ( i!=(int)table->s->fields )
+ break;
+
+ // check index
+ if (
+ table->s->keys!=1 ||
+ table->key_info[0].key_parts!=1 ||
+ strcasecmp ( table->key_info[0].key_part[0].field->field_name, table->field[2]->field_name ) )
+ {
+ my_snprintf ( sError, sizeof(sError), "%s: there must be an index on '%s' column",
+ name, table->field[2]->field_name );
+ break;
+ }
+
+ // all good
+ sError[0] = '\0';
+ break;
+ }
+ if ( sError[0] )
+ {
+ my_error ( ER_CANT_CREATE_TABLE, MYF(0), sError, -1 );
+ SPH_RET(-1);
+ }
+
+ SPH_RET(0);
+}
+
+//// show functions
+
+#if MYSQL_VERSION_ID<50100
+#define SHOW_VAR_FUNC_BUFF_SIZE 1024
+#endif
+
+static int sphinx_showfunc ( THD * thd, SHOW_VAR * out, char * sBuffer )
+{
+ CSphSEThreadData *pTls = (CSphSEThreadData *) *thd_ha_data ( thd, sphinx_hton_ptr );
+ CSphSEStats * pStats = ( pTls && pTls->m_bStats ) ? &pTls->m_tStats : 0;
+ SHOW_VAR *array = (SHOW_VAR*)thd_alloc(thd, sizeof(SHOW_VAR)*7);
+ out->type = SHOW_ARRAY;
+ out->value = (char*)array;
+ if (pStats)
+ {
+ array[0].name = "total";
+ array[0].type = SHOW_INT;
+ array[0].value = (char *) &pStats->m_iMatchesTotal;
+ array[1].name = "total_found";
+ array[1].type = SHOW_INT;
+ array[1].value = (char *) &pStats->m_iMatchesFound;
+ array[2].name = "time";
+ array[2].type = SHOW_INT;
+ array[2].value = (char *) &pStats->m_iQueryMsec;
+ array[3].name = "word_count";
+ array[3].type = SHOW_INT;
+ array[3].value = (char *) &pStats->m_iWords;
+ array[4].name = "error";
+ array[4].type = SHOW_CHAR;
+ array[4].value = (char *) &pStats->m_sLastMessage;
+ array[5].name = "words";
+ array[5].type = SHOW_CHAR;
+ array[5].value = sBuffer;
+ sBuffer[0] = 0;
+
+ if ( pStats->m_iWords )
+ {
+ uint uBuffLen = 0;
+
+ // the following is partially based on code in sphinx_show_status()
+ for ( int i=0; i<pStats->m_iWords; i++ )
+ {
+ CSphSEWordStats & tWord = pStats->m_dWords[i];
+ uBuffLen = my_snprintf ( sBuffer, SHOW_VAR_FUNC_BUFF_SIZE, "%s%s:%d:%d ", sBuffer,
+ tWord.m_sWord, tWord.m_iDocs, tWord.m_iHits );
+ }
+
+ if ( uBuffLen > 0 )
+ {
+ // trim last space
+ sBuffer [ --uBuffLen ] = 0;
+
+ if ( pTls->m_pQueryCharset )
+ {
+ // String::c_ptr() will nul-terminate the buffer.
+ //
+ // NOTE: It's not entirely clear whether this conversion is necessary at all.
+
+ String sConvert;
+ uint iErrors;
+ sConvert.copy ( sBuffer, uBuffLen, pTls->m_pQueryCharset, system_charset_info, &iErrors );
+ memcpy ( sBuffer, sConvert.c_ptr(), sConvert.length() + 1 );
+ }
+ }
+ }
+
+ array[6].name = 0; // terminate the array
+ }
+ else
+ array[0].name = 0;
+ return 0;
+}
+
+#if MYSQL_VERSION_ID>50100
+struct st_mysql_storage_engine sphinx_storage_engine =
+{
+ MYSQL_HANDLERTON_INTERFACE_VERSION
+};
+
+struct st_mysql_show_var sphinx_status_vars[] =
+{
+ {"sphinx", (char *)sphinx_showfunc, SHOW_FUNC},
+ {0, 0, (enum_mysql_show_type)0}
+};
+
+
+mysql_declare_plugin(sphinx)
+{
+ MYSQL_STORAGE_ENGINE_PLUGIN,
+ &sphinx_storage_engine,
+ sphinx_hton_name,
+ "Sphinx developers",
+ sphinx_hton_comment,
+ PLUGIN_LICENSE_GPL,
+ sphinx_init_func, // Plugin Init
+ sphinx_done_func, // Plugin Deinit
+ 0x0001, // 0.1
+ sphinx_status_vars,
+ NULL,
+ NULL
+}
+mysql_declare_plugin_end;
+
+#ifdef maria_declare_plugin
+maria_declare_plugin(sphinx)
+{
+ MYSQL_STORAGE_ENGINE_PLUGIN,
+ &sphinx_storage_engine,
+ sphinx_hton_name,
+ "Sphinx developers",
+ sphinx_hton_comment,
+ PLUGIN_LICENSE_GPL,
+ sphinx_init_func, // Plugin Init
+ sphinx_done_func, // Plugin Deinit
+ 0x0001, // 0.1
+ sphinx_status_vars,
+ NULL,
+ "0.1", // string version
+ MariaDB_PLUGIN_MATURITY_EXPERIMENTAL
+}
+maria_declare_plugin_end;
+#endif
+
+#endif // >50100
+
+//
+// $Id: ha_sphinx.cc 2058 2009-11-07 04:01:57Z shodan $
+//
diff --git a/storage/sphinx/ha_sphinx.h b/storage/sphinx/ha_sphinx.h
new file mode 100644
index 00000000000..3f517062cff
--- /dev/null
+++ b/storage/sphinx/ha_sphinx.h
@@ -0,0 +1,159 @@
+//
+// $Id: ha_sphinx.h 1428 2008-09-05 18:06:30Z xale $
+//
+
+#ifdef USE_PRAGMA_INTERFACE
+#pragma interface // gcc class implementation
+#endif
+
+
+#if MYSQL_VERSION_ID>50100
+#define TABLE_ARG st_table_share
+#else
+#define TABLE_ARG st_table
+#endif
+
+
+#if MYSQL_VERSION_ID>=50120
+typedef uchar byte;
+#endif
+
+
+/// forward decls
+class THD;
+struct CSphReqQuery;
+struct CSphSEShare;
+struct CSphSEAttr;
+struct CSphSEStats;
+struct CSphSEThreadData;
+
+/// Sphinx SE handler class
+class ha_sphinx : public handler
+{
+protected:
+ THR_LOCK_DATA m_tLock; ///< MySQL lock
+
+ CSphSEShare * m_pShare; ///< shared lock info
+
+ uint m_iMatchesTotal;
+ uint m_iCurrentPos;
+ const byte * m_pCurrentKey;
+ uint m_iCurrentKeyLen;
+
+ char * m_pResponse; ///< searchd response storage
+ char * m_pResponseEnd; ///< searchd response storage end (points to wilderness!)
+ char * m_pCur; ///< current position into response
+ bool m_bUnpackError; ///< any errors while unpacking response
+
+public:
+#if MYSQL_VERSION_ID<50100
+ ha_sphinx ( TABLE_ARG * table_arg );
+#else
+ ha_sphinx ( handlerton * hton, TABLE_ARG * table_arg );
+#endif
+ ~ha_sphinx () {}
+
+ const char * table_type () const { return "SPHINX"; } ///< SE name for display purposes
+ const char * index_type ( uint ) { return "HASH"; } ///< index type name for display purposes
+ const char ** bas_ext () const; ///< my file extensions
+
+ #if MYSQL_VERSION_ID>50100
+ ulonglong table_flags () const { return HA_CAN_INDEX_BLOBS; } ///< bitmap of implemented flags (see handler.h for more info)
+ #else
+ ulong table_flags () const { return HA_CAN_INDEX_BLOBS; } ///< bitmap of implemented flags (see handler.h for more info)
+ #endif
+
+ ulong index_flags ( uint, uint, bool ) const { return 0; } ///< bitmap of flags that says how SE implements indexes
+ uint max_supported_record_length () const { return HA_MAX_REC_LENGTH; }
+ uint max_supported_keys () const { return 1; }
+ uint max_supported_key_parts () const { return 1; }
+ uint max_supported_key_length () const { return MAX_KEY_LENGTH; }
+ uint max_supported_key_part_length () const { return MAX_KEY_LENGTH; }
+
+ #if MYSQL_VERSION_ID>50100
+ virtual double scan_time () { return (double)( stats.records+stats.deleted )/20.0 + 10; } ///< called in test_quick_select to determine if indexes should be used
+ #else
+ virtual double scan_time () { return (double)( records+deleted )/20.0 + 10; } ///< called in test_quick_select to determine if indexes should be used
+ #endif
+
+ virtual double read_time(uint index, uint ranges, ha_rows rows)
+ { return (double)rows/20.0 + 1; } ///< index read time estimate
+
+public:
+ int open ( const char * name, int mode, uint test_if_locked );
+ int close ();
+
+ int write_row ( uchar * buf );
+ int update_row ( const uchar * old_data, uchar * new_data );
+ int delete_row ( const uchar * buf );
+
+ int index_init ( uint keynr, bool sorted ); // 5.1.x
+ int index_init ( uint keynr ) { return index_init ( keynr, false ); } // 5.0.x
+
+ int index_end ();
+ int index_read ( byte * buf, const byte * key, uint key_len, enum ha_rkey_function find_flag );
+ int index_read_idx ( byte * buf, uint idx, const byte * key, uint key_len, enum ha_rkey_function find_flag );
+ int index_next ( byte * buf );
+ int index_next_same ( byte * buf, const byte * key, uint keylen );
+ int index_prev ( byte * buf );
+ int index_first ( byte * buf );
+ int index_last ( byte * buf );
+
+ int get_rec ( byte * buf, const byte * key, uint keylen );
+
+ int rnd_init ( bool scan );
+ int rnd_end ();
+ int rnd_next ( byte * buf );
+ int rnd_pos ( byte * buf, byte * pos );
+ void position ( const byte * record );
+
+#if MYSQL_VERSION_ID>=50030
+ int info ( uint );
+#else
+ void info ( uint );
+#endif
+
+ int reset();
+ int external_lock ( THD * thd, int lock_type );
+ int delete_all_rows ();
+ ha_rows records_in_range ( uint inx, key_range * min_key, key_range * max_key );
+
+ int delete_table ( const char * from );
+ int rename_table ( const char * from, const char * to );
+ int create ( const char * name, TABLE * form, HA_CREATE_INFO * create_info );
+
+ THR_LOCK_DATA **store_lock ( THD * thd, THR_LOCK_DATA ** to, enum thr_lock_type lock_type );
+
+public:
+ virtual const COND * cond_push ( const COND *cond );
+ virtual void cond_pop ();
+
+private:
+ uint32 m_iFields;
+ char ** m_dFields;
+
+ uint32 m_iAttrs;
+ CSphSEAttr * m_dAttrs;
+ int m_bId64;
+
+ int * m_dUnboundFields;
+
+private:
+ int ConnectToSearchd ( const char * sQueryHost, int iQueryPort );
+
+ uint32 UnpackDword ();
+ char * UnpackString ();
+ bool UnpackSchema ();
+ bool UnpackStats ( CSphSEStats * pStats );
+
+ CSphSEThreadData * GetTls ();
+};
+
+
+#if MYSQL_VERSION_ID < 50100
+bool sphinx_show_status ( THD * thd );
+#endif
+
+//
+// $Id: ha_sphinx.h 1428 2008-09-05 18:06:30Z xale $
+//
diff --git a/storage/sphinx/make-patch.sh b/storage/sphinx/make-patch.sh
new file mode 100644
index 00000000000..6fca5838ded
--- /dev/null
+++ b/storage/sphinx/make-patch.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+OUT=$1
+ORIG=$2
+NEW=$3
+
+if [ ! \( "$1" -a "$2" -a "$3" \) ]; then
+ echo "$0 <patch> <original> <new>"
+ exit 1
+fi
+
+FILES='
+/config/ac-macros/ha_sphinx.m4
+/configure.in
+/libmysqld/Makefile.am
+/sql/handler.cc
+/sql/handler.h
+/sql/Makefile.am
+/sql/mysqld.cc
+/sql/mysql_priv.h
+/sql/set_var.cc
+/sql/sql_lex.h
+/sql/sql_parse.cc
+/sql/sql_yacc.yy
+/sql/structs.h
+/sql/sql_show.cc
+'
+
+rm -f $OUT
+if [ -e $OUT ]; then
+ exit 1
+fi
+
+for name in $FILES; do
+ diff -BNru "$ORIG$name" "$NEW$name" >> $OUT
+done
diff --git a/storage/sphinx/plug.in b/storage/sphinx/plug.in
new file mode 100644
index 00000000000..6c96e41ae52
--- /dev/null
+++ b/storage/sphinx/plug.in
@@ -0,0 +1,6 @@
+MYSQL_STORAGE_ENGINE(sphinx,,[Sphinx Storage Engine],
+ [SE client for Sphinx search daemon], [])
+MYSQL_PLUGIN_DIRECTORY(sphinx, [storage/sphinx])
+MYSQL_PLUGIN_STATIC(sphinx, [libsphinx.a])
+MYSQL_PLUGIN_DYNAMIC(sphinx, [ha_sphinx.la])
+
diff --git a/storage/sphinx/snippets_udf.cc b/storage/sphinx/snippets_udf.cc
new file mode 100644
index 00000000000..961d1a92ed1
--- /dev/null
+++ b/storage/sphinx/snippets_udf.cc
@@ -0,0 +1,766 @@
+//
+// $Id: snippets_udf.cc 2058 2009-11-07 04:01:57Z shodan $
+//
+
+//
+// Copyright (c) 2001-2008, Andrew Aksyonoff. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License. You should have
+// received a copy of the GPL license along with this program; if you
+// did not, you can find it at http://www.gnu.org/
+//
+
+#include <mysql_version.h>
+
+#if MYSQL_VERSION_ID>50100
+#include "mysql_priv.h"
+#include <mysql/plugin.h>
+#else
+#include "../mysql_priv.h"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#include <sys/un.h>
+#include <netdb.h>
+
+#include <mysys_err.h>
+#include <my_sys.h>
+
+#if MYSQL_VERSION_ID>=50120
+typedef uchar byte;
+#endif
+
+/// partially copy-pasted stuff that should be moved elsewhere
+
+#if UNALIGNED_RAM_ACCESS
+
+/// pass-through wrapper
+template < typename T > inline T sphUnalignedRead ( const T & tRef )
+{
+ return tRef;
+}
+
+/// pass-through wrapper
+template < typename T > void sphUnalignedWrite ( void * pPtr, const T & tVal )
+{
+ *(T*)pPtr = tVal;
+}
+
+#else
+
+/// unaligned read wrapper for some architectures (eg. SPARC)
+template < typename T >
+inline T sphUnalignedRead ( const T & tRef )
+{
+ T uTmp;
+ byte * pSrc = (byte *) &tRef;
+ byte * pDst = (byte *) &uTmp;
+ for ( int i=0; i<(int)sizeof(T); i++ )
+ *pDst++ = *pSrc++;
+ return uTmp;
+}
+
+/// unaligned write wrapper for some architectures (eg. SPARC)
+template < typename T >
+void sphUnalignedWrite ( void * pPtr, const T & tVal )
+{
+ byte * pDst = (byte *) pPtr;
+ byte * pSrc = (byte *) &tVal;
+ for ( int i=0; i<(int)sizeof(T); i++ )
+ *pDst++ = *pSrc++;
+}
+
+#endif
+
+#define SPHINXSE_MAX_ALLOC (16*1024*1024)
+
+#define SafeDelete(_arg) { if ( _arg ) delete ( _arg ); (_arg) = NULL; }
+#define SafeDeleteArray(_arg) { if ( _arg ) delete [] ( _arg ); (_arg) = NULL; }
+
+#define Min(a,b) ((a)<(b)?(a):(b))
+
+typedef unsigned int DWORD;
+
+inline DWORD sphF2DW ( float f ) { union { float f; uint32 d; } u; u.f = f; return u.d; }
+
+static char * sphDup ( const char * sSrc, int iLen=-1 )
+{
+ if ( !sSrc )
+ return NULL;
+
+ if ( iLen<0 )
+ iLen = strlen(sSrc);
+
+ char * sRes = new char [ 1+iLen ];
+ memcpy ( sRes, sSrc, iLen );
+ sRes[iLen] = '\0';
+ return sRes;
+}
+
+static inline void sphShowErrno ( const char * sCall )
+{
+ char sError[256];
+ snprintf ( sError, sizeof(sError), "%s() failed: [%d] %s", sCall, errno, strerror(errno) );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sError );
+}
+
+static const bool sphReportErrors = true;
+
+static bool sphSend ( int iFd, const char * pBuffer, int iSize, bool bReportErrors = false )
+{
+ assert ( pBuffer );
+ assert ( iSize > 0 );
+
+ const int iResult = send ( iFd, pBuffer, iSize, 0 );
+ if ( iResult != iSize )
+ {
+ if ( bReportErrors ) sphShowErrno("send");
+ return false;
+ }
+ return true;
+}
+
+static bool sphRecv ( int iFd, char * pBuffer, int iSize, bool bReportErrors = false )
+{
+ assert ( pBuffer );
+ assert ( iSize > 0 );
+
+ while ( iSize )
+ {
+ const int iResult = recv ( iFd, pBuffer, iSize, 0 );
+ if ( iResult > 0 )
+ {
+ iSize -= iResult;
+ pBuffer += iSize;
+ }
+ else if ( iResult == 0 )
+ {
+ if ( bReportErrors )
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "recv() failed: disconnected" );
+ return false;
+ }
+ else
+ {
+ if ( bReportErrors ) sphShowErrno("recv");
+ return false;
+ }
+ }
+ return true;
+}
+
+enum
+{
+ SPHINX_SEARCHD_PROTO = 1,
+
+ SEARCHD_COMMAND_SEARCH = 0,
+ SEARCHD_COMMAND_EXCERPT = 1,
+
+ VER_COMMAND_SEARCH = 0x116,
+ VER_COMMAND_EXCERPT = 0x100,
+};
+
+/// known answers
+enum
+{
+ SEARCHD_OK = 0, ///< general success, command-specific reply follows
+ SEARCHD_ERROR = 1, ///< general failure, error message follows
+ SEARCHD_RETRY = 2, ///< temporary failure, error message follows, client should retry later
+ SEARCHD_WARNING = 3 ///< general success, warning message and command-specific reply follow
+};
+
+#define SPHINXSE_DEFAULT_SCHEME "sphinx"
+#define SPHINXSE_DEFAULT_HOST "127.0.0.1"
+#define SPHINXSE_DEFAULT_PORT 9312
+#define SPHINXSE_DEFAULT_INDEX "*"
+
+class CSphBuffer
+{
+private:
+ bool m_bOverrun;
+ int m_iSize;
+ int m_iLeft;
+ char * m_pBuffer;
+ char * m_pCurrent;
+
+public:
+ CSphBuffer ( const int iSize )
+ : m_bOverrun ( false )
+ , m_iSize ( iSize )
+ , m_iLeft ( iSize )
+ {
+ assert ( iSize > 0 );
+ m_pBuffer = new char[iSize];
+ m_pCurrent = m_pBuffer;
+ }
+
+ ~CSphBuffer ()
+ {
+ SafeDelete ( m_pBuffer );
+ }
+
+ const char * Ptr() const { return m_pBuffer; }
+
+ bool Finalize()
+ {
+ return !( m_bOverrun || m_iLeft != 0 || m_pCurrent - m_pBuffer != m_iSize );
+ }
+
+ void SendBytes ( const void * pBytes, int iBytes );
+
+ void SendWord ( short int v ) { v = ntohs(v); SendBytes ( &v, sizeof(v) ); }
+ void SendInt ( int v ) { v = ntohl(v); SendBytes ( &v, sizeof(v) ); }
+ void SendDword ( DWORD v ) { v = ntohl(v) ;SendBytes ( &v, sizeof(v) ); }
+ void SendUint64 ( ulonglong v ) { SendDword ( uint(v>>32) ); SendDword ( uint(v&0xFFFFFFFFUL) ); }
+ void SendString ( const char * v ) { SendString ( v, strlen(v) ); }
+ void SendString ( const char * v, int iLen ) { SendDword(iLen); SendBytes ( v, iLen ); }
+ void SendFloat ( float v ) { SendDword ( sphF2DW(v) ); }
+};
+
+void CSphBuffer::SendBytes ( const void * pBytes, int iBytes )
+{
+ if ( m_iLeft < iBytes )
+ {
+ m_bOverrun = true;
+ return;
+ }
+
+ memcpy ( m_pCurrent, pBytes, iBytes );
+
+ m_pCurrent += iBytes;
+ m_iLeft -= iBytes;
+}
+
+struct CSphUrl
+{
+ char * m_sBuffer;
+ char * m_sFormatted;
+
+ char * m_sScheme;
+ char * m_sHost;
+ char * m_sIndex;
+
+ int m_iPort;
+
+ CSphUrl()
+ : m_sBuffer ( NULL )
+ , m_sFormatted ( NULL )
+ , m_sScheme ( (char*) SPHINXSE_DEFAULT_SCHEME )
+ , m_sHost ( (char*) SPHINXSE_DEFAULT_HOST )
+ , m_sIndex ( (char*) SPHINXSE_DEFAULT_INDEX )
+ , m_iPort ( SPHINXSE_DEFAULT_PORT )
+ {}
+
+ ~CSphUrl()
+ {
+ SafeDeleteArray ( m_sFormatted );
+ SafeDeleteArray ( m_sBuffer );
+ }
+
+ bool Parse ( const char * sUrl, int iLen );
+ int Connect();
+ const char * Format();
+};
+
+const char * CSphUrl::Format()
+{
+ if ( !m_sFormatted )
+ {
+ int iSize = 15 + strlen(m_sHost) + strlen(m_sIndex);
+ m_sFormatted = new char [ iSize ];
+ if ( m_iPort )
+ snprintf ( m_sFormatted, iSize, "inet://%s:%d/%s", m_sHost, m_iPort, m_sIndex );
+ else
+ snprintf ( m_sFormatted, iSize, "unix://%s/%s", m_sHost, m_sIndex );
+ }
+ return m_sFormatted;
+}
+
+// the following scheme variants are recognized
+//
+// inet://host/index
+// inet://host:port/index
+// unix://unix/domain/socket:index
+// unix://unix/domain/socket
+bool CSphUrl::Parse ( const char * sUrl, int iLen )
+{
+ bool bOk = true;
+ while ( iLen )
+ {
+ bOk = false;
+
+ m_sBuffer = sphDup ( sUrl, iLen );
+ m_sScheme = m_sBuffer;
+
+ m_sHost = strstr ( m_sBuffer, "://" );
+ if ( !m_sHost )
+ break;
+ m_sHost[0] = '\0';
+ m_sHost += 2;
+
+ if ( !strcmp ( m_sScheme, "unix" ) )
+ {
+ // unix-domain socket
+ m_iPort = 0;
+ if (!( m_sIndex = strrchr ( m_sHost, ':' ) ))
+ m_sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ else
+ {
+ *m_sIndex++ = '\0';
+ if ( !*m_sIndex )
+ m_sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ }
+ bOk = true;
+ break;
+ }
+ if( strcmp ( m_sScheme, "sphinx" ) != 0 && strcmp ( m_sScheme, "inet" ) != 0 )
+ break;
+
+ // inet
+ m_sHost++;
+ char * sPort = strchr ( m_sHost, ':' );
+ if ( sPort )
+ {
+ *sPort++ = '\0';
+ if ( *sPort )
+ {
+ m_sIndex = strchr ( sPort, '/' );
+ if ( m_sIndex )
+ *m_sIndex++ = '\0';
+ else
+ m_sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+
+ m_iPort = atoi(sPort);
+ if ( !m_iPort )
+ m_iPort = SPHINXSE_DEFAULT_PORT;
+ }
+ } else
+ {
+ m_sIndex = strchr ( m_sHost, '/' );
+ if ( m_sIndex )
+ *m_sIndex++ = '\0';
+ else
+ m_sIndex = (char*) SPHINXSE_DEFAULT_INDEX;
+ }
+
+ bOk = true;
+ break;
+ }
+
+ return bOk;
+}
+
+int CSphUrl::Connect()
+{
+ struct sockaddr_in sin;
+#ifndef __WIN__
+ struct sockaddr_un saun;
+#endif
+
+ int iDomain = 0;
+ int iSockaddrSize = 0;
+ struct sockaddr * pSockaddr = NULL;
+
+ in_addr_t ip_addr;
+
+ if ( m_iPort )
+ {
+ iDomain = AF_INET;
+ iSockaddrSize = sizeof(sin);
+ pSockaddr = (struct sockaddr *) &sin;
+
+ memset ( &sin, 0, sizeof(sin) );
+ sin.sin_family = AF_INET;
+ sin.sin_port = htons(m_iPort);
+
+ // resolve address
+ if ( (int)( ip_addr=inet_addr(m_sHost) ) != (int)INADDR_NONE )
+ memcpy ( &sin.sin_addr, &ip_addr, sizeof(ip_addr) );
+ else
+ {
+ int tmp_errno;
+ struct hostent tmp_hostent, *hp;
+ char buff2 [ GETHOSTBYNAME_BUFF_SIZE ];
+
+ hp = my_gethostbyname_r ( m_sHost, &tmp_hostent,
+ buff2, sizeof(buff2), &tmp_errno );
+ if ( !hp )
+ {
+ my_gethostbyname_r_free();
+
+ char sError[256];
+ snprintf ( sError, sizeof(sError), "failed to resolve searchd host (name=%s)", m_sHost );
+
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError );
+ return -1;
+ }
+
+ memcpy ( &sin.sin_addr, hp->h_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) );
+ my_gethostbyname_r_free();
+ }
+ }
+ else
+ {
+#ifndef __WIN__
+ iDomain = AF_UNIX;
+ iSockaddrSize = sizeof(saun);
+ pSockaddr = (struct sockaddr *) &saun;
+
+ memset ( &saun, 0, sizeof(saun) );
+ saun.sun_family = AF_UNIX;
+ strncpy ( saun.sun_path, m_sHost, sizeof(saun.sun_path)-1 );
+#else
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), "Unix-domain sockets are not supported on Windows" );
+ return -1;
+#endif
+ }
+
+ // connect to searchd and exchange versions
+ uint uServerVersion;
+ uint uClientVersion = htonl ( SPHINX_SEARCHD_PROTO );
+ int iSocket = -1;
+ const char * pError = NULL;
+ do
+ {
+ iSocket = socket ( iDomain, SOCK_STREAM, 0 );
+ if ( iSocket == -1 )
+ {
+ pError = "Failed to create client socket";
+ break;
+ }
+
+ if ( connect ( iSocket, pSockaddr, iSockaddrSize ) == -1)
+ {
+ pError = "Failed to connect to searchd";
+ break;
+ }
+
+ if ( !sphRecv ( iSocket, (char *)&uServerVersion, sizeof(uServerVersion) ) )
+ {
+ pError = "Failed to receive searchd version";
+ break;
+ }
+
+ if ( !sphSend ( iSocket, (char *)&uClientVersion, sizeof(uClientVersion) ) )
+ {
+ pError = "Failed to send client version";
+ break;
+ }
+ }
+ while(0);
+
+ // fixme: compare versions?
+
+ if ( pError )
+ {
+ char sError[1024];
+ snprintf ( sError, sizeof(sError), "%s [%d] %s", Format(), errno, strerror(errno) );
+ my_error ( ER_CONNECT_TO_FOREIGN_DATA_SOURCE, MYF(0), sError );
+
+ if ( iSocket != -1 )
+ close ( iSocket );
+
+ return -1;
+ }
+
+ return iSocket;
+}
+
+struct CSphResponse
+{
+ char * m_pBuffer;
+ char * m_pBody;
+
+ CSphResponse ()
+ : m_pBuffer ( NULL )
+ , m_pBody ( NULL )
+ {}
+
+ CSphResponse ( DWORD uSize )
+ : m_pBody ( NULL )
+ {
+ m_pBuffer = new char[uSize];
+ }
+
+ ~CSphResponse ()
+ {
+ SafeDeleteArray ( m_pBuffer );
+ }
+
+ static CSphResponse * Read ( int iSocket, int iClientVersion );
+};
+
+CSphResponse *
+CSphResponse::Read ( int iSocket, int iClientVersion )
+{
+ char sHeader[8];
+ if ( !sphRecv ( iSocket, sHeader, sizeof(sHeader) ) )
+ return NULL;
+
+ int iStatus = ntohs ( sphUnalignedRead ( *(short int *) &sHeader[0] ) );
+ int iVersion = ntohs ( sphUnalignedRead ( *(short int *) &sHeader[2] ) );
+ DWORD uLength = ntohl ( sphUnalignedRead ( *(DWORD *) &sHeader[4] ) );
+
+ if ( iVersion < iClientVersion ) // fixme: warn
+ {}
+
+ if ( uLength <= SPHINXSE_MAX_ALLOC )
+ {
+ CSphResponse * pResponse = new CSphResponse ( uLength );
+ if ( !sphRecv ( iSocket, pResponse->m_pBuffer, uLength ) )
+ {
+ SafeDelete ( pResponse );
+ return NULL;
+ }
+
+ pResponse->m_pBody = pResponse->m_pBuffer;
+ if ( iStatus != SEARCHD_OK )
+ {
+ DWORD uSize = ntohl ( *(DWORD *)pResponse->m_pBuffer );
+ if ( iStatus == SEARCHD_WARNING )
+ pResponse->m_pBody += uSize; // fixme: report the warning somehow
+ else
+ {
+ char * sMessage = sphDup ( pResponse->m_pBuffer + sizeof(DWORD), uSize );
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), sMessage );
+ SafeDelete ( sMessage );
+ SafeDelete ( pResponse );
+ return NULL;
+ }
+ }
+ return pResponse;
+ }
+ return NULL;
+}
+
+/// udf
+
+extern "C"
+{
+ my_bool sphinx_snippets_init ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sMessage );
+ void sphinx_snippets_deinit ( UDF_INIT * pUDF );
+ char * sphinx_snippets ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sResult, unsigned long * pLength, char * pIsNull, char * sError );
+};
+
+#define MAX_MESSAGE_LENGTH 255
+#define MAX_RESULT_LENGTH 255
+
+struct CSphSnippets
+{
+ CSphUrl m_tUrl;
+ CSphResponse * m_pResponse;
+
+ int m_iBeforeMatch;
+ int m_iAfterMatch;
+ int m_iChunkSeparator;
+ int m_iLimit;
+ int m_iAround;
+ int m_iFlags;
+
+ CSphSnippets()
+ : m_pResponse(NULL)
+ , m_iBeforeMatch(0)
+ , m_iAfterMatch(0)
+ , m_iChunkSeparator(0)
+ // defaults
+ , m_iLimit(256)
+ , m_iAround(5)
+ , m_iFlags(1)
+ {
+ }
+
+ ~CSphSnippets()
+ {
+ SafeDelete ( m_pResponse );
+ }
+};
+
+#define KEYWORD(NAME) else if ( strncmp ( NAME, pArgs->attributes[i], pArgs->attribute_lengths[i] ) == 0 )
+
+#define CHECK_TYPE(TYPE) \
+ if ( pArgs->arg_type[i] != TYPE ) \
+ { \
+ snprintf ( sMessage, MAX_MESSAGE_LENGTH, \
+ "%.*s argument must be a string", \
+ (int)pArgs->attribute_lengths[i], \
+ pArgs->attributes[i] ); \
+ bFail = true; \
+ break; \
+ } \
+ if ( TYPE == STRING_RESULT && !pArgs->args[i] ) \
+ { \
+ snprintf ( sMessage, MAX_MESSAGE_LENGTH, \
+ "%.*s argument must be constant (and not NULL)", \
+ (int)pArgs->attribute_lengths[i], \
+ pArgs->attributes[i] ); \
+ bFail = true; \
+ break; \
+ }
+
+#define STRING CHECK_TYPE(STRING_RESULT)
+#define INT CHECK_TYPE(INT_RESULT); int iValue = *(long long *)pArgs->args[i]
+
+my_bool sphinx_snippets_init ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sMessage )
+{
+ if ( pArgs->arg_count < 3 )
+ {
+ strncpy ( sMessage, "insufficient arguments", MAX_MESSAGE_LENGTH );
+ return 1;
+ }
+
+ bool bFail = false;
+ CSphSnippets * pOpts = new CSphSnippets;
+ for ( uint i = 0; i < pArgs->arg_count; i++ )
+ {
+ if ( i < 3 )
+ {
+ if ( pArgs->arg_type[i] != STRING_RESULT )
+ {
+ strncpy ( sMessage, "first three arguments must be of string type", MAX_MESSAGE_LENGTH );
+ bFail = true;
+ break;
+ }
+ }
+ KEYWORD("sphinx")
+ {
+ STRING;
+ if ( !pOpts->m_tUrl.Parse ( pArgs->args[i], pArgs->lengths[i] ) )
+ {
+ strncpy ( sMessage, "failed to parse connection string", MAX_MESSAGE_LENGTH );
+ bFail = true;
+ break;
+ }
+ }
+ KEYWORD("before_match") { STRING; pOpts->m_iBeforeMatch = i; }
+ KEYWORD("after_match") { STRING; pOpts->m_iAfterMatch = i; }
+ KEYWORD("chunk_separator") { STRING; pOpts->m_iChunkSeparator = i; }
+ KEYWORD("limit") { INT; pOpts->m_iLimit = iValue; }
+ KEYWORD("around") { INT; pOpts->m_iAround = iValue; }
+ KEYWORD("exact_phrase") { INT; if ( iValue ) pOpts->m_iFlags |= 2; }
+ KEYWORD("single_passage") { INT; if ( iValue ) pOpts->m_iFlags |= 4; }
+ KEYWORD("use_boundaries") { INT; if ( iValue ) pOpts->m_iFlags |= 8; }
+ KEYWORD("weight_order") { INT; if ( iValue ) pOpts->m_iFlags |= 16; }
+ else
+ {
+ snprintf ( sMessage, MAX_MESSAGE_LENGTH, "unrecognized argument: %.*s",
+ (int)pArgs->attribute_lengths[i], pArgs->attributes[i] );
+ bFail = true;
+ break;
+ }
+ }
+
+ if ( bFail )
+ {
+ SafeDelete ( pOpts );
+ return 1;
+ }
+ pUDF->ptr = (char *)pOpts;
+ return 0;
+}
+
+#undef STRING
+#undef INT
+#undef KEYWORD
+#undef CHECK_TYPE
+
+#define ARG(i) pArgs->args[i], pArgs->lengths[i]
+#define ARG_LEN(VAR, LEN) ( VAR ? pArgs->lengths[VAR] : LEN )
+
+#define SEND_STRING(INDEX, DEFAULT) \
+ if ( INDEX ) \
+ tBuffer.SendString ( ARG(INDEX) ); \
+ else \
+ tBuffer.SendString ( DEFAULT, sizeof(DEFAULT) - 1 );
+
+
+char * sphinx_snippets ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char * sResult, unsigned long * pLength, char * pIsNull, char * pError )
+{
+ CSphSnippets * pOpts = (CSphSnippets *)pUDF->ptr;
+ assert ( pOpts );
+
+ if ( !pArgs->args[0] || !pArgs->args[1] || !pArgs->args[2] )
+ {
+ *pIsNull = 1;
+ return sResult;
+ }
+
+ const int iSize =
+ 8 + // header
+ 8 +
+ 4 + pArgs->lengths[1] + // index
+ 4 + pArgs->lengths[2] + // words
+ 4 + ARG_LEN ( pOpts->m_iBeforeMatch, 3 ) +
+ 4 + ARG_LEN ( pOpts->m_iAfterMatch, 4 ) +
+ 4 + ARG_LEN ( pOpts->m_iChunkSeparator, 5 ) +
+ 12 +
+ 4 + pArgs->lengths[0]; // document
+
+ CSphBuffer tBuffer(iSize);
+
+ tBuffer.SendWord ( SEARCHD_COMMAND_EXCERPT );
+ tBuffer.SendWord ( VER_COMMAND_EXCERPT );
+ tBuffer.SendDword ( iSize - 8 );
+
+ tBuffer.SendDword ( 0 );
+ tBuffer.SendDword ( pOpts->m_iFlags );
+
+ tBuffer.SendString ( ARG(1) ); // index
+ tBuffer.SendString ( ARG(2) ); // words
+
+ SEND_STRING ( pOpts->m_iBeforeMatch, "<b>" );
+ SEND_STRING ( pOpts->m_iAfterMatch, "</b>" );
+ SEND_STRING ( pOpts->m_iChunkSeparator, " ... " );
+
+ tBuffer.SendInt ( pOpts->m_iLimit );
+ tBuffer.SendInt ( pOpts->m_iAround );
+
+ // single document
+ tBuffer.SendInt ( 1 );
+ tBuffer.SendString ( ARG(0) );
+
+ int iSocket = -1;
+ do
+ {
+ if ( !tBuffer.Finalize() )
+ {
+ my_error ( ER_QUERY_ON_FOREIGN_DATA_SOURCE, MYF(0), "INTERNAL ERROR: failed to build request" );
+ break;
+ }
+
+ iSocket = pOpts->m_tUrl.Connect();
+ if ( iSocket == -1 ) break;
+ if ( !sphSend ( iSocket, tBuffer.Ptr(), iSize, sphReportErrors ) ) break;
+
+ CSphResponse * pResponse = CSphResponse::Read ( iSocket, 0x100 );
+ if ( !pResponse ) break;
+
+ close ( iSocket );
+ pOpts->m_pResponse = pResponse;
+ *pLength = ntohl( *(DWORD *)pResponse->m_pBody );
+ return pResponse->m_pBody + sizeof(DWORD);
+ }
+ while(0);
+
+ if ( iSocket != -1 )
+ close ( iSocket );
+
+ *pError = 1;
+ return sResult;
+}
+
+#undef SEND_STRING
+#undef ARG_LEN
+#undef ARG
+
+void sphinx_snippets_deinit ( UDF_INIT * pUDF )
+{
+ CSphSnippets * pOpts = (CSphSnippets *)pUDF->ptr;
+ SafeDelete ( pOpts );
+}
+
+//
+// $Id: snippets_udf.cc 2058 2009-11-07 04:01:57Z shodan $
+//
diff --git a/storage/sphinx/sphinx.5.0.22.diff b/storage/sphinx/sphinx.5.0.22.diff
new file mode 100644
index 00000000000..7dd4ebf1410
--- /dev/null
+++ b/storage/sphinx/sphinx.5.0.22.diff
@@ -0,0 +1,284 @@
+diff -B -N -r -u mysql-5.0.22/config/ac-macros/ha_sphinx.m4 mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4
+--- mysql-5.0.22/config/ac-macros/ha_sphinx.m4 1970-01-01 01:00:00.000000000 +0100
++++ mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4 2006-06-06 19:49:38.000000000 +0200
+@@ -0,0 +1,30 @@
++dnl ---------------------------------------------------------------------------
++dnl Macro: MYSQL_CHECK_EXAMPLEDB
++dnl Sets HAVE_SPHINX_DB if --with-sphinx-storage-engine is used
++dnl ---------------------------------------------------------------------------
++AC_DEFUN([MYSQL_CHECK_SPHINXDB], [
++ AC_ARG_WITH([sphinx-storage-engine],
++ [
++ --with-sphinx-storage-engine
++ Enable the Sphinx Storage Engine],
++ [sphinxdb="$withval"],
++ [sphinxdb=no])
++ AC_MSG_CHECKING([for example storage engine])
++
++ case "$sphinxdb" in
++ yes )
++ AC_DEFINE([HAVE_SPHINX_DB], [1], [Builds Sphinx Engine])
++ AC_MSG_RESULT([yes])
++ [sphinxdb=yes]
++ ;;
++ * )
++ AC_MSG_RESULT([no])
++ [sphinxdb=no]
++ ;;
++ esac
++
++])
++dnl ---------------------------------------------------------------------------
++dnl END OF MYSQL_CHECK_EXAMPLE SECTION
++dnl ---------------------------------------------------------------------------
++
+diff -B -N -r -u mysql-5.0.22/configure.in mysql-5.0.22.sx/configure.in
+--- mysql-5.0.22/configure.in 2006-05-25 10:56:45.000000000 +0200
++++ mysql-5.0.22.sx/configure.in 2006-06-06 19:49:38.000000000 +0200
+@@ -41,6 +41,7 @@
+ sinclude(config/ac-macros/ha_berkeley.m4)
+ sinclude(config/ac-macros/ha_blackhole.m4)
+ sinclude(config/ac-macros/ha_example.m4)
++sinclude(config/ac-macros/ha_sphinx.m4)
+ sinclude(config/ac-macros/ha_federated.m4)
+ sinclude(config/ac-macros/ha_innodb.m4)
+ sinclude(config/ac-macros/ha_ndbcluster.m4)
+@@ -2450,6 +2451,7 @@
+ MYSQL_CHECK_BDB
+ MYSQL_CHECK_INNODB
+ MYSQL_CHECK_EXAMPLEDB
++MYSQL_CHECK_SPHINXDB
+ MYSQL_CHECK_ARCHIVEDB
+ MYSQL_CHECK_CSVDB
+ MYSQL_CHECK_BLACKHOLEDB
+diff -B -N -r -u mysql-5.0.22/libmysqld/Makefile.am mysql-5.0.22.sx/libmysqld/Makefile.am
+--- mysql-5.0.22/libmysqld/Makefile.am 2006-05-25 10:56:55.000000000 +0200
++++ mysql-5.0.22.sx/libmysqld/Makefile.am 2006-06-06 19:49:38.000000000 +0200
+@@ -27,7 +27,7 @@
+ -DSHAREDIR="\"$(MYSQLSHAREdir)\""
+ INCLUDES= @bdb_includes@ \
+ -I$(top_builddir)/include -I$(top_srcdir)/include \
+- -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples \
++ -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples -I$(top_srcdir)/sql/sphinx \
+ -I$(top_srcdir)/regex \
+ $(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@
+
+@@ -38,6 +38,7 @@
+ libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
+ my_time.c
+ sqlexamplessources = ha_example.cc ha_tina.cc
++sqlsphinxsources = ha_sphinx.cc
+
+ noinst_HEADERS = embedded_priv.h emb_qcache.h
+
+@@ -65,7 +66,7 @@
+ parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
+ ha_blackhole.cc ha_archive.cc my_user.c
+
+-libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources)
++libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) $(sqlsphinxsources)
+ libmysqld_a_SOURCES=
+
+ # automake misses these
+@@ -133,12 +134,16 @@
+ rm -f $$f; \
+ @LN_CP_F@ $(top_srcdir)/sql/examples/$$f $$f; \
+ done; \
++ for f in $(sqlsphinxsources); do \
++ rm -f $$f; \
++ @LN_CP_F@ $(top_srcdir)/sql/sphinx/$$f $$f; \
++ done; \
+ rm -f client_settings.h; \
+ @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h client_settings.h
+
+
+ clean-local:
+- rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \
++ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) $(sqlsphinxsources) | sed "s;\.lo;.c;g"` \
+ $(top_srcdir)/linked_libmysqld_sources; \
+ rm -f client_settings.h
+
+diff -B -N -r -u mysql-5.0.22/sql/handler.cc mysql-5.0.22.sx/sql/handler.cc
+--- mysql-5.0.22/sql/handler.cc 2006-05-25 10:56:42.000000000 +0200
++++ mysql-5.0.22.sx/sql/handler.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -78,6 +78,15 @@
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ HTON_NO_FLAGS };
+ #endif
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++extern handlerton sphinx_hton;
++#else
++handlerton sphinx_hton = { "SPHINX", SHOW_OPTION_NO, "SPHINX storage engine",
++ DB_TYPE_SPHINX_DB, NULL, 0, 0, NULL, NULL,
++ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
++ HTON_NO_FLAGS };
++#endif
+ #ifdef HAVE_INNOBASE_DB
+ #include "ha_innodb.h"
+ extern handlerton innobase_hton;
+@@ -147,6 +156,7 @@
+ &example_hton,
+ &archive_hton,
+ &tina_hton,
++ &sphinx_hton,
+ &ndbcluster_hton,
+ &federated_hton,
+ &myisammrg_hton,
+@@ -345,6 +355,12 @@
+ return new (alloc) ha_tina(table);
+ return NULL;
+ #endif
++#ifdef HAVE_SPHINX_DB
++ case DB_TYPE_SPHINX_DB:
++ if (have_sphinx_db == SHOW_OPTION_YES)
++ return new (alloc) ha_sphinx(table);
++ return NULL;
++#endif
+ #ifdef HAVE_NDBCLUSTER_DB
+ case DB_TYPE_NDBCLUSTER:
+ if (have_ndbcluster == SHOW_OPTION_YES)
+diff -B -N -r -u mysql-5.0.22/sql/handler.h mysql-5.0.22.sx/sql/handler.h
+--- mysql-5.0.22/sql/handler.h 2006-05-25 10:56:55.000000000 +0200
++++ mysql-5.0.22.sx/sql/handler.h 2006-06-06 19:49:38.000000000 +0200
+@@ -183,8 +183,9 @@
+ DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB,
+ DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER,
+ DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_CSV_DB,
+- DB_TYPE_FEDERATED_DB,
++ DB_TYPE_FEDERATED_DB,
+ DB_TYPE_BLACKHOLE_DB,
++ DB_TYPE_SPHINX_DB,
+ DB_TYPE_DEFAULT // Must be last
+ };
+
+diff -B -N -r -u mysql-5.0.22/sql/Makefile.am mysql-5.0.22.sx/sql/Makefile.am
+--- mysql-5.0.22/sql/Makefile.am 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/Makefile.am 2006-06-06 19:49:38.000000000 +0200
+@@ -66,6 +66,7 @@
+ sql_array.h sql_cursor.h \
+ examples/ha_example.h ha_archive.h \
+ examples/ha_tina.h ha_blackhole.h \
++ sphinx/ha_sphinx.h \
+ ha_federated.h
+ mysqld_SOURCES = sql_lex.cc sql_handler.cc \
+ item.cc item_sum.cc item_buff.cc item_func.cc \
+@@ -102,6 +103,7 @@
+ sp_cache.cc parse_file.cc sql_trigger.cc \
+ examples/ha_example.cc ha_archive.cc \
+ examples/ha_tina.cc ha_blackhole.cc \
++ sphinx/ha_sphinx.cc \
+ ha_federated.cc
+
+ gen_lex_hash_SOURCES = gen_lex_hash.cc
+diff -B -N -r -u mysql-5.0.22/sql/mysqld.cc mysql-5.0.22.sx/sql/mysqld.cc
+--- mysql-5.0.22/sql/mysqld.cc 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/mysqld.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -6420,6 +6420,11 @@
+ #else
+ have_csv_db= SHOW_OPTION_NO;
+ #endif
++#ifdef HAVE_SPHINX_DB
++ have_sphinx_db= SHOW_OPTION_YES;
++#else
++ have_sphinx_db= SHOW_OPTION_NO;
++#endif
+ #ifdef HAVE_NDBCLUSTER_DB
+ have_ndbcluster=SHOW_OPTION_DISABLED;
+ #else
+@@ -7457,6 +7462,7 @@
+ #undef have_example_db
+ #undef have_archive_db
+ #undef have_csv_db
++#undef have_sphinx_db
+ #undef have_federated_db
+ #undef have_partition_db
+ #undef have_blackhole_db
+@@ -7467,6 +7473,7 @@
+ SHOW_COMP_OPTION have_example_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_archive_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_csv_db= SHOW_OPTION_NO;
++SHOW_COMP_OPTION have_sphinx_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_federated_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_partition_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_blackhole_db= SHOW_OPTION_NO;
+diff -B -N -r -u mysql-5.0.22/sql/mysql_priv.h mysql-5.0.22.sx/sql/mysql_priv.h
+--- mysql-5.0.22/sql/mysql_priv.h 2006-05-25 10:56:43.000000000 +0200
++++ mysql-5.0.22.sx/sql/mysql_priv.h 2006-06-06 19:49:38.000000000 +0200
+@@ -1279,6 +1279,12 @@
+ #else
+ extern SHOW_COMP_OPTION have_csv_db;
+ #endif
++#ifdef HAVE_SPHINX_DB
++extern handlerton sphinx_hton;
++#define have_sphinx_db sphinx_hton.state
++#else
++extern SHOW_COMP_OPTION have_sphinx_db;
++#endif
+ #ifdef HAVE_FEDERATED_DB
+ extern handlerton federated_hton;
+ #define have_federated_db federated_hton.state
+diff -B -N -r -u mysql-5.0.22/sql/set_var.cc mysql-5.0.22.sx/sql/set_var.cc
+--- mysql-5.0.22/sql/set_var.cc 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/set_var.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -809,6 +809,7 @@
+ {"have_compress", (char*) &have_compress, SHOW_HAVE},
+ {"have_crypt", (char*) &have_crypt, SHOW_HAVE},
+ {"have_csv", (char*) &have_csv_db, SHOW_HAVE},
++ {"have_sphinx", (char*) &have_sphinx_db, SHOW_HAVE},
+ {"have_example_engine", (char*) &have_example_db, SHOW_HAVE},
+ {"have_federated_engine", (char*) &have_federated_db, SHOW_HAVE},
+ {"have_geometry", (char*) &have_geometry, SHOW_HAVE},
+diff -B -N -r -u mysql-5.0.22/sql/sql_lex.h mysql-5.0.22.sx/sql/sql_lex.h
+--- mysql-5.0.22/sql/sql_lex.h 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/sql_lex.h 2006-06-06 19:49:38.000000000 +0200
+@@ -58,6 +58,7 @@
+ SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS,
+ SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_LOGS, SQLCOM_SHOW_STATUS,
+ SQLCOM_SHOW_INNODB_STATUS, SQLCOM_SHOW_NDBCLUSTER_STATUS, SQLCOM_SHOW_MUTEX_STATUS,
++ SQLCOM_SHOW_SPHINX_STATUS,
+ SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT,
+ SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS,
+ SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS,
+diff -B -N -r -u mysql-5.0.22/sql/sql_parse.cc mysql-5.0.22.sx/sql/sql_parse.cc
+--- mysql-5.0.22/sql/sql_parse.cc 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/sql_parse.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -25,6 +25,9 @@
+ #ifdef HAVE_INNOBASE_DB
+ #include "ha_innodb.h"
+ #endif
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++#endif
+
+ #ifdef HAVE_NDBCLUSTER_DB
+ #include "ha_ndbcluster.h"
+@@ -2722,6 +2725,15 @@
+ break;
+ }
+ #endif
++#ifdef HAVE_SPHINX_DB
++ case SQLCOM_SHOW_SPHINX_STATUS:
++ {
++ if (check_global_access(thd, SUPER_ACL))
++ goto error;
++ res = sphinx_show_status(thd);
++ break;
++ }
++#endif
+ #ifdef HAVE_REPLICATION
+ case SQLCOM_LOAD_MASTER_TABLE:
+ {
+diff -B -N -r -u mysql-5.0.22/sql/sql_yacc.yy mysql-5.0.22.sx/sql/sql_yacc.yy
+--- mysql-5.0.22/sql/sql_yacc.yy 2006-05-25 10:56:43.000000000 +0200
++++ mysql-5.0.22.sx/sql/sql_yacc.yy 2006-06-06 19:49:38.000000000 +0200
+@@ -6584,6 +6584,9 @@
+ case DB_TYPE_INNODB:
+ Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS;
+ break;
++ case DB_TYPE_SPHINX_DB:
++ Lex->sql_command = SQLCOM_SHOW_SPHINX_STATUS;
++ break;
+ default:
+ my_error(ER_NOT_SUPPORTED_YET, MYF(0), "STATUS");
+ YYABORT;
diff --git a/storage/sphinx/sphinx.5.0.27.diff b/storage/sphinx/sphinx.5.0.27.diff
new file mode 100644
index 00000000000..9ff6cf4fe48
--- /dev/null
+++ b/storage/sphinx/sphinx.5.0.27.diff
@@ -0,0 +1,284 @@
+diff -B -N -r -u mysql-5.0.22/config/ac-macros/ha_sphinx.m4 mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4
+--- mysql-5.0.22/config/ac-macros/ha_sphinx.m4 1970-01-01 01:00:00.000000000 +0100
++++ mysql-5.0.22.sx/config/ac-macros/ha_sphinx.m4 2006-06-06 19:49:38.000000000 +0200
+@@ -0,0 +1,30 @@
++dnl ---------------------------------------------------------------------------
++dnl Macro: MYSQL_CHECK_EXAMPLEDB
++dnl Sets HAVE_SPHINX_DB if --with-sphinx-storage-engine is used
++dnl ---------------------------------------------------------------------------
++AC_DEFUN([MYSQL_CHECK_SPHINXDB], [
++ AC_ARG_WITH([sphinx-storage-engine],
++ [
++ --with-sphinx-storage-engine
++ Enable the Sphinx Storage Engine],
++ [sphinxdb="$withval"],
++ [sphinxdb=no])
++ AC_MSG_CHECKING([for example storage engine])
++
++ case "$sphinxdb" in
++ yes )
++ AC_DEFINE([HAVE_SPHINX_DB], [1], [Builds Sphinx Engine])
++ AC_MSG_RESULT([yes])
++ [sphinxdb=yes]
++ ;;
++ * )
++ AC_MSG_RESULT([no])
++ [sphinxdb=no]
++ ;;
++ esac
++
++])
++dnl ---------------------------------------------------------------------------
++dnl END OF MYSQL_CHECK_EXAMPLE SECTION
++dnl ---------------------------------------------------------------------------
++
+diff -B -N -r -u mysql-5.0.22/configure.in mysql-5.0.22.sx/configure.in
+--- mysql-5.0.22/configure.in 2006-05-25 10:56:45.000000000 +0200
++++ mysql-5.0.22.sx/configure.in 2006-06-06 19:49:38.000000000 +0200
+@@ -41,6 +41,7 @@
+ sinclude(config/ac-macros/ha_berkeley.m4)
+ sinclude(config/ac-macros/ha_blackhole.m4)
+ sinclude(config/ac-macros/ha_example.m4)
++sinclude(config/ac-macros/ha_sphinx.m4)
+ sinclude(config/ac-macros/ha_federated.m4)
+ sinclude(config/ac-macros/ha_innodb.m4)
+ sinclude(config/ac-macros/ha_ndbcluster.m4)
+@@ -2450,6 +2451,7 @@
+ MYSQL_CHECK_BDB
+ MYSQL_CHECK_INNODB
+ MYSQL_CHECK_EXAMPLEDB
++MYSQL_CHECK_SPHINXDB
+ MYSQL_CHECK_ARCHIVEDB
+ MYSQL_CHECK_CSVDB
+ MYSQL_CHECK_BLACKHOLEDB
+diff -B -N -r -u mysql-5.0.22/libmysqld/Makefile.am mysql-5.0.22.sx/libmysqld/Makefile.am
+--- mysql-5.0.22/libmysqld/Makefile.am 2006-05-25 10:56:55.000000000 +0200
++++ mysql-5.0.22.sx/libmysqld/Makefile.am 2006-06-06 19:49:38.000000000 +0200
+@@ -27,7 +27,7 @@
+ -DSHAREDIR="\"$(MYSQLSHAREdir)\""
+ INCLUDES= @bdb_includes@ \
+ -I$(top_builddir)/include -I$(top_srcdir)/include \
+- -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples \
++ -I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples -I$(top_srcdir)/sql/sphinx \
+ -I$(top_srcdir)/regex \
+ $(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@
+
+@@ -38,6 +38,7 @@
+ libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
+ my_time.c
+ sqlexamplessources = ha_example.cc ha_tina.cc
++sqlsphinxsources = ha_sphinx.cc
+
+ noinst_HEADERS = embedded_priv.h emb_qcache.h
+
+@@ -65,7 +66,7 @@
+ parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
+ ha_blackhole.cc ha_archive.cc my_user.c
+
+-libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources)
++libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) $(sqlsphinxsources)
+ libmysqld_a_SOURCES=
+
+ # automake misses these
+@@ -133,12 +134,16 @@
+ rm -f $$f; \
+ @LN_CP_F@ $(top_srcdir)/sql/examples/$$f $$f; \
+ done; \
++ for f in $(sqlsphinxsources); do \
++ rm -f $$f; \
++ @LN_CP_F@ $(top_srcdir)/sql/sphinx/$$f $$f; \
++ done; \
+ rm -f client_settings.h; \
+ @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h client_settings.h
+
+
+ clean-local:
+- rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \
++ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) $(sqlsphinxsources) | sed "s;\.lo;.c;g"` \
+ $(top_srcdir)/linked_libmysqld_sources; \
+ rm -f client_settings.h
+
+diff -B -N -r -u mysql-5.0.22/sql/handler.cc mysql-5.0.22.sx/sql/handler.cc
+--- mysql-5.0.22/sql/handler.cc 2006-05-25 10:56:42.000000000 +0200
++++ mysql-5.0.22.sx/sql/handler.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -78,6 +78,15 @@
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ HTON_NO_FLAGS };
+ #endif
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++extern handlerton sphinx_hton;
++#else
++handlerton sphinx_hton = { "SPHINX", SHOW_OPTION_NO, "SPHINX storage engine",
++ DB_TYPE_SPHINX_DB, NULL, 0, 0, NULL, NULL,
++ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
++ HTON_NO_FLAGS };
++#endif
+ #ifdef HAVE_INNOBASE_DB
+ #include "ha_innodb.h"
+ extern handlerton innobase_hton;
+@@ -147,6 +156,7 @@
+ &example_hton,
+ &archive_hton,
+ &tina_hton,
++ &sphinx_hton,
+ &ndbcluster_hton,
+ &federated_hton,
+ &myisammrg_hton,
+@@ -345,6 +355,12 @@
+ return new (alloc) ha_tina(table);
+ return NULL;
+ #endif
++#ifdef HAVE_SPHINX_DB
++ case DB_TYPE_SPHINX_DB:
++ if (have_sphinx_db == SHOW_OPTION_YES)
++ return new (alloc) ha_sphinx(table);
++ return NULL;
++#endif
+ #ifdef HAVE_NDBCLUSTER_DB
+ case DB_TYPE_NDBCLUSTER:
+ if (have_ndbcluster == SHOW_OPTION_YES)
+diff -B -N -r -u mysql-5.0.22/sql/handler.h mysql-5.0.22.sx/sql/handler.h
+--- mysql-5.0.22/sql/handler.h 2006-05-25 10:56:55.000000000 +0200
++++ mysql-5.0.22.sx/sql/handler.h 2006-06-06 19:49:38.000000000 +0200
+@@ -183,8 +183,9 @@
+ DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB,
+ DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER,
+ DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_CSV_DB,
+- DB_TYPE_FEDERATED_DB,
++ DB_TYPE_FEDERATED_DB,
+ DB_TYPE_BLACKHOLE_DB,
++ DB_TYPE_SPHINX_DB,
+ DB_TYPE_DEFAULT // Must be last
+ };
+
+diff -B -N -r -u mysql-5.0.22/sql/Makefile.am mysql-5.0.22.sx/sql/Makefile.am
+--- mysql-5.0.22/sql/Makefile.am 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/Makefile.am 2006-06-06 19:49:38.000000000 +0200
+@@ -66,6 +66,7 @@
+ sql_array.h sql_cursor.h \
+ examples/ha_example.h ha_archive.h \
+ examples/ha_tina.h ha_blackhole.h \
++ sphinx/ha_sphinx.h \
+ ha_federated.h
+ mysqld_SOURCES = sql_lex.cc sql_handler.cc \
+ item.cc item_sum.cc item_buff.cc item_func.cc \
+@@ -102,6 +103,7 @@
+ sp_cache.cc parse_file.cc sql_trigger.cc \
+ examples/ha_example.cc ha_archive.cc \
+ examples/ha_tina.cc ha_blackhole.cc \
++ sphinx/ha_sphinx.cc \
+ ha_federated.cc
+
+ gen_lex_hash_SOURCES = gen_lex_hash.cc
+diff -B -N -r -u mysql-5.0.22/sql/mysqld.cc mysql-5.0.22.sx/sql/mysqld.cc
+--- mysql-5.0.22/sql/mysqld.cc 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/mysqld.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -6420,6 +6420,11 @@
+ #else
+ have_csv_db= SHOW_OPTION_NO;
+ #endif
++#ifdef HAVE_SPHINX_DB
++ have_sphinx_db= SHOW_OPTION_YES;
++#else
++ have_sphinx_db= SHOW_OPTION_NO;
++#endif
+ #ifdef HAVE_NDBCLUSTER_DB
+ have_ndbcluster=SHOW_OPTION_DISABLED;
+ #else
+@@ -7457,6 +7462,7 @@
+ #undef have_example_db
+ #undef have_archive_db
+ #undef have_csv_db
++#undef have_sphinx_db
+ #undef have_federated_db
+ #undef have_partition_db
+ #undef have_blackhole_db
+@@ -7467,6 +7473,7 @@
+ SHOW_COMP_OPTION have_example_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_archive_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_csv_db= SHOW_OPTION_NO;
++SHOW_COMP_OPTION have_sphinx_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_federated_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_partition_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_blackhole_db= SHOW_OPTION_NO;
+diff -B -N -r -u mysql-5.0.22/sql/mysql_priv.h mysql-5.0.22.sx/sql/mysql_priv.h
+--- mysql-5.0.22/sql/mysql_priv.h 2006-05-25 10:56:43.000000000 +0200
++++ mysql-5.0.22.sx/sql/mysql_priv.h 2006-06-06 19:49:38.000000000 +0200
+@@ -1279,6 +1279,12 @@
+ #else
+ extern SHOW_COMP_OPTION have_csv_db;
+ #endif
++#ifdef HAVE_SPHINX_DB
++extern handlerton sphinx_hton;
++#define have_sphinx_db sphinx_hton.state
++#else
++extern SHOW_COMP_OPTION have_sphinx_db;
++#endif
+ #ifdef HAVE_FEDERATED_DB
+ extern handlerton federated_hton;
+ #define have_federated_db federated_hton.state
+diff -B -N -r -u mysql-5.0.22/sql/set_var.cc mysql-5.0.22.sx/sql/set_var.cc
+--- mysql-5.0.22/sql/set_var.cc 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/set_var.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -864,6 +864,7 @@
+ {"have_compress", (char*) &have_compress, SHOW_HAVE},
+ {"have_crypt", (char*) &have_crypt, SHOW_HAVE},
+ {"have_csv", (char*) &have_csv_db, SHOW_HAVE},
++ {"have_sphinx", (char*) &have_sphinx_db, SHOW_HAVE},
+ {"have_dynamic_loading", (char*) &have_dlopen, SHOW_HAVE},
+ {"have_example_engine", (char*) &have_example_db, SHOW_HAVE},
+ {"have_federated_engine", (char*) &have_federated_db, SHOW_HAVE},
+diff -B -N -r -u mysql-5.0.22/sql/sql_lex.h mysql-5.0.22.sx/sql/sql_lex.h
+--- mysql-5.0.22/sql/sql_lex.h 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/sql_lex.h 2006-06-06 19:49:38.000000000 +0200
+@@ -58,6 +58,7 @@
+ SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS,
+ SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_LOGS, SQLCOM_SHOW_STATUS,
+ SQLCOM_SHOW_INNODB_STATUS, SQLCOM_SHOW_NDBCLUSTER_STATUS, SQLCOM_SHOW_MUTEX_STATUS,
++ SQLCOM_SHOW_SPHINX_STATUS,
+ SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT,
+ SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS,
+ SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS,
+diff -B -N -r -u mysql-5.0.22/sql/sql_parse.cc mysql-5.0.22.sx/sql/sql_parse.cc
+--- mysql-5.0.22/sql/sql_parse.cc 2006-05-25 10:56:41.000000000 +0200
++++ mysql-5.0.22.sx/sql/sql_parse.cc 2006-06-06 19:49:38.000000000 +0200
+@@ -25,6 +25,9 @@
+ #ifdef HAVE_INNOBASE_DB
+ #include "ha_innodb.h"
+ #endif
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++#endif
+
+ #ifdef HAVE_NDBCLUSTER_DB
+ #include "ha_ndbcluster.h"
+@@ -2722,6 +2725,15 @@
+ break;
+ }
+ #endif
++#ifdef HAVE_SPHINX_DB
++ case SQLCOM_SHOW_SPHINX_STATUS:
++ {
++ if (check_global_access(thd, SUPER_ACL))
++ goto error;
++ res = sphinx_show_status(thd);
++ break;
++ }
++#endif
+ #ifdef HAVE_REPLICATION
+ case SQLCOM_LOAD_MASTER_TABLE:
+ {
+diff -B -N -r -u mysql-5.0.22/sql/sql_yacc.yy mysql-5.0.22.sx/sql/sql_yacc.yy
+--- mysql-5.0.22/sql/sql_yacc.yy 2006-05-25 10:56:43.000000000 +0200
++++ mysql-5.0.22.sx/sql/sql_yacc.yy 2006-06-06 19:49:38.000000000 +0200
+@@ -6584,6 +6584,9 @@
+ case DB_TYPE_INNODB:
+ Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS;
+ break;
++ case DB_TYPE_SPHINX_DB:
++ Lex->sql_command = SQLCOM_SHOW_SPHINX_STATUS;
++ break;
+ default:
+ my_error(ER_NOT_SUPPORTED_YET, MYF(0), "STATUS");
+ YYABORT;
diff --git a/storage/sphinx/sphinx.5.0.37.diff b/storage/sphinx/sphinx.5.0.37.diff
new file mode 100644
index 00000000000..3f86e545b4d
--- /dev/null
+++ b/storage/sphinx/sphinx.5.0.37.diff
@@ -0,0 +1,338 @@
+--- mysql-5.0.67/config/ac-macros/ha_sphinx.m4 1970-01-01 10:00:00.000000000 +1000
++++ mysql-5.0.67-sphinx/config/ac-macros/ha_sphinx.m4 2009-02-14 09:15:48.000000000 +1000
+@@ -0,0 +1,30 @@
++dnl ---------------------------------------------------------------------------
++dnl Macro: MYSQL_CHECK_EXAMPLEDB
++dnl Sets HAVE_SPHINX_DB if --with-sphinx-storage-engine is used
++dnl ---------------------------------------------------------------------------
++AC_DEFUN([MYSQL_CHECK_SPHINXDB], [
++ AC_ARG_WITH([sphinx-storage-engine],
++ [
++ --with-sphinx-storage-engine
++ Enable the Sphinx Storage Engine],
++ [sphinxdb="$withval"],
++ [sphinxdb=no])
++ AC_MSG_CHECKING([for example storage engine])
++
++ case "$sphinxdb" in
++ yes )
++ AC_DEFINE([HAVE_SPHINX_DB], [1], [Builds Sphinx Engine])
++ AC_MSG_RESULT([yes])
++ [sphinxdb=yes]
++ ;;
++ * )
++ AC_MSG_RESULT([no])
++ [sphinxdb=no]
++ ;;
++ esac
++
++])
++dnl ---------------------------------------------------------------------------
++dnl END OF MYSQL_CHECK_EXAMPLE SECTION
++dnl ---------------------------------------------------------------------------
++
+--- mysql-5.0.67/configure.in 2008-08-04 23:19:07.000000000 +1100
++++ mysql-5.0.67-sphinx/configure.in 2009-02-14 09:15:48.000000000 +1000
+@@ -58,6 +58,7 @@
+ sinclude(config/ac-macros/ha_berkeley.m4)
+ sinclude(config/ac-macros/ha_blackhole.m4)
+ sinclude(config/ac-macros/ha_example.m4)
++sinclude(config/ac-macros/ha_sphinx.m4)
+ sinclude(config/ac-macros/ha_federated.m4)
+ sinclude(config/ac-macros/ha_innodb.m4)
+ sinclude(config/ac-macros/ha_ndbcluster.m4)
+@@ -2625,6 +2626,7 @@
+ MYSQL_CHECK_BDB
+ MYSQL_CHECK_INNODB
+ MYSQL_CHECK_EXAMPLEDB
++MYSQL_CHECK_SPHINXDB
+ MYSQL_CHECK_ARCHIVEDB
+ MYSQL_CHECK_CSVDB
+ MYSQL_CHECK_BLACKHOLEDB
+--- mysql-5.0.67/libmysqld/Makefile.am 2008-08-04 23:19:18.000000000 +1100
++++ mysql-5.0.67-sphinx/libmysqld/Makefile.am 2009-02-14 09:15:48.000000000 +1000
+@@ -29,6 +29,7 @@
+ -I$(top_builddir)/include -I$(top_srcdir)/include \
+ -I$(top_builddir)/sql -I$(top_srcdir)/sql \
+ -I$(top_srcdir)/sql/examples \
++ -I$(top_srcdir)/sql/sphinx \
+ -I$(top_srcdir)/regex \
+ $(openssl_includes) @ZLIB_INCLUDES@
+
+@@ -39,6 +40,7 @@
+ libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
+ my_time.c
+ sqlexamplessources = ha_example.cc ha_tina.cc
++sqlsphinxsources = ha_sphinx.cc
+
+ noinst_HEADERS = embedded_priv.h emb_qcache.h
+
+@@ -67,7 +69,7 @@
+ parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
+ ha_blackhole.cc ha_archive.cc my_user.c
+
+-libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources)
++libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources) $(sqlsphinxsources)
+ libmysqld_a_SOURCES=
+
+ # automake misses these
+@@ -147,12 +149,16 @@
+ rm -f $$f; \
+ @LN_CP_F@ $(top_srcdir)/sql/examples/$$f $$f; \
+ done; \
++ for f in $(sqlsphinxsources); do \
++ rm -f $$f; \
++ @LN_CP_F@ $(top_srcdir)/sql/sphinx/$$f $$f; \
++ done; \
+ rm -f client_settings.h; \
+ @LN_CP_F@ $(top_srcdir)/libmysql/client_settings.h client_settings.h
+
+
+ clean-local:
+- rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \
++ rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) $(sqlsphinxsources) | sed "s;\.lo;.c;g"` \
+ $(top_srcdir)/linked_libmysqld_sources; \
+ rm -f client_settings.h
+
+--- mysql-5.0.67/sql/handler.cc 2008-08-04 23:20:04.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/handler.cc 2009-02-14 09:15:48.000000000 +1000
+@@ -77,6 +77,15 @@
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ HTON_NO_FLAGS };
+ #endif
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++extern handlerton sphinx_hton;
++#else
++handlerton sphinx_hton = { "SPHINX", SHOW_OPTION_NO, "SPHINX storage engine",
++ DB_TYPE_SPHINX_DB, NULL, 0, 0, NULL, NULL,
++ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
++ HTON_NO_FLAGS };
++#endif
+ #ifdef HAVE_INNOBASE_DB
+ #include "ha_innodb.h"
+ extern handlerton innobase_hton;
+@@ -141,6 +150,7 @@
+ &example_hton,
+ &archive_hton,
+ &tina_hton,
++ &sphinx_hton,
+ &ndbcluster_hton,
+ &federated_hton,
+ &myisammrg_hton,
+@@ -341,6 +351,12 @@
+ return new (alloc) ha_tina(table);
+ return NULL;
+ #endif
++#ifdef HAVE_SPHINX_DB
++ case DB_TYPE_SPHINX_DB:
++ if (have_sphinx_db == SHOW_OPTION_YES)
++ return new (alloc) ha_sphinx(table);
++ return NULL;
++#endif
+ #ifdef HAVE_NDBCLUSTER_DB
+ case DB_TYPE_NDBCLUSTER:
+ if (have_ndbcluster == SHOW_OPTION_YES)
+--- mysql-5.0.67/sql/handler.h 2008-08-04 23:20:04.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/handler.h 2009-02-14 09:15:48.000000000 +1000
+@@ -186,8 +186,9 @@
+ DB_TYPE_BERKELEY_DB, DB_TYPE_INNODB,
+ DB_TYPE_GEMINI, DB_TYPE_NDBCLUSTER,
+ DB_TYPE_EXAMPLE_DB, DB_TYPE_ARCHIVE_DB, DB_TYPE_CSV_DB,
+- DB_TYPE_FEDERATED_DB,
++ DB_TYPE_FEDERATED_DB,
+ DB_TYPE_BLACKHOLE_DB,
++ DB_TYPE_SPHINX_DB,
+ DB_TYPE_DEFAULT // Must be last
+ };
+
+--- mysql-5.0.67/sql/Makefile.am 2008-08-04 23:20:02.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/Makefile.am 2009-02-14 09:23:28.000000000 +1000
+@@ -68,6 +68,7 @@
+ sql_array.h sql_cursor.h \
+ examples/ha_example.h ha_archive.h \
+ examples/ha_tina.h ha_blackhole.h \
++ sphinx/ha_sphinx.h \
+ ha_federated.h
+ mysqld_SOURCES = sql_lex.cc sql_handler.cc \
+ item.cc item_sum.cc item_buff.cc item_func.cc \
+@@ -105,6 +106,7 @@
+ sp_cache.cc parse_file.cc sql_trigger.cc \
+ examples/ha_example.cc ha_archive.cc \
+ examples/ha_tina.cc ha_blackhole.cc \
++ sphinx/ha_sphinx.cc \
+ ha_federated.cc
+
+ gen_lex_hash_SOURCES = gen_lex_hash.cc
+@@ -174,6 +176,10 @@
+ udf_example_la_SOURCES= udf_example.c
+ udf_example_la_LDFLAGS= -module -rpath $(pkglibdir)
+
++pkglib_LTLIBRARIES = sphinx/sphinx.la
++sphinx_sphinx_la_SOURCES = sphinx/snippets_udf.cc
++sphinx_sphinx_la_LDFLAGS = -module
++
+
+ # Don't update the files from bitkeeper
+ %::SCCS/s.%
+--- mysql-5.0.67/sql/mysqld.cc 2008-08-04 23:20:07.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/mysqld.cc 2009-02-14 09:15:48.000000000 +1000
+@@ -36,6 +36,10 @@
+ #include <sys/prctl.h>
+ #endif
+
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++#endif
++
+ #ifdef HAVE_INNOBASE_DB
+ #define OPT_INNODB_DEFAULT 1
+ #else
+@@ -6633,6 +6637,13 @@
+ {"Threads_running", (char*) &thread_running, SHOW_INT_CONST},
+ {"Uptime", (char*) 0, SHOW_STARTTIME},
+ {"Uptime_since_flush_status",(char*) 0, SHOW_FLUSHTIME},
++#ifdef HAVE_SPHINX_DB
++ {"sphinx_total", (char *)sphinx_showfunc_total, SHOW_SPHINX_FUNC},
++ {"sphinx_total_found", (char *)sphinx_showfunc_total_found, SHOW_SPHINX_FUNC},
++ {"sphinx_time", (char *)sphinx_showfunc_time, SHOW_SPHINX_FUNC},
++ {"sphinx_word_count", (char *)sphinx_showfunc_word_count, SHOW_SPHINX_FUNC},
++ {"sphinx_words", (char *)sphinx_showfunc_words, SHOW_SPHINX_FUNC},
++#endif
+ {NullS, NullS, SHOW_LONG}
+ };
+
+@@ -6875,6 +6886,11 @@
+ #else
+ have_csv_db= SHOW_OPTION_NO;
+ #endif
++#ifdef HAVE_SPHINX_DB
++ have_sphinx_db= SHOW_OPTION_YES;
++#else
++ have_sphinx_db= SHOW_OPTION_NO;
++#endif
+ #ifdef HAVE_NDBCLUSTER_DB
+ have_ndbcluster=SHOW_OPTION_DISABLED;
+ #else
+@@ -7983,6 +7999,7 @@
+ #undef have_example_db
+ #undef have_archive_db
+ #undef have_csv_db
++#undef have_sphinx_db
+ #undef have_federated_db
+ #undef have_partition_db
+ #undef have_blackhole_db
+@@ -7993,6 +8010,7 @@
+ SHOW_COMP_OPTION have_example_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_archive_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_csv_db= SHOW_OPTION_NO;
++SHOW_COMP_OPTION have_sphinx_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_federated_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_partition_db= SHOW_OPTION_NO;
+ SHOW_COMP_OPTION have_blackhole_db= SHOW_OPTION_NO;
+--- mysql-5.0.67/sql/mysql_priv.h 2008-08-04 23:20:07.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/mysql_priv.h 2009-02-14 09:15:48.000000000 +1000
+@@ -1439,6 +1439,12 @@
+ #else
+ extern SHOW_COMP_OPTION have_csv_db;
+ #endif
++#ifdef HAVE_SPHINX_DB
++extern handlerton sphinx_hton;
++#define have_sphinx_db sphinx_hton.state
++#else
++extern SHOW_COMP_OPTION have_sphinx_db;
++#endif
+ #ifdef HAVE_FEDERATED_DB
+ extern handlerton federated_hton;
+ #define have_federated_db federated_hton.state
+--- mysql-5.0.67/sql/set_var.cc 2008-08-04 23:20:08.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/set_var.cc 2009-02-14 09:15:48.000000000 +1000
+@@ -888,6 +888,7 @@
+ {"have_compress", (char*) &have_compress, SHOW_HAVE},
+ {"have_crypt", (char*) &have_crypt, SHOW_HAVE},
+ {"have_csv", (char*) &have_csv_db, SHOW_HAVE},
++ {"have_sphinx", (char*) &have_sphinx_db, SHOW_HAVE},
+ {"have_dynamic_loading", (char*) &have_dlopen, SHOW_HAVE},
+ {"have_example_engine", (char*) &have_example_db, SHOW_HAVE},
+ {"have_federated_engine", (char*) &have_federated_db, SHOW_HAVE},
+--- mysql-5.0.67/sql/sql_lex.h 2008-08-04 23:20:10.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/sql_lex.h 2009-02-14 09:15:48.000000000 +1000
+@@ -57,6 +57,7 @@
+ SQLCOM_SHOW_DATABASES, SQLCOM_SHOW_TABLES, SQLCOM_SHOW_FIELDS,
+ SQLCOM_SHOW_KEYS, SQLCOM_SHOW_VARIABLES, SQLCOM_SHOW_LOGS, SQLCOM_SHOW_STATUS,
+ SQLCOM_SHOW_INNODB_STATUS, SQLCOM_SHOW_NDBCLUSTER_STATUS, SQLCOM_SHOW_MUTEX_STATUS,
++ SQLCOM_SHOW_SPHINX_STATUS,
+ SQLCOM_SHOW_PROCESSLIST, SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT,
+ SQLCOM_SHOW_GRANTS, SQLCOM_SHOW_CREATE, SQLCOM_SHOW_CHARSETS,
+ SQLCOM_SHOW_COLLATIONS, SQLCOM_SHOW_CREATE_DB, SQLCOM_SHOW_TABLE_STATUS,
+--- mysql-5.0.67/sql/sql_parse.cc 2008-08-04 23:20:10.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/sql_parse.cc 2009-02-14 09:15:48.000000000 +1000
+@@ -24,6 +24,9 @@
+ #ifdef HAVE_INNOBASE_DB
+ #include "ha_innodb.h"
+ #endif
++#ifdef HAVE_SPHINX_DB
++#include "sphinx/ha_sphinx.h"
++#endif
+
+ #ifdef HAVE_NDBCLUSTER_DB
+ #include "ha_ndbcluster.h"
+@@ -3006,6 +3009,15 @@
+ break;
+ }
+ #endif
++#ifdef HAVE_SPHINX_DB
++ case SQLCOM_SHOW_SPHINX_STATUS:
++ {
++ if (check_global_access(thd, SUPER_ACL))
++ goto error;
++ res = sphinx_show_status(thd);
++ break;
++ }
++#endif
+ #ifdef HAVE_REPLICATION
+ case SQLCOM_LOAD_MASTER_TABLE:
+ {
+--- mysql-5.0.67/sql/sql_yacc.yy 2008-08-04 23:20:12.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/sql_yacc.yy 2009-02-14 09:15:48.000000000 +1000
+@@ -7393,6 +7393,9 @@
+ case DB_TYPE_INNODB:
+ Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS;
+ break;
++ case DB_TYPE_SPHINX_DB:
++ Lex->sql_command = SQLCOM_SHOW_SPHINX_STATUS;
++ break;
+ default:
+ my_error(ER_NOT_SUPPORTED_YET, MYF(0), "STATUS");
+ MYSQL_YYABORT;
+--- mysql-5.0.67/sql/structs.h 2008-08-04 23:20:12.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/structs.h 2009-02-14 09:15:48.000000000 +1000
+@@ -188,6 +188,9 @@
+ SHOW_SSL_CTX_SESS_TIMEOUTS, SHOW_SSL_CTX_SESS_CACHE_FULL,
+ SHOW_SSL_GET_CIPHER_LIST,
+ #endif /* HAVE_OPENSSL */
++#ifdef HAVE_SPHINX_DB
++ SHOW_SPHINX_FUNC,
++#endif
+ SHOW_NET_COMPRESSION,
+ SHOW_RPL_STATUS, SHOW_SLAVE_RUNNING, SHOW_SLAVE_RETRIED_TRANS,
+ SHOW_KEY_CACHE_LONG, SHOW_KEY_CACHE_CONST_LONG, SHOW_KEY_CACHE_LONGLONG,
+--- mysql-5.0.67/sql/sql_show.cc 2008-08-04 23:20:11.000000000 +1100
++++ mysql-5.0.67-sphinx/sql/sql_show.cc 2009-02-14 09:15:48.000000000 +1000
+@@ -1473,6 +1473,16 @@
+ value= (char*) ((sys_var*) value)->value_ptr(thd, value_type,
+ &null_lex_str);
+ }
++ #ifdef HAVE_SPHINX_DB
++ else if (show_type == SHOW_SPHINX_FUNC)
++ {
++ SHOW_VAR var;
++ ((int (*)(THD *, SHOW_VAR *, char *))value)(thd, &var, buff);
++
++ value = var.value;
++ show_type = var.type;
++ }
++ #endif /* HAVE_SPHINX_DB */
+
+ pos= end= buff;
+ switch (show_type) {
diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt
index 38a9700df20..759bb525bdf 100644
--- a/storage/xtradb/CMakeLists.txt
+++ b/storage/xtradb/CMakeLists.txt
@@ -31,7 +31,7 @@ ENDIF (CMAKE_SIZEOF_VOID_P MATCHES 8)
ADD_DEFINITIONS(-D_WIN32 -D_LIB -DMYSQL_SERVER)
-# Include directories under innobase
+# Include directories under xtradb
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/xtradb/include
${CMAKE_SOURCE_DIR}/storage/xtradb/handler)
@@ -49,7 +49,7 @@ IF (MSVC AND $(WIN64))
PROPERTIES COMPILE_FLAGS -Od)
ENDIF (MSVC AND $(WIN64))
-SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
+SET(XTRADB_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
buf/buf0buddy.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
data/data0data.c data/data0type.c
dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c
@@ -80,22 +80,11 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
trx/trx0i_s.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c
trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
usr/usr0sess.c
- ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c
+ ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rbt.c ut/ut0rnd.c ut/ut0ut.c ut/ut0vec.c
ut/ut0list.c ut/ut0wqueue.c)
-ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DIB_HAVE_PAUSE_INSTRUCTION)
+# Windows atomics do not perform well. Disable Windows atomics by default.
+# See bug#52102 for details.
+#ADD_DEFINITIONS(-DHAVE_WINDOWS_ATOMICS -DINNODB_RW_LOCKS_USE_ATOMICS -DHAVE_IB_PAUSE_INSTRUCTION)
+ADD_DEFINITIONS(-DHAVE_IB_PAUSE_INSTRUCTION)
-IF (MYSQL_VERSION_ID GREATER "50137")
- MYSQL_STORAGE_ENGINE(INNOBASE)
- # Use ha_innodb for plugin name, if plugin is built
- GET_TARGET_PROPERTY(LIB_LOCATION ha_innobase LOCATION)
- IF(LIB_LOCATION)
- SET_TARGET_PROPERTIES(ha_innobase PROPERTIES OUTPUT_NAME ha_innodb)
- ENDIF(LIB_LOCATION)
-ELSE (MYSQL_VERSION_ID GREATER "50137")
- IF (NOT SOURCE_SUBLIBS)
- ADD_DEFINITIONS(-D_WIN32 -DMYSQL_SERVER)
- ADD_LIBRARY(innobase STATIC ${INNOBASE_SOURCES})
- # Require mysqld_error.h, which is built as part of the GenError
- ADD_DEPENDENCIES(innobase GenError)
- ENDIF (NOT SOURCE_SUBLIBS)
-ENDIF (MYSQL_VERSION_ID GREATER "50137")
+MYSQL_STORAGE_ENGINE(XTRADB)
diff --git a/storage/xtradb/ChangeLog b/storage/xtradb/ChangeLog
index 1a6e07fd147..5ebcf1e87a2 100644
--- a/storage/xtradb/ChangeLog
+++ b/storage/xtradb/ChangeLog
@@ -1,3 +1,393 @@
+2010-06-24 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#54679 alter table causes compressed row_format to revert
+ to compact
+
+2010-06-22 The InnoDB Team
+
+ * dict/dict0dict.c, dict/dict0mem.c, include/dict0mem.h,
+ include/univ.i, page/page0zip.c, row/row0merge.c:
+ Fix Bug#47991 InnoDB Dictionary Cache memory usage increases
+ indefinitely when renaming tables
+
+2010-06-22 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#54686: "field->col->mtype == type" assertion error at
+ row/row0sel.c
+
+2010-06-22 The InnoDB Team
+
+ * handler/ha_innodb.cc, innodb_bug54044.result, innodb_bug54044.test:
+ Fix Bug#54044 Create temporary tables and using innodb crashes.
+
+2010-06-21 The InnoDB Team
+
+ * dict/dict0load.c, fil/fil0fil.c:
+ Fix Bug#54658: InnoDB: Warning: allocated tablespace %lu,
+ old maximum was 0 (introduced in Bug #53578 fix)
+
+2010-06-16 The InnoDB Team
+
+ * row/row0merge.c:
+ Fix Bug#54330 Broken fast index creation
+
+2010-06-10 The InnoDB Team
+
+ * include/log0log.ic, row/row0ins.c, row/row0purge.c,
+ row/row0uins.c, row/row0umod.c, row/row0upd.c:
+ Fix Bug#39168 ERROR: the age of the last checkpoint ... exceeds
+ the log group capacity
+
+2010-06-08 The InnoDB Team
+
+ * dict/dict0load.c:
+ Fix Bug#54009 Server crashes when data is selected from non backed
+ up table for InnoDB plugin
+
+2010-06-02 The InnoDB Team
+
+ * include/db0err.h, include/lock0lock.h, include/row0mysql.h,
+ lock/lock0lock.c, row/row0ins.c, row/row0mysql.c, row/row0sel.c:
+ Fix Bug#53674 InnoDB: Error: unlock row could not find a
+ 4 mode lock on the record
+
+2010-06-01 The InnoDB Team
+
+ * include/sync0rw.h, sync/sync0rw.c:
+ Fix Bug#48197 Concurrent rw_lock_free may cause assertion failure
+
+2010-06-01 The InnoDB Team
+
+ * row/row0umod.c:
+ Fix Bug#53812 assert row/row0umod.c line 660 in txn rollback
+ after crash recovery
+
+2010-05-25 The InnoDB Team
+
+ * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c:
+ Fix Bug#53592: crash replacing duplicates into table after fast
+ alter table added unique key
+
+2010-05-24 The InnoDB Team
+
+ * dict/dict0boot.c, dict/dict0crea.c, fil/fil0fil.c,
+ include/dict0boot.h, include/fil0fil.h, row/row0mysql.c:
+ Fix Bug#53578: assert on invalid page access, in fil_io()
+
+2010-05-14 The InnoDB Team
+ * mysql-test/innodb_bug48024.test, mysql-test/innodb_bug48024.result,
+ dict/dict0dict.c, handler/ha_innodb.cc, handler/ha_innodb.h,
+ include/dict0dict.h, include/ha_prototypes.h, include/row0mysql.h,
+ include/trx0trx.h, row/row0mysql.c, trx/trx0i_s.c, trx/trx0trx.c:
+ Fix Bug#48024 Innodb doesn't work with multi-statements
+ Fix Bug#53644 InnoDB thinks that /*/ starts and ends a comment
+
+2010-05-12 The InnoDB Team
+
+ * handler/handler0alter.cc:
+ Fix Bug#53591 crash with fast alter table and text/blob prefix
+ primary key
+
+2010-05-12 The InnoDB Team
+
+ * row/row0merge.c:
+ Fix Bug#53471 row_merge_drop_temp_indexes() refers freed memory, SEGVs
+
+2010-05-11 The InnoDB Team
+
+ * mysql-test/innodb_bug53290.test, mysql-test/innodb_bug53290.result,
+ include/rem0cmp.h, rem/rem0cmp.c, row/row0merge.c:
+ Fix Bug#53290 wrong duplicate key error when adding a unique index
+ via fast alter table
+
+2010-05-11 The InnoDB Team
+ * buf/buf0lru.c, include/buf0buf.ic:
+ Fix Bug#53307 valgrind: warnings in main.partition_innodb_plugin
+
+2010-05-05 The InnoDB Team
+
+ * row/row0merge.c:
+ Fix Bug#53256 in a stress test, assert dict/dict0dict.c:815
+ table2 == NULL
+
+2010-05-05 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#53165 Setting innodb_change_buffering=DEFAULT produces
+ incorrect result
+
+2010-05-04 The InnoDB Team
+
+ * fsp/fsp0fsp.c:
+ Fix Bug#53306 valgrind: warnings in innodb.innodb
+
+2010-05-03 The InnoDB Team
+
+ * buf0buf.c:
+ Fix Bug#53248 compressed tables page checksum mismatch after
+ re-enabling innodb_checksums
+
+2010-04-28 The InnoDB Team
+
+ * log/log0recv.h, log/log0recv.c:
+ Fix Bug#53122 InnoDB recovery uses too big a hash table for redo
+ log records
+
+2010-04-27 The InnoDB Team
+
+ * handler/ha_innodb.cc, lock/lock0lock.c, row/row0mysql.c,
+ row/row0sel.c:
+ Fix Bug#48607 READ UNCOMMITTED uses more locks than READ COMMITTED
+ in InnoDB 5.1+
+
+2010-04-26 The InnoDB Team
+
+ * row/row0sel.c:
+ Fix Bug#52663 Lost update incrementing column value under
+ READ COMMITTED isolation level
+
+2010-04-22 The InnoDB Team
+
+ * include/dict0boot.h, dict/dict0boot.c:
+ Fix a bug that prevented the crash recovery of fast CREATE INDEX
+ from dropping partially created indexes.
+
+2010-04-21 The InnoDB Team
+
+ * btr/btr0btr.c:
+ Fix Bug#52964 Infinite loop in btr_page_split_and_insert()
+ in ROW_FORMAT=COMPRESSED
+
+2010-04-21 The InnoDB Team
+
+ * data/data0data.c:
+ Fix Bug#52745 Failing assertion: blob_no < page_zip->n_blobs
+
+2010-04-20 The InnoDB Team
+
+ * dict/dict0crea.c, handler/ha_innodb.cc, include/trx0trx.h:
+ Fix Bug#50495 'Row size too large' for plugin, but works for
+ built-in InnoDB
+ Only check the record size at index creation time when
+ innodb_strict_mode is set or when ROW_FORMAT is DYNAMIC or COMPRESSED.
+
+2010-04-15 The InnoDB Team
+
+ * trx/trx0rec.c:
+ Fix Bug#52746 InnoDB purge thread crashed with table containing
+ prefix indexed blobs
+
+2010-03-31 The InnoDB Team
+
+ * mysql-test/innodb_bug51920.test, mysql-test/innodb_bug51920.result,
+ srv/srv0srv.c:
+ Fix Bug#51920 InnoDB connections in row lock wait ignore KILL
+ until lock wait timeout
+
+2010-03-31 The InnoDB Team
+
+ * mysql-test/innodb_bug38231.test:
+ Remove non-determinism in the test case.
+
+2010-03-29 The InnoDB Team
+
+ InnoDB Plugin 1.0.7 released
+
+2010-03-18 The InnoDB Team
+
+ * CMakeLists.txt:
+ Fix Bug#52102 InnoDB Plugin shows performance drop compared to
+ InnoDB (Windows)
+
+2010-03-18 The InnoDB Team
+
+ * buf0buf.ic:
+ When comparing the time of the first access to a block against
+ innodb_old_blocks_time, use 32-bit arithmetics. The comparison was
+ incorrect on 64-bit systems.
+
+2010-03-11 The InnoDB Team
+
+ * buf0buf.h, buf0buf.ic:
+ Fix and clarify the latching of some buf_block_t members.
+ Note that check_index_page_at_flush is not protected by any mutex.
+ Note and assert that lock_hash_val is protected by the rw-latch.
+
+2010-03-10 The InnoDB Team
+
+ * trx/trx0sys.c:
+ Fix Bug#51653 outdated reference to set-variable
+
+2010-03-10 The InnoDB Team
+
+ * handler/ha_innodb.cc, mysql-test/innodb_bug21704.result,
+ mysql-test/innodb_bug47621.result, mysql-test/innodb_bug47621.test:
+ Fix Bug#47621 MySQL and InnoDB data dictionaries will become out of
+ sync when renaming columns
+
+2010-03-10 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Fix Bug#51356 Many Valgrind errors in error messages
+ with concurrent DDL
+
+2010-03-10 The InnoDB Team
+
+ * handler/ha_innodb.cc, handler/handler0alter.cc,
+ mysql-test/innodb_bug51378.result, mysql-test/innodb_bug51378.test:
+ Fix Bug#51378 Init 'ref_length' to correct value, in case an out
+ of bound MySQL primary_key
+
+2010-03-10 The InnoDB Team
+
+ * log/log0recv.c:
+ Remove a bogus assertion about page numbers exceeding 0x90000000
+ in the redo log. Abort when encountering a corrupted redo log
+ record, unless innodb_force_recovery is set.
+
+2010-03-09 The InnoDB Team
+
+ * handler/ha_innodb.cc:
+ Make SHOW ENGINE INNODB MUTEX STATUS display SUM(os_waits)
+ for the buffer pool block mutexes and locks.
+
+2010-03-08 The InnoDB Team
+
+ * fil/fil0fil.c:
+ Fix ALTER TABLE ... IMPORT TABLESPACE of compressed tables.
+
+2010-03-03 The InnoDB Team
+
+ * handler/handler0alter.cc, innodb-index.result, innodb-index.test,
+ innodb.result, innodb.test:
+ Disallow a duplicate index name when creating an index.
+
+2010-02-11 The InnoDB Team
+
+ * include/mem0mem.h, include/mem0mem.ic, mem/mem0mem.c:
+ Fix Bug#49535 Available memory check slows down crash
+ recovery tens of times
+
+2010-02-09 The InnoDB Team
+
+ * buf/buf0buf.c:
+ Fix Bug#38901 InnoDB logs error repeatedly when trying to load
+ page into buffer pool
+
+2010-02-09 The InnoDB Team
+
+ * srv/srv0srv.c:
+ Let the master thread sleep if the amount of work to be done is
+ calibrated as taking less than a second.
+
+2010-02-04 The InnoDB Team
+
+ * btr/btr0btr.c, btr/btr0cur.c, btr/btr0pcur.c, buf/buf0buf.c,
+ include/btr0btr.h, include/btr0cur.h, include/btr0pcur.h,
+ include/btr0pcur.ic, include/buf0buf.h, row/row0ins.c, row/row0sel.c:
+ Pass the file name and line number of the caller of the
+ b-tree cursor functions to the buffer pool requests, in order
+ to make the latch diagnostics more accurate.
+
+2010-02-03 The InnoDB Team
+
+ * lock/lock0lock.c:
+ Fix Bug#49001 SHOW INNODB STATUS deadlock info incorrect
+ when deadlock detection aborts
+
+2010-02-03 The InnoDB Team
+
+ * buf/buf0lru.c:
+ Fix Bug#35077 Very slow DROP TABLE (ALTER TABLE, OPTIMIZE TABLE)
+ on compressed tables
+
+2010-02-03 The InnoDB Team
+
+ * handler/ha_innodb.cc, include/row0mysql.h, row/row0mysql.c:
+ Clean up CHECK TABLE error handling.
+
+2010-02-01 The InnoDB Team
+
+ * handler/ha_innodb.cc, mysql-test/innodb-autoinc.test,
+ mysql-test/innodb-autoinc.result,
+ mysql-test/innodb-autoinc-44030.test,
+ mysql-test/innodb-autoinc-44030.result:
+ Fix Bug#49497 Error 1467 (ER_AUTOINC_READ_FAILED) on inserting
+ a negative value
+
+2010-01-28 The InnoDB Team
+ * handler/ha_innodb.h, handler/ha_innodb.cc,
+ handler/handler0alter.cc,
+ mysql-test/innodb_bug47622.test,
+ mysql-test/innodb_bug47622.result:
+ Fix Bug#47622 the new index is added before the existing ones
+ in MySQL, but after one in SE
+
+2010-01-27 The InnoDB Team
+
+ * include/row0mysql.h, log/log0recv.c, row/row0mysql.c:
+ Drop temporary tables at startup.
+ This addresses the third aspect of
+ Bug#41609 Crash recovery does not work for InnoDB temporary tables.
+
+2010-01-21 The InnoDB Team
+
+ * buf/buf0buf.c:
+ Do not merge buffered inserts to compressed pages before
+ the redo log has been applied in crash recovery.
+
+2010-01-13 The InnoDB Team
+
+ * row/row0sel.c:
+ On the READ UNCOMMITTED isolation level, do not attempt to access
+ a clustered index record that has been marked for deletion. The
+ built-in InnoDB in MySQL 5.1 and earlier would attempt to retrieve
+ a previous version of the record in this case.
+
+2010-01-13 The InnoDB Team
+
+ * buf/buf0buf.c:
+ When disabling the adaptive hash index, check the block state
+ before checking block->is_hashed, because the latter may be
+ uninitialized right after server startup.
+
+2010-01-12 The InnoDB Team
+
+ * handler/ha_innodb.cc, handler/ha_innodb.h:
+ Fix Bug#46193 crash when accessing tables after enabling
+ innodb_force_recovery option
+
+2010-01-12 The InnoDB Team
+
+ * row/row0mysql.c:
+ Fix Bug#49238 Creating/Dropping a temporary table while at 1023
+ transactions will cause assert.
+
+2009-12-02 The InnoDB Team
+
+ * srv/srv0start.c:
+ Display the zlib version number at startup.
+ InnoDB compressed tables use zlib, and the implementation depends
+ on the zlib function compressBound(), whose definition was slightly
+ changed in zlib version 1.2.3.1 in 2006. MySQL bundles zlib 1.2.3
+ from 2005, but some installations use a more recent zlib.
+
+2009-11-30 The InnoDB Team
+
+ * dict/dict0crea.c, dict/dict0mem.c, dict/dict0load.c,
+ dict/dict0boot.c, fil/fil0fil.c, handler/ha_innodb.cc,
+ include/dict0mem.h, row/row0mysql.c:
+ Fix the bogus warning messages for non-existing temporary
+ tables that were reported in
+ Bug#41609 Crash recovery does not work for InnoDB temporary tables.
+ The actual crash recovery bug was corrected on 2009-04-29.
+
+2009-11-27 The InnoDB Team
+
+ InnoDB Plugin 1.0.6 released
+
2009-11-20 The InnoDB Team
* handler/ha_innodb.cc:
@@ -79,8 +469,8 @@
sync/sync0arr.c, sync/sync0sync.c, thr/thr0loc.c, trx/trx0i_s.c,
trx/trx0purge.c, trx/trx0rseg.c, trx/trx0sys.c, trx/trx0undo.c,
usr/usr0sess.c, ut/ut0mem.c:
- Fix Bug #45992 innodb memory not freed after shutdown
- Fix Bug #46656 InnoDB plugin: memory leaks (Valgrind)
+ Fix Bug#45992 innodb memory not freed after shutdown
+ Fix Bug#46656 InnoDB plugin: memory leaks (Valgrind)
2009-10-29 The InnoDB Team
@@ -422,7 +812,7 @@
* dict/dict0dict.c:
When an index column cannot be found in the table during index
creation, display additional diagnostic before an assertion failure.
- This does NOT fix Bug #44571 InnoDB Plugin crashes on ADD INDEX,
+ This does NOT fix Bug#44571 InnoDB Plugin crashes on ADD INDEX,
but it helps understand the reason of the crash.
2009-06-17 The InnoDB Team
@@ -535,6 +925,12 @@
Fix Bug#44320 InnoDB: missing DB_ROLL_PTR in Table Monitor COLUMNS
output
+2009-04-29 The InnoDB Team
+
+ * fil/fil0fil.c, include/fil0fil.h, include/mtr0mtr.h,
+ log/log0recv.c:
+ Fix Bug#41609 Crash recovery does not work for InnoDB temporary tables
+
2009-04-23 The InnoDB Team
* row/row0mysql.c:
diff --git a/storage/xtradb/Makefile.am b/storage/xtradb/Makefile.am
index 53413dfaeb8..3813b6602b8 100644
--- a/storage/xtradb/Makefile.am
+++ b/storage/xtradb/Makefile.am
@@ -217,6 +217,7 @@ noinst_HEADERS= \
include/ut0lst.h \
include/ut0mem.h \
include/ut0mem.ic \
+ include/ut0rbt.h \
include/ut0rnd.h \
include/ut0rnd.ic \
include/ut0sort.h \
@@ -228,9 +229,9 @@ noinst_HEADERS= \
handler/innodb_patch_info.h \
mem/mem0dbg.c
-EXTRA_LIBRARIES= libinnobase.a
-noinst_LIBRARIES= @plugin_innobase_static_target@
-libinnobase_a_SOURCES= \
+EXTRA_LIBRARIES= libxtradb.a
+noinst_LIBRARIES= @plugin_xtradb_static_target@
+libxtradb_a_SOURCES= \
btr/btr0btr.c \
btr/btr0cur.c \
btr/btr0pcur.c \
@@ -319,21 +320,22 @@ libinnobase_a_SOURCES= \
ut/ut0dbg.c \
ut/ut0list.c \
ut/ut0mem.c \
+ ut/ut0rbt.c \
ut/ut0rnd.c \
ut/ut0ut.c \
ut/ut0vec.c \
ut/ut0wqueue.c
-libinnobase_a_CXXFLAGS= $(AM_CFLAGS)
-libinnobase_a_CFLAGS= $(AM_CFLAGS)
+libxtradb_a_CXXFLAGS= $(AM_CFLAGS)
+libxtradb_a_CFLAGS= $(AM_CFLAGS)
-EXTRA_LTLIBRARIES= ha_innodb.la
-pkgplugin_LTLIBRARIES= @plugin_innobase_shared_target@
+EXTRA_LTLIBRARIES= ha_xtradb.la
+pkgplugin_LTLIBRARIES= @plugin_xtradb_shared_target@
-ha_innodb_la_LDFLAGS= -module -rpath $(pkgplugindir)
-ha_innodb_la_CXXFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
-ha_innodb_la_CFLAGS= $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
-ha_innodb_la_SOURCES= $(libinnobase_a_SOURCES)
+ha_xtradb_la_LDFLAGS= -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices
+ha_xtradb_la_CXXFLAGS= -shared $(AM_CXXFLAGS) $(INNODB_DYNAMIC_CFLAGS)
+ha_xtradb_la_CFLAGS= -shared $(AM_CFLAGS) $(INNODB_DYNAMIC_CFLAGS)
+ha_xtradb_la_SOURCES= $(libxtradb_a_SOURCES)
EXTRA_DIST= CMakeLists.txt plug.in \
pars/make_bison.sh pars/make_flex.sh \
diff --git a/storage/xtradb/btr/btr0btr.c b/storage/xtradb/btr/btr0btr.c
index 520c18553ea..ff047095aa4 100644
--- a/storage/xtradb/btr/btr0btr.c
+++ b/storage/xtradb/btr/btr0btr.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -604,13 +604,15 @@ an x-latch on the tree.
@return rec_get_offsets() of the node pointer record */
static
ulint*
-btr_page_get_father_node_ptr(
-/*=========================*/
+btr_page_get_father_node_ptr_func(
+/*==============================*/
ulint* offsets,/*!< in: work area for the return value */
mem_heap_t* heap, /*!< in: memory heap to use */
btr_cur_t* cursor, /*!< in: cursor pointing to user record,
out: cursor on node pointer record,
its page x-latched */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
dtuple_t* tuple;
@@ -634,7 +636,8 @@ btr_page_get_father_node_ptr(
tuple = dict_index_build_node_ptr(index, user_rec, 0, heap, level);
btr_cur_search_to_nth_level(index, level + 1, tuple, PAGE_CUR_LE,
- BTR_CONT_MODIFY_TREE, cursor, 0, mtr);
+ BTR_CONT_MODIFY_TREE, cursor, 0,
+ file, line, mtr);
node_ptr = btr_cur_get_rec(cursor);
ut_ad(!page_rec_is_comp(node_ptr)
@@ -682,6 +685,9 @@ btr_page_get_father_node_ptr(
return(offsets);
}
+#define btr_page_get_father_node_ptr(of,heap,cur,mtr) \
+ btr_page_get_father_node_ptr_func(of,heap,cur,__FILE__,__LINE__,mtr)
+
/************************************************************//**
Returns the upper level node pointer to a page. It is assumed that mtr holds
an x-latch on the tree.
@@ -1475,11 +1481,11 @@ Calculates a split record such that the tuple will certainly fit on
its half-page when the split is performed. We assume in this function
only that the cursor page has at least one user record.
@return split record, or NULL if tuple will be the first record on
-upper half-page */
+the lower or upper half-page (determined by btr_page_tuple_smaller()) */
static
rec_t*
-btr_page_get_sure_split_rec(
-/*========================*/
+btr_page_get_split_rec(
+/*===================*/
btr_cur_t* cursor, /*!< in: cursor at which insert should be made */
const dtuple_t* tuple, /*!< in: tuple to insert */
ulint n_ext) /*!< in: number of externally stored columns */
@@ -1692,11 +1698,13 @@ Inserts a data tuple to a tree on a non-leaf level. It is assumed
that mtr holds an x-latch on the tree. */
UNIV_INTERN
void
-btr_insert_on_non_leaf_level(
-/*=========================*/
+btr_insert_on_non_leaf_level_func(
+/*==============================*/
dict_index_t* index, /*!< in: index */
ulint level, /*!< in: level, must be > 0 */
dtuple_t* tuple, /*!< in: the record to be inserted */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
big_rec_t* dummy_big_rec;
@@ -1708,7 +1716,7 @@ btr_insert_on_non_leaf_level(
btr_cur_search_to_nth_level(index, level, tuple, PAGE_CUR_LE,
BTR_CONT_MODIFY_TREE,
- &cursor, 0, mtr);
+ &cursor, 0, file, line, mtr);
err = btr_cur_pessimistic_insert(BTR_NO_LOCKING_FLAG
| BTR_KEEP_SYS_FLAG
@@ -1854,6 +1862,37 @@ btr_attach_half_pages(
}
/*************************************************************//**
+Determine if a tuple is smaller than any record on the page.
+@return TRUE if smaller */
+static
+ibool
+btr_page_tuple_smaller(
+/*===================*/
+ btr_cur_t* cursor, /*!< in: b-tree cursor */
+ const dtuple_t* tuple, /*!< in: tuple to consider */
+ ulint* offsets,/*!< in/out: temporary storage */
+ ulint n_uniq, /*!< in: number of unique fields
+ in the index page records */
+ mem_heap_t** heap) /*!< in/out: heap for offsets */
+{
+ buf_block_t* block;
+ const rec_t* first_rec;
+ page_cur_t pcur;
+
+ /* Read the first user record in the page. */
+ block = btr_cur_get_block(cursor);
+ page_cur_set_before_first(block, &pcur);
+ page_cur_move_to_next(&pcur);
+ first_rec = page_cur_get_rec(&pcur);
+
+ offsets = rec_get_offsets(
+ first_rec, cursor->index, offsets,
+ n_uniq, heap);
+
+ return(cmp_dtuple_rec(tuple, first_rec, offsets) < 0);
+}
+
+/*************************************************************//**
Splits an index page to halves and inserts the tuple. It is assumed
that mtr holds an x-latch to the index tree. NOTE: the tree x-latch is
released within this function! NOTE that the operation of this
@@ -1923,12 +1962,17 @@ func_start:
/* 1. Decide the split record; split_rec == NULL means that the
tuple to be inserted should be the first record on the upper
half-page */
+ insert_left = FALSE;
if (n_iterations > 0) {
direction = FSP_UP;
hint_page_no = page_no + 1;
- split_rec = btr_page_get_sure_split_rec(cursor, tuple, n_ext);
+ split_rec = btr_page_get_split_rec(cursor, tuple, n_ext);
+ if (UNIV_UNLIKELY(split_rec == NULL)) {
+ insert_left = btr_page_tuple_smaller(
+ cursor, tuple, offsets, n_uniq, &heap);
+ }
} else if (btr_page_get_split_rec_to_right(cursor, &split_rec)) {
direction = FSP_UP;
hint_page_no = page_no + 1;
@@ -1936,37 +1980,24 @@ func_start:
} else if (btr_page_get_split_rec_to_left(cursor, &split_rec)) {
direction = FSP_DOWN;
hint_page_no = page_no - 1;
+ ut_ad(split_rec);
} else {
direction = FSP_UP;
hint_page_no = page_no + 1;
- if (page_get_n_recs(page) == 1) {
- page_cur_t pcur;
-
- /* There is only one record in the index page
- therefore we can't split the node in the middle
- by default. We need to determine whether the
- new record will be inserted to the left or right. */
-
- /* Read the first (and only) record in the page. */
- page_cur_set_before_first(block, &pcur);
- page_cur_move_to_next(&pcur);
- first_rec = page_cur_get_rec(&pcur);
+ /* If there is only one record in the index page, we
+ can't split the node in the middle by default. We need
+ to determine whether the new record will be inserted
+ to the left or right. */
- offsets = rec_get_offsets(
- first_rec, cursor->index, offsets,
- n_uniq, &heap);
-
- /* If the new record is less than the existing record
- the split in the middle will copy the existing
- record to the new node. */
- if (cmp_dtuple_rec(tuple, first_rec, offsets) < 0) {
- split_rec = page_get_middle_rec(page);
- } else {
- split_rec = NULL;
- }
- } else {
+ if (page_get_n_recs(page) > 1) {
split_rec = page_get_middle_rec(page);
+ } else if (btr_page_tuple_smaller(cursor, tuple,
+ offsets, n_uniq, &heap)) {
+ split_rec = page_rec_get_next(
+ page_get_infimum_rec(page));
+ } else {
+ split_rec = NULL;
}
}
@@ -1996,11 +2027,16 @@ func_start:
avoid further splits by inserting the record
to an empty page. */
split_rec = NULL;
- goto insert_right;
+ goto insert_empty;
}
+ } else if (UNIV_UNLIKELY(insert_left)) {
+ ut_a(n_iterations > 0);
+ first_rec = page_rec_get_next(page_get_infimum_rec(page));
+ move_limit = page_rec_get_next(btr_cur_get_rec(cursor));
} else {
-insert_right:
- insert_left = FALSE;
+insert_empty:
+ ut_ad(!split_rec);
+ ut_ad(!insert_left);
buf = mem_alloc(rec_get_converted_size(cursor->index,
tuple, n_ext));
@@ -2024,7 +2060,11 @@ insert_right:
&& btr_page_insert_fits(cursor, split_rec,
offsets, tuple, n_ext, heap);
} else {
- mem_free(buf);
+ if (!insert_left) {
+ mem_free(buf);
+ buf = NULL;
+ }
+
insert_will_fit = !new_page_zip
&& btr_page_insert_fits(cursor, NULL,
NULL, tuple, n_ext, heap);
diff --git a/storage/xtradb/btr/btr0cur.c b/storage/xtradb/btr/btr0cur.c
index 06b54bc7120..9b87d969a64 100644
--- a/storage/xtradb/btr/btr0cur.c
+++ b/storage/xtradb/btr/btr0cur.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -372,6 +372,8 @@ btr_cur_search_to_nth_level(
ulint has_search_latch,/*!< in: info on the latch mode the
caller currently has on btr_search_latch:
RW_S_LATCH, or 0 */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
page_cur_t* page_cursor;
@@ -550,7 +552,7 @@ btr_cur_search_to_nth_level(
retry_page_get:
block = buf_page_get_gen(space, zip_size, page_no,
rw_latch, guess, buf_mode,
- __FILE__, __LINE__, mtr);
+ file, line, mtr);
if (block == NULL) {
if (srv_pass_corrupt_table && buf_mode != BUF_GET_IF_IN_POOL) {
page_cursor->block = 0;
@@ -727,13 +729,15 @@ func_exit:
Opens a cursor at either end of an index. */
UNIV_INTERN
void
-btr_cur_open_at_index_side(
-/*=======================*/
+btr_cur_open_at_index_side_func(
+/*============================*/
ibool from_left, /*!< in: TRUE if open to the low end,
FALSE if to the high end */
dict_index_t* index, /*!< in: index */
ulint latch_mode, /*!< in: latch mode */
btr_cur_t* cursor, /*!< in: cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
page_cur_t* page_cursor;
@@ -778,7 +782,7 @@ btr_cur_open_at_index_side(
page_t* page;
block = buf_page_get_gen(space, zip_size, page_no,
RW_NO_LATCH, NULL, BUF_GET,
- __FILE__, __LINE__, mtr);
+ file, line, mtr);
page = buf_block_get_frame(block);
if (srv_pass_corrupt_table && !page) {
@@ -869,11 +873,13 @@ btr_cur_open_at_index_side(
Positions a cursor at a randomly chosen position within a B-tree. */
UNIV_INTERN
void
-btr_cur_open_at_rnd_pos(
-/*====================*/
+btr_cur_open_at_rnd_pos_func(
+/*=========================*/
dict_index_t* index, /*!< in: index */
ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */
btr_cur_t* cursor, /*!< in/out: B-tree cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
page_cur_t* page_cursor;
@@ -908,7 +914,7 @@ btr_cur_open_at_rnd_pos(
block = buf_page_get_gen(space, zip_size, page_no,
RW_NO_LATCH, NULL, BUF_GET,
- __FILE__, __LINE__, mtr);
+ file, line, mtr);
page = buf_block_get_frame(block);
if (srv_pass_corrupt_table && !page) {
@@ -1229,7 +1235,6 @@ btr_cur_optimistic_insert(
ibool inherit;
ulint zip_size;
ulint rec_size;
- mem_heap_t* heap = NULL;
ulint err;
*big_rec = NULL;
@@ -1315,10 +1320,6 @@ btr_cur_optimistic_insert(
index, entry, big_rec_vec);
}
- if (heap) {
- mem_heap_free(heap);
- }
-
return(DB_TOO_BIG_RECORD);
}
}
@@ -1341,15 +1342,11 @@ fail_err:
dtuple_convert_back_big_rec(index, entry, big_rec_vec);
}
- if (UNIV_LIKELY_NULL(heap)) {
- mem_heap_free(heap);
- }
-
return(err);
}
if (UNIV_UNLIKELY(max_size < BTR_CUR_PAGE_REORGANIZE_LIMIT
- || max_size < rec_size)
+ || max_size < rec_size)
&& UNIV_LIKELY(page_get_n_recs(page) > 1)
&& page_get_max_insert_size(page, 1) < rec_size) {
@@ -1415,10 +1412,6 @@ fail_err:
}
}
- if (UNIV_LIKELY_NULL(heap)) {
- mem_heap_free(heap);
- }
-
#ifdef BTR_CUR_HASH_ADAPT
if (!reorg && leaf && (cursor->flag == BTR_CUR_HASH)) {
btr_search_update_hash_node_on_insert(cursor);
@@ -2143,9 +2136,8 @@ any_extern:
err = btr_cur_upd_lock_and_undo(flags, cursor, update, cmpl_info,
thr, mtr, &roll_ptr);
if (err != DB_SUCCESS) {
-err_exit:
- mem_heap_free(heap);
- return(err);
+
+ goto err_exit;
}
/* Ok, we may do the replacement. Store on the page infimum the
@@ -2191,9 +2183,10 @@ err_exit:
page_cur_move_to_next(page_cursor);
+ err = DB_SUCCESS;
+err_exit:
mem_heap_free(heap);
-
- return(DB_SUCCESS);
+ return(err);
}
/*************************************************************//**
@@ -3282,7 +3275,8 @@ btr_estimate_n_rows_in_range(
btr_cur_search_to_nth_level(index, 0, tuple1, mode1,
BTR_SEARCH_LEAF | BTR_ESTIMATE,
- &cursor, 0, &mtr);
+ &cursor, 0,
+ __FILE__, __LINE__, &mtr);
} else {
btr_cur_open_at_index_side(TRUE, index,
BTR_SEARCH_LEAF | BTR_ESTIMATE,
@@ -3299,7 +3293,8 @@ btr_estimate_n_rows_in_range(
btr_cur_search_to_nth_level(index, 0, tuple2, mode2,
BTR_SEARCH_LEAF | BTR_ESTIMATE,
- &cursor, 0, &mtr);
+ &cursor, 0,
+ __FILE__, __LINE__, &mtr);
} else {
btr_cur_open_at_index_side(FALSE, index,
BTR_SEARCH_LEAF | BTR_ESTIMATE,
@@ -3438,7 +3433,7 @@ btr_estimate_n_pages_not_null(
btr_cur_search_to_nth_level(index, 0, tuple1, PAGE_CUR_G,
BTR_SEARCH_LEAF | BTR_ESTIMATE,
- &cursor, 0, &mtr);
+ &cursor, 0, __FILE__, __LINE__, &mtr);
mtr_commit(&mtr);
@@ -3588,9 +3583,11 @@ btr_estimate_number_of_different_key_vals(
effective_pages = btr_estimate_n_pages_not_null(index, 1 /*k*/, first_rec_path);
if (!effective_pages) {
+ dict_index_stat_mutex_enter(index);
for (j = 0; j <= n_cols; j++) {
index->stat_n_diff_key_vals[j] = (ib_int64_t)index->stat_n_leaf_pages;
}
+ dict_index_stat_mutex_exit(index);
return;
} else if (effective_pages > index->stat_n_leaf_pages) {
effective_pages = index->stat_n_leaf_pages;
@@ -3732,6 +3729,8 @@ btr_estimate_number_of_different_key_vals(
also the pages used for external storage of fields (those pages are
included in index->stat_n_leaf_pages) */
+ dict_index_stat_mutex_enter(index);
+
for (j = 0; j <= n_cols; j++) {
index->stat_n_diff_key_vals[j]
= ((n_diff[j]
@@ -3770,8 +3769,9 @@ btr_estimate_number_of_different_key_vals(
}
}
- mem_free(n_diff);
+ dict_index_stat_mutex_exit(index);
+ mem_free(n_diff);
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
@@ -4259,6 +4259,8 @@ btr_store_big_rec_extern_fields(
field_ref += local_len;
}
extern_len = big_rec_vec->fields[i].len;
+ UNIV_MEM_ASSERT_RW(big_rec_vec->fields[i].data,
+ extern_len);
ut_a(extern_len > 0);
@@ -4639,7 +4641,7 @@ btr_free_externally_stored_field(
/* In the rollback of uncommitted transactions, we may
encounter a clustered index record whose BLOBs have
not been written. There is nothing to free then. */
- ut_a(rb_ctx == RB_RECOVERY);
+ ut_a(rb_ctx == RB_RECOVERY || rb_ctx == RB_RECOVERY_PURGE_REC);
return;
}
@@ -4685,7 +4687,7 @@ btr_free_externally_stored_field(
|| (mach_read_from_1(field_ref + BTR_EXTERN_LEN)
& BTR_EXTERN_OWNER_FLAG)
/* Rollback and inherited field */
- || (rb_ctx != RB_NONE
+ || ((rb_ctx == RB_NORMAL || rb_ctx == RB_RECOVERY)
&& (mach_read_from_1(field_ref + BTR_EXTERN_LEN)
& BTR_EXTERN_INHERITED_FLAG))) {
@@ -4895,6 +4897,7 @@ btr_copy_blob_prefix(
mtr_commit(&mtr);
if (page_no == FIL_NULL || copy_len != part_len) {
+ UNIV_MEM_ASSERT_RW(buf, copied_len);
return(copied_len);
}
@@ -5078,6 +5081,7 @@ btr_copy_externally_stored_field_prefix_low(
space_id, page_no, offset);
inflateEnd(&d_stream);
mem_heap_free(heap);
+ UNIV_MEM_ASSERT_RW(buf, d_stream.total_out);
return(d_stream.total_out);
} else {
return(btr_copy_blob_prefix(buf, len, space_id,
diff --git a/storage/xtradb/btr/btr0pcur.c b/storage/xtradb/btr/btr0pcur.c
index 86beea5a899..537c26f6bf2 100644
--- a/storage/xtradb/btr/btr0pcur.c
+++ b/storage/xtradb/btr/btr0pcur.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -211,10 +211,12 @@ record and it can be restored on a user record whose ordering fields
are identical to the ones of the original user record */
UNIV_INTERN
ibool
-btr_pcur_restore_position(
-/*======================*/
+btr_pcur_restore_position_func(
+/*===========================*/
ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */
btr_pcur_t* cursor, /*!< in: detached persistent cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
dict_index_t* index;
@@ -223,6 +225,9 @@ btr_pcur_restore_position(
ulint old_mode;
mem_heap_t* heap;
+ ut_ad(mtr);
+ ut_ad(mtr->state == MTR_ACTIVE);
+
index = btr_cur_get_index(btr_pcur_get_btr_cur(cursor));
if (UNIV_UNLIKELY(cursor->old_stored != BTR_PCUR_OLD_STORED)
@@ -263,7 +268,8 @@ btr_pcur_restore_position(
if (UNIV_LIKELY(buf_page_optimistic_get(
latch_mode,
cursor->block_when_stored,
- cursor->modify_clock, mtr))) {
+ cursor->modify_clock,
+ file, line, mtr))) {
cursor->pos_state = BTR_PCUR_IS_POSITIONED;
buf_block_dbg_add_level(btr_pcur_get_block(cursor),
@@ -318,8 +324,8 @@ btr_pcur_restore_position(
mode = PAGE_CUR_L;
}
- btr_pcur_open_with_no_init(index, tuple, mode, latch_mode,
- cursor, 0, mtr);
+ btr_pcur_open_with_no_init_func(index, tuple, mode, latch_mode,
+ cursor, 0, file, line, mtr);
/* Restore the old search mode */
cursor->search_mode = old_mode;
@@ -568,8 +574,8 @@ before first in tree. The latching mode must be BTR_SEARCH_LEAF or
BTR_MODIFY_LEAF. */
UNIV_INTERN
void
-btr_pcur_open_on_user_rec(
-/*======================*/
+btr_pcur_open_on_user_rec_func(
+/*===========================*/
dict_index_t* index, /*!< in: index */
const dtuple_t* tuple, /*!< in: tuple on which search done */
ulint mode, /*!< in: PAGE_CUR_L, ... */
@@ -577,9 +583,12 @@ btr_pcur_open_on_user_rec(
BTR_MODIFY_LEAF */
btr_pcur_t* cursor, /*!< in: memory buffer for persistent
cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
- btr_pcur_open(index, tuple, mode, latch_mode, cursor, mtr);
+ btr_pcur_open_func(index, tuple, mode, latch_mode, cursor,
+ file, line, mtr);
if ((mode == PAGE_CUR_GE) || (mode == PAGE_CUR_G)) {
diff --git a/storage/xtradb/btr/btr0sea.c b/storage/xtradb/btr/btr0sea.c
index 61909903a67..36dadd47e69 100644
--- a/storage/xtradb/btr/btr0sea.c
+++ b/storage/xtradb/btr/btr0sea.c
@@ -182,6 +182,7 @@ void
btr_search_sys_free(void)
/*=====================*/
{
+ rw_lock_free(&btr_search_latch);
mem_free(btr_search_latch_temp);
btr_search_latch_temp = NULL;
mem_heap_free(btr_search_sys->hash_index->heap);
diff --git a/storage/xtradb/buf/buf0buddy.c b/storage/xtradb/buf/buf0buddy.c
index d5e45745757..e6b80bcda55 100644
--- a/storage/xtradb/buf/buf0buddy.c
+++ b/storage/xtradb/buf/buf0buddy.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 2006, 2010, Innobase Oy. All Rights Reserved.
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
@@ -430,6 +430,8 @@ buf_buddy_relocate_block(
}
mutex_exit(&flush_list_mutex);
+ UNIV_MEM_INVALID(bpage, sizeof *bpage);
+
mutex_exit(&buf_pool_zip_mutex);
mutex_exit(&zip_free_mutex);
return(TRUE);
@@ -450,6 +452,8 @@ buf_buddy_relocate(
buf_page_t* bpage;
const ulint size = BUF_BUDDY_LOW << i;
ullint usec = ut_time_us(NULL);
+ ulint space;
+ ulint page_no;
//ut_ad(buf_pool_mutex_own());
ut_ad(mutex_own(&zip_free_mutex));
@@ -488,11 +492,15 @@ buf_buddy_relocate(
pool), so there is nothing wrong about this. The
mach_read_from_4() calls here will only trigger bogus
Valgrind memcheck warnings in UNIV_DEBUG_VALGRIND builds. */
- bpage = buf_page_hash_get(
- mach_read_from_4((const byte*) src
- + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID),
- mach_read_from_4((const byte*) src
- + FIL_PAGE_OFFSET));
+ space = mach_read_from_4(
+ (const byte*) src + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
+ page_no = mach_read_from_4(
+ (const byte*) src + FIL_PAGE_OFFSET);
+ /* Suppress Valgrind warnings about conditional jump
+ on uninitialized value. */
+ UNIV_MEM_VALID(&space, sizeof space);
+ UNIV_MEM_VALID(&page_no, sizeof page_no);
+ bpage = buf_page_hash_get(space, page_no);
if (!bpage || bpage->zip.data != src) {
/* The block has probably been freshly
@@ -567,7 +575,12 @@ success:
}
} else if (i == buf_buddy_get_slot(sizeof(buf_page_t))) {
/* This must be a buf_page_t object. */
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(src, size);
+#endif
mutex_exit(&zip_free_mutex);
diff --git a/storage/xtradb/buf/buf0buf.c b/storage/xtradb/buf/buf0buf.c
index 79a9488e339..94a67c1759c 100644
--- a/storage/xtradb/buf/buf0buf.c
+++ b/storage/xtradb/buf/buf0buf.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -53,6 +53,10 @@ Created 11/5/1995 Heikki Tuuri
#include "page0zip.h"
#include "trx0trx.h"
#include "srv0start.h"
+#include "que0que.h"
+#include "read0read.h"
+#include "row0row.h"
+#include "ha_prototypes.h"
/* prototypes for new functions added to ha_innodb.cc */
trx_t* innobase_get_trx();
@@ -78,9 +82,9 @@ inline void _increment_page_get_statistics(buf_block_t* block, trx_t* trx)
block_hash_byte = block_hash >> 3;
block_hash_offset = (byte) block_hash & 0x07;
if (block_hash_byte >= DPAH_SIZE)
- fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %lu !!!\n", (unsigned long) block_hash_byte, (unsigned long) block_hash_offset);
+ fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %d !!!\n", block_hash_byte, block_hash_offset);
if (block_hash_offset > 7)
- fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %lu !!!\n", (unsigned long) block_hash_byte, (unsigned long) block_hash_offset);
+ fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %d !!!\n", block_hash_byte, block_hash_offset);
if ((trx->distinct_page_access_hash[block_hash_byte] & ((byte) 0x01 << block_hash_offset)) == 0)
trx->distinct_page_access++;
trx->distinct_page_access_hash[block_hash_byte] |= (byte) 0x01 << block_hash_offset;
@@ -277,6 +281,8 @@ the read requests for the whole area.
#ifndef UNIV_HOTBACKUP
/** Value in microseconds */
static const int WAIT_FOR_READ = 5000;
+/** Number of attemtps made to read in a page in the buffer pool */
+static const ulint BUF_PAGE_READ_MAX_RETRIES = 100;
/** The buffer buf_pool of the database */
UNIV_INTERN buf_pool_t* buf_pool = NULL;
@@ -308,14 +314,30 @@ read-ahead or flush occurs */
UNIV_INTERN ibool buf_debug_prints = FALSE;
#endif /* UNIV_DEBUG */
-/** A chunk of buffers. The buffer pool is allocated in chunks. */
-struct buf_chunk_struct{
- ulint mem_size; /*!< allocated size of the chunk */
- ulint size; /*!< size of frames[] and blocks[] */
- void* mem; /*!< pointer to the memory area which
- was allocated for the frames */
- buf_block_t* blocks; /*!< array of buffer control blocks */
+/* Buffer pool shared memory segment information */
+typedef struct buf_shm_info_struct buf_shm_info_t;
+
+struct buf_shm_info_struct {
+ char head_str[8];
+ ulint binary_id;
+ ibool is_new; /* during initializing */
+ ibool clean; /* clean shutdowned and free */
+ ibool reusable; /* reusable */
+ ulint buf_pool_size; /* backup value */
+ ulint page_size; /* backup value */
+ ulint frame_offset; /* offset of the first frame based on chunk->mem */
+ ulint zip_hash_offset;
+ ulint zip_hash_n;
+
+ ulint checksum;
+
+ buf_pool_t buf_pool_backup;
+ buf_chunk_t chunk_backup;
+
+ ib_uint64_t dummy;
};
+
+#define BUF_SHM_INFO_HEAD "XTRA_SHM"
#endif /* !UNIV_HOTBACKUP */
/********************************************************************//**
@@ -762,6 +784,45 @@ buf_block_init(
#endif /* UNIV_SYNC_DEBUG */
}
+static
+void
+buf_block_reuse(
+/*============*/
+ buf_block_t* block,
+ ptrdiff_t frame_offset)
+{
+ /* block_init */
+ block->frame = ((byte*)(block->frame) + frame_offset);
+
+ UNIV_MEM_DESC(block->frame, UNIV_PAGE_SIZE, block);
+
+ block->index = NULL;
+
+#ifdef UNIV_DEBUG
+ /* recreate later */
+ block->page.in_page_hash = FALSE;
+ block->page.in_zip_hash = FALSE;
+#endif /* UNIV_DEBUG */
+
+#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
+ block->n_pointers = 0;
+#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
+
+ if (block->page.zip.data)
+ block->page.zip.data = ((byte*)(block->page.zip.data) + frame_offset);
+
+ block->is_hashed = FALSE;
+
+ mutex_create(&block->mutex, SYNC_BUF_BLOCK);
+
+ rw_lock_create(&block->lock, SYNC_LEVEL_VARYING);
+ ut_ad(rw_lock_validate(&(block->lock)));
+
+#ifdef UNIV_SYNC_DEBUG
+ rw_lock_create(&block->debug_latch, SYNC_NO_ORDER_CHECK);
+#endif /* UNIV_SYNC_DEBUG */
+}
+
/********************************************************************//**
Allocates a chunk of buffer frames.
@return chunk, or NULL on failure */
@@ -774,26 +835,167 @@ buf_chunk_init(
{
buf_block_t* block;
byte* frame;
+ ulint zip_hash_n = 0;
+ ulint zip_hash_mem_size = 0;
+ hash_table_t* zip_hash_tmp = NULL;
ulint i;
+ buf_shm_info_t* shm_info = NULL;
/* Round down to a multiple of page size,
although it already should be. */
mem_size = ut_2pow_round(mem_size, UNIV_PAGE_SIZE);
+
+ if (srv_buffer_pool_shm_key) {
+ /* zip_hash size */
+ zip_hash_n = (mem_size / UNIV_PAGE_SIZE) * 2;
+ zip_hash_mem_size = ut_2pow_round(hash_create_needed(zip_hash_n)
+ + (UNIV_PAGE_SIZE - 1), UNIV_PAGE_SIZE);
+ }
+
/* Reserve space for the block descriptors. */
mem_size += ut_2pow_round((mem_size / UNIV_PAGE_SIZE) * (sizeof *block)
+ (UNIV_PAGE_SIZE - 1), UNIV_PAGE_SIZE);
+ if (srv_buffer_pool_shm_key) {
+ mem_size += ut_2pow_round(sizeof(buf_shm_info_t)
+ + (UNIV_PAGE_SIZE - 1), UNIV_PAGE_SIZE);
+ mem_size += zip_hash_mem_size;
+ }
chunk->mem_size = mem_size;
+
+ if (srv_buffer_pool_shm_key) {
+ ulint binary_id;
+ ibool is_new;
+
+ ut_a(buf_pool->n_chunks == 1);
+
+ fprintf(stderr,
+ "InnoDB: Notice: innodb_buffer_pool_shm_key option is specified.\n"
+ "InnoDB: This option may not be safe to keep consistency of datafiles.\n"
+ "InnoDB: Because InnoDB cannot lock datafiles when shutdown until reusing shared memory segment.\n"
+ "InnoDB: You should ensure no change of InnoDB files while using innodb_buffer_pool_shm_key.\n");
+
+ /* FIXME: This is vague id still */
+ binary_id = (ulint) ((char*)mtr_commit - (char *)btr_root_get)
+ + (ulint) ((char *)os_get_os_version - (char *)buf_calc_page_new_checksum)
+ + (ulint) ((char *)page_dir_find_owner_slot - (char *)dfield_data_is_binary_equal)
+ + (ulint) ((char *)que_graph_publish - (char *)dict_casedn_str)
+ + (ulint) ((char *)read_view_oldest_copy_or_open_new - (char *)fil_space_get_version)
+ + (ulint) ((char *)rec_get_n_extern_new - (char *)fsp_get_size_low)
+ + (ulint) ((char *)row_get_trx_id_offset - (char *)ha_create_func)
+ + (ulint) ((char *)srv_set_io_thread_op_info - (char *)thd_is_replication_slave_thread)
+ + (ulint) ((char *)mutex_create_func - (char *)ibuf_inside)
+ + (ulint) ((char *)trx_set_detailed_error - (char *)lock_check_trx_id_sanity)
+ + (ulint) ((char *)ut_time - (char *)mem_heap_strdup);
+
+ chunk->mem = os_shm_alloc(&chunk->mem_size, srv_buffer_pool_shm_key, &is_new);
+
+ if (UNIV_UNLIKELY(chunk->mem == NULL)) {
+ return(NULL);
+ }
+
+#ifdef UNIV_SET_MEM_TO_ZERO
+ if (is_new) {
+ memset(chunk->mem, '\0', chunk->mem_size);
+ }
+#endif
+
+ shm_info = chunk->mem;
+
+ zip_hash_tmp = (hash_table_t*)((char *)chunk->mem + chunk->mem_size - zip_hash_mem_size);
+
+ if (is_new) {
+ strncpy(shm_info->head_str, BUF_SHM_INFO_HEAD, 8);
+ shm_info->binary_id = binary_id;
+ shm_info->is_new = TRUE; /* changed to FALSE when the initialization is finished */
+ shm_info->clean = FALSE; /* changed to TRUE when free the segment. */
+ shm_info->reusable = FALSE; /* changed to TRUE when validation is finished. */
+ shm_info->buf_pool_size = srv_buf_pool_size;
+ shm_info->page_size = srv_page_size;
+ shm_info->zip_hash_offset = chunk->mem_size - zip_hash_mem_size;
+ shm_info->zip_hash_n = zip_hash_n;
+ } else {
+ ulint checksum;
+
+ if (strncmp(shm_info->head_str, BUF_SHM_INFO_HEAD, 8)) {
+ fprintf(stderr,
+ "InnoDB: Error: The shared memory segment seems not to be for buffer pool.\n");
+ return(NULL);
+ }
+ if (shm_info->binary_id != binary_id) {
+ fprintf(stderr,
+ "InnoDB: Error: The shared memory segment seems not to be for this binary.\n");
+ return(NULL);
+ }
+ if (shm_info->is_new) {
+ fprintf(stderr,
+ "InnoDB: Error: The shared memory was not initialized yet.\n");
+ return(NULL);
+ }
+ if (!shm_info->clean) {
+ fprintf(stderr,
+ "InnoDB: Error: The shared memory was not shut down cleanly.\n");
+ return(NULL);
+ }
+ if (!shm_info->reusable) {
+ fprintf(stderr,
+ "InnoDB: Error: The shared memory has unrecoverable contents.\n");
+ return(NULL);
+ }
+ if (shm_info->buf_pool_size != srv_buf_pool_size) {
+ fprintf(stderr,
+ "InnoDB: Error: srv_buf_pool_size is different (shm=%lu current=%lu).\n",
+ shm_info->buf_pool_size, srv_buf_pool_size);
+ return(NULL);
+ }
+ if (shm_info->page_size != srv_page_size) {
+ fprintf(stderr,
+ "InnoDB: Error: srv_page_size is different (shm=%lu current=%lu).\n",
+ shm_info->page_size, srv_page_size);
+ return(NULL);
+ }
+
+ ut_a(shm_info->zip_hash_offset == chunk->mem_size - zip_hash_mem_size);
+ ut_a(shm_info->zip_hash_n == zip_hash_n);
+
+ /* check checksum */
+ checksum = ut_fold_binary((byte*)chunk->mem + sizeof(buf_shm_info_t),
+ chunk->mem_size - sizeof(buf_shm_info_t));
+ if (shm_info->checksum != checksum) {
+ fprintf(stderr,
+ "InnoDB: Error: checksum of the shared memory is not match. "
+ "(stored=%lu calculated=%lu)\n",
+ shm_info->checksum, checksum);
+ return(NULL);
+ }
+
+ /* flag to use the segment. */
+ shm_info->clean = FALSE; /* changed to TRUE when free the segment. */
+ }
+
+ /* init zip_hash contents */
+ if (is_new) {
+ hash_create_init(zip_hash_tmp, zip_hash_n);
+ } else {
+ /* adjust offset is done later */
+ hash_create_reuse(zip_hash_tmp);
+ }
+ } else {
chunk->mem = os_mem_alloc_large(&chunk->mem_size);
if (UNIV_UNLIKELY(chunk->mem == NULL)) {
return(NULL);
}
+ }
/* Allocate the block descriptors from
the start of the memory block. */
+ if (srv_buffer_pool_shm_key) {
+ chunk->blocks = (buf_block_t*)((char*)chunk->mem + sizeof(buf_shm_info_t));
+ } else {
chunk->blocks = chunk->mem;
+ }
/* Align a pointer to the first frame. Note that when
os_large_page_size is smaller than UNIV_PAGE_SIZE,
@@ -801,8 +1003,13 @@ buf_chunk_init(
it is bigger, we may allocate more blocks than requested. */
frame = ut_align(chunk->mem, UNIV_PAGE_SIZE);
+ if (srv_buffer_pool_shm_key) {
+ /* reserve zip_hash space and always -1 for reproductibity */
+ chunk->size = (chunk->mem_size - zip_hash_mem_size) / UNIV_PAGE_SIZE - 1;
+ } else {
chunk->size = chunk->mem_size / UNIV_PAGE_SIZE
- (frame != chunk->mem);
+ }
/* Subtract the space needed for block descriptors. */
{
@@ -816,6 +1023,98 @@ buf_chunk_init(
chunk->size = size;
}
+ if (shm_info && !(shm_info->is_new)) {
+ /* convert the shared memory segment for reuse */
+ ptrdiff_t phys_offset;
+ ptrdiff_t logi_offset;
+ ptrdiff_t blocks_offset;
+ byte* previous_frame_address;
+
+ if (chunk->size < shm_info->chunk_backup.size) {
+ fprintf(stderr,
+ "InnoDB: Error: The buffer pool became smaller because of allocated address.\n"
+ "InnoDB: Retrying may avoid this situation.\n");
+ shm_info->clean = TRUE; /* release the flag for retrying */
+ return(NULL);
+ }
+
+ chunk->size = shm_info->chunk_backup.size;
+ phys_offset = (char*)frame - ((char*)chunk->mem + shm_info->frame_offset);
+ logi_offset = (char *)frame - (char *)chunk->blocks[0].frame;
+ previous_frame_address = chunk->blocks[0].frame;
+ blocks_offset = (char *)chunk->blocks - (char *)shm_info->chunk_backup.blocks;
+
+ if (phys_offset || logi_offset || blocks_offset) {
+ fprintf(stderr,
+ "InnoDB: Buffer pool in the shared memory segment should be converted.\n"
+ "InnoDB: Previous frames in address : %p\n"
+ "InnoDB: Previous frames were located : %p\n"
+ "InnoDB: Current frames should be located: %p\n"
+ "InnoDB: Pysical offset : %ld (%#lx)\n"
+ "InnoDB: Logical offset (frames) : %ld (%#lx)\n"
+ "InnoDB: Logical offset (blocks) : %ld (%#lx)\n",
+ (char *)chunk->mem + shm_info->frame_offset,
+ chunk->blocks[0].frame, frame,
+ (ulong) phys_offset, (ulong) phys_offset, (ulong) logi_offset, (ulong) logi_offset,
+ (ulong) blocks_offset, (ulong) blocks_offset);
+ } else {
+ fprintf(stderr,
+ "InnoDB: Buffer pool in the shared memory segment can be used as it is.\n");
+ }
+
+ if (phys_offset) {
+ fprintf(stderr,
+ "InnoDB: Aligning physical offset...");
+
+ memmove(frame, ((char*)chunk->mem + shm_info->frame_offset),
+ chunk->size * UNIV_PAGE_SIZE);
+
+ fprintf(stderr,
+ " Done.\n");
+ }
+
+ if (logi_offset || blocks_offset) {
+ fprintf(stderr,
+ "InnoDB: Aligning logical offset...");
+
+ /* buf_block_t */
+ block = chunk->blocks;
+
+ for (i = chunk->size; i--; ) {
+ buf_block_reuse(block, logi_offset);
+ block++;
+ }
+
+ /* buf_pool_t buf_pool_backup */
+ UT_LIST_OFFSET(flush_list, buf_page_t, shm_info->buf_pool_backup.flush_list,
+ previous_frame_address, logi_offset, blocks_offset);
+ UT_LIST_OFFSET(free, buf_page_t, shm_info->buf_pool_backup.free,
+ previous_frame_address, logi_offset, blocks_offset);
+ UT_LIST_OFFSET(LRU, buf_page_t, shm_info->buf_pool_backup.LRU,
+ previous_frame_address, logi_offset, blocks_offset);
+ if (shm_info->buf_pool_backup.LRU_old)
+ shm_info->buf_pool_backup.LRU_old =
+ (buf_page_t*)((char*)(shm_info->buf_pool_backup.LRU_old)
+ + (((byte*)shm_info->buf_pool_backup.LRU_old > previous_frame_address)
+ ? logi_offset : blocks_offset));
+
+ UT_LIST_OFFSET(unzip_LRU, buf_block_t, shm_info->buf_pool_backup.unzip_LRU,
+ previous_frame_address, logi_offset, blocks_offset);
+
+ UT_LIST_OFFSET(zip_list, buf_page_t, shm_info->buf_pool_backup.zip_clean,
+ previous_frame_address, logi_offset, blocks_offset);
+ for (i = 0; i < BUF_BUDDY_SIZES_MAX; i++) {
+ UT_LIST_OFFSET(zip_list, buf_page_t, shm_info->buf_pool_backup.zip_free[i],
+ previous_frame_address, logi_offset, blocks_offset);
+ }
+
+ HASH_OFFSET(zip_hash_tmp, buf_page_t, hash,
+ previous_frame_address, logi_offset, blocks_offset);
+
+ fprintf(stderr,
+ " Done.\n");
+ }
+ } else {
/* Init block structs and assign frames for them. Then we
assign the frames to the first blocks (we already mapped the
memory above). */
@@ -826,7 +1125,7 @@ buf_chunk_init(
buf_block_init(block, frame);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Wipe contents of frame to eliminate a Purify warning */
memset(block->frame, '\0', UNIV_PAGE_SIZE);
#endif
@@ -839,6 +1138,11 @@ buf_chunk_init(
block++;
frame += UNIV_PAGE_SIZE;
}
+ }
+
+ if (shm_info) {
+ shm_info->frame_offset = (char*)chunk->blocks[0].frame - (char*)chunk->mem;
+ }
return(chunk);
}
@@ -938,6 +1242,11 @@ buf_chunk_not_freed(
ready = buf_flush_ready_for_replace(&block->page);
mutex_exit(&block->mutex);
+ if (block->page.is_corrupt) {
+ /* corrupt page may remain, it can be skipped */
+ break;
+ }
+
if (!ready) {
return(block);
@@ -1015,6 +1324,8 @@ buf_chunk_free(
UNIV_MEM_UNDESC(block);
}
+ ut_a(!srv_buffer_pool_shm_key);
+
os_mem_free_large(chunk->mem, chunk->mem_size);
}
@@ -1064,7 +1375,10 @@ buf_pool_init(void)
srv_buf_pool_curr_size = buf_pool->curr_size * UNIV_PAGE_SIZE;
buf_pool->page_hash = hash_create(2 * buf_pool->curr_size);
+ /* zip_hash is allocated to shm when srv_buffer_pool_shm_key is enabled */
+ if (!srv_buffer_pool_shm_key) {
buf_pool->zip_hash = hash_create(2 * buf_pool->curr_size);
+ }
buf_pool->last_printout_time = time(NULL);
@@ -1079,6 +1393,86 @@ buf_pool_init(void)
--------------------------- */
/* All fields are initialized by mem_zalloc(). */
+ if (srv_buffer_pool_shm_key) {
+ buf_shm_info_t* shm_info;
+
+ ut_a((char*)chunk->blocks == (char*)chunk->mem + sizeof(buf_shm_info_t));
+ shm_info = chunk->mem;
+
+ buf_pool->zip_hash = (hash_table_t*)((char*)chunk->mem + shm_info->zip_hash_offset);
+
+ if(shm_info->is_new) {
+ shm_info->is_new = FALSE; /* initialization was finished */
+ } else {
+ buf_block_t* block = chunk->blocks;
+ buf_page_t* b;
+
+ /* shm_info->buf_pool_backup should be converted */
+ /* at buf_chunk_init(). So copy simply. */
+ buf_pool->flush_list = shm_info->buf_pool_backup.flush_list;
+ buf_pool->freed_page_clock = shm_info->buf_pool_backup.freed_page_clock;
+ buf_pool->free = shm_info->buf_pool_backup.free;
+ buf_pool->LRU = shm_info->buf_pool_backup.LRU;
+ buf_pool->LRU_old = shm_info->buf_pool_backup.LRU_old;
+ buf_pool->LRU_old_len = shm_info->buf_pool_backup.LRU_old_len;
+ buf_pool->unzip_LRU = shm_info->buf_pool_backup.unzip_LRU;
+ buf_pool->zip_clean = shm_info->buf_pool_backup.zip_clean;
+ for (i = 0; i < BUF_BUDDY_SIZES_MAX; i++) {
+ buf_pool->zip_free[i] = shm_info->buf_pool_backup.zip_free[i];
+ }
+
+ for (i = 0; i < chunk->size; i++, block++) {
+ if (buf_block_get_state(block)
+ == BUF_BLOCK_FILE_PAGE) {
+ ut_d(block->page.in_page_hash = TRUE);
+ HASH_INSERT(buf_page_t, hash, buf_pool->page_hash,
+ buf_page_address_fold(
+ block->page.space,
+ block->page.offset),
+ &block->page);
+ }
+ }
+
+ for (b = UT_LIST_GET_FIRST(buf_pool->zip_clean); b;
+ b = UT_LIST_GET_NEXT(zip_list, b)) {
+ ut_ad(!b->in_flush_list);
+ ut_ad(b->in_LRU_list);
+
+ ut_d(b->in_page_hash = TRUE);
+ HASH_INSERT(buf_page_t, hash, buf_pool->page_hash,
+ buf_page_address_fold(b->space, b->offset), b);
+ }
+
+ for (b = UT_LIST_GET_FIRST(buf_pool->flush_list); b;
+ b = UT_LIST_GET_NEXT(flush_list, b)) {
+ ut_ad(b->in_flush_list);
+ ut_ad(b->in_LRU_list);
+
+ switch (buf_page_get_state(b)) {
+ case BUF_BLOCK_ZIP_DIRTY:
+ ut_d(b->in_page_hash = TRUE);
+ HASH_INSERT(buf_page_t, hash, buf_pool->page_hash,
+ buf_page_address_fold(b->space,
+ b->offset), b);
+ break;
+ case BUF_BLOCK_FILE_PAGE:
+ /* uncompressed page */
+ break;
+ case BUF_BLOCK_ZIP_FREE:
+ case BUF_BLOCK_ZIP_PAGE:
+ case BUF_BLOCK_NOT_USED:
+ case BUF_BLOCK_READY_FOR_USE:
+ case BUF_BLOCK_MEMORY:
+ case BUF_BLOCK_REMOVE_HASH:
+ ut_error;
+ break;
+ }
+ }
+
+
+ }
+ }
+
mutex_exit(&LRU_list_mutex);
rw_lock_x_unlock(&page_hash_latch);
buf_pool_mutex_exit();
@@ -1103,6 +1497,30 @@ buf_pool_free(void)
buf_chunk_t* chunk;
buf_chunk_t* chunks;
+ if (srv_buffer_pool_shm_key) {
+ buf_shm_info_t* shm_info;
+
+ ut_a(buf_pool->n_chunks == 1);
+
+ chunk = buf_pool->chunks;
+ shm_info = chunk->mem;
+ ut_a((char*)chunk->blocks == (char*)chunk->mem + sizeof(buf_shm_info_t));
+
+ /* validation the shared memory segment doesn't have unrecoverable contents. */
+ /* Currently, validation became not needed */
+ shm_info->reusable = TRUE;
+
+ memcpy(&(shm_info->buf_pool_backup), buf_pool, sizeof(buf_pool_t));
+ memcpy(&(shm_info->chunk_backup), chunk, sizeof(buf_chunk_t));
+
+ if (srv_fast_shutdown < 2) {
+ shm_info->checksum = ut_fold_binary((byte*)chunk->mem + sizeof(buf_shm_info_t),
+ chunk->mem_size - sizeof(buf_shm_info_t));
+ shm_info->clean = TRUE;
+ }
+
+ os_shm_free(chunk->mem, chunk->mem_size);
+ } else {
chunks = buf_pool->chunks;
chunk = chunks + buf_pool->n_chunks;
@@ -1111,10 +1529,13 @@ buf_pool_free(void)
would fail at shutdown. */
os_mem_free_large(chunk->mem, chunk->mem_size);
}
+ }
mem_free(buf_pool->chunks);
hash_table_free(buf_pool->page_hash);
+ if (!srv_buffer_pool_shm_key) {
hash_table_free(buf_pool->zip_hash);
+ }
mem_free(buf_pool);
buf_pool = NULL;
}
@@ -1150,7 +1571,9 @@ buf_pool_drop_hash_index(void)
when we have an x-latch on btr_search_latch;
see the comment in buf0buf.h */
- if (!block->is_hashed) {
+ if (buf_block_get_state(block)
+ != BUF_BLOCK_FILE_PAGE
+ || !block->is_hashed) {
continue;
}
@@ -1283,8 +1706,6 @@ buf_relocate(
HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, bpage);
HASH_INSERT(buf_page_t, hash, buf_pool->page_hash, fold, dpage);
-
- UNIV_MEM_INVALID(bpage, sizeof *bpage);
}
/********************************************************************//**
@@ -1309,6 +1730,11 @@ try_again:
//buf_pool_mutex_enter();
mutex_enter(&LRU_list_mutex);
+ if (srv_buffer_pool_shm_key) {
+ /* Cannot support shrink */
+ goto func_done;
+ }
+
shrink_again:
if (buf_pool->n_chunks <= 1) {
@@ -1552,6 +1978,11 @@ void
buf_pool_resize(void)
/*=================*/
{
+ if (srv_buffer_pool_shm_key) {
+ /* Cannot support resize */
+ return;
+ }
+
//buf_pool_mutex_enter();
mutex_enter(&LRU_list_mutex);
@@ -1980,14 +2411,14 @@ buf_zip_decompress(
buf_block_t* block, /*!< in/out: block */
ibool check) /*!< in: TRUE=verify the page checksum */
{
- const byte* frame = block->page.zip.data;
+ const byte* frame = block->page.zip.data;
+ ulint stamp_checksum = mach_read_from_4(
+ frame + FIL_PAGE_SPACE_OR_CHKSUM);
ut_ad(buf_block_get_zip_size(block));
ut_a(buf_block_get_space(block) != 0);
- if (UNIV_LIKELY(check)) {
- ulint stamp_checksum = mach_read_from_4(
- frame + FIL_PAGE_SPACE_OR_CHKSUM);
+ if (UNIV_LIKELY(check && stamp_checksum != BUF_NO_CHECKSUM_MAGIC)) {
ulint calc_checksum = page_zip_calc_checksum(
frame, page_zip_get_size(&block->page.zip));
@@ -2196,6 +2627,7 @@ buf_page_get_gen(
unsigned access_time;
ulint fix_type;
ibool must_read;
+ ulint retries = 0;
mutex_t* block_mutex;
trx_t* trx = NULL;
ulint sec;
@@ -2204,6 +2636,7 @@ buf_page_get_gen(
ib_uint64_t finish_time;
ut_ad(mtr);
+ ut_ad(mtr->state == MTR_ACTIVE);
ut_ad((rw_latch == RW_S_LATCH)
|| (rw_latch == RW_X_LATCH)
|| (rw_latch == RW_NO_LATCH));
@@ -2271,7 +2704,29 @@ loop2:
return(NULL);
}
- buf_read_page(space, zip_size, offset, trx);
+ if (buf_read_page(space, zip_size, offset, trx)) {
+ retries = 0;
+ } else if (retries < BUF_PAGE_READ_MAX_RETRIES) {
+ ++retries;
+ } else {
+ fprintf(stderr, "InnoDB: Error: Unable"
+ " to read tablespace %lu page no"
+ " %lu into the buffer pool after"
+ " %lu attempts\n"
+ "InnoDB: The most probable cause"
+ " of this error may be that the"
+ " table has been corrupted.\n"
+ "InnoDB: You can try to fix this"
+ " problem by using"
+ " innodb_force_recovery.\n"
+ "InnoDB: Please see reference manual"
+ " for more details.\n"
+ "InnoDB: Aborting...\n",
+ space, offset,
+ BUF_PAGE_READ_MAX_RETRIES);
+
+ ut_error;
+ }
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
ut_a(++buf_dbg_counter % 37 || buf_validate());
@@ -2414,22 +2869,8 @@ wait_until_unfixed:
ut_ad(!block->page.in_flush_list);
} else {
/* Relocate buf_pool->flush_list. */
- buf_page_t* b;
-
- b = UT_LIST_GET_PREV(flush_list, &block->page);
- ut_ad(block->page.in_flush_list);
- UT_LIST_REMOVE(flush_list, buf_pool->flush_list,
- &block->page);
-
- if (b) {
- UT_LIST_INSERT_AFTER(
- flush_list, buf_pool->flush_list, b,
- &block->page);
- } else {
- UT_LIST_ADD_FIRST(
- flush_list, buf_pool->flush_list,
- &block->page);
- }
+ buf_flush_relocate_on_flush_list(bpage,
+ &block->page);
}
mutex_exit(&flush_list_mutex);
@@ -2446,7 +2887,10 @@ wait_until_unfixed:
block->page.buf_fix_count = 1;
buf_block_set_io_fix(block, BUF_IO_READ);
- rw_lock_x_lock(&block->lock);
+ rw_lock_x_lock_func(&block->lock, 0, file, line);
+
+ UNIV_MEM_INVALID(bpage, sizeof *bpage);
+
mutex_exit(block_mutex);
mutex_exit(&buf_pool_zip_mutex);
@@ -2461,8 +2905,9 @@ wait_until_unfixed:
/* Decompress the page and apply buffered operations
while not holding buf_pool_mutex or block->mutex. */
success = buf_zip_decompress(block, srv_use_checksums);
+ ut_a(success);
- if (UNIV_LIKELY(success)) {
+ if (UNIV_LIKELY(!recv_no_ibuf_operations)) {
ibuf_merge_or_delete_for_page(block, space, offset,
zip_size, TRUE);
}
@@ -2478,14 +2923,6 @@ wait_until_unfixed:
buf_pool->n_pend_unzip--;
mutex_exit(&buf_pool_mutex);
rw_lock_x_unlock(&block->lock);
-
- if (UNIV_UNLIKELY(!success)) {
-
- //buf_pool_mutex_exit();
- mutex_exit(block_mutex);
- return(NULL);
- }
-
break;
case BUF_BLOCK_ZIP_FREE:
@@ -2500,7 +2937,12 @@ wait_until_unfixed:
ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
//mutex_enter(&block->mutex);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in buf_page_t. On
+ other systems, Valgrind could complain about uninitialized pad
+ bytes. */
UNIV_MEM_ASSERT_RW(&block->page, sizeof block->page);
+#endif
buf_block_buf_fix_inc(block, file, line);
@@ -2603,8 +3045,8 @@ page.
@return TRUE if success */
UNIV_INTERN
ibool
-buf_page_optimistic_get_func(
-/*=========================*/
+buf_page_optimistic_get(
+/*====================*/
ulint rw_latch,/*!< in: RW_S_LATCH, RW_X_LATCH */
buf_block_t* block, /*!< in: guessed buffer block */
ib_uint64_t modify_clock,/*!< in: modify clock value if mode is
@@ -2618,7 +3060,9 @@ buf_page_optimistic_get_func(
ulint fix_type;
trx_t* trx = NULL;
- ut_ad(mtr && block);
+ ut_ad(block);
+ ut_ad(mtr);
+ ut_ad(mtr->state == MTR_ACTIVE);
ut_ad((rw_latch == RW_S_LATCH) || (rw_latch == RW_X_LATCH));
mutex_enter(&block->mutex);
@@ -2738,6 +3182,7 @@ buf_page_get_known_nowait(
trx_t* trx = NULL;
ut_ad(mtr);
+ ut_ad(mtr->state == MTR_ACTIVE);
ut_ad((rw_latch == RW_S_LATCH) || (rw_latch == RW_X_LATCH));
mutex_enter(&block->mutex);
@@ -2846,6 +3291,9 @@ buf_page_try_get_func(
ibool success;
ulint fix_type;
+ ut_ad(mtr);
+ ut_ad(mtr->state == MTR_ACTIVE);
+
//buf_pool_mutex_enter();
rw_lock_s_lock(&page_hash_latch);
block = buf_block_hash_get(space_id, page_no);
@@ -3249,6 +3697,7 @@ buf_page_create(
ulint time_ms = ut_time_ms();
ut_ad(mtr);
+ ut_ad(mtr->state == MTR_ACTIVE);
ut_ad(space || !zip_size);
free_block = buf_LRU_get_free_block(0);
@@ -3431,7 +3880,8 @@ buf_page_io_complete(
read_space_id = mach_read_from_4(
frame + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
- if (bpage->space == TRX_SYS_SPACE
+ if ((bpage->space == TRX_SYS_SPACE
+ || (srv_doublewrite_file && bpage->space == TRX_DOUBLEWRITE_SPACE))
&& trx_doublewrite_page_inside(bpage->offset)) {
ut_print_timestamp(stderr);
@@ -3503,7 +3953,7 @@ corrupt:
REFMAN "forcing-recovery.html\n"
"InnoDB: about forcing recovery.\n", stderr);
- if (srv_pass_corrupt_table && bpage->space > 0
+ if (srv_pass_corrupt_table && !trx_sys_sys_space(bpage->space)
&& bpage->space < SRV_LOG_SPACE_FIRST_ID) {
fprintf(stderr,
"InnoDB: space %u will be treated as corrupt.\n",
diff --git a/storage/xtradb/buf/buf0flu.c b/storage/xtradb/buf/buf0flu.c
index 1735f6ac3cb..0a03d583549 100644
--- a/storage/xtradb/buf/buf0flu.c
+++ b/storage/xtradb/buf/buf0flu.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -88,6 +88,146 @@ buf_flush_validate_low(void);
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
/********************************************************************//**
+Insert a block in the flush_rbt and returns a pointer to its
+predecessor or NULL if no predecessor. The ordering is maintained
+on the basis of the <oldest_modification, space, offset> key.
+@return pointer to the predecessor or NULL if no predecessor. */
+static
+buf_page_t*
+buf_flush_insert_in_flush_rbt(
+/*==========================*/
+ buf_page_t* bpage) /*!< in: bpage to be inserted. */
+{
+ buf_page_t* prev = NULL;
+ const ib_rbt_node_t* c_node;
+ const ib_rbt_node_t* p_node;
+
+ //ut_ad(buf_pool_mutex_own());
+ ut_ad(mutex_own(&flush_list_mutex));
+
+ /* Insert this buffer into the rbt. */
+ c_node = rbt_insert(buf_pool->flush_rbt, &bpage, &bpage);
+ ut_a(c_node != NULL);
+
+ /* Get the predecessor. */
+ p_node = rbt_prev(buf_pool->flush_rbt, c_node);
+
+ if (p_node != NULL) {
+ prev = *rbt_value(buf_page_t*, p_node);
+ ut_a(prev != NULL);
+ }
+
+ return(prev);
+}
+
+/********************************************************************//**
+Delete a bpage from the flush_rbt. */
+static
+void
+buf_flush_delete_from_flush_rbt(
+/*============================*/
+ buf_page_t* bpage) /*!< in: bpage to be removed. */
+{
+
+ ibool ret = FALSE;
+
+ //ut_ad(buf_pool_mutex_own());
+ ut_ad(mutex_own(&flush_list_mutex));
+ ret = rbt_delete(buf_pool->flush_rbt, &bpage);
+ ut_ad(ret);
+}
+
+/********************************************************************//**
+Compare two modified blocks in the buffer pool. The key for comparison
+is:
+key = <oldest_modification, space, offset>
+This comparison is used to maintian ordering of blocks in the
+buf_pool->flush_rbt.
+Note that for the purpose of flush_rbt, we only need to order blocks
+on the oldest_modification. The other two fields are used to uniquely
+identify the blocks.
+@return < 0 if b2 < b1, 0 if b2 == b1, > 0 if b2 > b1 */
+static
+int
+buf_flush_block_cmp(
+/*================*/
+ const void* p1, /*!< in: block1 */
+ const void* p2) /*!< in: block2 */
+{
+ int ret;
+ const buf_page_t* b1;
+ const buf_page_t* b2;
+
+ ut_ad(p1 != NULL);
+ ut_ad(p2 != NULL);
+
+ b1 = *(const buf_page_t**) p1;
+ b2 = *(const buf_page_t**) p2;
+
+ ut_ad(b1 != NULL);
+ ut_ad(b2 != NULL);
+
+ ut_ad(b1->in_flush_list);
+ ut_ad(b2->in_flush_list);
+
+ if (b2->oldest_modification
+ > b1->oldest_modification) {
+ return(1);
+ }
+
+ if (b2->oldest_modification
+ < b1->oldest_modification) {
+ return(-1);
+ }
+
+ /* If oldest_modification is same then decide on the space. */
+ ret = (int)(b2->space - b1->space);
+
+ /* Or else decide ordering on the offset field. */
+ return(ret ? ret : (int)(b2->offset - b1->offset));
+}
+
+/********************************************************************//**
+Initialize the red-black tree to speed up insertions into the flush_list
+during recovery process. Should be called at the start of recovery
+process before any page has been read/written. */
+UNIV_INTERN
+void
+buf_flush_init_flush_rbt(void)
+/*==========================*/
+{
+ //buf_pool_mutex_enter();
+ mutex_enter(&flush_list_mutex);
+
+ /* Create red black tree for speedy insertions in flush list. */
+ buf_pool->flush_rbt = rbt_create(sizeof(buf_page_t*),
+ buf_flush_block_cmp);
+ //buf_pool_mutex_exit();
+ mutex_exit(&flush_list_mutex);
+}
+
+/********************************************************************//**
+Frees up the red-black tree. */
+UNIV_INTERN
+void
+buf_flush_free_flush_rbt(void)
+/*==========================*/
+{
+ //buf_pool_mutex_enter();
+ mutex_enter(&flush_list_mutex);
+
+#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
+ ut_a(buf_flush_validate_low());
+#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
+
+ rbt_free(buf_pool->flush_rbt);
+ buf_pool->flush_rbt = NULL;
+
+ //buf_pool_mutex_exit();
+ mutex_exit(&flush_list_mutex);
+}
+
+/********************************************************************//**
Inserts a modified block into the flush list. */
UNIV_INTERN
void
@@ -102,6 +242,13 @@ buf_flush_insert_into_flush_list(
|| (UT_LIST_GET_FIRST(buf_pool->flush_list)->oldest_modification
<= block->page.oldest_modification));
+ /* If we are in the recovery then we need to update the flush
+ red-black tree as well. */
+ if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) {
+ buf_flush_insert_sorted_into_flush_list(block);
+ return;
+ }
+
ut_ad(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE);
ut_ad(block->page.in_LRU_list);
ut_ad(block->page.in_page_hash);
@@ -110,6 +257,17 @@ buf_flush_insert_into_flush_list(
ut_d(block->page.in_flush_list = TRUE);
UT_LIST_ADD_FIRST(flush_list, buf_pool->flush_list, &block->page);
+#ifdef UNIV_DEBUG_VALGRIND
+ {
+ ulint zip_size = buf_block_get_zip_size(block);
+
+ if (UNIV_UNLIKELY(zip_size)) {
+ UNIV_MEM_ASSERT_RW(block->page.zip.data, zip_size);
+ } else {
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
+ }
+ }
+#endif /* UNIV_DEBUG_VALGRIND */
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
ut_a(buf_flush_validate_low());
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
@@ -139,27 +297,40 @@ buf_flush_insert_sorted_into_flush_list(
ut_ad(!block->page.in_flush_list);
ut_d(block->page.in_flush_list = TRUE);
- prev_b = NULL;
- b = UT_LIST_GET_FIRST(buf_pool->flush_list);
+#ifdef UNIV_DEBUG_VALGRIND
+ {
+ ulint zip_size = buf_block_get_zip_size(block);
- if (srv_fast_recovery) {
- /* speed hack */
- if (b == NULL || b->oldest_modification < block->page.oldest_modification) {
- UT_LIST_ADD_FIRST(flush_list, buf_pool->flush_list, &block->page);
- } else {
- b = UT_LIST_GET_LAST(buf_pool->flush_list);
- if (b->oldest_modification < block->page.oldest_modification) {
- /* align oldest_modification not to sort */
- block->page.oldest_modification = b->oldest_modification;
+ if (UNIV_UNLIKELY(zip_size)) {
+ UNIV_MEM_ASSERT_RW(block->page.zip.data, zip_size);
+ } else {
+ UNIV_MEM_ASSERT_RW(block->frame, UNIV_PAGE_SIZE);
}
- UT_LIST_ADD_LAST(flush_list, buf_pool->flush_list, &block->page);
}
+#endif /* UNIV_DEBUG_VALGRIND */
+
+ prev_b = NULL;
+
+ /* For the most part when this function is called the flush_rbt
+ should not be NULL. In a very rare boundary case it is possible
+ that the flush_rbt has already been freed by the recovery thread
+ before the last page was hooked up in the flush_list by the
+ io-handler thread. In that case we'll just do a simple
+ linear search in the else block. */
+ if (buf_pool->flush_rbt) {
+
+ prev_b = buf_flush_insert_in_flush_rbt(&block->page);
+
} else {
- /* normal */
- while (b && b->oldest_modification > block->page.oldest_modification) {
- ut_ad(b->in_flush_list);
- prev_b = b;
- b = UT_LIST_GET_NEXT(flush_list, b);
+
+ b = UT_LIST_GET_FIRST(buf_pool->flush_list);
+
+ while (b && b->oldest_modification
+ > block->page.oldest_modification) {
+ ut_ad(b->in_flush_list);
+ prev_b = b;
+ b = UT_LIST_GET_NEXT(flush_list, b);
+ }
}
if (prev_b == NULL) {
@@ -168,7 +339,6 @@ buf_flush_insert_sorted_into_flush_list(
UT_LIST_INSERT_AFTER(flush_list, buf_pool->flush_list,
prev_b, &block->page);
}
- }
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
ut_a(buf_flush_validate_low());
@@ -262,7 +432,6 @@ buf_flush_remove(
mutex_enter(&flush_list_mutex);
ut_ad(bpage->in_flush_list);
- ut_d(bpage->in_flush_list = FALSE);
switch (buf_page_get_state(bpage)) {
case BUF_BLOCK_ZIP_PAGE:
@@ -285,6 +454,15 @@ buf_flush_remove(
break;
}
+ /* If the flush_rbt is active then delete from it as well. */
+ if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) {
+ buf_flush_delete_from_flush_rbt(bpage);
+ }
+
+ /* Must be done after we have removed it from the flush_rbt
+ because we assert on in_flush_list in comparison function. */
+ ut_d(bpage->in_flush_list = FALSE);
+
bpage->oldest_modification = 0;
ut_d(UT_LIST_VALIDATE(flush_list, buf_page_t, buf_pool->flush_list,
@@ -293,6 +471,64 @@ buf_flush_remove(
}
/********************************************************************//**
+Relocates a buffer control block on the flush_list.
+Note that it is assumed that the contents of bpage has already been
+copied to dpage. */
+UNIV_INTERN
+void
+buf_flush_relocate_on_flush_list(
+/*=============================*/
+ buf_page_t* bpage, /*!< in/out: control block being moved */
+ buf_page_t* dpage) /*!< in/out: destination block */
+{
+ buf_page_t* prev;
+ buf_page_t* prev_b = NULL;
+
+ //ut_ad(buf_pool_mutex_own());
+ ut_ad(mutex_own(&flush_list_mutex));
+
+ ut_ad(mutex_own(buf_page_get_mutex(bpage)));
+
+ ut_ad(bpage->in_flush_list);
+ ut_ad(dpage->in_flush_list);
+
+ /* If recovery is active we must swap the control blocks in
+ the flush_rbt as well. */
+ if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) {
+ buf_flush_delete_from_flush_rbt(bpage);
+ prev_b = buf_flush_insert_in_flush_rbt(dpage);
+ }
+
+ /* Must be done after we have removed it from the flush_rbt
+ because we assert on in_flush_list in comparison function. */
+ ut_d(bpage->in_flush_list = FALSE);
+
+ prev = UT_LIST_GET_PREV(flush_list, bpage);
+ UT_LIST_REMOVE(flush_list, buf_pool->flush_list, bpage);
+
+ if (prev) {
+ ut_ad(prev->in_flush_list);
+ UT_LIST_INSERT_AFTER(
+ flush_list,
+ buf_pool->flush_list,
+ prev, dpage);
+ } else {
+ UT_LIST_ADD_FIRST(
+ flush_list,
+ buf_pool->flush_list,
+ dpage);
+ }
+
+ /* Just an extra check. Previous in flush_list
+ should be the same control block as in flush_rbt. */
+ ut_a(!buf_pool->flush_rbt || prev_b == prev);
+
+#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
+ ut_a(buf_flush_validate_low());
+#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
+}
+
+/********************************************************************//**
Updates the flush system data structures when a write is completed. */
UNIV_INTERN
void
@@ -452,7 +688,8 @@ corrupted_page:
write_buf = trx_doublewrite->write_buf;
i = 0;
- fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0,
+ fil_io(OS_FILE_WRITE, TRUE,
+ (srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE), 0,
trx_doublewrite->block1, 0, len,
(void*) write_buf, NULL);
@@ -489,7 +726,8 @@ corrupted_page:
+ TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE;
ut_ad(i == TRX_SYS_DOUBLEWRITE_BLOCK_SIZE);
- fil_io(OS_FILE_WRITE, TRUE, TRX_SYS_SPACE, 0,
+ fil_io(OS_FILE_WRITE, TRUE,
+ (srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE), 0,
trx_doublewrite->block2, 0, len,
(void*) write_buf, NULL);
@@ -519,7 +757,7 @@ corrupted_page:
flush:
/* Now flush the doublewrite buffer data to disk */
- fil_flush(TRX_SYS_SPACE);
+ fil_flush(srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE);
/* We know that the writes have been flushed to disk now
and in recovery we will find them in the doublewrite buffer
@@ -615,6 +853,7 @@ try_again:
zip_size = buf_page_get_zip_size(bpage);
if (UNIV_UNLIKELY(zip_size)) {
+ UNIV_MEM_ASSERT_RW(bpage->zip.data, zip_size);
/* Copy the compressed page and clear the rest. */
memcpy(trx_doublewrite->write_buf
+ UNIV_PAGE_SIZE * trx_doublewrite->first_free,
@@ -624,6 +863,8 @@ try_again:
+ zip_size, 0, UNIV_PAGE_SIZE - zip_size);
} else {
ut_a(buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE);
+ UNIV_MEM_ASSERT_RW(((buf_block_t*) bpage)->frame,
+ UNIV_PAGE_SIZE);
memcpy(trx_doublewrite->write_buf
+ UNIV_PAGE_SIZE * trx_doublewrite->first_free,
@@ -1318,6 +1559,7 @@ retry:
} else if (!have_LRU_mutex) {
/* confirm it again with LRU_mutex for exactness */
have_LRU_mutex = TRUE;
+ distance = 0;
goto retry;
}
@@ -1473,24 +1715,45 @@ ibool
buf_flush_validate_low(void)
/*========================*/
{
- buf_page_t* bpage;
+ buf_page_t* bpage;
+ const ib_rbt_node_t* rnode = NULL;
UT_LIST_VALIDATE(flush_list, buf_page_t, buf_pool->flush_list,
ut_ad(ut_list_node_313->in_flush_list));
bpage = UT_LIST_GET_FIRST(buf_pool->flush_list);
+ /* If we are in recovery mode i.e.: flush_rbt != NULL
+ then each block in the flush_list must also be present
+ in the flush_rbt. */
+ if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) {
+ rnode = rbt_first(buf_pool->flush_rbt);
+ }
+
while (bpage != NULL) {
const ib_uint64_t om = bpage->oldest_modification;
ut_ad(bpage->in_flush_list);
//ut_a(buf_page_in_file(bpage)); /* optimistic */
ut_a(om > 0);
+ if (UNIV_LIKELY_NULL(buf_pool->flush_rbt)) {
+ ut_a(rnode);
+ buf_page_t* rpage = *rbt_value(buf_page_t*,
+ rnode);
+ ut_a(rpage);
+ ut_a(rpage == bpage);
+ rnode = rbt_next(buf_pool->flush_rbt, rnode);
+ }
+
bpage = UT_LIST_GET_NEXT(flush_list, bpage);
ut_a(!bpage || om >= bpage->oldest_modification);
}
+ /* By this time we must have exhausted the traversal of
+ flush_rbt (if active) as well. */
+ ut_a(rnode == NULL);
+
return(TRUE);
}
diff --git a/storage/xtradb/buf/buf0lru.c b/storage/xtradb/buf/buf0lru.c
index 58e2c23275b..14ec1720873 100644
--- a/storage/xtradb/buf/buf0lru.c
+++ b/storage/xtradb/buf/buf0lru.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -371,21 +371,39 @@ scan_again:
bpage = UT_LIST_GET_LAST(buf_pool->LRU);
while (bpage != NULL) {
- mutex_t* block_mutex = buf_page_get_mutex_enter(bpage);
buf_page_t* prev_bpage;
+ ibool prev_bpage_buf_fix = FALSE;
ut_a(buf_page_in_file(bpage));
prev_bpage = UT_LIST_GET_PREV(LRU, bpage);
- if (!block_mutex) {
- bpage = prev_bpage;
- continue;
- }
+ /* bpage->space and bpage->io_fix are protected by
+ buf_pool_mutex and block_mutex. It is safe to check
+ them while holding buf_pool_mutex only. */
+
+ if (buf_page_get_space(bpage) != id) {
+ /* Skip this block, as it does not belong to
+ the space that is being invalidated. */
+ } else if (buf_page_get_io_fix(bpage) != BUF_IO_NONE) {
+ /* We cannot remove this page during this scan
+ yet; maybe the system is currently reading it
+ in, or flushing the modifications to the file */
+
+ all_freed = FALSE;
+ } else {
+ mutex_t* block_mutex = buf_page_get_mutex_enter(bpage);
- if (buf_page_get_space(bpage) == id) {
- if (bpage->buf_fix_count > 0
- || buf_page_get_io_fix(bpage) != BUF_IO_NONE) {
+ if (!block_mutex) {
+ /* It may be impossible case...
+ Something wrong, so will be scan_again */
+
+ all_freed = FALSE;
+
+ goto next_page_no_mutex;
+ }
+
+ if (bpage->buf_fix_count > 0) {
/* We cannot remove this page during
this scan yet; maybe the system is
@@ -405,8 +423,40 @@ scan_again:
(ulong) buf_page_get_page_no(bpage));
}
#endif
- if (buf_page_get_state(bpage) == BUF_BLOCK_FILE_PAGE
- && ((buf_block_t*) bpage)->is_hashed) {
+ if (buf_page_get_state(bpage) != BUF_BLOCK_FILE_PAGE) {
+ /* This is a compressed-only block
+ descriptor. Ensure that prev_bpage
+ cannot be relocated when bpage is freed. */
+ if (UNIV_LIKELY(prev_bpage != NULL)) {
+ switch (buf_page_get_state(
+ prev_bpage)) {
+ case BUF_BLOCK_FILE_PAGE:
+ /* Descriptors of uncompressed
+ blocks will not be relocated,
+ because we are holding the
+ buf_pool_mutex. */
+ break;
+ case BUF_BLOCK_ZIP_PAGE:
+ case BUF_BLOCK_ZIP_DIRTY:
+ /* Descriptors of compressed-
+ only blocks can be relocated,
+ unless they are buffer-fixed.
+ Because both bpage and
+ prev_bpage are protected by
+ buf_pool_zip_mutex, it is
+ not necessary to acquire
+ further mutexes. */
+ ut_ad(&buf_pool_zip_mutex
+ == block_mutex);
+ ut_ad(mutex_own(block_mutex));
+ prev_bpage_buf_fix = TRUE;
+ prev_bpage->buf_fix_count++;
+ break;
+ default:
+ ut_error;
+ }
+ }
+ } else if (((buf_block_t*) bpage)->is_hashed) {
ulint page_no;
ulint zip_size;
@@ -432,7 +482,8 @@ scan_again:
buf_flush_remove(bpage);
}
- /* Remove from the LRU list */
+ /* Remove from the LRU list. */
+
if (buf_LRU_block_remove_hashed_page(bpage, TRUE)
!= BUF_BLOCK_ZIP_FREE) {
buf_LRU_block_free_hashed_page((buf_block_t*)
@@ -444,18 +495,27 @@ scan_again:
ut_ad(block_mutex == &buf_pool_zip_mutex);
ut_ad(!mutex_own(block_mutex));
- /* The compressed block descriptor
- (bpage) has been deallocated and
- block_mutex released. Also,
- buf_buddy_free() may have relocated
- prev_bpage. Rescan the LRU list. */
+ if (prev_bpage_buf_fix) {
+ /* We temporarily buffer-fixed
+ prev_bpage, so that
+ buf_buddy_free() could not
+ relocate it, in case it was a
+ compressed-only block
+ descriptor. */
+
+ mutex_enter(block_mutex);
+ ut_ad(prev_bpage->buf_fix_count > 0);
+ prev_bpage->buf_fix_count--;
+ mutex_exit(block_mutex);
+ }
- bpage = UT_LIST_GET_LAST(buf_pool->LRU);
- continue;
+ goto next_page_no_mutex;
}
- }
next_page:
- mutex_exit(block_mutex);
+ mutex_exit(block_mutex);
+ }
+
+next_page_no_mutex:
bpage = prev_bpage;
}
@@ -1395,7 +1455,7 @@ buf_LRU_make_block_old(
Try to free a block. If bpage is a descriptor of a compressed-only
page, the descriptor object will be freed as well.
-NOTE: If this function returns BUF_LRU_FREED, it will not temporarily
+NOTE: If this function returns BUF_LRU_FREED, it will temporarily
release buf_pool_mutex. Furthermore, the page frame will no longer be
accessible via bpage.
@@ -1425,7 +1485,12 @@ buf_LRU_free_block(
ut_ad(buf_page_in_file(bpage));
//ut_ad(bpage->in_LRU_list);
ut_ad(!bpage->in_flush_list == !bpage->oldest_modification);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in buf_page_t. On
+ other systems, Valgrind could complain about uninitialized pad
+ bytes. */
UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
+#endif
if (!bpage->in_LRU_list || !block_mutex || !buf_page_can_relocate(bpage)) {
@@ -1558,8 +1623,13 @@ not_freed:
ut_ad(prev_b->in_LRU_list);
ut_ad(buf_page_in_file(prev_b));
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no
+ padding in buf_page_t. On other
+ systems, Valgrind could complain about
+ uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(prev_b, sizeof *prev_b);
-
+#endif
UT_LIST_INSERT_AFTER(LRU, buf_pool->LRU,
prev_b, b);
@@ -1600,26 +1670,8 @@ not_freed:
if (b->state == BUF_BLOCK_ZIP_PAGE) {
buf_LRU_insert_zip_clean(b);
} else {
- buf_page_t* prev;
-
- ut_ad(b->in_flush_list);
- ut_d(bpage->in_flush_list = FALSE);
-
- prev = UT_LIST_GET_PREV(flush_list, b);
- UT_LIST_REMOVE(flush_list, buf_pool->flush_list, b);
-
- if (prev) {
- ut_ad(prev->in_flush_list);
- UT_LIST_INSERT_AFTER(
- flush_list,
- buf_pool->flush_list,
- prev, b);
- } else {
- UT_LIST_ADD_FIRST(
- flush_list,
- buf_pool->flush_list,
- b);
- }
+ /* Relocate on buf_pool->flush_list. */
+ buf_flush_relocate_on_flush_list(bpage, b);
}
mutex_exit(&flush_list_mutex);
@@ -1792,7 +1844,12 @@ buf_LRU_block_remove_hashed_page(
ut_a(buf_page_get_io_fix(bpage) == BUF_IO_NONE);
ut_a(bpage->buf_fix_count == 0);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
+#endif
buf_LRU_remove_block(bpage);
@@ -2074,7 +2131,7 @@ ibool
buf_LRU_file_dump(void)
/*===================*/
{
- os_file_t dump_file = -1;
+ os_file_t dump_file = (os_file_t) -1;
ibool success;
byte* buffer_base = NULL;
byte* buffer = NULL;
@@ -2164,7 +2221,7 @@ buf_LRU_file_dump(void)
ret = TRUE;
end:
- if (dump_file != -1)
+ if (dump_file != (os_file_t) -1)
os_file_close(dump_file);
if (buffer_base)
ut_free(buffer_base);
@@ -2178,7 +2235,7 @@ ibool
buf_LRU_file_restore(void)
/*======================*/
{
- os_file_t dump_file = -1;
+ os_file_t dump_file = (os_file_t) -1;
ibool success;
byte* buffer_base = NULL;
byte* buffer = NULL;
@@ -2269,7 +2326,7 @@ buf_LRU_file_restore(void)
" (requested: %lu, read: %lu)\n", req, reads);
ret = TRUE;
end:
- if (dump_file != -1)
+ if (dump_file != (os_file_t) -1)
os_file_close(dump_file);
if (buffer_base)
ut_free(buffer_base);
diff --git a/storage/xtradb/buf/buf0rea.c b/storage/xtradb/buf/buf0rea.c
index e5d04df797f..59de70d9a8a 100644
--- a/storage/xtradb/buf/buf0rea.c
+++ b/storage/xtradb/buf/buf0rea.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -86,7 +86,9 @@ buf_read_page_low(
wake_later = mode & OS_AIO_SIMULATED_WAKE_LATER;
mode = mode & ~OS_AIO_SIMULATED_WAKE_LATER;
- if (trx_doublewrite && space == TRX_SYS_SPACE
+ if (trx_doublewrite
+ && (space == TRX_SYS_SPACE
+ || (srv_doublewrite_file && space == TRX_DOUBLEWRITE_SPACE))
&& ( (offset >= trx_doublewrite->block1
&& offset < trx_doublewrite->block1
+ TRX_SYS_DOUBLEWRITE_BLOCK_SIZE)
@@ -656,6 +658,50 @@ buf_read_recv_pages(
/* It is a single table tablespace and the .ibd file is
missing: do nothing */
+ /* the log records should be treated here same reason
+ for http://bugs.mysql.com/bug.php?id=43948 */
+
+ if (recv_recovery_is_on()) {
+ recv_addr_t* recv_addr;
+
+ mutex_enter(&(recv_sys->mutex));
+
+ if (recv_sys->apply_log_recs == FALSE) {
+ mutex_exit(&(recv_sys->mutex));
+ goto not_to_recover;
+ }
+
+ for (i = 0; i < n_stored; i++) {
+ /* recv_get_fil_addr_struct() */
+ recv_addr = HASH_GET_FIRST(recv_sys->addr_hash,
+ hash_calc_hash(ut_fold_ulint_pair(space, page_nos[i]),
+ recv_sys->addr_hash));
+ while (recv_addr) {
+ if ((recv_addr->space == space)
+ && (recv_addr->page_no == page_nos[i])) {
+ break;
+ }
+ recv_addr = HASH_GET_NEXT(addr_hash, recv_addr);
+ }
+
+ if ((recv_addr == NULL)
+ || (recv_addr->state == RECV_BEING_PROCESSED)
+ || (recv_addr->state == RECV_PROCESSED)) {
+ continue;
+ }
+
+ recv_addr->state = RECV_PROCESSED;
+
+ ut_a(recv_sys->n_addrs);
+ recv_sys->n_addrs--;
+ }
+
+ mutex_exit(&(recv_sys->mutex));
+
+ fprintf(stderr, " (cannot find space: %lu)", space);
+ }
+not_to_recover:
+
return;
}
@@ -674,10 +720,10 @@ buf_read_recv_pages(
count++;
- if (count > 5000) {
+ if (count > 1000) {
fprintf(stderr,
"InnoDB: Error: InnoDB has waited for"
- " 50 seconds for pending\n"
+ " 10 seconds for pending\n"
"InnoDB: reads to the buffer pool to"
" be finished.\n"
"InnoDB: Number of pending reads %lu,"
diff --git a/storage/xtradb/data/data0data.c b/storage/xtradb/data/data0data.c
index e3c1f1b4f23..0715b49bf9c 100644
--- a/storage/xtradb/data/data0data.c
+++ b/storage/xtradb/data/data0data.c
@@ -666,6 +666,21 @@ dtuple_convert_big_rec(
goto skip_field;
}
+ /* In DYNAMIC and COMPRESSED format, store
+ locally any non-BLOB columns whose maximum
+ length does not exceed 256 bytes. This is
+ because there is no room for the "external
+ storage" flag when the maximum length is 255
+ bytes or less. This restriction trivially
+ holds in REDUNDANT and COMPACT format, because
+ there we always store locally columns whose
+ length is up to local_len == 788 bytes.
+ @see rec_init_offsets_comp_ordinary */
+ if (ifield->col->mtype != DATA_BLOB
+ && ifield->col->len < 256) {
+ goto skip_field;
+ }
+
longest_i = i;
longest = savings;
diff --git a/storage/xtradb/dict/dict0boot.c b/storage/xtradb/dict/dict0boot.c
index 0eb73e6c2f9..43cfced65a0 100644
--- a/storage/xtradb/dict/dict0boot.c
+++ b/storage/xtradb/dict/dict0boot.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -62,32 +62,47 @@ dict_hdr_get(
}
/**********************************************************************//**
-Returns a new table, index, or tree id.
-@return the new id */
+Returns a new table, index, or space id. */
UNIV_INTERN
-dulint
+void
dict_hdr_get_new_id(
/*================*/
- ulint type) /*!< in: DICT_HDR_ROW_ID, ... */
+ dulint* table_id, /*!< out: table id (not assigned if NULL) */
+ dulint* index_id, /*!< out: index id (not assigned if NULL) */
+ ulint* space_id) /*!< out: space id (not assigned if NULL) */
{
dict_hdr_t* dict_hdr;
dulint id;
mtr_t mtr;
- ut_ad((type == DICT_HDR_TABLE_ID) || (type == DICT_HDR_INDEX_ID));
-
mtr_start(&mtr);
dict_hdr = dict_hdr_get(&mtr);
- id = mtr_read_dulint(dict_hdr + type, &mtr);
- id = ut_dulint_add(id, 1);
+ if (table_id) {
+ id = mtr_read_dulint(dict_hdr + DICT_HDR_TABLE_ID, &mtr);
+ id = ut_dulint_add(id, 1);
+ mlog_write_dulint(dict_hdr + DICT_HDR_TABLE_ID, id, &mtr);
+ *table_id = id;
+ }
- mlog_write_dulint(dict_hdr + type, id, &mtr);
+ if (index_id) {
+ id = mtr_read_dulint(dict_hdr + DICT_HDR_INDEX_ID, &mtr);
+ id = ut_dulint_add(id, 1);
+ mlog_write_dulint(dict_hdr + DICT_HDR_INDEX_ID, id, &mtr);
+ *index_id = id;
+ }
- mtr_commit(&mtr);
+ if (space_id) {
+ *space_id = mtr_read_ulint(dict_hdr + DICT_HDR_MAX_SPACE_ID,
+ MLOG_4BYTES, &mtr);
+ if (fil_assign_new_space_id(space_id)) {
+ mlog_write_ulint(dict_hdr + DICT_HDR_MAX_SPACE_ID,
+ *space_id, MLOG_4BYTES, &mtr);
+ }
+ }
- return(id);
+ mtr_commit(&mtr);
}
/**********************************************************************//**
@@ -151,9 +166,12 @@ dict_hdr_create(
mlog_write_dulint(dict_header + DICT_HDR_INDEX_ID,
ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
- /* Obsolete, but we must initialize it to 0 anyway. */
- mlog_write_dulint(dict_header + DICT_HDR_MIX_ID,
- ut_dulint_create(0, DICT_HDR_FIRST_ID), mtr);
+ mlog_write_ulint(dict_header + DICT_HDR_MAX_SPACE_ID,
+ 0, MLOG_4BYTES, mtr);
+
+ /* Obsolete, but we must initialize it anyway. */
+ mlog_write_ulint(dict_header + DICT_HDR_MIX_ID_LOW,
+ DICT_HDR_FIRST_ID, MLOG_4BYTES, mtr);
/* Create the B-tree roots for the clustered indexes of the basic
system tables */
@@ -245,6 +263,29 @@ dict_boot(void)
/* Get the dictionary header */
dict_hdr = dict_hdr_get(&mtr);
+ if (ut_dulint_cmp(mtr_read_dulint(dict_hdr + DICT_HDR_XTRADB_MARK, &mtr),
+ DICT_HDR_XTRADB_FLAG) != 0) {
+ /* not extended yet by XtraDB, need to be extended */
+ ulint root_page_no;
+
+ root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE,
+ DICT_HDR_SPACE, 0, DICT_STATS_ID,
+ dict_ind_redundant, &mtr);
+ if (root_page_no == FIL_NULL) {
+ fprintf(stderr, "InnoDB: Warning: failed to create SYS_STATS btr.\n");
+ srv_use_sys_stats_table = FALSE;
+ } else {
+ mlog_write_ulint(dict_hdr + DICT_HDR_STATS, root_page_no,
+ MLOG_4BYTES, &mtr);
+ mlog_write_dulint(dict_hdr + DICT_HDR_XTRADB_MARK,
+ DICT_HDR_XTRADB_FLAG, &mtr);
+ }
+ mtr_commit(&mtr);
+ /* restart mtr */
+ mtr_start(&mtr);
+ dict_hdr = dict_hdr_get(&mtr);
+ }
+
/* Because we only write new row ids to disk-based data structure
(dictionary header) when it is divisible by
DICT_HDR_ROW_ID_WRITE_MARGIN, in recovery we will not recover
@@ -275,6 +316,9 @@ dict_boot(void)
and (TYPE & DICT_TF_FORMAT_MASK) are nonzero and TYPE = table->flags */
dict_mem_table_add_col(table, heap, "TYPE", DATA_INT, 0, 4);
dict_mem_table_add_col(table, heap, "MIX_ID", DATA_BINARY, 0, 0);
+ /* MIX_LEN may contain additional table flags when
+ ROW_FORMAT!=REDUNDANT. Currently, these flags include
+ DICT_TF2_TEMPORARY. */
dict_mem_table_add_col(table, heap, "MIX_LEN", DATA_INT, 0, 4);
dict_mem_table_add_col(table, heap, "CLUSTER_NAME", DATA_BINARY, 0, 0);
dict_mem_table_add_col(table, heap, "SPACE", DATA_INT, 0, 4);
@@ -358,7 +402,7 @@ dict_boot(void)
dict_mem_table_add_col(table, heap, "SPACE", DATA_INT, 0, 4);
dict_mem_table_add_col(table, heap, "PAGE_NO", DATA_INT, 0, 4);
- /* The '+ 2' below comes from the 2 system fields */
+ /* The '+ 2' below comes from the fields DB_TRX_ID, DB_ROLL_PTR */
#if DICT_SYS_INDEXES_PAGE_NO_FIELD != 6 + 2
#error "DICT_SYS_INDEXES_PAGE_NO_FIELD != 6 + 2"
#endif
@@ -368,6 +412,9 @@ dict_boot(void)
#if DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2
#error "DICT_SYS_INDEXES_TYPE_FIELD != 4 + 2"
#endif
+#if DICT_SYS_INDEXES_NAME_FIELD != 2 + 2
+#error "DICT_SYS_INDEXES_NAME_FIELD != 2 + 2"
+#endif
table->id = DICT_INDEXES_ID;
dict_table_add_to_cache(table, heap);
@@ -400,7 +447,7 @@ dict_boot(void)
table->id = DICT_FIELDS_ID;
dict_table_add_to_cache(table, heap);
dict_sys->sys_fields = table;
- mem_heap_free(heap);
+ mem_heap_empty(heap);
index = dict_mem_index_create("SYS_FIELDS", "CLUST_IND",
DICT_HDR_SPACE,
@@ -417,6 +464,41 @@ dict_boot(void)
FALSE);
ut_a(error == DB_SUCCESS);
+ /*-------------------------*/
+ table = dict_mem_table_create("SYS_STATS", DICT_HDR_SPACE, 3, 0);
+ table->n_mysql_handles_opened = 1; /* for pin */
+
+ dict_mem_table_add_col(table, heap, "INDEX_ID", DATA_BINARY, 0, 0);
+ dict_mem_table_add_col(table, heap, "KEY_COLS", DATA_INT, 0, 4);
+ dict_mem_table_add_col(table, heap, "DIFF_VALS", DATA_BINARY, 0, 0);
+
+ /* The '+ 2' below comes from the fields DB_TRX_ID, DB_ROLL_PTR */
+#if DICT_SYS_STATS_DIFF_VALS_FIELD != 2 + 2
+#error "DICT_SYS_STATS_DIFF_VALS_FIELD != 2 + 2"
+#endif
+
+ table->id = DICT_STATS_ID;
+ dict_table_add_to_cache(table, heap);
+ dict_sys->sys_stats = table;
+ mem_heap_empty(heap);
+
+ index = dict_mem_index_create("SYS_STATS", "CLUST_IND",
+ DICT_HDR_SPACE,
+ DICT_UNIQUE | DICT_CLUSTERED, 2);
+
+ dict_mem_index_add_field(index, "INDEX_ID", 0);
+ dict_mem_index_add_field(index, "KEY_COLS", 0);
+
+ index->id = DICT_STATS_ID;
+ error = dict_index_add_to_cache(table, index,
+ mtr_read_ulint(dict_hdr
+ + DICT_HDR_STATS,
+ MLOG_4BYTES, &mtr),
+ FALSE);
+ ut_a(error == DB_SUCCESS);
+
+ mem_heap_free(heap);
+
mtr_commit(&mtr);
/*-------------------------*/
@@ -430,6 +512,7 @@ dict_boot(void)
dict_load_sys_table(dict_sys->sys_columns);
dict_load_sys_table(dict_sys->sys_indexes);
dict_load_sys_table(dict_sys->sys_fields);
+ dict_load_sys_table(dict_sys->sys_stats);
mutex_exit(&(dict_sys->mutex));
}
diff --git a/storage/xtradb/dict/dict0crea.c b/storage/xtradb/dict/dict0crea.c
index e315716551e..258bf77d1fc 100644
--- a/storage/xtradb/dict/dict0crea.c
+++ b/storage/xtradb/dict/dict0crea.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -51,16 +51,18 @@ static
dtuple_t*
dict_create_sys_tables_tuple(
/*=========================*/
- dict_table_t* table, /*!< in: table */
- mem_heap_t* heap) /*!< in: memory heap from which the memory for
- the built tuple is allocated */
+ const dict_table_t* table, /*!< in: table */
+ mem_heap_t* heap) /*!< in: memory heap from
+ which the memory for the built
+ tuple is allocated */
{
dict_table_t* sys_tables;
dtuple_t* entry;
dfield_t* dfield;
byte* ptr;
- ut_ad(table && heap);
+ ut_ad(table);
+ ut_ad(heap);
sys_tables = dict_sys->sys_tables;
@@ -69,18 +71,18 @@ dict_create_sys_tables_tuple(
dict_table_copy_types(entry, sys_tables);
/* 0: NAME -----------------------------*/
- dfield = dtuple_get_nth_field(entry, 0);
+ dfield = dtuple_get_nth_field(entry, 0/*NAME*/);
dfield_set_data(dfield, table->name, ut_strlen(table->name));
/* 3: ID -------------------------------*/
- dfield = dtuple_get_nth_field(entry, 1);
+ dfield = dtuple_get_nth_field(entry, 1/*ID*/);
ptr = mem_heap_alloc(heap, 8);
mach_write_to_8(ptr, table->id);
dfield_set_data(dfield, ptr, 8);
/* 4: N_COLS ---------------------------*/
- dfield = dtuple_get_nth_field(entry, 2);
+ dfield = dtuple_get_nth_field(entry, 2/*N_COLS*/);
#if DICT_TF_COMPACT != 1
#error
@@ -91,40 +93,41 @@ dict_create_sys_tables_tuple(
| ((table->flags & DICT_TF_COMPACT) << 31));
dfield_set_data(dfield, ptr, 4);
/* 5: TYPE -----------------------------*/
- dfield = dtuple_get_nth_field(entry, 3);
+ dfield = dtuple_get_nth_field(entry, 3/*TYPE*/);
ptr = mem_heap_alloc(heap, 4);
- if (table->flags & ~DICT_TF_COMPACT) {
+ if (table->flags & (~DICT_TF_COMPACT & ~(~0 << DICT_TF_BITS))) {
ut_a(table->flags & DICT_TF_COMPACT);
ut_a(dict_table_get_format(table) >= DICT_TF_FORMAT_ZIP);
ut_a(((ulonglong) table->flags & DICT_TF_ZSSIZE_MASK)
<= (ulonglong) (DICT_TF_ZSSIZE_MAX << DICT_TF_ZSSIZE_SHIFT));
- ut_a(!(table->flags & (~0 << DICT_TF_BITS)));
- mach_write_to_4(ptr, table->flags);
+ ut_a(!(table->flags & (~0 << DICT_TF2_BITS)));
+ mach_write_to_4(ptr, table->flags & ~(~0 << DICT_TF_BITS));
} else {
mach_write_to_4(ptr, DICT_TABLE_ORDINARY);
}
dfield_set_data(dfield, ptr, 4);
/* 6: MIX_ID (obsolete) ---------------------------*/
- dfield = dtuple_get_nth_field(entry, 4);
+ dfield = dtuple_get_nth_field(entry, 4/*MIX_ID*/);
ptr = mem_heap_zalloc(heap, 8);
dfield_set_data(dfield, ptr, 8);
- /* 7: MIX_LEN (obsolete) --------------------------*/
+ /* 7: MIX_LEN (additional flags) --------------------------*/
- dfield = dtuple_get_nth_field(entry, 5);
+ dfield = dtuple_get_nth_field(entry, 5/*MIX_LEN*/);
- ptr = mem_heap_zalloc(heap, 4);
+ ptr = mem_heap_alloc(heap, 4);
+ mach_write_to_4(ptr, table->flags >> DICT_TF2_SHIFT);
dfield_set_data(dfield, ptr, 4);
/* 8: CLUSTER_NAME ---------------------*/
- dfield = dtuple_get_nth_field(entry, 6);
+ dfield = dtuple_get_nth_field(entry, 6/*CLUSTER_NAME*/);
dfield_set_null(dfield); /* not supported */
/* 9: SPACE ----------------------------*/
- dfield = dtuple_get_nth_field(entry, 7);
+ dfield = dtuple_get_nth_field(entry, 7/*SPACE*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, table->space);
@@ -143,19 +146,21 @@ static
dtuple_t*
dict_create_sys_columns_tuple(
/*==========================*/
- dict_table_t* table, /*!< in: table */
- ulint i, /*!< in: column number */
- mem_heap_t* heap) /*!< in: memory heap from which the memory for
- the built tuple is allocated */
+ const dict_table_t* table, /*!< in: table */
+ ulint i, /*!< in: column number */
+ mem_heap_t* heap) /*!< in: memory heap from
+ which the memory for the built
+ tuple is allocated */
{
dict_table_t* sys_columns;
dtuple_t* entry;
const dict_col_t* column;
dfield_t* dfield;
byte* ptr;
- const char* col_name;
+ const char* col_name;
- ut_ad(table && heap);
+ ut_ad(table);
+ ut_ad(heap);
column = dict_table_get_nth_col(table, i);
@@ -166,47 +171,47 @@ dict_create_sys_columns_tuple(
dict_table_copy_types(entry, sys_columns);
/* 0: TABLE_ID -----------------------*/
- dfield = dtuple_get_nth_field(entry, 0);
+ dfield = dtuple_get_nth_field(entry, 0/*TABLE_ID*/);
ptr = mem_heap_alloc(heap, 8);
mach_write_to_8(ptr, table->id);
dfield_set_data(dfield, ptr, 8);
/* 1: POS ----------------------------*/
- dfield = dtuple_get_nth_field(entry, 1);
+ dfield = dtuple_get_nth_field(entry, 1/*POS*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, i);
dfield_set_data(dfield, ptr, 4);
/* 4: NAME ---------------------------*/
- dfield = dtuple_get_nth_field(entry, 2);
+ dfield = dtuple_get_nth_field(entry, 2/*NAME*/);
col_name = dict_table_get_col_name(table, i);
dfield_set_data(dfield, col_name, ut_strlen(col_name));
/* 5: MTYPE --------------------------*/
- dfield = dtuple_get_nth_field(entry, 3);
+ dfield = dtuple_get_nth_field(entry, 3/*MTYPE*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, column->mtype);
dfield_set_data(dfield, ptr, 4);
/* 6: PRTYPE -------------------------*/
- dfield = dtuple_get_nth_field(entry, 4);
+ dfield = dtuple_get_nth_field(entry, 4/*PRTYPE*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, column->prtype);
dfield_set_data(dfield, ptr, 4);
/* 7: LEN ----------------------------*/
- dfield = dtuple_get_nth_field(entry, 5);
+ dfield = dtuple_get_nth_field(entry, 5/*LEN*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, column->len);
dfield_set_data(dfield, ptr, 4);
/* 8: PREC ---------------------------*/
- dfield = dtuple_get_nth_field(entry, 6);
+ dfield = dtuple_get_nth_field(entry, 6/*PREC*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, 0/* unused */);
@@ -230,19 +235,38 @@ dict_build_table_def_step(
dict_table_t* table;
dtuple_t* row;
ulint error;
+ ulint flags;
const char* path_or_name;
ibool is_path;
mtr_t mtr;
+ ulint space = 0;
+ ibool file_per_table;
ut_ad(mutex_own(&(dict_sys->mutex)));
table = node->table;
- table->id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID);
+ /* Cache the global variable "srv_file_per_table" to
+ a local variable before using it. Please note
+ "srv_file_per_table" is not under dict_sys mutex
+ protection, and could be changed while executing
+ this function. So better to cache the current value
+ to a local variable, and all future reference to
+ "srv_file_per_table" should use this local variable. */
+ file_per_table = srv_file_per_table;
+
+ dict_hdr_get_new_id(&table->id, NULL, NULL);
thr_get_trx(thr)->table_id = table->id;
- if (srv_file_per_table) {
+ if (file_per_table) {
+ /* Get a new space id if srv_file_per_table is set */
+ dict_hdr_get_new_id(NULL, NULL, &space);
+
+ if (UNIV_UNLIKELY(space == ULINT_UNDEFINED)) {
+ return(DB_ERROR);
+ }
+
/* We create a new single-table tablespace for the table.
We initially let it be 4 pages:
- page 0 is the fsp header and an extent descriptor page,
@@ -251,8 +275,6 @@ dict_build_table_def_step(
- page 3 will contain the root of the clustered index of the
table we create here. */
- ulint space = 0; /* reset to zero for the call below */
-
if (table->dir_path_of_temp_table) {
/* We place tables created with CREATE TEMPORARY
TABLE in the tmp dir of mysqld server */
@@ -268,9 +290,10 @@ dict_build_table_def_step(
ut_ad(!dict_table_zip_size(table)
|| dict_table_get_format(table) >= DICT_TF_FORMAT_ZIP);
+ flags = table->flags & ~(~0 << DICT_TF_BITS);
error = fil_create_new_single_table_tablespace(
- &space, path_or_name, is_path,
- table->flags == DICT_TF_COMPACT ? 0 : table->flags,
+ space, path_or_name, is_path,
+ flags == DICT_TF_COMPACT ? 0 : flags,
FIL_IBD_FILE_INITIAL_SIZE);
table->space = (unsigned int) space;
@@ -286,7 +309,7 @@ dict_build_table_def_step(
mtr_commit(&mtr);
} else {
/* Create in the system tablespace: disallow new features */
- table->flags &= DICT_TF_COMPACT;
+ table->flags &= (~0 << DICT_TF_BITS) | DICT_TF_COMPACT;
}
row = dict_create_sys_tables_tuple(table, node->heap);
@@ -322,9 +345,10 @@ static
dtuple_t*
dict_create_sys_indexes_tuple(
/*==========================*/
- dict_index_t* index, /*!< in: index */
- mem_heap_t* heap) /*!< in: memory heap from which the memory for
- the built tuple is allocated */
+ const dict_index_t* index, /*!< in: index */
+ mem_heap_t* heap) /*!< in: memory heap from
+ which the memory for the built
+ tuple is allocated */
{
dict_table_t* sys_indexes;
dict_table_t* table;
@@ -333,7 +357,8 @@ dict_create_sys_indexes_tuple(
byte* ptr;
ut_ad(mutex_own(&(dict_sys->mutex)));
- ut_ad(index && heap);
+ ut_ad(index);
+ ut_ad(heap);
sys_indexes = dict_sys->sys_indexes;
@@ -344,32 +369,32 @@ dict_create_sys_indexes_tuple(
dict_table_copy_types(entry, sys_indexes);
/* 0: TABLE_ID -----------------------*/
- dfield = dtuple_get_nth_field(entry, 0);
+ dfield = dtuple_get_nth_field(entry, 0/*TABLE_ID*/);
ptr = mem_heap_alloc(heap, 8);
mach_write_to_8(ptr, table->id);
dfield_set_data(dfield, ptr, 8);
/* 1: ID ----------------------------*/
- dfield = dtuple_get_nth_field(entry, 1);
+ dfield = dtuple_get_nth_field(entry, 1/*ID*/);
ptr = mem_heap_alloc(heap, 8);
mach_write_to_8(ptr, index->id);
dfield_set_data(dfield, ptr, 8);
/* 4: NAME --------------------------*/
- dfield = dtuple_get_nth_field(entry, 2);
+ dfield = dtuple_get_nth_field(entry, 2/*NAME*/);
dfield_set_data(dfield, index->name, ut_strlen(index->name));
/* 5: N_FIELDS ----------------------*/
- dfield = dtuple_get_nth_field(entry, 3);
+ dfield = dtuple_get_nth_field(entry, 3/*N_FIELDS*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, index->n_fields);
dfield_set_data(dfield, ptr, 4);
/* 6: TYPE --------------------------*/
- dfield = dtuple_get_nth_field(entry, 4);
+ dfield = dtuple_get_nth_field(entry, 4/*TYPE*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, index->type);
@@ -381,7 +406,7 @@ dict_create_sys_indexes_tuple(
#error "DICT_SYS_INDEXES_SPACE_NO_FIELD != 7"
#endif
- dfield = dtuple_get_nth_field(entry, 5);
+ dfield = dtuple_get_nth_field(entry, 5/*SPACE*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, index->space);
@@ -393,7 +418,7 @@ dict_create_sys_indexes_tuple(
#error "DICT_SYS_INDEXES_PAGE_NO_FIELD != 8"
#endif
- dfield = dtuple_get_nth_field(entry, 6);
+ dfield = dtuple_get_nth_field(entry, 6/*PAGE_NO*/);
ptr = mem_heap_alloc(heap, 4);
mach_write_to_4(ptr, FIL_NULL);
@@ -412,10 +437,11 @@ static
dtuple_t*
dict_create_sys_fields_tuple(
/*=========================*/
- dict_index_t* index, /*!< in: index */
- ulint i, /*!< in: field number */
- mem_heap_t* heap) /*!< in: memory heap from which the memory for
- the built tuple is allocated */
+ const dict_index_t* index, /*!< in: index */
+ ulint i, /*!< in: field number */
+ mem_heap_t* heap) /*!< in: memory heap from
+ which the memory for the built
+ tuple is allocated */
{
dict_table_t* sys_fields;
dtuple_t* entry;
@@ -425,7 +451,8 @@ dict_create_sys_fields_tuple(
ibool index_contains_column_prefix_field = FALSE;
ulint j;
- ut_ad(index && heap);
+ ut_ad(index);
+ ut_ad(heap);
for (j = 0; j < index->n_fields; j++) {
if (dict_index_get_nth_field(index, j)->prefix_len > 0) {
@@ -443,7 +470,7 @@ dict_create_sys_fields_tuple(
dict_table_copy_types(entry, sys_fields);
/* 0: INDEX_ID -----------------------*/
- dfield = dtuple_get_nth_field(entry, 0);
+ dfield = dtuple_get_nth_field(entry, 0/*INDEX_ID*/);
ptr = mem_heap_alloc(heap, 8);
mach_write_to_8(ptr, index->id);
@@ -451,7 +478,7 @@ dict_create_sys_fields_tuple(
dfield_set_data(dfield, ptr, 8);
/* 1: POS + PREFIX LENGTH ----------------------------*/
- dfield = dtuple_get_nth_field(entry, 1);
+ dfield = dtuple_get_nth_field(entry, 1/*POS*/);
ptr = mem_heap_alloc(heap, 4);
@@ -471,7 +498,7 @@ dict_create_sys_fields_tuple(
dfield_set_data(dfield, ptr, 4);
/* 4: COL_NAME -------------------------*/
- dfield = dtuple_get_nth_field(entry, 2);
+ dfield = dtuple_get_nth_field(entry, 2/*COL_NAME*/);
dfield_set_data(dfield, field->name,
ut_strlen(field->name));
@@ -481,6 +508,51 @@ dict_create_sys_fields_tuple(
}
/*****************************************************************//**
+Based on an index object, this function builds the entry to be inserted
+in the SYS_STATS system table.
+@return the tuple which should be inserted */
+static
+dtuple_t*
+dict_create_sys_stats_tuple(
+/*========================*/
+ const dict_index_t* index,
+ ulint i,
+ mem_heap_t* heap)
+{
+ dict_table_t* sys_stats;
+ dtuple_t* entry;
+ dfield_t* dfield;
+ byte* ptr;
+
+ ut_ad(index);
+ ut_ad(heap);
+
+ sys_stats = dict_sys->sys_stats;
+
+ entry = dtuple_create(heap, 3 + DATA_N_SYS_COLS);
+
+ dict_table_copy_types(entry, sys_stats);
+
+ /* 0: INDEX_ID -----------------------*/
+ dfield = dtuple_get_nth_field(entry, 0/*INDEX_ID*/);
+ ptr = mem_heap_alloc(heap, 8);
+ mach_write_to_8(ptr, index->id);
+ dfield_set_data(dfield, ptr, 8);
+ /* 1: KEY_COLS -----------------------*/
+ dfield = dtuple_get_nth_field(entry, 1/*KEY_COLS*/);
+ ptr = mem_heap_alloc(heap, 4);
+ mach_write_to_4(ptr, i);
+ dfield_set_data(dfield, ptr, 4);
+ /* 4: DIFF_VALS ----------------------*/
+ dfield = dtuple_get_nth_field(entry, 2/*DIFF_VALS*/);
+ ptr = mem_heap_alloc(heap, 8);
+ mach_write_to_8(ptr, ut_dulint_zero); /* initial value is 0 */
+ dfield_set_data(dfield, ptr, 8);
+
+ return(entry);
+}
+
+/*****************************************************************//**
Creates the tuple with which the index entry is searched for writing the index
tree root page number, if such a tree is created.
@return the tuple for search */
@@ -550,7 +622,7 @@ dict_build_index_def_step(
ut_ad((UT_LIST_GET_LEN(table->indexes) > 0)
|| dict_index_is_clust(index));
- index->id = dict_hdr_get_new_id(DICT_HDR_INDEX_ID);
+ dict_hdr_get_new_id(NULL, &index->id, NULL);
/* Inherit the space id from the table; we store all indexes of a
table in the same tablespace */
@@ -590,6 +662,27 @@ dict_build_field_def_step(
}
/***************************************************************//**
+Builds a row for storing stats to insert.
+@return DB_SUCCESS */
+static
+ulint
+dict_build_stats_def_step(
+/*======================*/
+ ind_node_t* node)
+{
+ dict_index_t* index;
+ dtuple_t* row;
+
+ index = node->index;
+
+ row = dict_create_sys_stats_tuple(index, node->stats_no, node->heap);
+
+ ins_node_set_new_row(node->stats_def, row);
+
+ return(DB_SUCCESS);
+}
+
+/***************************************************************//**
Creates an index tree for the index if it is not a member of a cluster.
@return DB_SUCCESS or DB_OUT_OF_FILE_SPACE */
static
@@ -602,6 +695,7 @@ dict_create_index_tree_step(
dict_table_t* sys_indexes;
dict_table_t* table;
dtuple_t* search_tuple;
+ ulint zip_size;
btr_pcur_t pcur;
mtr_t mtr;
@@ -626,8 +720,9 @@ dict_create_index_tree_step(
btr_pcur_move_to_next_user_rec(&pcur, &mtr);
- node->page_no = btr_create(index->type, index->space,
- dict_table_zip_size(index->table),
+ zip_size = dict_table_zip_size(index->table);
+
+ node->page_no = btr_create(index->type, index->space, zip_size,
index->id, index, &mtr);
/* printf("Created a new index tree in space %lu root page %lu\n",
index->space, index->page_no); */
@@ -911,6 +1006,49 @@ ind_create_graph_create(
dict_sys->sys_fields, heap);
node->field_def->common.parent = node;
+ if (srv_use_sys_stats_table) {
+ node->stats_def = ins_node_create(INS_DIRECT,
+ dict_sys->sys_stats, heap);
+ node->stats_def->common.parent = node;
+ } else {
+ node->stats_def = NULL;
+ }
+
+ node->commit_node = commit_node_create(heap);
+ node->commit_node->common.parent = node;
+
+ return(node);
+}
+
+/*********************************************************************//**
+*/
+UNIV_INTERN
+ind_node_t*
+ind_insert_stats_graph_create(
+/*==========================*/
+ dict_index_t* index,
+ mem_heap_t* heap)
+{
+ ind_node_t* node;
+
+ node = mem_heap_alloc(heap, sizeof(ind_node_t));
+
+ node->common.type = QUE_NODE_INSERT_STATS;
+
+ node->index = index;
+
+ node->state = INDEX_BUILD_STATS_COLS;
+ node->page_no = FIL_NULL;
+ node->heap = mem_heap_create(256);
+
+ node->ind_def = NULL;
+ node->field_def = NULL;
+
+ node->stats_def = ins_node_create(INS_DIRECT,
+ dict_sys->sys_stats, heap);
+ node->stats_def->common.parent = node;
+ node->stats_no = 0;
+
node->commit_node = commit_node_create(heap);
node->commit_node->common.parent = node;
@@ -1061,6 +1199,7 @@ dict_create_index_step(
node->state = INDEX_BUILD_FIELD_DEF;
node->field_no = 0;
+ node->stats_no = 0;
thr->run_node = node->ind_def;
@@ -1092,8 +1231,11 @@ dict_create_index_step(
dulint index_id = node->index->id;
- err = dict_index_add_to_cache(node->table, node->index,
- FIL_NULL, TRUE);
+ err = dict_index_add_to_cache(
+ node->table, node->index, FIL_NULL,
+ trx_is_strict(trx)
+ || dict_table_get_format(node->table)
+ >= DICT_TF_FORMAT_ZIP);
node->index = dict_index_get_if_in_cache_low(index_id);
ut_a(!node->index == (err != DB_SUCCESS));
@@ -1103,7 +1245,31 @@ dict_create_index_step(
goto function_exit;
}
- node->state = INDEX_CREATE_INDEX_TREE;
+ if (srv_use_sys_stats_table) {
+ node->state = INDEX_BUILD_STATS_COLS;
+ } else {
+ node->state = INDEX_CREATE_INDEX_TREE;
+ }
+ }
+
+ if (node->state == INDEX_BUILD_STATS_COLS) {
+ if (node->stats_no <= dict_index_get_n_unique(node->index)) {
+
+ err = dict_build_stats_def_step(node);
+
+ if (err != DB_SUCCESS) {
+
+ goto function_exit;
+ }
+
+ node->stats_no++;
+
+ thr->run_node = node->stats_def;
+
+ return(thr);
+ } else {
+ node->state = INDEX_CREATE_INDEX_TREE;
+ }
}
if (node->state == INDEX_CREATE_INDEX_TREE) {
@@ -1155,6 +1321,66 @@ function_exit:
}
/****************************************************************//**
+*/
+UNIV_INTERN
+que_thr_t*
+dict_insert_stats_step(
+/*===================*/
+ que_thr_t* thr) /*!< in: query thread */
+{
+ ind_node_t* node;
+ ulint err = DB_ERROR;
+ trx_t* trx;
+
+ ut_ad(thr);
+
+ trx = thr_get_trx(thr);
+
+ node = thr->run_node;
+
+ if (thr->prev_node == que_node_get_parent(node)) {
+ node->state = INDEX_BUILD_STATS_COLS;
+ }
+
+ if (node->state == INDEX_BUILD_STATS_COLS) {
+ if (node->stats_no <= dict_index_get_n_unique(node->index)) {
+
+ err = dict_build_stats_def_step(node);
+
+ if (err != DB_SUCCESS) {
+
+ goto function_exit;
+ }
+
+ node->stats_no++;
+
+ thr->run_node = node->stats_def;
+
+ return(thr);
+ } else {
+ node->state = INDEX_COMMIT_WORK;
+ }
+ }
+
+ if (node->state == INDEX_COMMIT_WORK) {
+
+ /* do not commit transaction here for now */
+ }
+
+function_exit:
+ trx->error_state = err;
+
+ if (err == DB_SUCCESS) {
+ } else {
+ return(NULL);
+ }
+
+ thr->run_node = que_node_get_parent(node);
+
+ return(thr);
+}
+
+/****************************************************************//**
Creates the foreign key constraints system tables inside InnoDB
at database creation or database start if they are not found or are
not of the right form.
diff --git a/storage/xtradb/dict/dict0dict.c b/storage/xtradb/dict/dict0dict.c
index 7b4174b4b15..51ee7f9246f 100644
--- a/storage/xtradb/dict/dict0dict.c
+++ b/storage/xtradb/dict/dict0dict.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -81,6 +81,10 @@ UNIV_INTERN rw_lock_t dict_operation_lock;
/** Identifies generated InnoDB foreign key names */
static char dict_ibfk[] = "_ibfk_";
+/** array of mutexes protecting dict_index_t::stat_n_diff_key_vals[] */
+#define DICT_INDEX_STAT_MUTEX_SIZE 32
+static mutex_t dict_index_stat_mutex[DICT_INDEX_STAT_MUTEX_SIZE];
+
/*******************************************************************//**
Tries to find column names for the index and sets the col field of the
index.
@@ -141,7 +145,7 @@ static
void
dict_field_print_low(
/*=================*/
- dict_field_t* field); /*!< in: field */
+ const dict_field_t* field); /*!< in: field */
/*********************************************************************//**
Frees a foreign key struct. */
static
@@ -240,6 +244,45 @@ dict_mutex_exit_for_mysql(void)
mutex_exit(&(dict_sys->mutex));
}
+/** Get the mutex that protects index->stat_n_diff_key_vals[] */
+#define GET_INDEX_STAT_MUTEX(index) \
+ (&dict_index_stat_mutex[ut_fold_dulint(index->id) \
+ % DICT_INDEX_STAT_MUTEX_SIZE])
+
+/**********************************************************************//**
+Lock the appropriate mutex to protect index->stat_n_diff_key_vals[].
+index->id is used to pick the right mutex and it should not change
+before dict_index_stat_mutex_exit() is called on this index. */
+UNIV_INTERN
+void
+dict_index_stat_mutex_enter(
+/*========================*/
+ const dict_index_t* index) /*!< in: index */
+{
+ ut_ad(index != NULL);
+ ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
+ ut_ad(index->cached);
+ ut_ad(!index->to_be_dropped);
+
+ mutex_enter(GET_INDEX_STAT_MUTEX(index));
+}
+
+/**********************************************************************//**
+Unlock the appropriate mutex that protects index->stat_n_diff_key_vals[]. */
+UNIV_INTERN
+void
+dict_index_stat_mutex_exit(
+/*=======================*/
+ const dict_index_t* index) /*!< in: index */
+{
+ ut_ad(index != NULL);
+ ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
+ ut_ad(index->cached);
+ ut_ad(!index->to_be_dropped);
+
+ mutex_exit(GET_INDEX_STAT_MUTEX(index));
+}
+
/********************************************************************//**
Decrements the count of open MySQL handles to a table. */
UNIV_INTERN
@@ -528,13 +571,11 @@ dict_table_get_on_id(
if (ut_dulint_cmp(table_id, DICT_FIELDS_ID) <= 0
|| trx->dict_operation_lock_mode == RW_X_LATCH) {
- /* It is a system table which will always exist in the table
- cache: we avoid acquiring the dictionary mutex, because
- if we are doing a rollback to handle an error in TABLE
- CREATE, for example, we already have the mutex! */
- ut_ad(mutex_own(&(dict_sys->mutex))
- || trx->dict_operation_lock_mode == RW_X_LATCH);
+ /* Note: An X latch implies that the transaction
+ already owns the dictionary mutex. */
+
+ ut_ad(mutex_own(&dict_sys->mutex));
return(dict_table_get_on_id_low(table_id));
}
@@ -608,6 +649,8 @@ void
dict_init(void)
/*===========*/
{
+ int i;
+
dict_sys = mem_alloc(sizeof(dict_sys_t));
mutex_create(&dict_sys->mutex, SYNC_DICT);
@@ -628,6 +671,10 @@ dict_init(void)
ut_a(dict_foreign_err_file);
mutex_create(&dict_foreign_err_mutex, SYNC_ANY_LATCH);
+
+ for (i = 0; i < DICT_INDEX_STAT_MUTEX_SIZE; i++) {
+ mutex_create(&dict_index_stat_mutex[i], SYNC_INDEX_TREE);
+ }
}
/**********************************************************************//**
@@ -663,7 +710,7 @@ dict_table_get(
/* If table->ibd_file_missing == TRUE, this will
print an error message and return without doing
anything. */
- dict_update_statistics(table);
+ dict_update_statistics(table, FALSE);
}
}
@@ -806,7 +853,8 @@ dict_table_add_to_cache(
/* Add table to LRU list of tables */
UT_LIST_ADD_FIRST(table_LRU, dict_sys->table_LRU, table);
- dict_sys->size += mem_heap_get_size(table->heap);
+ dict_sys->size += mem_heap_get_size(table->heap)
+ + strlen(table->name) + 1;
}
/**********************************************************************//**
@@ -860,14 +908,21 @@ dict_table_rename_in_cache(
dict_foreign_t* foreign;
dict_index_t* index;
ulint fold;
- ulint old_size;
- const char* old_name;
+ char old_name[MAX_TABLE_NAME_LEN + 1];
ut_ad(table);
ut_ad(mutex_own(&(dict_sys->mutex)));
- old_size = mem_heap_get_size(table->heap);
- old_name = table->name;
+ /* store the old/current name to an automatic variable */
+ if (strlen(table->name) + 1 <= sizeof(old_name)) {
+ memcpy(old_name, table->name, strlen(table->name) + 1);
+ } else {
+ ut_print_timestamp(stderr);
+ fprintf(stderr, "InnoDB: too long table name: '%s', "
+ "max length is %d\n", table->name,
+ MAX_TABLE_NAME_LEN);
+ ut_error;
+ }
fold = ut_fold_string(new_name);
@@ -913,12 +968,22 @@ dict_table_rename_in_cache(
/* Remove table from the hash tables of tables */
HASH_DELETE(dict_table_t, name_hash, dict_sys->table_hash,
ut_fold_string(old_name), table);
- table->name = mem_heap_strdup(table->heap, new_name);
+
+ if (strlen(new_name) > strlen(table->name)) {
+ /* We allocate MAX_TABLE_NAME_LEN+1 bytes here to avoid
+ memory fragmentation, we assume a repeated calls of
+ ut_realloc() with the same size do not cause fragmentation */
+ ut_a(strlen(new_name) <= MAX_TABLE_NAME_LEN);
+ table->name = ut_realloc(table->name, MAX_TABLE_NAME_LEN + 1);
+ }
+ memcpy(table->name, new_name, strlen(new_name) + 1);
/* Add table to hash table of tables */
HASH_INSERT(dict_table_t, name_hash, dict_sys->table_hash, fold,
table);
- dict_sys->size += (mem_heap_get_size(table->heap) - old_size);
+
+ dict_sys->size += strlen(new_name) - strlen(old_name);
+ ut_a(dict_sys->size > 0);
/* Update the table_name field in indexes */
index = dict_table_get_first_index(table);
@@ -1143,7 +1208,7 @@ dict_table_remove_from_cache(
/* Remove table from LRU list of tables */
UT_LIST_REMOVE(table_LRU, dict_sys->table_LRU, table);
- size = mem_heap_get_size(table->heap);
+ size = mem_heap_get_size(table->heap) + strlen(table->name) + 1;
ut_ad(dict_sys->size >= size);
@@ -1442,11 +1507,7 @@ dict_index_too_big_for_tree(
goto add_field_size;
}
- if (srv_relax_table_creation) {
- field_max_size = dict_col_get_min_size(col);
- } else {
field_max_size = dict_col_get_max_size(col);
- }
field_ext_max_size = field_max_size < 256 ? 1 : 2;
if (field->prefix_len) {
@@ -1527,6 +1588,7 @@ dict_index_add_to_cache(
if (!dict_index_find_cols(table, index)) {
+ dict_mem_index_free(index);
return(DB_CORRUPTION);
}
@@ -3030,25 +3092,28 @@ static
char*
dict_strip_comments(
/*================*/
- const char* sql_string) /*!< in: SQL string */
+ const char* sql_string, /*!< in: SQL string */
+ size_t sql_length) /*!< in: length of sql_string */
{
char* str;
const char* sptr;
+ const char* eptr = sql_string + sql_length;
char* ptr;
/* unclosed quote character (0 if none) */
char quote = 0;
- str = mem_alloc(strlen(sql_string) + 1);
+ str = mem_alloc(sql_length + 1);
sptr = sql_string;
ptr = str;
for (;;) {
scan_more:
- if (*sptr == '\0') {
+ if (sptr >= eptr || *sptr == '\0') {
+end_of_string:
*ptr = '\0';
- ut_a(ptr <= str + strlen(sql_string));
+ ut_a(ptr <= str + sql_length);
return(str);
}
@@ -3067,30 +3132,35 @@ scan_more:
|| (sptr[0] == '-' && sptr[1] == '-'
&& sptr[2] == ' ')) {
for (;;) {
+ if (++sptr >= eptr) {
+ goto end_of_string;
+ }
+
/* In Unix a newline is 0x0A while in Windows
it is 0x0D followed by 0x0A */
- if (*sptr == (char)0x0A
- || *sptr == (char)0x0D
- || *sptr == '\0') {
-
+ switch (*sptr) {
+ case (char) 0X0A:
+ case (char) 0x0D:
+ case '\0':
goto scan_more;
}
-
- sptr++;
}
} else if (!quote && *sptr == '/' && *(sptr + 1) == '*') {
+ sptr += 2;
for (;;) {
- if (*sptr == '*' && *(sptr + 1) == '/') {
-
- sptr += 2;
-
- goto scan_more;
+ if (sptr >= eptr) {
+ goto end_of_string;
}
- if (*sptr == '\0') {
-
+ switch (*sptr) {
+ case '\0':
goto scan_more;
+ case '*':
+ if (sptr[1] == '/') {
+ sptr += 2;
+ goto scan_more;
+ }
}
sptr++;
@@ -3771,6 +3841,7 @@ dict_create_foreign_constraints(
name before it: test.table2; the
default database id the database of
parameter name */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -3785,7 +3856,7 @@ dict_create_foreign_constraints(
ut_a(trx);
ut_a(trx->mysql_thd);
- str = dict_strip_comments(sql_string);
+ str = dict_strip_comments(sql_string, sql_length);
heap = mem_heap_create(10000);
err = dict_create_foreign_constraints_low(
@@ -3818,6 +3889,7 @@ dict_foreign_parse_drop_constraints(
dict_foreign_t* foreign;
ibool success;
char* str;
+ size_t len;
const char* ptr;
const char* id;
FILE* ef = dict_foreign_err_file;
@@ -3832,7 +3904,10 @@ dict_foreign_parse_drop_constraints(
*constraints_to_drop = mem_heap_alloc(heap, 1000 * sizeof(char*));
- str = dict_strip_comments(*(trx->mysql_query_str));
+ ptr = innobase_get_stmt(trx->mysql_thd, &len);
+
+ str = dict_strip_comments(ptr, len);
+
ptr = str;
ut_ad(mutex_own(&(dict_sys->mutex)));
@@ -4173,6 +4248,259 @@ dict_index_calc_min_rec_len(
}
/*********************************************************************//**
+functions to use SYS_STATS system table. */
+static
+ibool
+dict_reload_statistics(
+/*===================*/
+ dict_table_t* table,
+ ulint* sum_of_index_sizes)
+{
+ dict_index_t* index;
+ ulint size;
+ mem_heap_t* heap;
+
+ index = dict_table_get_first_index(table);
+
+ if (index == NULL) {
+ /* Table definition is corrupt */
+
+ return(FALSE);
+ }
+
+ heap = mem_heap_create(1000);
+
+ while (index) {
+ if (table->is_corrupt) {
+ ut_a(srv_pass_corrupt_table);
+ mem_heap_free(heap);
+ return(FALSE);
+ }
+
+ size = btr_get_size(index, BTR_TOTAL_SIZE);
+
+ index->stat_index_size = size;
+
+ *sum_of_index_sizes += size;
+
+ size = btr_get_size(index, BTR_N_LEAF_PAGES);
+
+ if (size == 0) {
+ /* The root node of the tree is a leaf */
+ size = 1;
+ }
+
+ index->stat_n_leaf_pages = size;
+
+/*===========================================*/
+{
+ dict_table_t* sys_stats;
+ dict_index_t* sys_index;
+ btr_pcur_t pcur;
+ dtuple_t* tuple;
+ dfield_t* dfield;
+ ulint key_cols;
+ ulint n_cols;
+ const rec_t* rec;
+ const byte* field;
+ ulint len;
+ ib_int64_t* stat_n_diff_key_vals_tmp;
+ byte* buf;
+ ulint i;
+ mtr_t mtr;
+
+ n_cols = dict_index_get_n_unique(index);
+ stat_n_diff_key_vals_tmp = mem_heap_zalloc(heap, (n_cols + 1) * sizeof(ib_int64_t));
+
+ sys_stats = dict_sys->sys_stats;
+ sys_index = UT_LIST_GET_FIRST(sys_stats->indexes);
+ ut_a(!dict_table_is_comp(sys_stats));
+
+ tuple = dtuple_create(heap, 1);
+ dfield = dtuple_get_nth_field(tuple, 0);
+
+ buf = mem_heap_alloc(heap, 8);
+ mach_write_to_8(buf, index->id);
+
+ dfield_set_data(dfield, buf, 8);
+ dict_index_copy_types(tuple, sys_index, 1);
+
+ mtr_start(&mtr);
+
+ btr_pcur_open_on_user_rec(sys_index, tuple, PAGE_CUR_GE,
+ BTR_SEARCH_LEAF, &pcur, &mtr);
+ for (i = 0; i <= n_cols; i++) {
+ rec = btr_pcur_get_rec(&pcur);
+
+ if (!btr_pcur_is_on_user_rec(&pcur)
+ || ut_dulint_cmp(mach_read_from_8(rec_get_nth_field_old(rec, 0, &len)),
+ index->id)) {
+ /* not found: even 1 if not found should not be alowed */
+ fprintf(stderr, "InnoDB: Warning: stats for %s/%s (%lu/%lu)"
+ " not fonund in SYS_STATS\n",
+ index->table_name, index->name, i, n_cols);
+ btr_pcur_close(&pcur);
+ mtr_commit(&mtr);
+ mem_heap_free(heap);
+ return(FALSE);
+ }
+
+ if (rec_get_deleted_flag(rec, 0)) {
+ goto next_rec;
+ }
+
+ field = rec_get_nth_field_old(rec, 1, &len);
+ ut_a(len == 4);
+
+ key_cols = mach_read_from_4(field);
+
+ ut_a(i == key_cols);
+
+ field = rec_get_nth_field_old(rec, DICT_SYS_STATS_DIFF_VALS_FIELD, &len);
+ ut_a(len == 8);
+
+ stat_n_diff_key_vals_tmp[i] = ut_conv_dulint_to_longlong(mach_read_from_8(field));
+next_rec:
+ btr_pcur_move_to_next_user_rec(&pcur, &mtr);
+ }
+
+ btr_pcur_close(&pcur);
+ mtr_commit(&mtr);
+
+ dict_index_stat_mutex_enter(index);
+ for (i = 0; i <= n_cols; i++) {
+ index->stat_n_diff_key_vals[i] = stat_n_diff_key_vals_tmp[i];
+ }
+ dict_index_stat_mutex_exit(index);
+}
+/*===========================================*/
+
+ index = dict_table_get_next_index(index);
+ }
+
+ mem_heap_free(heap);
+ return(TRUE);
+}
+
+static
+void
+dict_store_statistics(
+/*==================*/
+ dict_table_t* table)
+{
+ dict_index_t* index;
+ mem_heap_t* heap;
+
+ index = dict_table_get_first_index(table);
+
+ ut_a(index);
+
+ heap = mem_heap_create(1000);
+
+ while (index) {
+ if (table->is_corrupt) {
+ ut_a(srv_pass_corrupt_table);
+ mem_heap_free(heap);
+ return;
+ }
+
+/*===========================================*/
+{
+ dict_table_t* sys_stats;
+ dict_index_t* sys_index;
+ btr_pcur_t pcur;
+ dtuple_t* tuple;
+ dfield_t* dfield;
+ ulint key_cols;
+ ulint n_cols;
+ ulint rests;
+ const rec_t* rec;
+ const byte* field;
+ ulint len;
+ ib_int64_t* stat_n_diff_key_vals_tmp;
+ byte* buf;
+ ulint i;
+ mtr_t mtr;
+
+ n_cols = dict_index_get_n_unique(index);
+ stat_n_diff_key_vals_tmp = mem_heap_zalloc(heap, (n_cols + 1) * sizeof(ib_int64_t));
+
+ dict_index_stat_mutex_enter(index);
+ for (i = 0; i <= n_cols; i++) {
+ stat_n_diff_key_vals_tmp[i] = index->stat_n_diff_key_vals[i];
+ }
+ dict_index_stat_mutex_exit(index);
+
+ sys_stats = dict_sys->sys_stats;
+ sys_index = UT_LIST_GET_FIRST(sys_stats->indexes);
+ ut_a(!dict_table_is_comp(sys_stats));
+
+ tuple = dtuple_create(heap, 1);
+ dfield = dtuple_get_nth_field(tuple, 0);
+
+ buf = mem_heap_alloc(heap, 8);
+ mach_write_to_8(buf, index->id);
+
+ dfield_set_data(dfield, buf, 8);
+ dict_index_copy_types(tuple, sys_index, 1);
+
+ mtr_start(&mtr);
+
+ btr_pcur_open_on_user_rec(sys_index, tuple, PAGE_CUR_GE,
+ BTR_MODIFY_LEAF, &pcur, &mtr);
+ rests = n_cols + 1;
+ for (i = 0; i <= n_cols; i++) {
+ rec = btr_pcur_get_rec(&pcur);
+
+ if (!btr_pcur_is_on_user_rec(&pcur)
+ || ut_dulint_cmp(mach_read_from_8(rec_get_nth_field_old(rec, 0, &len)),
+ index->id)) {
+ /* not found */
+ btr_pcur_close(&pcur);
+ mtr_commit(&mtr);
+ break;
+ }
+
+ if (rec_get_deleted_flag(rec, 0)) {
+ goto next_rec;
+ }
+
+ field = rec_get_nth_field_old(rec, 1, &len);
+ ut_a(len == 4);
+
+ key_cols = mach_read_from_4(field);
+
+ field = rec_get_nth_field_old(rec, DICT_SYS_STATS_DIFF_VALS_FIELD, &len);
+ ut_a(len == 8);
+
+ mlog_write_dulint((byte*)field,
+ ut_dulint_create((ulint) (stat_n_diff_key_vals_tmp[key_cols] >> 32),
+ (ulint) stat_n_diff_key_vals_tmp[key_cols] & 0xFFFFFFFF),
+ &mtr);
+
+ rests--;
+
+next_rec:
+ btr_pcur_move_to_next_user_rec(&pcur, &mtr);
+ }
+ btr_pcur_close(&pcur);
+ mtr_commit(&mtr);
+
+ if (rests) {
+ fprintf(stderr, "InnoDB: Warning: failed to store %lu stats entries"
+ " of %s/%s to SYS_STATS system table.\n",
+ rests, index->table_name, index->name);
+ }
+}
+/*===========================================*/
+
+ index = dict_table_get_next_index(index);
+ }
+
+ mem_heap_free(heap);
+}
+
+/*********************************************************************//**
Calculates new estimates for table and index statistics. The statistics
are used in query optimization. */
UNIV_INTERN
@@ -4180,9 +4508,10 @@ void
dict_update_statistics_low(
/*=======================*/
dict_table_t* table, /*!< in/out: table */
- ibool has_dict_mutex __attribute__((unused)))
+ ibool has_dict_mutex __attribute__((unused)),
/*!< in: TRUE if the caller has the
dictionary mutex */
+ ibool sync) /*!< in: TRUE if must update SYS_STATS */
{
dict_index_t* index;
ulint size;
@@ -4208,6 +4537,23 @@ dict_update_statistics_low(
return;
}
+ if (srv_use_sys_stats_table && !sync) {
+ /* reload statistics from SYS_STATS table */
+ if (dict_reload_statistics(table, &sum_of_index_sizes)) {
+ /* success */
+#ifdef UNIV_DEBUG
+ fprintf(stderr, "InnoDB: DEBUG: reload_statistics is scceeded for %s.\n",
+ table->name);
+#endif
+ goto end;
+ }
+ }
+#ifdef UNIV_DEBUG
+ fprintf(stderr, "InnoDB: DEBUG: update_statistics for %s.\n",
+ table->name);
+#endif
+ sum_of_index_sizes = 0;
+
/* Find out the sizes of the indexes and how many different values
for the key they approximately have */
@@ -4245,11 +4591,20 @@ dict_update_statistics_low(
index = dict_table_get_next_index(index);
}
+ if (srv_use_sys_stats_table) {
+ /* store statistics to SYS_STATS table */
+ dict_store_statistics(table);
+ }
+end:
index = dict_table_get_first_index(table);
+ dict_index_stat_mutex_enter(index);
+
table->stat_n_rows = index->stat_n_diff_key_vals[
dict_index_get_n_unique(index)];
+ dict_index_stat_mutex_exit(index);
+
table->stat_clustered_index_size = index->stat_index_size;
table->stat_sum_of_other_index_sizes = sum_of_index_sizes
@@ -4267,9 +4622,10 @@ UNIV_INTERN
void
dict_update_statistics(
/*===================*/
- dict_table_t* table) /*!< in/out: table */
+ dict_table_t* table, /*!< in/out: table */
+ ibool sync)
{
- dict_update_statistics_low(table, FALSE);
+ dict_update_statistics_low(table, FALSE, sync);
}
/**********************************************************************//**
@@ -4350,7 +4706,7 @@ dict_table_print_low(
ut_ad(mutex_own(&(dict_sys->mutex)));
if (srv_stats_auto_update)
- dict_update_statistics_low(table, TRUE);
+ dict_update_statistics_low(table, TRUE, FALSE);
fprintf(stderr,
"--------------------------------------\n"
@@ -4428,6 +4784,8 @@ dict_index_print_low(
ut_ad(mutex_own(&(dict_sys->mutex)));
+ dict_index_stat_mutex_enter(index);
+
if (index->n_user_defined_cols > 0) {
n_vals = index->stat_n_diff_key_vals[
index->n_user_defined_cols];
@@ -4435,6 +4793,8 @@ dict_index_print_low(
n_vals = index->stat_n_diff_key_vals[1];
}
+ dict_index_stat_mutex_exit(index);
+
if (dict_index_is_clust(index)) {
type_string = "clustered index";
} else if (dict_index_is_unique(index)) {
@@ -4480,7 +4840,7 @@ static
void
dict_field_print_low(
/*=================*/
- dict_field_t* field) /*!< in: field */
+ const dict_field_t* field) /*!< in: field */
{
ut_ad(mutex_own(&(dict_sys->mutex)));
@@ -4844,8 +5204,10 @@ UNIV_INTERN
void
dict_table_check_for_dup_indexes(
/*=============================*/
- const dict_table_t* table) /*!< in: Check for dup indexes
+ const dict_table_t* table, /*!< in: Check for dup indexes
in this table */
+ ibool tmp_ok) /*!< in: TRUE=allow temporary
+ index names */
{
/* Check for duplicates, ignoring indexes that are marked
as to be dropped */
@@ -4853,13 +5215,17 @@ dict_table_check_for_dup_indexes(
const dict_index_t* index1;
const dict_index_t* index2;
+ ut_ad(mutex_own(&dict_sys->mutex));
+
/* The primary index _must_ exist */
ut_a(UT_LIST_GET_LEN(table->indexes) > 0);
index1 = UT_LIST_GET_FIRST(table->indexes);
- index2 = UT_LIST_GET_NEXT(indexes, index1);
- while (index1 && index2) {
+ do {
+ ut_ad(tmp_ok || *index1->name != TEMP_INDEX_PREFIX);
+
+ index2 = UT_LIST_GET_NEXT(indexes, index1);
while (index2) {
@@ -4871,8 +5237,7 @@ dict_table_check_for_dup_indexes(
}
index1 = UT_LIST_GET_NEXT(indexes, index1);
- index2 = UT_LIST_GET_NEXT(indexes, index1);
- }
+ } while (index1);
}
#endif /* UNIV_DEBUG */
@@ -4925,6 +5290,10 @@ dict_close(void)
mem_free(dict_sys);
dict_sys = NULL;
+
+ for (i = 0; i < DICT_INDEX_STAT_MUTEX_SIZE; i++) {
+ mutex_free(&dict_index_stat_mutex[i]);
+ }
}
/*************************************************************************
@@ -4939,7 +5308,7 @@ dict_table_set_corrupt_by_space(
dict_table_t* table;
ibool found = FALSE;
- ut_a(space_id != 0 && space_id < SRV_LOG_SPACE_FIRST_ID);
+ ut_a(!trx_sys_sys_space(space_id) && space_id < SRV_LOG_SPACE_FIRST_ID);
if (need_mutex)
mutex_enter(&(dict_sys->mutex));
diff --git a/storage/xtradb/dict/dict0load.c b/storage/xtradb/dict/dict0load.c
index 46cce5050cd..0d8292cc2bf 100644
--- a/storage/xtradb/dict/dict0load.c
+++ b/storage/xtradb/dict/dict0load.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -40,6 +40,7 @@ Created 4/24/1996 Heikki Tuuri
#include "rem0cmp.h"
#include "srv0start.h"
#include "srv0srv.h"
+#include "trx0sys.h"
/****************************************************************//**
Compare the name of an index column.
@@ -222,7 +223,7 @@ loop:
is no index */
if (srv_stats_auto_update && dict_table_get_first_index(table)) {
- dict_update_statistics_low(table, TRUE);
+ dict_update_statistics_low(table, TRUE, FALSE);
}
dict_table_print_low(table);
@@ -260,7 +261,7 @@ dict_sys_tables_get_flags(
return(0);
}
- field = rec_get_nth_field_old(rec, 4, &len);
+ field = rec_get_nth_field_old(rec, 4/*N_COLS*/, &len);
n_cols = mach_read_from_4(field);
if (UNIV_UNLIKELY(!(n_cols & 0x80000000UL))) {
@@ -316,7 +317,7 @@ dict_check_tablespaces_and_store_max_id(
dict_index_t* sys_index;
btr_pcur_t pcur;
const rec_t* rec;
- ulint max_space_id = 0;
+ ulint max_space_id;
mtr_t mtr;
mutex_enter(&(dict_sys->mutex));
@@ -327,6 +328,11 @@ dict_check_tablespaces_and_store_max_id(
sys_index = UT_LIST_GET_FIRST(sys_tables->indexes);
ut_a(!dict_table_is_comp(sys_tables));
+ max_space_id = mtr_read_ulint(dict_hdr_get(&mtr)
+ + DICT_HDR_MAX_SPACE_ID,
+ MLOG_4BYTES, &mtr);
+ fil_set_max_space_id_if_bigger(max_space_id);
+
btr_pcur_open_at_index_side(TRUE, sys_index, BTR_SEARCH_LEAF, &pcur,
TRUE, &mtr);
loop:
@@ -390,15 +396,35 @@ loop:
mtr_commit(&mtr);
- if (space_id != 0 && in_crash_recovery) {
+ if (trx_sys_sys_space(space_id)) {
+ /* The system tablespace always exists. */
+ } else if (in_crash_recovery) {
/* Check that the tablespace (the .ibd file) really
- exists; print a warning to the .err log if not */
-
- fil_space_for_table_exists_in_mem(space_id, name,
- FALSE, TRUE, TRUE);
- }
+ exists; print a warning to the .err log if not.
+ Do not print warnings for temporary tables. */
+ ibool is_temp;
+
+ field = rec_get_nth_field_old(rec, 4, &len);
+ if (0x80000000UL & mach_read_from_4(field)) {
+ /* ROW_FORMAT=COMPACT: read the is_temp
+ flag from SYS_TABLES.MIX_LEN. */
+ field = rec_get_nth_field_old(rec, 7, &len);
+ is_temp = mach_read_from_4(field)
+ & DICT_TF2_TEMPORARY;
+ } else {
+ /* For tables created with old versions
+ of InnoDB, SYS_TABLES.MIX_LEN may contain
+ garbage. Such tables would always be
+ in ROW_FORMAT=REDUNDANT. Pretend that
+ all such tables are non-temporary. That is,
+ do not suppress error printouts about
+ temporary tables not being found. */
+ is_temp = FALSE;
+ }
- if (space_id != 0 && !in_crash_recovery) {
+ fil_space_for_table_exists_in_mem(
+ space_id, name, is_temp, TRUE, !is_temp);
+ } else {
/* It is a normal database startup: create the space
object and check that the .ibd file exists. */
@@ -878,7 +904,7 @@ err_exit:
space = mach_read_from_4(field);
/* Check if the tablespace exists and has the right name */
- if (space != 0) {
+ if (!trx_sys_sys_space(space)) {
flags = dict_sys_tables_get_flags(rec);
if (UNIV_UNLIKELY(flags == ULINT_UNDEFINED)) {
@@ -894,43 +920,73 @@ err_exit:
(ulong) flags);
goto err_exit;
}
+ } else {
+ flags = 0;
+ }
- if (fil_space_for_table_exists_in_mem(space, name, FALSE,
- FALSE, FALSE)) {
- /* Ok; (if we did a crash recovery then the tablespace
- can already be in the memory cache) */
- } else {
- /* In >= 4.1.9, InnoDB scans the data dictionary also
- at a normal mysqld startup. It is an error if the
- space object does not exist in memory. */
+ ut_a(name_of_col_is(sys_tables, sys_index, 4, "N_COLS"));
+
+ field = rec_get_nth_field_old(rec, 4, &len);
+ n_cols = mach_read_from_4(field);
+
+ /* The high-order bit of N_COLS is the "compact format" flag.
+ For tables in that format, MIX_LEN may hold additional flags. */
+ if (n_cols & 0x80000000UL) {
+ ulint flags2;
+
+ flags |= DICT_TF_COMPACT;
+
+ ut_a(name_of_col_is(sys_tables, sys_index, 7, "MIX_LEN"));
+ field = rec_get_nth_field_old(rec, 7, &len);
+
+ flags2 = mach_read_from_4(field);
+ if (flags2 & (~0 << (DICT_TF2_BITS - DICT_TF2_SHIFT))) {
+ ut_print_timestamp(stderr);
+ fputs(" InnoDB: Warning: table ", stderr);
+ ut_print_filename(stderr, name);
+ fprintf(stderr, "\n"
+ "InnoDB: in InnoDB data dictionary"
+ " has unknown flags %lx.\n",
+ (ulong) flags2);
+
+ flags2 &= ~(~0 << (DICT_TF2_BITS - DICT_TF2_SHIFT));
+ }
+
+ flags |= flags2 << DICT_TF2_SHIFT;
+ }
+
+ /* See if the tablespace is available. */
+ if (trx_sys_sys_space(space)) {
+ /* The system tablespace is always available. */
+ } else if (!fil_space_for_table_exists_in_mem(
+ space, name,
+ (flags >> DICT_TF2_SHIFT) & DICT_TF2_TEMPORARY,
+ FALSE, FALSE)) {
+
+ if ((flags >> DICT_TF2_SHIFT) & DICT_TF2_TEMPORARY) {
+ /* Do not bother to retry opening temporary tables. */
+ ibd_file_missing = TRUE;
+ } else {
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: error: space object of table %s,\n"
+ " InnoDB: error: space object of table");
+ ut_print_filename(stderr, name);
+ fprintf(stderr, ",\n"
"InnoDB: space id %lu did not exist in memory."
" Retrying an open.\n",
- name, (ulong)space);
+ (ulong) space);
/* Try to open the tablespace */
if (!fil_open_single_table_tablespace(
- TRUE, space, flags, name)) {
- /* We failed to find a sensible tablespace
- file */
+ TRUE, space,
+ flags == DICT_TF_COMPACT ? 0 :
+ flags & ~(~0 << DICT_TF_BITS), name)) {
+ /* We failed to find a sensible
+ tablespace file */
ibd_file_missing = TRUE;
}
}
- } else {
- flags = 0;
- }
-
- ut_a(name_of_col_is(sys_tables, sys_index, 4, "N_COLS"));
-
- field = rec_get_nth_field_old(rec, 4, &len);
- n_cols = mach_read_from_4(field);
-
- /* The high-order bit of N_COLS is the "compact format" flag. */
- if (n_cols & 0x80000000UL) {
- flags |= DICT_TF_COMPACT;
}
table = dict_mem_table_create(name, space, n_cols & ~0x80000000UL,
diff --git a/storage/xtradb/dict/dict0mem.c b/storage/xtradb/dict/dict0mem.c
index acf550befad..f2d219bfd4f 100644
--- a/storage/xtradb/dict/dict0mem.c
+++ b/storage/xtradb/dict/dict0mem.c
@@ -59,7 +59,7 @@ dict_mem_table_create(
mem_heap_t* heap;
ut_ad(name);
- ut_a(!(flags & (~0 << DICT_TF_BITS)));
+ ut_a(!(flags & (~0 << DICT_TF2_BITS)));
heap = mem_heap_create(DICT_HEAP_SIZE);
@@ -68,7 +68,8 @@ dict_mem_table_create(
table->heap = heap;
table->flags = (unsigned int) flags;
- table->name = mem_heap_strdup(heap, name);
+ table->name = ut_malloc(strlen(name) + 1);
+ memcpy(table->name, name, strlen(name) + 1);
table->space = (unsigned int) space;
table->n_cols = (unsigned int) (n_cols + DATA_N_SYS_COLS);
@@ -108,6 +109,7 @@ dict_mem_table_free(
#ifndef UNIV_HOTBACKUP
mutex_free(&(table->autoinc_mutex));
#endif /* UNIV_HOTBACKUP */
+ ut_free(table->name);
mem_heap_free(table->heap);
}
diff --git a/storage/xtradb/fil/fil0fil.c b/storage/xtradb/fil/fil0fil.c
index 3e63c0795f8..0139fa0cce5 100644
--- a/storage/xtradb/fil/fil0fil.c
+++ b/storage/xtradb/fil/fil0fil.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -38,12 +38,13 @@ Created 10/25/1995 Heikki Tuuri
#include "mtr0mtr.h"
#include "mtr0log.h"
#include "dict0dict.h"
+#include "page0page.h"
#include "page0zip.h"
#include "trx0trx.h"
#include "trx0sys.h"
#include "pars0pars.h"
-#include "row0row.h"
#include "row0mysql.h"
+#include "row0row.h"
#include "que0que.h"
#ifndef UNIV_HOTBACKUP
# include "buf0lru.h"
@@ -285,6 +286,10 @@ struct fil_system_struct {
request */
UT_LIST_BASE_NODE_T(fil_space_t) space_list;
/*!< list of all file spaces */
+ ibool space_id_reuse_warned;
+ /* !< TRUE if fil_space_create()
+ has issued a warning about
+ potential space_id reuse */
};
/** The tablespace memory cache. This variable is NULL before the module is
@@ -675,14 +680,14 @@ fil_node_open_file(
size_bytes = (((ib_uint64_t)size_high) << 32)
+ (ib_uint64_t)size_low;
#ifdef UNIV_HOTBACKUP
- if (space->id == 0) {
+ if (trx_sys_sys_space(space->id)) {
node->size = (ulint) (size_bytes / UNIV_PAGE_SIZE);
os_file_close(node->handle);
goto add_size;
}
#endif /* UNIV_HOTBACKUP */
ut_a(space->purpose != FIL_LOG);
- ut_a(space->id != 0);
+ ut_a(!trx_sys_sys_space(space->id));
if (size_bytes < FIL_IBD_FILE_INITIAL_SIZE * UNIV_PAGE_SIZE) {
fprintf(stderr,
@@ -728,7 +733,7 @@ fil_node_open_file(
}
if (UNIV_UNLIKELY(space_id == ULINT_UNDEFINED
- || space_id == 0)) {
+ || trx_sys_sys_space(space_id))) {
fprintf(stderr,
"InnoDB: Error: tablespace id %lu"
" in file %s is not sensible\n",
@@ -790,7 +795,7 @@ add_size:
system->n_open++;
- if (space->purpose == FIL_TABLESPACE && space->id != 0) {
+ if (space->purpose == FIL_TABLESPACE && !trx_sys_sys_space(space->id)) {
/* Put the node to the LRU list */
UT_LIST_ADD_FIRST(LRU, system->LRU, node);
}
@@ -823,7 +828,7 @@ fil_node_close_file(
ut_a(system->n_open > 0);
system->n_open--;
- if (node->space->purpose == FIL_TABLESPACE && node->space->id != 0) {
+ if (node->space->purpose == FIL_TABLESPACE && !trx_sys_sys_space(node->space->id)) {
ut_a(UT_LIST_GET_LEN(system->LRU) > 0);
/* The node is in the LRU list, remove it */
@@ -909,7 +914,7 @@ fil_mutex_enter_and_prepare_for_io(
retry:
mutex_enter(&fil_system->mutex);
- if (space_id == 0 || space_id >= SRV_LOG_SPACE_FIRST_ID) {
+ if (trx_sys_sys_space(space_id) || space_id >= SRV_LOG_SPACE_FIRST_ID) {
/* We keep log files and system tablespace files always open;
this is important in preventing deadlocks in this module, as
a page read completion often performs another read from the
@@ -1104,10 +1109,13 @@ fil_space_create(
fil_space_t* space;
/* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for
- ROW_FORMAT=COMPACT (table->flags == DICT_TF_COMPACT) and
+ ROW_FORMAT=COMPACT
+ ((table->flags & ~(~0 << DICT_TF_BITS)) == DICT_TF_COMPACT) and
ROW_FORMAT=REDUNDANT (table->flags == 0). For any other
- format, the tablespace flags should equal table->flags. */
+ format, the tablespace flags should equal
+ (table->flags & ~(~0 << DICT_TF_BITS)). */
ut_a(flags != DICT_TF_COMPACT);
+ ut_a(!(flags & (~0UL << DICT_TF_BITS)));
try_again:
/*printf(
@@ -1136,7 +1144,7 @@ try_again:
" tablespace memory cache!\n",
(ulong) space->id);
- if (id == 0 || purpose != FIL_TABLESPACE) {
+ if (trx_sys_sys_space(id) || purpose != FIL_TABLESPACE) {
mutex_exit(&fil_system->mutex);
@@ -1196,7 +1204,19 @@ try_again:
space->tablespace_version = fil_system->tablespace_version;
space->mark = FALSE;
- if (purpose == FIL_TABLESPACE && id > fil_system->max_assigned_id) {
+ if (UNIV_LIKELY(purpose == FIL_TABLESPACE && !recv_recovery_on)
+ && UNIV_UNLIKELY(id > fil_system->max_assigned_id)) {
+ if (!fil_system->space_id_reuse_warned) {
+ fil_system->space_id_reuse_warned = TRUE;
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Warning: allocated tablespace %lu,"
+ " old maximum was %lu\n",
+ (ulong) id,
+ (ulong) fil_system->max_assigned_id);
+ }
+
fil_system->max_assigned_id = id;
}
@@ -1236,19 +1256,25 @@ try_again:
Assigns a new space id for a new single-table tablespace. This works simply by
incrementing the global counter. If 4 billion id's is not enough, we may need
to recycle id's.
-@return new tablespace id; ULINT_UNDEFINED if could not assign an id */
-static
-ulint
-fil_assign_new_space_id(void)
-/*=========================*/
+@return TRUE if assigned, FALSE if not */
+UNIV_INTERN
+ibool
+fil_assign_new_space_id(
+/*====================*/
+ ulint* space_id) /*!< in/out: space id */
{
- ulint id;
+ ulint id;
+ ibool success;
mutex_enter(&fil_system->mutex);
- fil_system->max_assigned_id++;
+ id = *space_id;
+
+ if (id < fil_system->max_assigned_id) {
+ id = fil_system->max_assigned_id;
+ }
- id = fil_system->max_assigned_id;
+ id++;
if (id > (SRV_LOG_SPACE_FIRST_ID / 2) && (id % 1000000UL == 0)) {
ut_print_timestamp(stderr);
@@ -1264,7 +1290,11 @@ fil_assign_new_space_id(void)
(ulong) SRV_LOG_SPACE_FIRST_ID);
}
- if (id >= SRV_LOG_SPACE_FIRST_ID) {
+ success = (id < SRV_LOG_SPACE_FIRST_ID);
+
+ if (success) {
+ *space_id = fil_system->max_assigned_id = id;
+ } else {
ut_print_timestamp(stderr);
fprintf(stderr,
"InnoDB: You have run out of single-table"
@@ -1274,14 +1304,12 @@ fil_assign_new_space_id(void)
" have to dump all your tables and\n"
"InnoDB: recreate the whole InnoDB installation.\n",
(ulong) id);
- fil_system->max_assigned_id--;
-
- id = ULINT_UNDEFINED;
+ *space_id = ULINT_UNDEFINED;
}
mutex_exit(&fil_system->mutex);
- return(id);
+ return(success);
}
/*******************************************************************//**
@@ -1517,7 +1545,7 @@ fil_init(
ut_a(hash_size > 0);
ut_a(max_n_open > 0);
- fil_system = mem_alloc(sizeof(fil_system_t));
+ fil_system = mem_zalloc(sizeof(fil_system_t));
mutex_create(&fil_system->mutex, SYNC_ANY_LATCH);
@@ -1526,16 +1554,9 @@ fil_init(
UT_LIST_INIT(fil_system->LRU);
- fil_system->n_open = 0;
fil_system->max_n_open = max_n_open;
- fil_system->modification_counter = 0;
- fil_system->max_assigned_id = 0;
-
- fil_system->tablespace_version = 0;
-
- UT_LIST_INIT(fil_system->unflushed_spaces);
- UT_LIST_INIT(fil_system->space_list);
+ fil_system->max_assigned_id = TRX_SYS_SPACE_MAX;
}
/*******************************************************************//**
@@ -1557,7 +1578,7 @@ fil_open_log_and_system_tablespace_files(void)
space = UT_LIST_GET_FIRST(fil_system->space_list);
while (space != NULL) {
- if (space->purpose != FIL_TABLESPACE || space->id == 0) {
+ if (space->purpose != FIL_TABLESPACE || trx_sys_sys_space(space->id)) {
node = UT_LIST_GET_FIRST(space->chain);
while (node != NULL) {
@@ -2120,7 +2141,7 @@ fil_op_log_parse_or_replay(
fil_create_directory_for_tablename(name);
if (fil_create_new_single_table_tablespace(
- &space_id, name, FALSE, flags,
+ space_id, name, FALSE, flags,
FIL_IBD_FILE_INITIAL_SIZE) != DB_SUCCESS) {
ut_error;
}
@@ -2567,9 +2588,7 @@ UNIV_INTERN
ulint
fil_create_new_single_table_tablespace(
/*===================================*/
- ulint* space_id, /*!< in/out: space id; if this is != 0,
- then this is an input parameter,
- otherwise output */
+ ulint space_id, /*!< in: space id */
const char* tablename, /*!< in: the table name in the usual
databasename/tablename format
of InnoDB, or a dir path to a temp
@@ -2589,12 +2608,17 @@ fil_create_new_single_table_tablespace(
ibool success;
char* path;
+ ut_a(space_id > 0);
+ ut_a(space_id < SRV_LOG_SPACE_FIRST_ID);
ut_a(size >= FIL_IBD_FILE_INITIAL_SIZE);
/* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for
- ROW_FORMAT=COMPACT (table->flags == DICT_TF_COMPACT) and
+ ROW_FORMAT=COMPACT
+ ((table->flags & ~(~0 << DICT_TF_BITS)) == DICT_TF_COMPACT) and
ROW_FORMAT=REDUNDANT (table->flags == 0). For any other
- format, the tablespace flags should equal table->flags. */
+ format, the tablespace flags should equal
+ (table->flags & ~(~0 << DICT_TF_BITS)). */
ut_a(flags != DICT_TF_COMPACT);
+ ut_a(!(flags & (~0UL << DICT_TF_BITS)));
path = fil_make_ibd_name(tablename, is_temp);
@@ -2642,38 +2666,21 @@ fil_create_new_single_table_tablespace(
return(DB_ERROR);
}
- buf2 = ut_malloc(3 * UNIV_PAGE_SIZE);
- /* Align the memory for file i/o if we might have O_DIRECT set */
- page = ut_align(buf2, UNIV_PAGE_SIZE);
-
ret = os_file_set_size(path, file, size * UNIV_PAGE_SIZE, 0);
if (!ret) {
- ut_free(buf2);
- os_file_close(file);
- os_file_delete(path);
-
- mem_free(path);
- return(DB_OUT_OF_FILE_SPACE);
- }
-
- if (*space_id == 0) {
- *space_id = fil_assign_new_space_id();
- }
-
- /* printf("Creating tablespace %s id %lu\n", path, *space_id); */
-
- if (*space_id == ULINT_UNDEFINED) {
- ut_free(buf2);
+ err = DB_OUT_OF_FILE_SPACE;
error_exit:
os_file_close(file);
error_exit2:
os_file_delete(path);
mem_free(path);
- return(DB_ERROR);
+ return(err);
}
+ /* printf("Creating tablespace %s id %lu\n", path, space_id); */
+
/* We have to write the space id to the file immediately and flush the
file to disk. This is because in crash recovery we must be aware what
tablespaces exist and what are their space id's, so that we can apply
@@ -2683,10 +2690,14 @@ error_exit2:
with zeros from the call of os_file_set_size(), until a buffer pool
flush would write to it. */
+ buf2 = ut_malloc(3 * UNIV_PAGE_SIZE);
+ /* Align the memory for file i/o if we might have O_DIRECT set */
+ page = ut_align(buf2, UNIV_PAGE_SIZE);
+
memset(page, '\0', UNIV_PAGE_SIZE);
- fsp_header_init_fields(page, *space_id, flags);
- mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, *space_id);
+ fsp_header_init_fields(page, space_id, flags);
+ mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, space_id);
if (!(flags & DICT_TF_ZSSIZE_MASK)) {
buf_flush_init_for_writing(page, NULL, 0);
@@ -2717,6 +2728,7 @@ error_exit2:
" to tablespace ", stderr);
ut_print_filename(stderr, path);
putc('\n', stderr);
+ err = DB_ERROR;
goto error_exit;
}
@@ -2726,22 +2738,20 @@ error_exit2:
fputs("InnoDB: Error: file flush of tablespace ", stderr);
ut_print_filename(stderr, path);
fputs(" failed\n", stderr);
+ err = DB_ERROR;
goto error_exit;
}
os_file_close(file);
- if (*space_id == ULINT_UNDEFINED) {
- goto error_exit2;
- }
-
- success = fil_space_create(path, *space_id, flags, FIL_TABLESPACE);
+ success = fil_space_create(path, space_id, flags, FIL_TABLESPACE);
if (!success) {
+ err = DB_ERROR;
goto error_exit2;
}
- fil_node_create(path, size, *space_id, FALSE);
+ fil_node_create(path, size, space_id, FALSE);
#ifndef UNIV_HOTBACKUP
{
@@ -2752,7 +2762,7 @@ error_exit2:
fil_op_write_log(flags
? MLOG_FILE_CREATE2
: MLOG_FILE_CREATE,
- *space_id,
+ space_id,
is_temp ? MLOG_FILE_FLAG_TEMP : 0,
flags,
tablename, NULL, &mtr);
@@ -2795,6 +2805,7 @@ fil_reset_too_high_lsns(
ib_int64_t offset;
ulint zip_size;
ibool success;
+ page_zip_des_t page_zip;
filepath = fil_make_ibd_name(name, FALSE);
@@ -2842,6 +2853,12 @@ fil_reset_too_high_lsns(
space_id = fsp_header_get_space_id(page);
zip_size = fsp_header_get_zip_size(page);
+ page_zip_des_init(&page_zip);
+ page_zip_set_size(&page_zip, zip_size);
+ if (zip_size) {
+ page_zip.data = page + UNIV_PAGE_SIZE;
+ }
+
ut_print_timestamp(stderr);
fprintf(stderr,
" InnoDB: Flush lsn in the tablespace file %lu"
@@ -2876,20 +2893,23 @@ fil_reset_too_high_lsns(
/* We have to reset the lsn */
if (zip_size) {
- memcpy(page + UNIV_PAGE_SIZE, page, zip_size);
+ memcpy(page_zip.data, page, zip_size);
buf_flush_init_for_writing(
- page, page + UNIV_PAGE_SIZE,
- current_lsn);
+ page, &page_zip, current_lsn);
+ success = os_file_write(
+ filepath, file, page_zip.data,
+ (ulint) offset & 0xFFFFFFFFUL,
+ (ulint) (offset >> 32), zip_size);
} else {
buf_flush_init_for_writing(
page, NULL, current_lsn);
+ success = os_file_write(
+ filepath, file, page,
+ (ulint)(offset & 0xFFFFFFFFUL),
+ (ulint)(offset >> 32),
+ UNIV_PAGE_SIZE);
}
- success = os_file_write(filepath, file, page,
- (ulint)(offset & 0xFFFFFFFFUL),
- (ulint)(offset >> 32),
- zip_size
- ? zip_size
- : UNIV_PAGE_SIZE);
+
if (!success) {
goto func_exit;
@@ -2965,10 +2985,13 @@ fil_open_single_table_tablespace(
filepath = fil_make_ibd_name(name, FALSE);
/* The tablespace flags (FSP_SPACE_FLAGS) should be 0 for
- ROW_FORMAT=COMPACT (table->flags == DICT_TF_COMPACT) and
+ ROW_FORMAT=COMPACT
+ ((table->flags & ~(~0 << DICT_TF_BITS)) == DICT_TF_COMPACT) and
ROW_FORMAT=REDUNDANT (table->flags == 0). For any other
- format, the tablespace flags should equal table->flags. */
+ format, the tablespace flags should equal
+ (table->flags & ~(~0 << DICT_TF_BITS)). */
ut_a(flags != DICT_TF_COMPACT);
+ ut_a(!(flags & (~0UL << DICT_TF_BITS)));
file = os_file_create_simple_no_error_handling(
filepath, OS_FILE_OPEN, OS_FILE_READ_WRITE, &success);
@@ -3018,12 +3041,13 @@ fil_open_single_table_tablespace(
space_id = fsp_header_get_space_id(page);
space_flags = fsp_header_get_flags(page);
- if (srv_expand_import && (space_id != id || space_flags != flags)) {
+ if (srv_expand_import
+ && (space_id != id || space_flags != (flags & ~(~0 << DICT_TF_BITS)))) {
dulint old_id[31];
dulint new_id[31];
ulint root_page[31];
ulint n_index;
- os_file_t info_file = -1;
+ os_file_t info_file = (os_file_t) -1;
char* info_file_path;
ulint i;
int len;
@@ -3103,13 +3127,13 @@ fil_open_single_table_tablespace(
for (i = 0; i < n_index; i++) {
new_id[i] =
dict_table_get_index_on_name(table,
- (page + (i + 1) * 512 + 12))->id;
+ (char*)(page + (i + 1) * 512 + 12))->id;
old_id[i] = mach_read_from_8(page + (i + 1) * 512);
root_page[i] = mach_read_from_4(page + (i + 1) * 512 + 8);
}
skip_info:
- if (info_file != -1)
+ if (info_file != (os_file_t) -1)
os_file_close(info_file);
/*
@@ -3127,7 +3151,7 @@ skip_info:
/* over write space id of all pages */
rec_offs_init(offsets_);
- fprintf(stderr, "%s", "InnoDB: Progress in %:");
+ fprintf(stderr, "InnoDB: Progress in %%:");
for (offset = 0; offset < size_bytes; offset += UNIV_PAGE_SIZE) {
ulint checksum_field;
@@ -3359,7 +3383,8 @@ skip_write:
ut_free(buf2);
- if (UNIV_UNLIKELY(space_id != id || space_flags != flags)) {
+ if (UNIV_UNLIKELY(space_id != id
+ || space_flags != (flags & ~(~0 << DICT_TF_BITS)))) {
ut_print_timestamp(stderr);
fputs(" InnoDB: Error: tablespace id and flags in file ",
@@ -3598,7 +3623,7 @@ fil_load_single_table_tablespace(
}
#ifndef UNIV_HOTBACKUP
- if (space_id == ULINT_UNDEFINED || space_id == 0) {
+ if (space_id == ULINT_UNDEFINED || trx_sys_sys_space(space_id)) {
fprintf(stderr,
"InnoDB: Error: tablespace id %lu in file %s"
" is not sensible\n",
@@ -3607,7 +3632,7 @@ fil_load_single_table_tablespace(
goto func_exit;
}
#else
- if (space_id == ULINT_UNDEFINED || space_id == 0) {
+ if (space_id == ULINT_UNDEFINED || trx_sys_sys_space(space_id)) {
char* new_path;
fprintf(stderr,
@@ -3868,39 +3893,6 @@ next_datadir_item:
return(err);
}
-/********************************************************************//**
-If we need crash recovery, and we have called
-fil_load_single_table_tablespaces() and dict_load_single_table_tablespaces(),
-we can call this function to print an error message of orphaned .ibd files
-for which there is not a data dictionary entry with a matching table name
-and space id. */
-UNIV_INTERN
-void
-fil_print_orphaned_tablespaces(void)
-/*================================*/
-{
- fil_space_t* space;
-
- mutex_enter(&fil_system->mutex);
-
- space = UT_LIST_GET_FIRST(fil_system->space_list);
-
- while (space) {
- if (space->purpose == FIL_TABLESPACE && space->id != 0
- && !space->mark) {
- fputs("InnoDB: Warning: tablespace ", stderr);
- ut_print_filename(stderr, space->name);
- fprintf(stderr, " of id %lu has no matching table in\n"
- "InnoDB: the InnoDB data dictionary.\n",
- (ulong) space->id);
- }
-
- space = UT_LIST_GET_NEXT(space_list, space);
- }
-
- mutex_exit(&fil_system->mutex);
-}
-
/*******************************************************************//**
Returns TRUE if a single-table tablespace does not exist in the memory cache,
or is being deleted there.
@@ -4461,7 +4453,7 @@ fil_node_prepare_for_io(
}
if (node->n_pending == 0 && space->purpose == FIL_TABLESPACE
- && space->id != 0) {
+ && !trx_sys_sys_space(space->id)) {
/* The node is in the LRU list, remove it */
ut_a(UT_LIST_GET_LEN(system->LRU) > 0);
@@ -4507,7 +4499,7 @@ fil_node_complete_io(
}
if (node->n_pending == 0 && node->space->purpose == FIL_TABLESPACE
- && node->space->id != 0) {
+ && !trx_sys_sys_space(node->space->id)) {
/* The node must be put back to the LRU list */
UT_LIST_ADD_FIRST(LRU, system->LRU, node);
}
@@ -5141,7 +5133,7 @@ fil_validate(void)
ut_a(fil_node->n_pending == 0);
ut_a(fil_node->open);
ut_a(fil_node->space->purpose == FIL_TABLESPACE);
- ut_a(fil_node->space->id != 0);
+ ut_a(!trx_sys_sys_space(fil_node->space->id));
fil_node = UT_LIST_GET_NEXT(LRU, fil_node);
}
@@ -5223,8 +5215,10 @@ void
fil_close(void)
/*===========*/
{
+#ifndef UNIV_HOTBACKUP
/* The mutex should already have been freed. */
ut_ad(fil_system->mutex.magic_n == 0);
+#endif /* !UNIV_HOTBACKUP */
hash_table_free(fil_system->spaces);
diff --git a/storage/xtradb/fsp/fsp0fsp.c b/storage/xtradb/fsp/fsp0fsp.c
index 19722623611..cd28186109f 100644
--- a/storage/xtradb/fsp/fsp0fsp.c
+++ b/storage/xtradb/fsp/fsp0fsp.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -48,7 +48,7 @@ Created 11/29/1995 Heikki Tuuri
# include "log0log.h"
#endif /* UNIV_HOTBACKUP */
#include "dict0mem.h"
-
+#include "trx0sys.h"
#define FSP_HEADER_OFFSET FIL_PAGE_DATA /* Offset of the space header
within a file page */
@@ -392,11 +392,11 @@ UNIV_INLINE
ibool
xdes_get_bit(
/*=========*/
- xdes_t* descr, /*!< in: descriptor */
- ulint bit, /*!< in: XDES_FREE_BIT or XDES_CLEAN_BIT */
- ulint offset, /*!< in: page offset within extent:
- 0 ... FSP_EXTENT_SIZE - 1 */
- mtr_t* mtr) /*!< in: mtr */
+ const xdes_t* descr, /*!< in: descriptor */
+ ulint bit, /*!< in: XDES_FREE_BIT or XDES_CLEAN_BIT */
+ ulint offset, /*!< in: page offset within extent:
+ 0 ... FSP_EXTENT_SIZE - 1 */
+ mtr_t* mtr) /*!< in: mtr */
{
ulint index;
ulint byte_index;
@@ -533,8 +533,8 @@ UNIV_INLINE
ulint
xdes_get_n_used(
/*============*/
- xdes_t* descr, /*!< in: descriptor */
- mtr_t* mtr) /*!< in: mtr */
+ const xdes_t* descr, /*!< in: descriptor */
+ mtr_t* mtr) /*!< in: mtr */
{
ulint i;
ulint count = 0;
@@ -557,8 +557,8 @@ UNIV_INLINE
ibool
xdes_is_free(
/*=========*/
- xdes_t* descr, /*!< in: descriptor */
- mtr_t* mtr) /*!< in: mtr */
+ const xdes_t* descr, /*!< in: descriptor */
+ mtr_t* mtr) /*!< in: mtr */
{
if (0 == xdes_get_n_used(descr, mtr)) {
@@ -575,8 +575,8 @@ UNIV_INLINE
ibool
xdes_is_full(
/*=========*/
- xdes_t* descr, /*!< in: descriptor */
- mtr_t* mtr) /*!< in: mtr */
+ const xdes_t* descr, /*!< in: descriptor */
+ mtr_t* mtr) /*!< in: mtr */
{
if (FSP_EXTENT_SIZE == xdes_get_n_used(descr, mtr)) {
@@ -592,7 +592,7 @@ UNIV_INLINE
void
xdes_set_state(
/*===========*/
- xdes_t* descr, /*!< in: descriptor */
+ xdes_t* descr, /*!< in/out: descriptor */
ulint state, /*!< in: state to set */
mtr_t* mtr) /*!< in: mtr handle */
{
@@ -611,8 +611,8 @@ UNIV_INLINE
ulint
xdes_get_state(
/*===========*/
- xdes_t* descr, /*!< in: descriptor */
- mtr_t* mtr) /*!< in: mtr handle */
+ const xdes_t* descr, /*!< in: descriptor */
+ mtr_t* mtr) /*!< in: mtr handle */
{
ulint state;
@@ -708,7 +708,7 @@ UNIV_INLINE
xdes_t*
xdes_get_descriptor_with_space_hdr(
/*===============================*/
- fsp_header_t* sp_header,/*!< in: space header, x-latched */
+ fsp_header_t* sp_header,/*!< in/out: space header, x-latched */
ulint space, /*!< in: space id */
ulint offset, /*!< in: page offset;
if equal to the free limit,
@@ -878,14 +878,10 @@ fsp_init_file_page_low(
return;
}
-#ifdef UNIV_BASIC_LOG_DEBUG
- memset(page, 0xff, UNIV_PAGE_SIZE);
-#endif
+ memset(page, 0, UNIV_PAGE_SIZE);
mach_write_to_4(page + FIL_PAGE_OFFSET, buf_block_get_page_no(block));
- memset(page + FIL_PAGE_LSN, 0, 8);
mach_write_to_4(page + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID,
buf_block_get_space(block));
- memset(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM, 0, 8);
}
#ifndef UNIV_HOTBACKUP
@@ -1013,10 +1009,10 @@ fsp_header_init(
flst_init(header + FSP_SEG_INODES_FREE, mtr);
mlog_write_dulint(header + FSP_SEG_ID, ut_dulint_create(0, 1), mtr);
- if (space == 0) {
+ if (space == TRX_SYS_SPACE || space == TRX_DOUBLEWRITE_SPACE) {
fsp_fill_free_list(FALSE, space, header, mtr);
btr_create(DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF,
- 0, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space),
+ space, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space),
dict_ind_redundant, mtr);
} else {
fsp_fill_free_list(TRUE, space, header, mtr);
@@ -1351,7 +1347,7 @@ fsp_fill_free_list(
descriptor page and ibuf bitmap page;
then we do not allocate more extents */
ulint space, /*!< in: space */
- fsp_header_t* header, /*!< in: space header */
+ fsp_header_t* header, /*!< in/out: space header */
mtr_t* mtr) /*!< in: mtr */
{
ulint limit;
diff --git a/storage/xtradb/ha/ha0ha.c b/storage/xtradb/ha/ha0ha.c
index cb5e541b55d..9d9d341ad39 100644
--- a/storage/xtradb/ha/ha0ha.c
+++ b/storage/xtradb/ha/ha0ha.c
@@ -101,6 +101,8 @@ ha_clear(
ulint i;
ulint n;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
#ifdef UNIV_SYNC_DEBUG
ut_ad(rw_lock_own(&btr_search_latch, RW_LOCK_EXCLUSIVE));
#endif /* UNIV_SYNC_DEBUG */
@@ -146,7 +148,9 @@ ha_insert_for_fold_func(
ha_node_t* prev_node;
ulint hash;
- ut_ad(table && data);
+ ut_ad(data);
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
ut_a(block->frame == page_align(data));
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
@@ -237,6 +241,8 @@ ha_delete_hash_node(
hash_table_t* table, /*!< in: hash table */
ha_node_t* del_node) /*!< in: node to be deleted */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
if (table->adaptive) {
@@ -267,6 +273,8 @@ ha_search_and_update_if_found_func(
{
ha_node_t* node;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ASSERT_HASH_MUTEX_OWN(table, fold);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
ut_a(new_block->frame == page_align(new_data));
@@ -304,6 +312,8 @@ ha_remove_all_nodes_to_page(
{
ha_node_t* node;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ASSERT_HASH_MUTEX_OWN(table, fold);
node = ha_chain_get_first(table, fold);
@@ -353,6 +363,8 @@ ha_validate(
ibool ok = TRUE;
ulint i;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ut_a(start_index <= end_index);
ut_a(start_index < hash_get_n_cells(table));
ut_a(end_index < hash_get_n_cells(table));
@@ -404,6 +416,8 @@ builds, see http://bugs.mysql.com/36941 */
#endif /* PRINT_USED_CELLS */
ulint n_bufs;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
#ifdef PRINT_USED_CELLS
for (i = 0; i < hash_get_n_cells(table); i++) {
diff --git a/storage/xtradb/ha/hash0hash.c b/storage/xtradb/ha/hash0hash.c
index 2800d7793f8..70516deb005 100644
--- a/storage/xtradb/ha/hash0hash.c
+++ b/storage/xtradb/ha/hash0hash.c
@@ -119,7 +119,7 @@ hash_create(
table->heaps = NULL;
#endif /* !UNIV_HOTBACKUP */
table->heap = NULL;
- table->magic_n = HASH_TABLE_MAGIC_N;
+ ut_d(table->magic_n = HASH_TABLE_MAGIC_N);
/* Initialize the cell array */
hash_table_clear(table);
@@ -128,6 +128,70 @@ hash_create(
}
/*************************************************************//**
+*/
+UNIV_INTERN
+ulint
+hash_create_needed(
+/*===============*/
+ ulint n)
+{
+ ulint prime;
+ ulint offset;
+
+ prime = ut_find_prime(n);
+
+ offset = (sizeof(hash_table_t) + 7) / 8;
+ offset *= 8;
+
+ return(offset + sizeof(hash_cell_t) * prime);
+}
+
+UNIV_INTERN
+void
+hash_create_init(
+/*=============*/
+ hash_table_t* table,
+ ulint n)
+{
+ ulint prime;
+ ulint offset;
+
+ prime = ut_find_prime(n);
+
+ offset = (sizeof(hash_table_t) + 7) / 8;
+ offset *= 8;
+
+ table->array = (hash_cell_t*)(((char*)table) + offset);
+ table->n_cells = prime;
+# if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
+ table->adaptive = FALSE;
+# endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
+ table->n_mutexes = 0;
+ table->mutexes = NULL;
+ table->heaps = NULL;
+ table->heap = NULL;
+ ut_d(table->magic_n = HASH_TABLE_MAGIC_N);
+
+ /* Initialize the cell array */
+ hash_table_clear(table);
+}
+
+UNIV_INTERN
+void
+hash_create_reuse(
+/*==============*/
+ hash_table_t* table)
+{
+ ulint offset;
+
+ offset = (sizeof(hash_table_t) + 7) / 8;
+ offset *= 8;
+
+ table->array = (hash_cell_t*)(((char*)table) + offset);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
+}
+
+/*************************************************************//**
Frees a hash table. */
UNIV_INTERN
void
@@ -135,6 +199,8 @@ hash_table_free(
/*============*/
hash_table_t* table) /*!< in, own: hash table */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
#ifndef UNIV_HOTBACKUP
ut_a(table->mutexes == NULL);
#endif /* !UNIV_HOTBACKUP */
@@ -160,6 +226,8 @@ hash_create_mutexes_func(
{
ulint i;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ut_a(n_mutexes > 0);
ut_a(ut_is_2pow(n_mutexes));
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc
index 731502a3971..ef1ef280435 100644
--- a/storage/xtradb/handler/ha_innodb.cc
+++ b/storage/xtradb/handler/ha_innodb.cc
@@ -1,7 +1,8 @@
/*****************************************************************************
-Copyright (c) 2000, 2009, MySQL AB & Innobase Oy. All Rights Reserved.
+Copyright (c) 2000, 2010, MySQL AB & Innobase Oy. All Rights Reserved.
Copyright (c) 2008, 2009 Google Inc.
+Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are
incorporated with their permission, and subject to the conditions contained in
the file COPYING.Google.
+Portions of this file contain modifications contributed and copyrighted
+by Percona Inc.. Those modifications are
+gratefully acknowledged and are described briefly in the InnoDB
+documentation. The contributions by Percona Inc. are incorporated with
+their permission, and subject to the conditions contained in the file
+COPYING.Percona.
+
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.
@@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
-/***********************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-Copyright (c) 2009, Percona Inc.
-
-Portions of this file contain modifications contributed and copyrighted
-by Percona Inc.. Those modifications are
-gratefully acknowledged and are described briefly in the InnoDB
-documentation. The contributions by Percona Inc. are incorporated with
-their permission, and subject to the conditions contained in the file
-COPYING.Percona.
-
-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.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-***********************************************************************/
/* TODO list for the InnoDB handler in 5.0:
- Remove the flag trx->active_trans and look at trx->conc_state
@@ -141,7 +123,6 @@ static ulong commit_threads = 0;
static pthread_mutex_t commit_threads_m;
static pthread_cond_t commit_cond;
static pthread_mutex_t commit_cond_m;
-static pthread_mutex_t analyze_mutex;
static bool innodb_inited = 0;
C_MODE_START
@@ -190,6 +171,7 @@ static char* innobase_data_file_path = NULL;
static char* innobase_log_group_home_dir = NULL;
static char* innobase_file_format_name = NULL;
static char* innobase_change_buffering = NULL;
+static char* innobase_doublewrite_file = NULL;
/* Note: This variable can be set to on/off and any of the supported
file formats in the configuration file, but can only be set to any
@@ -217,6 +199,7 @@ static my_bool innobase_overwrite_relay_log_info = FALSE;
static my_bool innobase_rollback_on_timeout = FALSE;
static my_bool innobase_create_status_file = FALSE;
static my_bool innobase_stats_on_metadata = TRUE;
+static my_bool innobase_use_sys_stats_table = FALSE;
static char* internal_innobase_data_file_path = NULL;
@@ -360,9 +343,15 @@ static MYSQL_THDVAR_ULONG(lock_wait_timeout, PLUGIN_VAR_RQCMDARG,
"Timeout in seconds an InnoDB transaction may wait for a lock before being rolled back. Values above 100000000 disable the timeout.",
NULL, NULL, 50, 1, 1024 * 1024 * 1024, 0);
+static MYSQL_THDVAR_ULONG(flush_log_at_trx_commit_session, PLUGIN_VAR_RQCMDARG,
+ "Control innodb_flush_log_at_trx_commit for each sessions. "
+ "The value 0~2 are same meanings to innodb_flush_log_at_trx_commit. "
+ "The value 3 regards innodb_flush_log_at_trx_commit (default).",
+ NULL, NULL, 3, 0, 3, 0);
+
static handler *innobase_create_handler(handlerton *hton,
- TABLE_SHARE *table,
+ TABLE_SHARE *table,
MEM_ROOT *mem_root)
{
return new (mem_root) ha_innobase(hton, table);
@@ -475,8 +464,9 @@ static
int
innobase_start_trx_and_assign_read_view(
/*====================================*/
- handlerton* hton, /*!< in: Innodb handlerton */
- THD* thd); /*!< in: MySQL thread handle of the user for whom
+ /* out: 0 */
+ handlerton* hton, /* in: Innodb handlerton */
+ THD* thd); /* in: MySQL thread handle of the user for whom
the transaction should be committed */
/****************************************************************//**
Flushes InnoDB logs to disk and makes a checkpoint. Really, a commit flushes
@@ -558,6 +548,8 @@ static SHOW_VAR innodb_status_variables[]= {
(char*) &export_vars.innodb_data_written, SHOW_LONG},
{"dblwr_pages_written",
(char*) &export_vars.innodb_dblwr_pages_written, SHOW_LONG},
+ {"deadlocks",
+ (char*) &export_vars.innodb_deadlocks, SHOW_LONG},
{"dblwr_writes",
(char*) &export_vars.innodb_dblwr_writes, SHOW_LONG},
{"dict_tables",
@@ -737,6 +729,17 @@ thd_lock_wait_timeout(
return(THDVAR((THD*) thd, lock_wait_timeout));
}
+/******************************************************************//**
+*/
+extern "C" UNIV_INTERN
+ulong
+thd_flush_log_at_trx_commit_session(
+/*================================*/
+ void* thd)
+{
+ return(THDVAR((THD*) thd, flush_log_at_trx_commit_session));
+}
+
/********************************************************************//**
Obtain the InnoDB transaction of a MySQL thread.
@return reference to transaction pointer */
@@ -1052,6 +1055,29 @@ innobase_get_charset(
return(thd_charset((THD*) mysql_thd));
}
+/**********************************************************************//**
+Determines the current SQL statement.
+@return SQL statement string */
+extern "C" UNIV_INTERN
+const char*
+innobase_get_stmt(
+/*==============*/
+ void* mysql_thd, /*!< in: MySQL thread handle */
+ size_t* length) /*!< out: length of the SQL statement */
+{
+#if MYSQL_VERSION_ID >= 50142
+ LEX_STRING* stmt;
+
+ stmt = thd_query_string((THD*) mysql_thd);
+ *length = stmt->length;
+ return(stmt->str);
+#else
+ const char* stmt_str = thd_query((THD*) mysql_thd);
+ *length = strlen(stmt_str);
+ return(stmt_str);
+#endif
+}
+
#if defined (__WIN__) && defined (MYSQL_DYNAMIC_PLUGIN)
extern MYSQL_PLUGIN_IMPORT MY_TMPDIR mysql_tmpdir_list;
/*******************************************************************//**
@@ -1372,7 +1398,6 @@ innobase_trx_allocate(
trx = trx_allocate_for_mysql();
trx->mysql_thd = thd;
- trx->mysql_query_str = thd_query(thd);
innobase_trx_init(thd, trx);
@@ -1899,6 +1924,19 @@ trx_is_interrupted(
return(trx && trx->mysql_thd && thd_killed((THD*) trx->mysql_thd));
}
+/**********************************************************************//**
+Determines if the currently running transaction is in strict mode.
+@return TRUE if strict */
+extern "C" UNIV_INTERN
+ibool
+trx_is_strict(
+/*==========*/
+ trx_t* trx) /*!< in: transaction */
+{
+ return(trx && trx->mysql_thd
+ && THDVAR((THD*) trx->mysql_thd, strict_mode));
+}
+
/**************************************************************//**
Resets some fields of a prebuilt struct. The template is used in fast
retrieval of just those column values MySQL needs in its processing. */
@@ -2043,12 +2081,12 @@ innobase_init(
srv_page_size_shift = 0;
if (innobase_page_size != (1 << 14)) {
- int n_shift;
+ uint n_shift;
fprintf(stderr,
"InnoDB: Warning: innodb_page_size has been changed from default value 16384. (###EXPERIMENTAL### operation)\n");
for (n_shift = 12; n_shift <= UNIV_PAGE_SIZE_SHIFT_MAX; n_shift++) {
- if (innobase_page_size == (1u << n_shift)) {
+ if (innobase_page_size == ((ulong)1 << n_shift)) {
srv_page_size_shift = n_shift;
srv_page_size = (1 << srv_page_size_shift);
fprintf(stderr,
@@ -2235,8 +2273,12 @@ mem_free_and_error:
goto error;
}
+ srv_doublewrite_file = innobase_doublewrite_file;
+
srv_extra_undoslots = (ibool) innobase_extra_undoslots;
+ srv_use_sys_stats_table = (ibool) innobase_use_sys_stats_table;
+
/* -------------- Log files ---------------------------*/
/* The default dir for log files is the datadir of MySQL */
@@ -2333,7 +2375,7 @@ mem_free_and_error:
}
sql_print_error("InnoDB: invalid value "
- "innodb_file_format_check=%s",
+ "innodb_change_buffering=%s",
innobase_change_buffering);
goto mem_free_and_error;
}
@@ -2372,7 +2414,6 @@ innobase_change_buffering_inited_ok:
srv_force_recovery = (ulint) innobase_force_recovery;
- srv_fast_recovery = (ibool) innobase_fast_recovery;
srv_recovery_stats = (ibool) innobase_recovery_stats;
srv_use_doublewrite_buf = (ibool) innobase_use_doublewrite;
@@ -2466,11 +2507,11 @@ innobase_change_buffering_inited_ok:
my_b_seek(&info_file, 0L);
pos=strmov(buff, trx_sys_mysql_relay_log_name);
*pos++='\n';
- pos=longlong2str(trx_sys_mysql_relay_log_pos, pos, 10);
+ pos=longlong10_to_str(trx_sys_mysql_relay_log_pos, pos, 10);
*pos++='\n';
pos=strmov(pos, trx_sys_mysql_master_log_name);
*pos++='\n';
- pos=longlong2str(trx_sys_mysql_master_log_pos, pos, 10);
+ pos=longlong10_to_str(trx_sys_mysql_master_log_pos, pos, 10);
*pos='\n';
if (my_b_write(&info_file, (uchar*) buff, (size_t) (pos-buff)+1))
@@ -2502,7 +2543,6 @@ skip_overwrite:
pthread_mutex_init(&prepare_commit_mutex, MY_MUTEX_INIT_FAST);
pthread_mutex_init(&commit_threads_m, MY_MUTEX_INIT_FAST);
pthread_mutex_init(&commit_cond_m, MY_MUTEX_INIT_FAST);
- pthread_mutex_init(&analyze_mutex, MY_MUTEX_INIT_FAST);
pthread_cond_init(&commit_cond, NULL);
innodb_inited= 1;
#ifdef MYSQL_DYNAMIC_PLUGIN
@@ -2557,7 +2597,6 @@ innobase_end(
pthread_mutex_destroy(&prepare_commit_mutex);
pthread_mutex_destroy(&commit_threads_m);
pthread_mutex_destroy(&commit_cond_m);
- pthread_mutex_destroy(&analyze_mutex);
pthread_cond_destroy(&commit_cond);
}
@@ -2594,10 +2633,7 @@ innobase_alter_table_flags(
{
return(HA_ONLINE_ADD_INDEX_NO_WRITES
| HA_ONLINE_DROP_INDEX_NO_WRITES
- /* Current InnoDB doesn't sort unique indexes along mysqld's order
- It is dangerous to use index. So it is disabled until
- the bug http://bugs.mysql.com/47622 */
- /* | HA_ONLINE_ADD_UNIQUE_INDEX_NO_WRITES */
+ | HA_ONLINE_ADD_UNIQUE_INDEX_NO_WRITES
| HA_ONLINE_DROP_UNIQUE_INDEX_NO_WRITES
| HA_ONLINE_ADD_PK_INDEX_NO_WRITES);
}
@@ -2943,7 +2979,7 @@ innobase_rollback_to_savepoint(
/* TODO: use provided savepoint data area to store savepoint data */
- longlong2str((ulint)savepoint, name, 36);
+ longlong2str((ulint)savepoint, name, 36, 1);
error = (int) trx_rollback_to_savepoint_for_mysql(trx, name,
&mysql_binlog_cache_pos);
@@ -2974,7 +3010,7 @@ innobase_release_savepoint(
/* TODO: use provided savepoint data area to store savepoint data */
- longlong2str((ulint)savepoint, name, 36);
+ longlong2str((ulint)savepoint, name, 36, 1);
error = (int) trx_release_savepoint_for_mysql(trx, name);
@@ -3021,7 +3057,7 @@ innobase_savepoint(
/* TODO: use provided savepoint data area to store savepoint data */
char name[64];
- longlong2str((ulint)savepoint,name,36);
+ longlong2str((ulint)savepoint,name,36,1);
error = (int) trx_savepoint_for_mysql(trx, name, (ib_int64_t)0);
@@ -3292,59 +3328,370 @@ normalize_table_name(
}
/********************************************************************//**
+Get the upper limit of the MySQL integral and floating-point type.
+@return maximum allowed value for the field */
+static
+ulonglong
+innobase_get_int_col_max_value(
+/*===========================*/
+ const Field* field) /*!< in: MySQL field */
+{
+ ulonglong max_value = 0;
+
+ switch(field->key_type()) {
+ /* TINY */
+ case HA_KEYTYPE_BINARY:
+ max_value = 0xFFULL;
+ break;
+ case HA_KEYTYPE_INT8:
+ max_value = 0x7FULL;
+ break;
+ /* SHORT */
+ case HA_KEYTYPE_USHORT_INT:
+ max_value = 0xFFFFULL;
+ break;
+ case HA_KEYTYPE_SHORT_INT:
+ max_value = 0x7FFFULL;
+ break;
+ /* MEDIUM */
+ case HA_KEYTYPE_UINT24:
+ max_value = 0xFFFFFFULL;
+ break;
+ case HA_KEYTYPE_INT24:
+ max_value = 0x7FFFFFULL;
+ break;
+ /* LONG */
+ case HA_KEYTYPE_ULONG_INT:
+ max_value = 0xFFFFFFFFULL;
+ break;
+ case HA_KEYTYPE_LONG_INT:
+ max_value = 0x7FFFFFFFULL;
+ break;
+ /* BIG */
+ case HA_KEYTYPE_ULONGLONG:
+ max_value = 0xFFFFFFFFFFFFFFFFULL;
+ break;
+ case HA_KEYTYPE_LONGLONG:
+ max_value = 0x7FFFFFFFFFFFFFFFULL;
+ break;
+ case HA_KEYTYPE_FLOAT:
+ /* We use the maximum as per IEEE754-2008 standard, 2^24 */
+ max_value = 0x1000000ULL;
+ break;
+ case HA_KEYTYPE_DOUBLE:
+ /* We use the maximum as per IEEE754-2008 standard, 2^53 */
+ max_value = 0x20000000000000ULL;
+ break;
+ default:
+ ut_error;
+ }
+
+ return(max_value);
+}
+
+/*******************************************************************//**
+This function checks whether the index column information
+is consistent between KEY info from mysql and that from innodb index.
+@return TRUE if all column types match. */
+static
+ibool
+innobase_match_index_columns(
+/*=========================*/
+ const KEY* key_info, /*!< in: Index info
+ from mysql */
+ const dict_index_t* index_info) /*!< in: Index info
+ from Innodb */
+{
+ const KEY_PART_INFO* key_part;
+ const KEY_PART_INFO* key_end;
+ const dict_field_t* innodb_idx_fld;
+ const dict_field_t* innodb_idx_fld_end;
+
+ DBUG_ENTER("innobase_match_index_columns");
+
+ /* Check whether user defined index column count matches */
+ if (key_info->key_parts != index_info->n_user_defined_cols) {
+ DBUG_RETURN(FALSE);
+ }
+
+ key_part = key_info->key_part;
+ key_end = key_part + key_info->key_parts;
+ innodb_idx_fld = index_info->fields;
+ innodb_idx_fld_end = index_info->fields + index_info->n_fields;
+
+ /* Check each index column's datatype. We do not check
+ column name because there exists case that index
+ column name got modified in mysql but such change does not
+ propagate to InnoDB.
+ One hidden assumption here is that the index column sequences
+ are matched up between those in mysql and Innodb. */
+ for (; key_part != key_end; ++key_part) {
+ ulint col_type;
+ ibool is_unsigned;
+ ulint mtype = innodb_idx_fld->col->mtype;
+
+ /* Need to translate to InnoDB column type before
+ comparison. */
+ col_type = get_innobase_type_from_mysql_type(&is_unsigned,
+ key_part->field);
+
+ /* Ignore Innodb specific system columns. */
+ while (mtype == DATA_SYS) {
+ innodb_idx_fld++;
+
+ if (innodb_idx_fld >= innodb_idx_fld_end) {
+ DBUG_RETURN(FALSE);
+ }
+ }
+
+ if (col_type != mtype) {
+ /* Column Type mismatches */
+ DBUG_RETURN(FALSE);
+ }
+
+ innodb_idx_fld++;
+ }
+
+ DBUG_RETURN(TRUE);
+}
+
+/*******************************************************************//**
+This function builds a translation table in INNOBASE_SHARE
+structure for fast index location with mysql array number from its
+table->key_info structure. This also provides the necessary translation
+between the key order in mysql key_info and Innodb ib_table->indexes if
+they are not fully matched with each other.
+Note we do not have any mutex protecting the translation table
+building based on the assumption that there is no concurrent
+index creation/drop and DMLs that requires index lookup. All table
+handle will be closed before the index creation/drop.
+@return TRUE if index translation table built successfully */
+static
+ibool
+innobase_build_index_translation(
+/*=============================*/
+ const TABLE* table, /*!< in: table in MySQL data
+ dictionary */
+ dict_table_t* ib_table, /*!< in: table in Innodb data
+ dictionary */
+ INNOBASE_SHARE* share) /*!< in/out: share structure
+ where index translation table
+ will be constructed in. */
+{
+ ulint mysql_num_index;
+ ulint ib_num_index;
+ dict_index_t** index_mapping;
+ ibool ret = TRUE;
+
+ DBUG_ENTER("innobase_build_index_translation");
+
+ mysql_num_index = table->s->keys;
+ ib_num_index = UT_LIST_GET_LEN(ib_table->indexes);
+
+ index_mapping = share->idx_trans_tbl.index_mapping;
+
+ /* If there exists inconsistency between MySQL and InnoDB dictionary
+ (metadata) information, the number of index defined in MySQL
+ could exceed that in InnoDB, do not build index translation
+ table in such case */
+ if (UNIV_UNLIKELY(ib_num_index < mysql_num_index)) {
+ ret = FALSE;
+ goto func_exit;
+ }
+
+ /* If index entry count is non-zero, nothing has
+ changed since last update, directly return TRUE */
+ if (share->idx_trans_tbl.index_count) {
+ /* Index entry count should still match mysql_num_index */
+ ut_a(share->idx_trans_tbl.index_count == mysql_num_index);
+ goto func_exit;
+ }
+
+ /* The number of index increased, rebuild the mapping table */
+ if (mysql_num_index > share->idx_trans_tbl.array_size) {
+ index_mapping = (dict_index_t**) my_realloc(index_mapping,
+ mysql_num_index *
+ sizeof(*index_mapping),
+ MYF(MY_ALLOW_ZERO_PTR));
+
+ if (!index_mapping) {
+ ret = FALSE;
+ goto func_exit;
+ }
+
+ share->idx_trans_tbl.array_size = mysql_num_index;
+ }
+
+
+ /* For each index in the mysql key_info array, fetch its
+ corresponding InnoDB index pointer into index_mapping
+ array. */
+ for (ulint count = 0; count < mysql_num_index; count++) {
+
+ /* Fetch index pointers into index_mapping according to mysql
+ index sequence */
+ index_mapping[count] = dict_table_get_index_on_name(
+ ib_table, table->key_info[count].name);
+
+ if (!index_mapping[count]) {
+ sql_print_error("Cannot find index %s in InnoDB "
+ "index dictionary.",
+ table->key_info[count].name);
+ ret = FALSE;
+ goto func_exit;
+ }
+
+ /* Double check fetched index has the same
+ column info as those in mysql key_info. */
+ if (!innobase_match_index_columns(&table->key_info[count],
+ index_mapping[count])) {
+ sql_print_error("Found index %s whose column info "
+ "does not match that of MySQL.",
+ table->key_info[count].name);
+ ret = FALSE;
+ goto func_exit;
+ }
+ }
+
+ /* Successfully built the translation table */
+ share->idx_trans_tbl.index_count = mysql_num_index;
+
+func_exit:
+ if (!ret) {
+ /* Build translation table failed. */
+ my_free(index_mapping, MYF(MY_ALLOW_ZERO_PTR));
+
+ share->idx_trans_tbl.array_size = 0;
+ share->idx_trans_tbl.index_count = 0;
+ index_mapping = NULL;
+ }
+
+ share->idx_trans_tbl.index_mapping = index_mapping;
+
+ DBUG_RETURN(ret);
+}
+
+/*******************************************************************//**
+This function uses index translation table to quickly locate the
+requested index structure.
+Note we do not have mutex protection for the index translatoin table
+access, it is based on the assumption that there is no concurrent
+translation table rebuild (fter create/drop index) and DMLs that
+require index lookup.
+@return dict_index_t structure for requested index. NULL if
+fail to locate the index structure. */
+static
+dict_index_t*
+innobase_index_lookup(
+/*==================*/
+ INNOBASE_SHARE* share, /*!< in: share structure for index
+ translation table. */
+ uint keynr) /*!< in: index number for the requested
+ index */
+{
+ if (!share->idx_trans_tbl.index_mapping
+ || keynr >= share->idx_trans_tbl.index_count) {
+ return(NULL);
+ }
+
+ return(share->idx_trans_tbl.index_mapping[keynr]);
+}
+
+/************************************************************************
Set the autoinc column max value. This should only be called once from
-ha_innobase::open(). Therefore there's no need for a covering lock.
-@return DB_SUCCESS or error code */
+ha_innobase::open(). Therefore there's no need for a covering lock. */
UNIV_INTERN
-ulint
+void
ha_innobase::innobase_initialize_autoinc()
/*======================================*/
{
- dict_index_t* index;
ulonglong auto_inc;
- const char* col_name;
- ulint error;
+ const Field* field = table->found_next_number_field;
+
+ if (field != NULL) {
+ auto_inc = innobase_get_int_col_max_value(field);
+ } else {
+ /* We have no idea what's been passed in to us as the
+ autoinc column. We set it to the 0, effectively disabling
+ updates to the table. */
+ auto_inc = 0;
- col_name = table->found_next_number_field->field_name;
- index = innobase_get_index(table->s->next_number_index);
+ ut_print_timestamp(stderr);
+ fprintf(stderr, " InnoDB: Unable to determine the AUTOINC "
+ "column name\n");
+ }
- /* Execute SELECT MAX(col_name) FROM TABLE; */
- error = row_search_max_autoinc(index, col_name, &auto_inc);
+ if (srv_force_recovery >= SRV_FORCE_NO_IBUF_MERGE) {
+ /* If the recovery level is set so high that writes
+ are disabled we force the AUTOINC counter to 0
+ value effectively disabling writes to the table.
+ Secondly, we avoid reading the table in case the read
+ results in failure due to a corrupted table/index.
+
+ We will not return an error to the client, so that the
+ tables can be dumped with minimal hassle. If an error
+ were returned in this case, the first attempt to read
+ the table would fail and subsequent SELECTs would succeed. */
+ auto_inc = 0;
+ } else if (field == NULL) {
+ /* This is a far more serious error, best to avoid
+ opening the table and return failure. */
+ my_error(ER_AUTOINC_READ_FAILED, MYF(0));
+ } else {
+ dict_index_t* index;
+ const char* col_name;
+ ulonglong read_auto_inc;
+ ulint err;
- switch (error) {
- case DB_SUCCESS:
+ update_thd(ha_thd());
- /* At the this stage we don't know the increment
- or the offset, so use default inrement of 1. */
- ++auto_inc;
- break;
+ ut_a(prebuilt->trx == thd_to_trx(user_thd));
- case DB_RECORD_NOT_FOUND:
- ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: MySQL and InnoDB data "
- "dictionaries are out of sync.\n"
- "InnoDB: Unable to find the AUTOINC column %s in the "
- "InnoDB table %s.\n"
- "InnoDB: We set the next AUTOINC column value to the "
- "maximum possible value,\n"
- "InnoDB: in effect disabling the AUTOINC next value "
- "generation.\n"
- "InnoDB: You can either set the next AUTOINC value "
- "explicitly using ALTER TABLE\n"
- "InnoDB: or fix the data dictionary by recreating "
- "the table.\n",
- col_name, index->table->name);
-
- auto_inc = 0xFFFFFFFFFFFFFFFFULL;
- break;
+ col_name = field->field_name;
+ index = innobase_get_index(table->s->next_number_index);
- default:
- return(error);
+ /* Execute SELECT MAX(col_name) FROM TABLE; */
+ err = row_search_max_autoinc(index, col_name, &read_auto_inc);
+
+ switch (err) {
+ case DB_SUCCESS:
+ /* At the this stage we do not know the increment
+ or the offset, so use a default increment of 1. */
+ auto_inc = read_auto_inc + 1;
+ break;
+
+ case DB_RECORD_NOT_FOUND:
+ ut_print_timestamp(stderr);
+ fprintf(stderr, " InnoDB: MySQL and InnoDB data "
+ "dictionaries are out of sync.\n"
+ "InnoDB: Unable to find the AUTOINC column "
+ "%s in the InnoDB table %s.\n"
+ "InnoDB: We set the next AUTOINC column "
+ "value to 0,\n"
+ "InnoDB: in effect disabling the AUTOINC "
+ "next value generation.\n"
+ "InnoDB: You can either set the next "
+ "AUTOINC value explicitly using ALTER TABLE\n"
+ "InnoDB: or fix the data dictionary by "
+ "recreating the table.\n",
+ col_name, index->table->name);
+
+ /* This will disable the AUTOINC generation. */
+ auto_inc = 0;
+
+ /* We want the open to succeed, so that the user can
+ take corrective action. ie. reads should succeed but
+ updates should fail. */
+ err = DB_SUCCESS;
+ break;
+ default:
+ /* row_search_max_autoinc() should only return
+ one of DB_SUCCESS or DB_RECORD_NOT_FOUND. */
+ ut_error;
+ }
}
dict_table_autoinc_initialize(prebuilt->table, auto_inc);
-
- return(DB_SUCCESS);
}
/*****************************************************************//**
@@ -3497,6 +3844,11 @@ retry:
primary_key = table->s->primary_key;
key_used_on_scan = primary_key;
+ if (!innobase_build_index_translation(table, ib_table, share)) {
+ sql_print_error("Build InnoDB index translation table for"
+ " Table %s failed", name);
+ }
+
/* Allocate a buffer for a 'row reference'. A row reference is
a string of bytes of length ref_length which uniquely specifies
a row in our table. Note that MySQL may also compare two row
@@ -3504,31 +3856,85 @@ retry:
of length ref_length! */
if (!row_table_got_default_clust_index(ib_table)) {
- if (primary_key >= MAX_KEY) {
- sql_print_error("Table %s has a primary key in InnoDB data "
- "dictionary, but not in MySQL!", name);
- }
-
prebuilt->clust_index_was_generated = FALSE;
- /* MySQL allocates the buffer for ref. key_info->key_length
- includes space for all key columns + one byte for each column
- that may be NULL. ref_length must be as exact as possible to
- save space, because all row reference buffers are allocated
- based on ref_length. */
+ if (UNIV_UNLIKELY(primary_key >= MAX_KEY)) {
+ sql_print_error("Table %s has a primary key in "
+ "InnoDB data dictionary, but not "
+ "in MySQL!", name);
+
+ /* This mismatch could cause further problems
+ if not attended, bring this to the user's attention
+ by printing a warning in addition to log a message
+ in the errorlog */
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_NO_SUCH_INDEX,
+ "InnoDB: Table %s has a "
+ "primary key in InnoDB data "
+ "dictionary, but not in "
+ "MySQL!", name);
+
+ /* If primary_key >= MAX_KEY, its (primary_key)
+ value could be out of bound if continue to index
+ into key_info[] array. Find InnoDB primary index,
+ and assign its key_length to ref_length.
+ In addition, since MySQL indexes are sorted starting
+ with primary index, unique index etc., initialize
+ ref_length to the first index key length in
+ case we fail to find InnoDB cluster index.
+
+ Please note, this will not resolve the primary
+ index mismatch problem, other side effects are
+ possible if users continue to use the table.
+ However, we allow this table to be opened so
+ that user can adopt necessary measures for the
+ mismatch while still being accessible to the table
+ date. */
+ ref_length = table->key_info[0].key_length;
+
+ /* Find correspoinding cluster index
+ key length in MySQL's key_info[] array */
+ for (ulint i = 0; i < table->s->keys; i++) {
+ dict_index_t* index;
+ index = innobase_get_index(i);
+ if (dict_index_is_clust(index)) {
+ ref_length =
+ table->key_info[i].key_length;
+ }
+ }
+ } else {
+ /* MySQL allocates the buffer for ref.
+ key_info->key_length includes space for all key
+ columns + one byte for each column that may be
+ NULL. ref_length must be as exact as possible to
+ save space, because all row reference buffers are
+ allocated based on ref_length. */
- ref_length = table->key_info[primary_key].key_length;
+ ref_length = table->key_info[primary_key].key_length;
+ }
} else {
if (primary_key != MAX_KEY) {
- sql_print_error("Table %s has no primary key in InnoDB data "
- "dictionary, but has one in MySQL! If you "
- "created the table with a MySQL version < "
- "3.23.54 and did not define a primary key, "
- "but defined a unique key with all non-NULL "
- "columns, then MySQL internally treats that "
- "key as the primary key. You can fix this "
- "error by dump + DROP + CREATE + reimport "
- "of the table.", name);
+ sql_print_error(
+ "Table %s has no primary key in InnoDB data "
+ "dictionary, but has one in MySQL! If you "
+ "created the table with a MySQL version < "
+ "3.23.54 and did not define a primary key, "
+ "but defined a unique key with all non-NULL "
+ "columns, then MySQL internally treats that "
+ "key as the primary key. You can fix this "
+ "error by dump + DROP + CREATE + reimport "
+ "of the table.", name);
+
+ /* This mismatch could cause further problems
+ if not attended, bring this to the user attention
+ by printing a warning in addition to log a message
+ in the errorlog */
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_NO_SUCH_INDEX,
+ "InnoDB: Table %s has no "
+ "primary key in InnoDB data "
+ "dictionary, but has one in "
+ "MySQL!", name);
}
prebuilt->clust_index_was_generated = TRUE;
@@ -3570,8 +3976,6 @@ retry:
/* Only if the table has an AUTOINC column. */
if (prebuilt->table != NULL && table->found_next_number_field != NULL) {
- ulint error;
-
dict_table_autoinc_lock(prebuilt->table);
/* Since a table can already be "open" in InnoDB's internal
@@ -3580,8 +3984,7 @@ retry:
autoinc value from a previous MySQL open. */
if (dict_table_autoinc_read(prebuilt->table) == 0) {
- error = innobase_initialize_autoinc();
- ut_a(error == DB_SUCCESS);
+ innobase_initialize_autoinc();
}
dict_table_autoinc_unlock(prebuilt->table);
@@ -3872,6 +4275,11 @@ get_innobase_type_from_mysql_type(
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_LONG_BLOB:
return(DATA_BLOB);
+ case MYSQL_TYPE_NULL:
+ /* MySQL currently accepts "NULL" datatype, but will
+ reject such datatype in the next release. We will cope
+ with it and not trigger assertion failure in 5.1 */
+ break;
default:
ut_error;
}
@@ -4440,67 +4848,6 @@ skip_field:
}
/********************************************************************//**
-Get the upper limit of the MySQL integral and floating-point type. */
-UNIV_INTERN
-ulonglong
-ha_innobase::innobase_get_int_col_max_value(
-/*========================================*/
- const Field* field)
-{
- ulonglong max_value = 0;
-
- switch(field->key_type()) {
- /* TINY */
- case HA_KEYTYPE_BINARY:
- max_value = 0xFFULL;
- break;
- case HA_KEYTYPE_INT8:
- max_value = 0x7FULL;
- break;
- /* SHORT */
- case HA_KEYTYPE_USHORT_INT:
- max_value = 0xFFFFULL;
- break;
- case HA_KEYTYPE_SHORT_INT:
- max_value = 0x7FFFULL;
- break;
- /* MEDIUM */
- case HA_KEYTYPE_UINT24:
- max_value = 0xFFFFFFULL;
- break;
- case HA_KEYTYPE_INT24:
- max_value = 0x7FFFFFULL;
- break;
- /* LONG */
- case HA_KEYTYPE_ULONG_INT:
- max_value = 0xFFFFFFFFULL;
- break;
- case HA_KEYTYPE_LONG_INT:
- max_value = 0x7FFFFFFFULL;
- break;
- /* BIG */
- case HA_KEYTYPE_ULONGLONG:
- max_value = 0xFFFFFFFFFFFFFFFFULL;
- break;
- case HA_KEYTYPE_LONGLONG:
- max_value = 0x7FFFFFFFFFFFFFFFULL;
- break;
- case HA_KEYTYPE_FLOAT:
- /* We use the maximum as per IEEE754-2008 standard, 2^24 */
- max_value = 0x1000000ULL;
- break;
- case HA_KEYTYPE_DOUBLE:
- /* We use the maximum as per IEEE754-2008 standard, 2^53 */
- max_value = 0x20000000000000ULL;
- break;
- default:
- ut_error;
- }
-
- return(max_value);
-}
-
-/********************************************************************//**
This special handling is really to overcome the limitations of MySQL's
binlogging. We need to eliminate the non-determinism that will arise in
INSERT ... SELECT type of statements, since MySQL binlog only stores the
@@ -4729,11 +5076,17 @@ no_commit:
prebuilt->autoinc_error = DB_SUCCESS;
if ((error = update_auto_increment())) {
-
/* We don't want to mask autoinc overflow errors. */
- if (prebuilt->autoinc_error != DB_SUCCESS) {
- error = (int) prebuilt->autoinc_error;
+ /* Handle the case where the AUTOINC sub-system
+ failed during initialization. */
+ if (prebuilt->autoinc_error == DB_UNSUPPORTED) {
+ error_result = ER_AUTOINC_READ_FAILED;
+ /* Set the error message to report too. */
+ my_error(ER_AUTOINC_READ_FAILED, MYF(0));
+ goto func_exit;
+ } else if (prebuilt->autoinc_error != DB_SUCCESS) {
+ error = (int) prebuilt->autoinc_error;
goto report_error;
}
@@ -5218,7 +5571,7 @@ ha_innobase::unlock_row(void)
case ROW_READ_WITH_LOCKS:
if (!srv_locks_unsafe_for_binlog
&& prebuilt->trx->isolation_level
- != TRX_ISO_READ_COMMITTED) {
+ > TRX_ISO_READ_COMMITTED) {
break;
}
/* fall through */
@@ -5257,7 +5610,7 @@ ha_innobase::try_semi_consistent_read(bool yes)
if (yes
&& (srv_locks_unsafe_for_binlog
- || prebuilt->trx->isolation_level == TRX_ISO_READ_COMMITTED)) {
+ || prebuilt->trx->isolation_level <= TRX_ISO_READ_COMMITTED)) {
prebuilt->row_read_type = ROW_READ_TRY_SEMI_CONSISTENT;
} else {
prebuilt->row_read_type = ROW_READ_WITH_LOCKS;
@@ -5444,6 +5797,9 @@ ha_innobase::index_read(
prebuilt->index_usable = FALSE;
DBUG_RETURN(HA_ERR_CRASHED);
}
+ if (UNIV_UNLIKELY(!prebuilt->index_usable)) {
+ DBUG_RETURN(HA_ERR_TABLE_DEF_CHANGED);
+ }
/* Note that if the index for which the search template is built is not
necessarily prebuilt->index, but can also be the clustered index */
@@ -5563,14 +5919,30 @@ ha_innobase::innobase_get_index(
DBUG_ENTER("innobase_get_index");
ha_statistic_increment(&SSV::ha_read_key_count);
- ut_ad(user_thd == ha_thd());
- ut_a(prebuilt->trx == thd_to_trx(user_thd));
-
if (keynr != MAX_KEY && table->s->keys > 0) {
key = table->key_info + keynr;
- index = dict_table_get_index_on_name(prebuilt->table,
- key->name);
+ index = innobase_index_lookup(share, keynr);
+
+ if (index) {
+ ut_a(ut_strcmp(index->name, key->name) == 0);
+ } else {
+ /* Can't find index with keynr in the translation
+ table. Only print message if the index translation
+ table exists */
+ if (share->idx_trans_tbl.index_mapping) {
+ sql_print_error("InnoDB could not find "
+ "index %s key no %u for "
+ "table %s through its "
+ "index translation table",
+ key ? key->name : "NULL",
+ keynr,
+ prebuilt->table->name);
+ }
+
+ index = dict_table_get_index_on_name(prebuilt->table,
+ key->name);
+ }
} else {
index = dict_table_get_first_index(prebuilt->table);
}
@@ -5636,7 +6008,7 @@ ha_innobase::change_active_index(
dtuple_set_n_fields(prebuilt->search_tuple, prebuilt->index->n_fields);
dict_index_copy_types(prebuilt->search_tuple, prebuilt->index,
- prebuilt->index->n_fields);
+ prebuilt->index->n_fields);
/* MySQL changes the active index for a handle also during some
queries, for example SELECT MAX(a), SUM(a) first retrieves the MAX()
@@ -6071,7 +6443,22 @@ create_table_def(
continue;
col_type = get_innobase_type_from_mysql_type(&unsigned_type,
- field);
+ field);
+
+ if (!col_type) {
+ push_warning_printf(
+ (THD*) trx->mysql_thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_CANT_CREATE_TABLE,
+ "Error creating table '%s' with "
+ "column '%s'. Please check its "
+ "column type and try to re-create "
+ "the table with an appropriate "
+ "column type.",
+ table->name, (char*) field->field_name);
+ goto err_col;
+ }
+
if (field->null_ptr) {
nulls_allowed = 0;
} else {
@@ -6129,7 +6516,7 @@ create_table_def(
if (dict_col_name_is_reserved(field->field_name)){
my_error(ER_WRONG_COLUMN_NAME, MYF(0),
field->field_name);
-
+err_col:
dict_mem_table_free(table);
trx_commit_for_mysql(trx);
@@ -6152,9 +6539,11 @@ create_table_def(
if (error == DB_DUPLICATE_KEY) {
char buf[100];
- innobase_convert_identifier(buf, sizeof buf,
- table_name, strlen(table_name),
- trx->mysql_thd, TRUE);
+ char* buf_end = innobase_convert_identifier(
+ buf, sizeof buf - 1, table_name, strlen(table_name),
+ trx->mysql_thd, TRUE);
+
+ *buf_end = '\0';
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), buf);
}
@@ -6527,6 +6916,9 @@ ha_innobase::create(
/* Cache the value of innodb_file_format, in case it is
modified by another thread while the table is being created. */
const ulint file_format = srv_file_format;
+ const char* stmt;
+ size_t stmt_len;
+ enum row_type row_type;
DBUG_ENTER("ha_innobase::create");
@@ -6647,94 +7039,94 @@ ha_innobase::create(
}
}
- if (create_info->used_fields & HA_CREATE_USED_ROW_FORMAT) {
- if (flags) {
- /* KEY_BLOCK_SIZE was specified. */
- if (form->s->row_type != ROW_TYPE_COMPRESSED) {
- /* ROW_FORMAT other than COMPRESSED
- ignores KEY_BLOCK_SIZE. It does not
- make sense to reject conflicting
- KEY_BLOCK_SIZE and ROW_FORMAT, because
- such combinations can be obtained
- with ALTER TABLE anyway. */
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ignoring KEY_BLOCK_SIZE=%lu"
- " unless ROW_FORMAT=COMPRESSED.",
- create_info->key_block_size);
- flags = 0;
- }
- } else {
- /* No KEY_BLOCK_SIZE */
- if (form->s->row_type == ROW_TYPE_COMPRESSED) {
- /* ROW_FORMAT=COMPRESSED without
- KEY_BLOCK_SIZE implies half the
- maximum KEY_BLOCK_SIZE. */
- flags = (DICT_TF_ZSSIZE_MAX - 1)
- << DICT_TF_ZSSIZE_SHIFT
- | DICT_TF_COMPACT
- | DICT_TF_FORMAT_ZIP
- << DICT_TF_FORMAT_SHIFT;
+ row_type = form->s->row_type;
+
+ if (flags) {
+ /* KEY_BLOCK_SIZE was specified. */
+ if (!(create_info->used_fields & HA_CREATE_USED_ROW_FORMAT)) {
+ /* ROW_FORMAT was not specified;
+ default to ROW_FORMAT=COMPRESSED */
+ row_type = ROW_TYPE_COMPRESSED;
+ } else if (row_type != ROW_TYPE_COMPRESSED) {
+ /* ROW_FORMAT other than COMPRESSED
+ ignores KEY_BLOCK_SIZE. It does not
+ make sense to reject conflicting
+ KEY_BLOCK_SIZE and ROW_FORMAT, because
+ such combinations can be obtained
+ with ALTER TABLE anyway. */
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ignoring KEY_BLOCK_SIZE=%lu"
+ " unless ROW_FORMAT=COMPRESSED.",
+ create_info->key_block_size);
+ flags = 0;
+ }
+ } else {
+ /* No KEY_BLOCK_SIZE */
+ if (row_type == ROW_TYPE_COMPRESSED) {
+ /* ROW_FORMAT=COMPRESSED without
+ KEY_BLOCK_SIZE implies half the
+ maximum KEY_BLOCK_SIZE. */
+ flags = (DICT_TF_ZSSIZE_MAX - 1)
+ << DICT_TF_ZSSIZE_SHIFT
+ | DICT_TF_COMPACT
+ | DICT_TF_FORMAT_ZIP
+ << DICT_TF_FORMAT_SHIFT;
//#if DICT_TF_ZSSIZE_MAX < 1
//# error "DICT_TF_ZSSIZE_MAX < 1"
//#endif
- }
}
+ }
- switch (form->s->row_type) {
- const char* row_format_name;
- case ROW_TYPE_REDUNDANT:
- break;
- case ROW_TYPE_COMPRESSED:
- case ROW_TYPE_DYNAMIC:
- row_format_name
- = form->s->row_type == ROW_TYPE_COMPRESSED
- ? "COMPRESSED"
- : "DYNAMIC";
-
- if (!srv_file_per_table) {
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ROW_FORMAT=%s"
- " requires innodb_file_per_table.",
- row_format_name);
- } else if (file_format < DICT_TF_FORMAT_ZIP) {
- push_warning_printf(
- thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: ROW_FORMAT=%s"
- " requires innodb_file_format >"
- " Antelope.",
- row_format_name);
- } else {
- flags |= DICT_TF_COMPACT
- | (DICT_TF_FORMAT_ZIP
- << DICT_TF_FORMAT_SHIFT);
- break;
- }
+ switch (row_type) {
+ const char* row_format_name;
+ case ROW_TYPE_REDUNDANT:
+ break;
+ case ROW_TYPE_COMPRESSED:
+ case ROW_TYPE_DYNAMIC:
+ row_format_name
+ = row_type == ROW_TYPE_COMPRESSED
+ ? "COMPRESSED"
+ : "DYNAMIC";
- /* fall through */
- case ROW_TYPE_NOT_USED:
- case ROW_TYPE_FIXED:
- default:
- push_warning(thd,
- MYSQL_ERROR::WARN_LEVEL_WARN,
- ER_ILLEGAL_HA_CREATE_OPTION,
- "InnoDB: assuming ROW_FORMAT=COMPACT.");
- case ROW_TYPE_DEFAULT:
- case ROW_TYPE_COMPACT:
- flags = DICT_TF_COMPACT;
+ if (!srv_file_per_table) {
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ROW_FORMAT=%s"
+ " requires innodb_file_per_table.",
+ row_format_name);
+ } else if (file_format < DICT_TF_FORMAT_ZIP) {
+ push_warning_printf(
+ thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: ROW_FORMAT=%s"
+ " requires innodb_file_format >"
+ " Antelope.",
+ row_format_name);
+ } else {
+ flags |= DICT_TF_COMPACT
+ | (DICT_TF_FORMAT_ZIP
+ << DICT_TF_FORMAT_SHIFT);
break;
}
- } else if (!flags) {
- /* No KEY_BLOCK_SIZE or ROW_FORMAT specified:
- use ROW_FORMAT=COMPACT by default. */
+
+ /* fall through */
+ case ROW_TYPE_NOT_USED:
+ case ROW_TYPE_FIXED:
+ default:
+ push_warning(thd,
+ MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_ILLEGAL_HA_CREATE_OPTION,
+ "InnoDB: assuming ROW_FORMAT=COMPACT.");
+ case ROW_TYPE_DEFAULT:
+ case ROW_TYPE_COMPACT:
flags = DICT_TF_COMPACT;
+ break;
}
/* Look for a primary key */
@@ -6743,7 +7135,7 @@ ha_innobase::create(
(int) form->s->primary_key :
-1);
- /* Our function row_get_mysql_key_number_for_index assumes
+ /* Our function innobase_get_mysql_key_number_for_index assumes
the primary key is always number 0, if it exists */
ut_a(primary_key_no == -1 || primary_key_no == 0);
@@ -6756,6 +7148,10 @@ ha_innobase::create(
goto cleanup;
}
+ if (create_info->options & HA_LEX_CREATE_TMP_TABLE) {
+ flags |= DICT_TF2_TEMPORARY << DICT_TF2_SHIFT;
+ }
+
error = create_table_def(trx, form, norm_name,
create_info->options & HA_LEX_CREATE_TMP_TABLE ? name2 : NULL,
flags);
@@ -6799,9 +7195,11 @@ ha_innobase::create(
}
}
- if (*trx->mysql_query_str) {
- error = row_table_add_foreign_constraints(trx,
- *trx->mysql_query_str, norm_name,
+ stmt = innobase_get_stmt(thd, &stmt_len);
+
+ if (stmt) {
+ error = row_table_add_foreign_constraints(
+ trx, stmt, stmt_len, norm_name,
create_info->options & HA_LEX_CREATE_TMP_TABLE);
error = convert_error_code_to_mysql(error, flags, NULL);
@@ -7094,7 +7492,6 @@ innobase_drop_database(
/* In the Windows plugin, thd = current_thd is always NULL */
trx = trx_allocate_for_mysql();
trx->mysql_thd = NULL;
- trx->mysql_query_str = NULL;
#else
trx = innobase_trx_allocate(thd);
#endif
@@ -7287,10 +7684,19 @@ ha_innobase::records_in_range(
key = table->key_info + active_index;
- index = dict_table_get_index_on_name(prebuilt->table, key->name);
+ index = innobase_get_index(keynr);
- /* MySQL knows about this index and so we must be able to find it.*/
- ut_a(index);
+ /* There exists possibility of not being able to find requested
+ index due to inconsistency between MySQL and InoDB dictionary info.
+ Necessary message should have been printed in innobase_get_index() */
+ if (UNIV_UNLIKELY(!index)) {
+ n_rows = HA_POS_ERROR;
+ goto func_exit;
+ }
+ if (UNIV_UNLIKELY(!row_merge_is_index_usable(prebuilt->trx, index))) {
+ n_rows = HA_ERR_TABLE_DEF_CHANGED;
+ goto func_exit;
+ }
heap = mem_heap_create(2 * (key->key_parts * sizeof(dfield_t)
+ sizeof(dtuple_t)));
@@ -7335,6 +7741,7 @@ ha_innobase::records_in_range(
mem_heap_free(heap);
+func_exit:
my_free(key_val_buff2, MYF(0));
prebuilt->trx->op_info = (char*)"";
@@ -7469,6 +7876,86 @@ ha_innobase::is_corrupt() const
}
/*********************************************************************//**
+Calculates the key number used inside MySQL for an Innobase index. We will
+first check the "index translation table" for a match of the index to get
+the index number. If there does not exist an "index translation table",
+or not able to find the index in the translation table, then we will fall back
+to the traditional way of looping through dict_index_t list to find a
+match. In this case, we have to take into account if we generated a
+default clustered index for the table
+@return the key number used inside MySQL */
+static
+unsigned int
+innobase_get_mysql_key_number_for_index(
+/*====================================*/
+ INNOBASE_SHARE* share, /*!< in: share structure for index
+ translation table. */
+ const TABLE* table, /*!< in: table in MySQL data
+ dictionary */
+ dict_table_t* ib_table,/*!< in: table in Innodb data
+ dictionary */
+ const dict_index_t* index) /*!< in: index */
+{
+ const dict_index_t* ind;
+ unsigned int i;
+
+ ut_ad(index);
+ ut_ad(ib_table);
+ ut_ad(table);
+ ut_ad(share);
+
+ /* If index does not belong to the table of share structure. Search
+ index->table instead */
+ if (index->table != ib_table) {
+ i = 0;
+ ind = dict_table_get_first_index(index->table);
+
+ while (index != ind) {
+ ind = dict_table_get_next_index(ind);
+ i++;
+ }
+
+ if (row_table_got_default_clust_index(index->table)) {
+ ut_a(i > 0);
+ i--;
+ }
+
+ return(i);
+ }
+
+ /* If index translation table exists, we will first check
+ the index through index translation table for a match. */
+ if (share->idx_trans_tbl.index_mapping) {
+ for (i = 0; i < share->idx_trans_tbl.index_count; i++) {
+ if (share->idx_trans_tbl.index_mapping[i] == index) {
+ return(i);
+ }
+ }
+
+ /* Print an error message if we cannot find the index
+ ** in the "index translation table". */
+ sql_print_error("Cannot find index %s in InnoDB index "
+ "translation table.", index->name);
+ }
+
+ /* If we do not have an "index translation table", or not able
+ to find the index in the translation table, we'll directly find
+ matching index in the dict_index_t list */
+ for (i = 0; i < table->s->keys; i++) {
+ ind = dict_table_get_index_on_name(
+ ib_table, table->key_info[i].name);
+
+ if (index == ind) {
+ return(i);
+ }
+ }
+
+ sql_print_error("Cannot find matching index number for index %s "
+ "in InnoDB index list.", index->name);
+
+ return(0);
+}
+/*********************************************************************//**
Returns statistics information of the table to the MySQL interpreter,
in various fields of the handle object. */
UNIV_INTERN
@@ -7486,6 +7973,7 @@ ha_innobase::info(
char path[FN_REFLEN];
os_file_stat_t stat_info;
+
DBUG_ENTER("info");
/* If we are forcing recovery at a high level, we will suppress
@@ -7524,9 +8012,30 @@ ha_innobase::info(
/* In sql_show we call with this flag: update
then statistics so that they are up-to-date */
+ if (srv_use_sys_stats_table
+ && thd_sql_command(user_thd) == SQLCOM_ANALYZE) {
+ /* If the indexes on the table don't have enough rows in SYS_STATS system table, */
+ /* they need to be created. */
+ dict_index_t* index;
+
+ prebuilt->trx->op_info = "confirming rows of SYS_STATS to store statistics";
+
+ ut_a(prebuilt->trx->conc_state == TRX_NOT_STARTED);
+
+ for (index = dict_table_get_first_index(ib_table);
+ index != NULL;
+ index = dict_table_get_next_index(index)) {
+ row_insert_stats_for_mysql(index, prebuilt->trx);
+ innobase_commit_low(prebuilt->trx);
+ }
+
+ ut_a(prebuilt->trx->conc_state == TRX_NOT_STARTED);
+ }
+
prebuilt->trx->op_info = "updating table statistics";
- dict_update_statistics(ib_table);
+ dict_update_statistics(ib_table,
+ (thd_sql_command(user_thd) == SQLCOM_ANALYZE)?TRUE:FALSE);
prebuilt->trx->op_info = "returning various info to MySQL";
}
@@ -7649,13 +8158,29 @@ ha_innobase::info(
}
if (flag & HA_STATUS_CONST) {
- index = dict_table_get_first_index(ib_table);
+ /* Verify the number of index in InnoDB and MySQL
+ matches up. If prebuilt->clust_index_was_generated
+ holds, InnoDB defines GEN_CLUST_INDEX internally */
+ ulint num_innodb_index = UT_LIST_GET_LEN(ib_table->indexes)
+ - prebuilt->clust_index_was_generated;
- if (prebuilt->clust_index_was_generated) {
- index = dict_table_get_next_index(index);
+ if (table->s->keys != num_innodb_index) {
+ sql_print_error("Table %s contains %lu "
+ "indexes inside InnoDB, which "
+ "is different from the number of "
+ "indexes %u defined in the MySQL ",
+ ib_table->name, num_innodb_index,
+ table->s->keys);
}
for (i = 0; i < table->s->keys; i++) {
+ /* We could get index quickly through internal
+ index mapping with the index translation table.
+ The identity of index (match up index name with
+ that of table->key_info[i]) is already verified in
+ innobase_get_index(). */
+ index = innobase_get_index(i);
+
if (index == NULL) {
sql_print_error("Table %s contains fewer "
"indexes inside InnoDB than "
@@ -7684,6 +8209,8 @@ ha_innobase::info(
break;
}
+ dict_index_stat_mutex_enter(index);
+
if (index->stat_n_diff_key_vals[j + 1] == 0) {
rec_per_key = stats.records;
@@ -7692,6 +8219,8 @@ ha_innobase::info(
index->stat_n_diff_key_vals[j + 1]);
}
+ dict_index_stat_mutex_exit(index);
+
/* Since MySQL seems to favor table scans
too much over index searches, we pretend
index selectivity is 2 times better than
@@ -7707,8 +8236,6 @@ ha_innobase::info(
rec_per_key >= ~(ulong) 0 ? ~(ulong) 0 :
(ulong) rec_per_key;
}
-
- index = dict_table_get_next_index(index);
}
}
@@ -7721,8 +8248,8 @@ ha_innobase::info(
err_index = trx_get_error_info(prebuilt->trx);
if (err_index) {
- errkey = (unsigned int)
- row_get_mysql_key_number_for_index(err_index);
+ errkey = innobase_get_mysql_key_number_for_index(
+ share, table, ib_table, err_index);
} else {
errkey = (unsigned int) prebuilt->trx->error_key_num;
}
@@ -7752,15 +8279,9 @@ ha_innobase::analyze(
return(HA_ADMIN_CORRUPT);
}
- /* Serialize ANALYZE TABLE inside InnoDB, see
- Bug#38996 Race condition in ANALYZE TABLE */
- pthread_mutex_lock(&analyze_mutex);
-
/* Simply call ::info() with all the flags */
info(HA_STATUS_TIME | HA_STATUS_CONST | HA_STATUS_VARIABLE);
- pthread_mutex_unlock(&analyze_mutex);
-
if (share->ib_table->is_corrupt) {
return(HA_ADMIN_CORRUPT);
}
@@ -7794,8 +8315,13 @@ ha_innobase::check(
HA_CHECK_OPT* check_opt) /*!< in: check options, currently
ignored */
{
- ulint ret;
+ dict_index_t* index;
+ ulint n_rows;
+ ulint n_rows_in_table = ULINT_UNDEFINED;
+ ibool is_ok = TRUE;
+ ulint old_isolation_level;
+ DBUG_ENTER("ha_innobase::check");
DBUG_ASSERT(thd == ha_thd());
ut_a(prebuilt->trx);
ut_a(prebuilt->trx->magic_n == TRX_MAGIC_N);
@@ -7808,21 +8334,144 @@ ha_innobase::check(
build_template(prebuilt, NULL, table, this, ROW_MYSQL_WHOLE_ROW);
}
- ret = row_check_table_for_mysql(prebuilt);
+ if (prebuilt->table->ibd_file_missing) {
+ sql_print_error("InnoDB: Error:\n"
+ "InnoDB: MySQL is trying to use a table handle"
+ " but the .ibd file for\n"
+ "InnoDB: table %s does not exist.\n"
+ "InnoDB: Have you deleted the .ibd file"
+ " from the database directory under\n"
+ "InnoDB: the MySQL datadir, or have you"
+ " used DISCARD TABLESPACE?\n"
+ "InnoDB: Please refer to\n"
+ "InnoDB: " REFMAN "innodb-troubleshooting.html\n"
+ "InnoDB: how you can resolve the problem.\n",
+ prebuilt->table->name);
+ DBUG_RETURN(HA_ADMIN_CORRUPT);
+ }
+
+ prebuilt->trx->op_info = "checking table";
- if (ret != DB_INTERRUPTED && share->ib_table->is_corrupt) {
- return(HA_ADMIN_CORRUPT);
+ old_isolation_level = prebuilt->trx->isolation_level;
+
+ /* We must run the index record counts at an isolation level
+ >= READ COMMITTED, because a dirty read can see a wrong number
+ of records in some index; to play safe, we use always
+ REPEATABLE READ here */
+
+ prebuilt->trx->isolation_level = TRX_ISO_REPEATABLE_READ;
+
+ /* Enlarge the fatal lock wait timeout during CHECK TABLE. */
+ mutex_enter(&kernel_mutex);
+ srv_fatal_semaphore_wait_threshold += 7200; /* 2 hours */
+ mutex_exit(&kernel_mutex);
+
+ for (index = dict_table_get_first_index(prebuilt->table);
+ index != NULL;
+ index = dict_table_get_next_index(index)) {
+#if 0
+ fputs("Validating index ", stderr);
+ ut_print_name(stderr, trx, FALSE, index->name);
+ putc('\n', stderr);
+#endif
+
+ if (!btr_validate_index(index, prebuilt->trx)) {
+ is_ok = FALSE;
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_NOT_KEYFILE,
+ "InnoDB: The B-tree of"
+ " index '%-.200s' is corrupted.",
+ index->name);
+ continue;
+ }
+
+ /* Instead of invoking change_active_index(), set up
+ a dummy template for non-locking reads, disabling
+ access to the clustered index. */
+ prebuilt->index = index;
+
+ prebuilt->index_usable = row_merge_is_index_usable(
+ prebuilt->trx, prebuilt->index);
+
+ if (UNIV_UNLIKELY(!prebuilt->index_usable)) {
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ HA_ERR_TABLE_DEF_CHANGED,
+ "InnoDB: Insufficient history for"
+ " index '%-.200s'",
+ index->name);
+ continue;
+ }
+
+ prebuilt->sql_stat_start = TRUE;
+ prebuilt->template_type = ROW_MYSQL_DUMMY_TEMPLATE;
+ prebuilt->n_template = 0;
+ prebuilt->need_to_access_clustered = FALSE;
+
+ dtuple_set_n_fields(prebuilt->search_tuple, 0);
+
+ prebuilt->select_lock_type = LOCK_NONE;
+
+ if (!row_check_index_for_mysql(prebuilt, index, &n_rows)) {
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_NOT_KEYFILE,
+ "InnoDB: The B-tree of"
+ " index '%-.200s' is corrupted.",
+ index->name);
+ is_ok = FALSE;
+ }
+
+ if (thd_killed(user_thd)) {
+ break;
+ }
+
+#if 0
+ fprintf(stderr, "%lu entries in index %s\n", n_rows,
+ index->name);
+#endif
+
+ if (index == dict_table_get_first_index(prebuilt->table)) {
+ n_rows_in_table = n_rows;
+ } else if (n_rows != n_rows_in_table) {
+ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_NOT_KEYFILE,
+ "InnoDB: Index '%-.200s'"
+ " contains %lu entries,"
+ " should be %lu.",
+ index->name,
+ (ulong) n_rows,
+ (ulong) n_rows_in_table);
+ is_ok = FALSE;
+ }
}
- switch (ret) {
- case DB_SUCCESS:
- return(HA_ADMIN_OK);
- case DB_INTERRUPTED:
+ /* Restore the original isolation level */
+ prebuilt->trx->isolation_level = old_isolation_level;
+
+ /* We validate also the whole adaptive hash index for all tables
+ at every CHECK TABLE */
+
+ if (!btr_search_validate()) {
+ push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_NOT_KEYFILE,
+ "InnoDB: The adaptive hash index is corrupted.");
+ is_ok = FALSE;
+ }
+
+ /* Restore the fatal lock wait timeout after CHECK TABLE. */
+ mutex_enter(&kernel_mutex);
+ srv_fatal_semaphore_wait_threshold -= 7200; /* 2 hours */
+ mutex_exit(&kernel_mutex);
+
+ prebuilt->trx->op_info = "";
+ if (thd_killed(user_thd)) {
my_error(ER_QUERY_INTERRUPTED, MYF(0));
- return(-1);
- default:
+ }
+
+ if (share->ib_table->is_corrupt) {
return(HA_ADMIN_CORRUPT);
}
+
+ DBUG_RETURN(is_ok ? HA_ADMIN_OK : HA_ADMIN_CORRUPT);
}
/*************************************************************//**
@@ -8496,7 +9145,9 @@ ha_innobase::external_lock(
if (trx->n_mysql_tables_in_use == 0) {
#ifdef EXTENDED_SLOWLOG
- increment_thd_innodb_stats(thd, trx->io_reads,
+ increment_thd_innodb_stats(thd,
+ (unsigned long long) ut_conv_dulint_to_longlong(trx->id),
+ trx->io_reads,
trx->io_read,
trx->io_reads_wait_timer,
trx->lock_que_wait_timer,
@@ -8676,8 +9327,8 @@ innodb_show_status(
mutex_enter(&srv_monitor_file_mutex);
rewind(srv_monitor_file);
- srv_printf_innodb_monitor(srv_monitor_file,
- &trx_list_start, &trx_list_end);
+ srv_printf_innodb_monitor(srv_monitor_file, FALSE,
+ &trx_list_start, &trx_list_end);
flen = ftell(srv_monitor_file);
os_file_set_eof(srv_monitor_file);
@@ -8734,19 +9385,25 @@ innodb_show_status(
}
/************************************************************************//**
-Implements the SHOW MUTEX STATUS command. . */
+Implements the SHOW MUTEX STATUS command.
+@return TRUE on failure, FALSE on success. */
static
bool
innodb_mutex_show_status(
/*=====================*/
- handlerton* hton, /*!< in: the innodb handlerton */
+ handlerton* hton, /*!< in: the innodb handlerton */
THD* thd, /*!< in: the MySQL query thread of the
caller */
- stat_print_fn* stat_print)
+ stat_print_fn* stat_print) /*!< in: function for printing
+ statistics */
{
char buf1[IO_SIZE], buf2[IO_SIZE];
mutex_t* mutex;
rw_lock_t* lock;
+ ulint block_mutex_oswait_count = 0;
+ ulint block_lock_oswait_count = 0;
+ mutex_t* block_mutex = NULL;
+ rw_lock_t* block_lock = NULL;
#ifdef UNIV_DEBUG
ulint rw_lock_count= 0;
ulint rw_lock_count_spin_loop= 0;
@@ -8761,12 +9418,16 @@ innodb_mutex_show_status(
mutex_enter(&mutex_list_mutex);
- mutex = UT_LIST_GET_FIRST(mutex_list);
+ for (mutex = UT_LIST_GET_FIRST(mutex_list); mutex != NULL;
+ mutex = UT_LIST_GET_NEXT(list, mutex)) {
+ if (mutex->count_os_wait == 0) {
+ continue;
+ }
- while (mutex != NULL) {
- if (mutex->count_os_wait == 0
- || buf_pool_is_block_mutex(mutex)) {
- goto next_mutex;
+ if (buf_pool_is_block_mutex(mutex)) {
+ block_mutex = mutex;
+ block_mutex_oswait_count += mutex->count_os_wait;
+ continue;
}
#ifdef UNIV_DEBUG
if (mutex->mutex_type != 1) {
@@ -8793,8 +9454,7 @@ innodb_mutex_show_status(
DBUG_RETURN(1);
}
}
- }
- else {
+ } else {
rw_lock_count += mutex->count_using;
rw_lock_count_spin_loop += mutex->count_spin_loop;
rw_lock_count_spin_rounds += mutex->count_spin_rounds;
@@ -8806,7 +9466,7 @@ innodb_mutex_show_status(
buf1len= (uint) my_snprintf(buf1, sizeof(buf1), "%s",
mutex->cmutex_name);
buf2len= (uint) my_snprintf(buf2, sizeof(buf2), "os_waits=%lu",
- mutex->count_os_wait);
+ (ulong) mutex->count_os_wait);
if (stat_print(thd, innobase_hton_name,
hton_name_len, buf1, buf1len,
@@ -8815,45 +9475,81 @@ innodb_mutex_show_status(
DBUG_RETURN(1);
}
#endif /* UNIV_DEBUG */
+ }
+
+ if (block_mutex) {
+ buf1len = (uint) my_snprintf(buf1, sizeof buf1,
+ "combined %s",
+ block_mutex->cmutex_name);
+ buf2len = (uint) my_snprintf(buf2, sizeof buf2,
+ "os_waits=%lu",
+ (ulong) block_mutex_oswait_count);
-next_mutex:
- mutex = UT_LIST_GET_NEXT(list, mutex);
+ if (stat_print(thd, innobase_hton_name,
+ hton_name_len, buf1, buf1len,
+ buf2, buf2len)) {
+ mutex_exit(&mutex_list_mutex);
+ DBUG_RETURN(1);
+ }
}
mutex_exit(&mutex_list_mutex);
mutex_enter(&rw_lock_list_mutex);
- lock = UT_LIST_GET_FIRST(rw_lock_list);
-
- while (lock != NULL) {
- if (lock->count_os_wait
- && !buf_pool_is_block_lock(lock)) {
- buf1len= my_snprintf(buf1, sizeof(buf1), "%s",
- lock->lock_name);
- buf2len= my_snprintf(buf2, sizeof(buf2),
- "os_waits=%lu", lock->count_os_wait);
-
- if (stat_print(thd, innobase_hton_name,
- hton_name_len, buf1, buf1len,
- buf2, buf2len)) {
- mutex_exit(&rw_lock_list_mutex);
- DBUG_RETURN(1);
- }
+ for (lock = UT_LIST_GET_FIRST(rw_lock_list); lock != NULL;
+ lock = UT_LIST_GET_NEXT(list, lock)) {
+ if (lock->count_os_wait == 0) {
+ continue;
+ }
+
+ if (buf_pool_is_block_lock(lock)) {
+ block_lock = lock;
+ block_lock_oswait_count += lock->count_os_wait;
+ continue;
+ }
+
+ buf1len = my_snprintf(buf1, sizeof buf1, "%s",
+ lock->lock_name);
+ buf2len = my_snprintf(buf2, sizeof buf2, "os_waits=%lu",
+ (ulong) lock->count_os_wait);
+
+ if (stat_print(thd, innobase_hton_name,
+ hton_name_len, buf1, buf1len,
+ buf2, buf2len)) {
+ mutex_exit(&rw_lock_list_mutex);
+ DBUG_RETURN(1);
+ }
+ }
+
+ if (block_lock) {
+ buf1len = (uint) my_snprintf(buf1, sizeof buf1,
+ "combined %s",
+ block_lock->lock_name);
+ buf2len = (uint) my_snprintf(buf2, sizeof buf2,
+ "os_waits=%lu",
+ (ulong) block_lock_oswait_count);
+
+ if (stat_print(thd, innobase_hton_name,
+ hton_name_len, buf1, buf1len,
+ buf2, buf2len)) {
+ mutex_exit(&rw_lock_list_mutex);
+ DBUG_RETURN(1);
}
- lock = UT_LIST_GET_NEXT(list, lock);
}
mutex_exit(&rw_lock_list_mutex);
#ifdef UNIV_DEBUG
- buf2len= my_snprintf(buf2, sizeof(buf2),
- "count=%lu, spin_waits=%lu, spin_rounds=%lu, "
- "os_waits=%lu, os_yields=%lu, os_wait_times=%lu",
- rw_lock_count, rw_lock_count_spin_loop,
- rw_lock_count_spin_rounds,
- rw_lock_count_os_wait, rw_lock_count_os_yield,
- (ulong) (rw_lock_wait_time/1000));
+ buf2len = my_snprintf(buf2, sizeof buf2,
+ "count=%lu, spin_waits=%lu, spin_rounds=%lu, "
+ "os_waits=%lu, os_yields=%lu, os_wait_times=%lu",
+ (ulong) rw_lock_count,
+ (ulong) rw_lock_count_spin_loop,
+ (ulong) rw_lock_count_spin_rounds,
+ (ulong) rw_lock_count_os_wait,
+ (ulong) rw_lock_count_os_yield,
+ (ulong) (rw_lock_wait_time / 1000));
if (stat_print(thd, innobase_hton_name, hton_name_len,
STRING_WITH_LEN("rw_lock_mutexes"), buf2, buf2len)) {
@@ -8915,6 +9611,11 @@ static INNOBASE_SHARE* get_share(const char* table_name)
innobase_open_tables, fold, share);
thr_lock_init(&share->lock);
+
+ /* Index translation table initialization */
+ share->idx_trans_tbl.index_mapping = NULL;
+ share->idx_trans_tbl.index_count = 0;
+ share->idx_trans_tbl.array_size = 0;
}
share->use_count++;
@@ -8945,6 +9646,11 @@ static void free_share(INNOBASE_SHARE* share)
HASH_DELETE(INNOBASE_SHARE, table_name_hash,
innobase_open_tables, fold, share);
thr_lock_delete(&share->lock);
+
+ /* Free any memory from index translation table */
+ my_free(share->idx_trans_tbl.index_mapping,
+ MYF(MY_ALLOW_ZERO_PTR));
+
my_free(share, MYF(0));
/* TODO: invoke HASH_MIGRATE if innobase_open_tables
@@ -9047,7 +9753,7 @@ ha_innobase::store_lock(
isolation_level = trx->isolation_level;
if ((srv_locks_unsafe_for_binlog
- || isolation_level == TRX_ISO_READ_COMMITTED)
+ || isolation_level <= TRX_ISO_READ_COMMITTED)
&& isolation_level != TRX_ISO_SERIALIZABLE
&& (lock_type == TL_READ || lock_type == TL_READ_NO_INSERT)
&& (sql_command == SQLCOM_INSERT_SELECT
@@ -9179,7 +9885,10 @@ ha_innobase::innobase_get_autoinc(
*value = dict_table_autoinc_read(prebuilt->table);
/* It should have been initialized during open. */
- ut_a(*value != 0);
+ if (*value == 0) {
+ prebuilt->autoinc_error = DB_UNSUPPORTED;
+ dict_table_autoinc_unlock(prebuilt->table);
+ }
}
return(prebuilt->autoinc_error);
@@ -9795,33 +10504,60 @@ innobase_set_cursor_view(
(cursor_view_t*) curview);
}
+/*******************************************************************//**
+If col_name is not NULL, check whether the named column is being
+renamed in the table. If col_name is not provided, check
+whether any one of columns in the table is being renamed.
+@return true if the column is being renamed */
+static
+bool
+check_column_being_renamed(
+/*=======================*/
+ const TABLE* table, /*!< in: MySQL table */
+ const char* col_name) /*!< in: name of the column */
+{
+ uint k;
+ Field* field;
-/***********************************************************************
-Check whether any of the given columns is being renamed in the table. */
+ for (k = 0; k < table->s->fields; k++) {
+ field = table->field[k];
+
+ if (field->flags & FIELD_IS_RENAMED) {
+
+ /* If col_name is not provided, return
+ if the field is marked as being renamed. */
+ if (!col_name) {
+ return(true);
+ }
+
+ /* If col_name is provided, return only
+ if names match */
+ if (innobase_strcasecmp(field->field_name,
+ col_name) == 0) {
+ return(true);
+ }
+ }
+ }
+
+ return(false);
+}
+
+/*******************************************************************//**
+Check whether any of the given columns is being renamed in the table.
+@return true if any of col_names is being renamed in table */
static
bool
column_is_being_renamed(
/*====================*/
- /* out: true if any of col_names is
- being renamed in table */
- TABLE* table, /* in: MySQL table */
- uint n_cols, /* in: number of columns */
- const char** col_names) /* in: names of the columns */
+ TABLE* table, /*!< in: MySQL table */
+ uint n_cols, /*!< in: number of columns */
+ const char** col_names) /*!< in: names of the columns */
{
uint j;
- uint k;
- Field* field;
- const char* col_name;
for (j = 0; j < n_cols; j++) {
- col_name = col_names[j];
- for (k = 0; k < table->s->fields; k++) {
- field = table->field[k];
- if ((field->flags & FIELD_IS_RENAMED)
- && innobase_strcasecmp(field->field_name,
- col_name) == 0) {
- return(true);
- }
+ if (check_column_being_renamed(table, col_names[j])) {
+ return(true);
}
}
@@ -9912,18 +10648,13 @@ ha_innobase::check_if_incompatible_data(
DBUG_RETURN(COMPATIBLE_DATA_NO);
}
- /* Renaming column asynchronizes dictionary between mysqld and InnoDB...
- If not synchronized, treat as COMPATIBLE_DATA_NO
- until the bug http://bugs.mysql.com/47621 is fixed officialily */
- {
- uint i;
- for (i = 0; i < table->s->fields; i++) {
- if (table->field[i]->flags & FIELD_IN_ADD_INDEX
- && innobase_strcasecmp(table->field[i]->field_name,
- dict_table_get_col_name(prebuilt->table, i))) {
- DBUG_RETURN(COMPATIBLE_DATA_NO);
- }
- }
+ /* For column rename operation, MySQL does not supply enough
+ information (new column name etc.) for InnoDB to make appropriate
+ system metadata change. To avoid system metadata inconsistency,
+ currently we can just request a table rebuild/copy by returning
+ COMPATIBLE_DATA_NO */
+ if (check_column_being_renamed(table, NULL)) {
+ DBUG_RETURN(COMPATIBLE_DATA_NO);
}
/* Check if a column participating in a foreign key is being renamed.
@@ -10295,7 +11026,35 @@ innodb_old_blocks_pct_update(
}
/*************************************************************//**
-Check if it is a valid value of innodb_change_buffering. This function is
+Find the corresponding ibuf_use_t value that indexes into
+innobase_change_buffering_values[] array for the input
+change buffering option name.
+@return corresponding IBUF_USE_* value for the input variable
+name, or IBUF_USE_COUNT if not able to find a match */
+static
+ibuf_use_t
+innodb_find_change_buffering_value(
+/*===============================*/
+ const char* input_name) /*!< in: input change buffering
+ option name */
+{
+ ulint use;
+
+ for (use = 0; use < UT_ARR_SIZE(innobase_change_buffering_values);
+ use++) {
+ /* found a match */
+ if (!innobase_strcasecmp(
+ input_name, innobase_change_buffering_values[use])) {
+ return((ibuf_use_t)use);
+ }
+ }
+
+ /* Did not find any match */
+ return(IBUF_USE_COUNT);
+}
+
+/*************************************************************//**
+Check if it is a valid value of innodb_change_buffering. This function is
registered as a callback with MySQL.
@return 0 for valid innodb_change_buffering */
static
@@ -10319,19 +11078,22 @@ innodb_change_buffering_validate(
change_buffering_input = value->val_str(value, buff, &len);
if (change_buffering_input != NULL) {
- ulint use;
+ ibuf_use_t use;
- for (use = 0; use < UT_ARR_SIZE(innobase_change_buffering_values);
- use++) {
- if (!innobase_strcasecmp(
- change_buffering_input,
- innobase_change_buffering_values[use])) {
- *(ibuf_use_t*) save = (ibuf_use_t) use;
- return(0);
- }
+ use = innodb_find_change_buffering_value(
+ change_buffering_input);
+
+ if (use != IBUF_USE_COUNT) {
+ /* Find a matching change_buffering option value. */
+ *static_cast<const char**>(save) =
+ innobase_change_buffering_values[use];
+
+ return(0);
}
}
+ /* No corresponding change buffering option for user supplied
+ "change_buffering_input" */
return(1);
}
@@ -10342,21 +11104,27 @@ static
void
innodb_change_buffering_update(
/*===========================*/
- THD* thd, /*!< in: thread handle */
- struct st_mysql_sys_var* var, /*!< in: pointer to
- system variable */
- void* var_ptr, /*!< out: where the
- formal string goes */
- const void* save) /*!< in: immediate result
- from check function */
+ THD* thd, /*!< in: thread handle */
+ struct st_mysql_sys_var* var, /*!< in: pointer to
+ system variable */
+ void* var_ptr,/*!< out: where the
+ formal string goes */
+ const void* save) /*!< in: immediate result
+ from check function */
{
+ ibuf_use_t use;
+
ut_a(var_ptr != NULL);
ut_a(save != NULL);
- ut_a((*(ibuf_use_t*) save) < IBUF_USE_COUNT);
- ibuf_use = *(const ibuf_use_t*) save;
+ use = innodb_find_change_buffering_value(
+ *static_cast<const char*const*>(save));
- *(const char**) var_ptr = innobase_change_buffering_values[ibuf_use];
+ ut_a(use < IBUF_USE_COUNT);
+
+ ibuf_use = use;
+ *static_cast<const char**>(var_ptr) =
+ *static_cast<const char*const*>(save);
}
static int show_innodb_vars(THD *thd, SHOW_VAR *var, char *buff)
@@ -10453,15 +11221,15 @@ static MYSQL_SYSVAR_BOOL(extra_undoslots, innobase_extra_undoslots,
static MYSQL_SYSVAR_BOOL(fast_recovery, innobase_fast_recovery,
PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
- "Enable to use speed hack of recovery avoiding flush list sorting.",
- NULL, NULL, TRUE);
+ "obsolete option. affects nothing.",
+ NULL, NULL, FALSE);
static MYSQL_SYSVAR_BOOL(recovery_stats, innobase_recovery_stats,
PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
"Output statistics of recovery process after it.",
NULL, NULL, FALSE);
-static MYSQL_SYSVAR_ULONG(use_purge_thread, srv_use_purge_thread,
+static MYSQL_SYSVAR_ULINT(use_purge_thread, srv_use_purge_thread,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"Number of purge devoted threads. #### over 1 is EXPERIMENTAL ####",
NULL, NULL, 1, 0, 64, 0);
@@ -10616,12 +11384,20 @@ static MYSQL_SYSVAR_ULONG(stats_auto_update, srv_stats_auto_update,
"(except for ANALYZE TABLE command) 0:disable 1:enable",
NULL, NULL, 1, 0, 1, 0);
-static MYSQL_SYSVAR_ULONG(stats_update_need_lock, srv_stats_update_need_lock,
+static MYSQL_SYSVAR_ULINT(stats_update_need_lock, srv_stats_update_need_lock,
PLUGIN_VAR_RQCMDARG,
"Enable/Disable InnoDB's update statistics which needs to lock dictionary. "
"e.g. Data_free.",
NULL, NULL, 1, 0, 1, 0);
+static MYSQL_SYSVAR_BOOL(use_sys_stats_table, innobase_use_sys_stats_table,
+ PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
+ "Enable to use SYS_STATS system table to store statistics statically, "
+ "And avoids to calculate statistics at every first open of the tables. "
+ "This option may make the opportunities of update statistics less. "
+ "So you should use ANALYZE TABLE command intentionally.",
+ NULL, NULL, FALSE);
+
static MYSQL_SYSVAR_BOOL(adaptive_hash_index, btr_search_enabled,
PLUGIN_VAR_OPCMDARG,
"Enable InnoDB adaptive hash index (enabled by default). "
@@ -10647,7 +11423,12 @@ static MYSQL_SYSVAR_ULONG(autoextend_increment, srv_auto_extend_increment,
static MYSQL_SYSVAR_LONGLONG(buffer_pool_size, innobase_buffer_pool_size,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"The size of the memory buffer InnoDB uses to cache data and indexes of its tables.",
- NULL, NULL, 128*1024*1024L, 5*1024*1024L, LONGLONG_MAX, 1024*1024L);
+ NULL, NULL, 128*1024*1024L, 32*1024*1024L, LONGLONG_MAX, 1024*1024L);
+
+static MYSQL_SYSVAR_UINT(buffer_pool_shm_key, srv_buffer_pool_shm_key,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "[experimental] The key value of shared memory segment for the buffer pool. 0 means disable the feature (default).",
+ NULL, NULL, 0, 0, INT_MAX32, 0);
static MYSQL_SYSVAR_ULONG(commit_concurrency, innobase_commit_concurrency,
PLUGIN_VAR_RQCMDARG,
@@ -10747,6 +11528,11 @@ static MYSQL_SYSVAR_STR(data_file_path, innobase_data_file_path,
"Path to individual files and their sizes.",
NULL, NULL, NULL);
+static MYSQL_SYSVAR_STR(doublewrite_file, innobase_doublewrite_file,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Path to special datafile for doublewrite buffer. (default is "": not used) ### ONLY FOR EXPERTS!!! ###",
+ NULL, NULL, NULL);
+
static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"The AUTOINC lock modes supported by InnoDB: "
@@ -10771,13 +11557,13 @@ static MYSQL_SYSVAR_BOOL(use_sys_malloc, srv_use_sys_malloc,
static MYSQL_SYSVAR_STR(change_buffering, innobase_change_buffering,
PLUGIN_VAR_RQCMDARG,
"Buffer changes to reduce random access: "
- "OFF, ON, inserting, deleting, changing, or purging.",
+ "OFF, ON, none, inserts.",
innodb_change_buffering_validate,
- innodb_change_buffering_update, NULL);
+ innodb_change_buffering_update, "inserts");
static MYSQL_SYSVAR_ULONG(read_ahead_threshold, srv_read_ahead_threshold,
PLUGIN_VAR_RQCMDARG,
- "Number of pages that must be accessed sequentially for InnoDB to"
+ "Number of pages that must be accessed sequentially for InnoDB to "
"trigger a readahead.",
NULL, NULL, 56, 0, 64, 0);
@@ -10796,7 +11582,7 @@ static MYSQL_SYSVAR_ULONG(ibuf_accel_rate, srv_ibuf_accel_rate,
"Tunes amount of insert buffer processing of background, in addition to innodb_io_capacity. (in percentage)",
NULL, NULL, 100, 100, 999999999, 0);
-static MYSQL_SYSVAR_ULONG(checkpoint_age_target, srv_checkpoint_age_target,
+static MYSQL_SYSVAR_ULINT(checkpoint_age_target, srv_checkpoint_age_target,
PLUGIN_VAR_RQCMDARG,
"Control soft limit of checkpoint age. (0 : not control)",
NULL, NULL, 0, 0, ~0UL, 0);
@@ -10890,12 +11676,7 @@ static MYSQL_SYSVAR_ULONG(dict_size_limit, srv_dict_size_limit,
"Limit the allocated memory for dictionary cache. (0: unlimited)",
NULL, NULL, 0, 0, LONG_MAX, 0);
-static MYSQL_SYSVAR_ULONG(relax_table_creation, srv_relax_table_creation,
- PLUGIN_VAR_RQCMDARG,
- "Relax limitation of column size at table creation as builtin InnoDB.",
- NULL, NULL, 0, 0, 1, 0);
-
-static MYSQL_SYSVAR_ULONG(pass_corrupt_table, srv_pass_corrupt_table,
+static MYSQL_SYSVAR_ULINT(pass_corrupt_table, srv_pass_corrupt_table,
PLUGIN_VAR_RQCMDARG,
"Pass corruptions of user tables as 'corrupt table' instead of not crashing itself, "
"when used with file_per_table. "
@@ -10908,11 +11689,13 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(additional_mem_pool_size),
MYSQL_SYSVAR(autoextend_increment),
MYSQL_SYSVAR(buffer_pool_size),
+ MYSQL_SYSVAR(buffer_pool_shm_key),
MYSQL_SYSVAR(checksums),
MYSQL_SYSVAR(fast_checksum),
MYSQL_SYSVAR(commit_concurrency),
MYSQL_SYSVAR(concurrency_tickets),
MYSQL_SYSVAR(data_file_path),
+ MYSQL_SYSVAR(doublewrite_file),
MYSQL_SYSVAR(data_home_dir),
MYSQL_SYSVAR(doublewrite),
MYSQL_SYSVAR(extra_undoslots),
@@ -10951,6 +11734,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(stats_method),
MYSQL_SYSVAR(stats_auto_update),
MYSQL_SYSVAR(stats_update_need_lock),
+ MYSQL_SYSVAR(use_sys_stats_table),
MYSQL_SYSVAR(stats_sample_pages),
MYSQL_SYSVAR(adaptive_hash_index),
MYSQL_SYSVAR(replication_delay),
@@ -10974,6 +11758,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(flush_neighbor_pages),
MYSQL_SYSVAR(read_ahead),
MYSQL_SYSVAR(adaptive_checkpoint),
+ MYSQL_SYSVAR(flush_log_at_trx_commit_session),
MYSQL_SYSVAR(enable_unsafe_group_commit),
MYSQL_SYSVAR(expand_import),
MYSQL_SYSVAR(extra_rsegments),
@@ -10983,18 +11768,17 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(read_ahead_threshold),
MYSQL_SYSVAR(io_capacity),
MYSQL_SYSVAR(use_purge_thread),
- MYSQL_SYSVAR(relax_table_creation),
MYSQL_SYSVAR(pass_corrupt_table),
NULL
};
-mysql_declare_plugin(innobase)
+mysql_declare_plugin(xtradb)
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&innobase_storage_engine,
innobase_hton_name,
- "Innobase Oy",
- "Supports transactions, row-level locking, and foreign keys",
+ "Percona",
+ "Percona-XtraDB, Supports transactions, row-level locking, and foreign keys",
PLUGIN_LICENSE_GPL,
innobase_init, /* Plugin Init */
NULL, /* Plugin Deinit */
@@ -11019,15 +11803,16 @@ i_s_innodb_index_stats,
i_s_innodb_admin_command,
i_s_innodb_sys_tables,
i_s_innodb_sys_indexes,
+i_s_innodb_sys_stats,
i_s_innodb_patches
mysql_declare_plugin_end;
-maria_declare_plugin(innobase)
+maria_declare_plugin(xtradb)
{ /* InnoDB */
MYSQL_STORAGE_ENGINE_PLUGIN,
&innobase_storage_engine,
innobase_hton_name,
- "Innobase Oy",
- "Supports transactions, row-level locking, and foreign keys",
+ "Percona",
+ "XtraDB engine based on InnoDB plugin. Supports transactions, row-level locking, and foreign keys",
PLUGIN_LICENSE_GPL,
innobase_init, /* Plugin Init */
NULL, /* Plugin Deinit */
@@ -11053,6 +11838,7 @@ i_s_innodb_index_stats_maria,
i_s_innodb_admin_command_maria,
i_s_innodb_sys_tables_maria,
i_s_innodb_sys_indexes_maria,
+i_s_innodb_sys_stats_maria,
i_s_innodb_patches_maria
maria_declare_plugin_end;
diff --git a/storage/xtradb/handler/ha_innodb.h b/storage/xtradb/handler/ha_innodb.h
index f6f407d6c8f..50a43aaebed 100644
--- a/storage/xtradb/handler/ha_innodb.h
+++ b/storage/xtradb/handler/ha_innodb.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2000, 2009, MySQL AB & Innobase Oy. All Rights Reserved.
+Copyright (c) 2000, 2010, MySQL AB & Innobase Oy. All Rights Reserved.
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
@@ -27,16 +27,32 @@ Place, Suite 330, Boston, MA 02111-1307 USA
#pragma interface /* gcc class implementation */
#endif
+/* Structure defines translation table between mysql index and innodb
+index structures */
+typedef struct innodb_idx_translate_struct {
+ ulint index_count; /*!< number of valid index entries
+ in the index_mapping array */
+ ulint array_size; /*!< array size of index_mapping */
+ dict_index_t** index_mapping; /*!< index pointer array directly
+ maps to index in Innodb from MySQL
+ array index */
+} innodb_idx_translate_t;
+
+
/** InnoDB table share */
typedef struct st_innobase_share {
- THR_LOCK lock; /*!< MySQL lock protecting
- this structure */
- const char* table_name; /*!< InnoDB table name */
- uint use_count; /*!< reference count,
- incremented in get_share()
- and decremented in free_share() */
- void* table_name_hash;/*!< hash table chain node */
- dict_table_t* ib_table;
+ THR_LOCK lock; /*!< MySQL lock protecting
+ this structure */
+ const char* table_name; /*!< InnoDB table name */
+ uint use_count; /*!< reference count,
+ incremented in get_share()
+ and decremented in
+ free_share() */
+ void* table_name_hash;/*!< hash table chain node */
+ innodb_idx_translate_t idx_trans_tbl; /*!< index translation
+ table between MySQL and
+ Innodb */
+ dict_table_t* ib_table;
} INNOBASE_SHARE;
@@ -92,9 +108,8 @@ class ha_innobase: public handler
ulint innobase_reset_autoinc(ulonglong auto_inc);
ulint innobase_get_autoinc(ulonglong* value);
ulint innobase_update_autoinc(ulonglong auto_inc);
- ulint innobase_initialize_autoinc();
+ void innobase_initialize_autoinc();
dict_index_t* innobase_get_index(uint keynr);
- ulonglong innobase_get_int_col_max_value(const Field* field);
/* Init values for the class: */
public:
@@ -235,7 +250,11 @@ the definitions are bracketed with #ifdef INNODB_COMPATIBILITY_HOOKS */
extern "C" {
struct charset_info_st *thd_charset(MYSQL_THD thd);
+#if MYSQL_VERSION_ID >= 50142
+LEX_STRING *thd_query_string(MYSQL_THD thd);
+#else
char **thd_query(MYSQL_THD thd);
+#endif
/** Get the file name of the MySQL binlog.
* @return the name of the binlog file
diff --git a/storage/xtradb/handler/handler0alter.cc b/storage/xtradb/handler/handler0alter.cc
index e060d88b3b8..3a32ed9cf36 100644
--- a/storage/xtradb/handler/handler0alter.cc
+++ b/storage/xtradb/handler/handler0alter.cc
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2005, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 2005, 2010, Innobase Oy. All Rights Reserved.
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
@@ -229,9 +229,11 @@ static
int
innobase_check_index_keys(
/*======================*/
- const KEY* key_info, /*!< in: Indexes to be created */
- ulint num_of_keys) /*!< in: Number of indexes to
- be created */
+ const KEY* key_info, /*!< in: Indexes to be
+ created */
+ ulint num_of_keys, /*!< in: Number of
+ indexes to be created */
+ const dict_table_t* table) /*!< in: Existing indexes */
{
ulint key_num;
@@ -248,9 +250,22 @@ innobase_check_index_keys(
const KEY& key2 = key_info[i];
if (0 == strcmp(key.name, key2.name)) {
- sql_print_error("InnoDB: key name `%s` appears"
- " twice in CREATE INDEX\n",
- key.name);
+ my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0),
+ key.name);
+
+ return(ER_WRONG_NAME_FOR_INDEX);
+ }
+ }
+
+ /* Check that the same index name does not already exist. */
+
+ for (const dict_index_t* index
+ = dict_table_get_first_index(table);
+ index; index = dict_table_get_next_index(index)) {
+
+ if (0 == strcmp(key.name, index->name)) {
+ my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0),
+ key.name);
return(ER_WRONG_NAME_FOR_INDEX);
}
@@ -258,7 +273,7 @@ innobase_check_index_keys(
/* Check that MySQL does not try to create a column
prefix index field on an inappropriate data type and
- that the same colum does not appear twice in the index. */
+ that the same column does not appear twice in the index. */
for (ulint i = 0; i < key.key_parts; i++) {
const KEY_PART_INFO& key_part1
@@ -289,14 +304,8 @@ innobase_check_index_keys(
}
}
- sql_print_error("InnoDB: MySQL is trying to"
- " create a column prefix"
- " index field on an"
- " inappropriate data type."
- " column `%s`,"
- " index `%s`.\n",
- field->field_name,
- key.name);
+ my_error(ER_WRONG_KEY_COLUMN, MYF(0),
+ field->field_name);
return(ER_WRONG_KEY_COLUMN);
}
@@ -309,11 +318,8 @@ innobase_check_index_keys(
continue;
}
- sql_print_error("InnoDB: column `%s`"
- " is not allowed to occur"
- " twice in index `%s`.\n",
- key_part1.field->field_name,
- key.name);
+ my_error(ER_WRONG_KEY_COLUMN, MYF(0),
+ key_part1.field->field_name);
return(ER_WRONG_KEY_COLUMN);
}
}
@@ -522,12 +528,14 @@ innobase_create_key_def(
key_info->name, "PRIMARY");
/* If there is a UNIQUE INDEX consisting entirely of NOT NULL
- columns, MySQL will treat it as a PRIMARY KEY unless the
- table already has one. */
+ columns and if the index does not contain column prefix(es)
+ (only prefix/part of the column is indexed), MySQL will treat the
+ index as a PRIMARY KEY unless the table already has one. */
if (!new_primary && (key_info->flags & HA_NOSAME)
+ && (!(key_info->flags & HA_KEY_HAS_PART_KEY_SEG))
&& row_table_got_default_clust_index(table)) {
- uint key_part = key_info->key_parts;
+ uint key_part = key_info->key_parts;
new_primary = TRUE;
@@ -656,12 +664,18 @@ ha_innobase::add_index(
innodb_table = indexed_table
= dict_table_get(prebuilt->table->name, FALSE);
+ if (UNIV_UNLIKELY(!innodb_table)) {
+ error = HA_ERR_NO_SUCH_TABLE;
+ goto err_exit;
+ }
+
/* Check if the index name is reserved. */
if (innobase_index_name_is_reserved(trx, key_info, num_of_keys)) {
error = ER_WRONG_NAME_FOR_INDEX;
} else {
/* Check that index keys are sensible */
- error = innobase_check_index_keys(key_info, num_of_keys);
+ error = innobase_check_index_keys(key_info, num_of_keys,
+ innodb_table);
}
if (UNIV_UNLIKELY(error)) {
@@ -708,6 +722,8 @@ err_exit:
row_mysql_lock_data_dictionary(trx);
dict_locked = TRUE;
+ ut_d(dict_table_check_for_dup_indexes(innodb_table, FALSE));
+
/* If a new primary key is defined for the table we need
to drop the original table and rebuild all indexes. */
@@ -740,6 +756,8 @@ err_exit:
user_thd);
}
+ ut_d(dict_table_check_for_dup_indexes(innodb_table,
+ FALSE));
row_mysql_unlock_data_dictionary(trx);
goto err_exit;
}
@@ -764,6 +782,10 @@ err_exit:
ut_ad(error == DB_SUCCESS);
+ /* We will need to rebuild index translation table. Set
+ valid index entry count in the translation table to zero */
+ share->idx_trans_tbl.index_count = 0;
+
/* Commit the data dictionary transaction in order to release
the table locks on the system tables. This means that if
MySQL crashes while creating a new primary key inside
@@ -799,18 +821,6 @@ err_exit:
index, num_of_idx, table);
error_handling:
-#ifdef UNIV_DEBUG
- /* TODO: At the moment we can't handle the following statement
- in our debugging code below:
-
- alter table t drop index b, add index (b);
-
- The fix will have to parse the SQL and note that the index
- being added has the same name as the one being dropped and
- ignore that in the dup index check.*/
- //dict_table_check_for_dup_indexes(prebuilt->table);
-#endif
-
/* After an error, remove all those index definitions from the
dictionary which were defined. */
@@ -822,6 +832,8 @@ error_handling:
row_mysql_lock_data_dictionary(trx);
dict_locked = TRUE;
+ ut_d(dict_table_check_for_dup_indexes(prebuilt->table, TRUE));
+
if (!new_primary) {
error = row_merge_rename_indexes(trx, indexed_table);
@@ -882,6 +894,8 @@ error:
prebuilt->trx->error_info = NULL;
/* fall through */
default:
+ trx->error_state = DB_SUCCESS;
+
if (new_primary) {
if (indexed_table != innodb_table) {
row_merge_drop_table(trx, indexed_table);
@@ -909,6 +923,7 @@ convert_error:
}
if (dict_locked) {
+ ut_d(dict_table_check_for_dup_indexes(innodb_table, FALSE));
row_mysql_unlock_data_dictionary(trx);
}
@@ -951,6 +966,7 @@ ha_innobase::prepare_drop_index(
/* Test and mark all the indexes to be dropped */
row_mysql_lock_data_dictionary(trx);
+ ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE));
/* Check that none of the indexes have previously been flagged
for deletion. */
@@ -1116,6 +1132,7 @@ func_exit:
} while (index);
}
+ ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE));
row_mysql_unlock_data_dictionary(trx);
DBUG_RETURN(err);
@@ -1162,6 +1179,7 @@ ha_innobase::final_drop_index(
prebuilt->table->flags, user_thd);
row_mysql_lock_data_dictionary(trx);
+ ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE));
if (UNIV_UNLIKELY(err)) {
@@ -1198,11 +1216,12 @@ ha_innobase::final_drop_index(
ut_a(!index->to_be_dropped);
}
-#ifdef UNIV_DEBUG
- dict_table_check_for_dup_indexes(prebuilt->table);
-#endif
+ /* We will need to rebuild index translation table. Set
+ valid index entry count in the translation table to zero */
+ share->idx_trans_tbl.index_count = 0;
func_exit:
+ ut_d(dict_table_check_for_dup_indexes(prebuilt->table, FALSE));
trx_commit_for_mysql(trx);
trx_commit_for_mysql(prebuilt->trx);
row_mysql_unlock_data_dictionary(trx);
diff --git a/storage/xtradb/handler/i_s.cc b/storage/xtradb/handler/i_s.cc
index c0112cbf1e3..0f656528315 100644
--- a/storage/xtradb/handler/i_s.cc
+++ b/storage/xtradb/handler/i_s.cc
@@ -43,20 +43,11 @@ extern "C" {
#include "ha_prototypes.h" /* for innobase_convert_name() */
#include "srv0start.h" /* for srv_was_started */
#include "btr0btr.h" /* for btr_page_get_index_id */
-#include "dict0dict.h" /* for dict_index_get_if_in_cache */
#include "trx0rseg.h" /* for trx_rseg_struct */
#include "trx0sys.h" /* for trx_sys */
#include "dict0dict.h" /* for dict_sys */
#include "btr0pcur.h"
#include "buf0lru.h" /* for XTRA_LRU_[DUMP/RESTORE] */
-/* from buf0buf.c */
-struct buf_chunk_struct{
- ulint mem_size; /* allocated size of the chunk */
- ulint size; /* size of frames[] and blocks[] */
- void* mem; /* pointer to the memory area which
- was allocated for the frames */
- buf_block_t* blocks; /* array of buffer control blocks */
-};
}
static const char plugin_author[] = "Innobase Oy";
@@ -503,27 +494,11 @@ static ST_FIELD_INFO i_s_innodb_buffer_pool_pages_fields_info[] =
static ST_FIELD_INFO i_s_innodb_buffer_pool_pages_index_fields_info[] =
{
- {STRUCT_FLD(field_name, "schema_name"),
- STRUCT_FLD(field_length, 64),
- STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
- STRUCT_FLD(value, 0),
- STRUCT_FLD(field_flags, MY_I_S_MAYBE_NULL),
- STRUCT_FLD(old_name, ""),
- STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
-
- {STRUCT_FLD(field_name, "table_name"),
- STRUCT_FLD(field_length, 64),
- STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
- STRUCT_FLD(value, 0),
- STRUCT_FLD(field_flags, 0),
- STRUCT_FLD(old_name, ""),
- STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
-
- {STRUCT_FLD(field_name, "index_name"),
- STRUCT_FLD(field_length, 64),
- STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
+ {STRUCT_FLD(field_name, "index_id"),
+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
STRUCT_FLD(value, 0),
- STRUCT_FLD(field_flags, 0),
+ STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
STRUCT_FLD(old_name, ""),
STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
@@ -724,7 +699,6 @@ i_s_innodb_buffer_pool_pages_fill(
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
buf_pool_mutex_enter();
- mutex_enter(&(dict_sys->mutex));
chunk = buf_pool->chunks;
@@ -796,7 +770,6 @@ i_s_innodb_buffer_pool_pages_fill(
}
}
- mutex_exit(&(dict_sys->mutex));
buf_pool_mutex_exit();
DBUG_RETURN(status);
@@ -817,13 +790,8 @@ i_s_innodb_buffer_pool_pages_index_fill(
int status = 0;
ulint n_chunks, n_blocks;
- dict_index_t* index;
dulint index_id;
- const char *p;
- char db_name_raw[NAME_LEN*5+1], db_name[NAME_LEN+1];
- char table_name_raw[NAME_LEN*5+1], table_name[NAME_LEN+1];
-
buf_chunk_t* chunk;
DBUG_ENTER("i_s_innodb_buffer_pool_pages_index_fill");
@@ -837,7 +805,6 @@ i_s_innodb_buffer_pool_pages_index_fill(
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
buf_pool_mutex_enter();
- mutex_enter(&(dict_sys->mutex));
chunk = buf_pool->chunks;
@@ -849,48 +816,28 @@ i_s_innodb_buffer_pool_pages_index_fill(
if (fil_page_get_type(frame) == FIL_PAGE_INDEX) {
index_id = btr_page_get_index_id(frame);
- index = dict_index_get_if_in_cache_low(index_id);
- if(index)
- {
- if((p = (char*) strchr(index->table_name, '/')))
- {
- strncpy(db_name_raw, index->table_name, p-index->table_name);
- db_name_raw[p-index->table_name] = 0;
- filename_to_tablename(db_name_raw, db_name, sizeof(db_name));
- field_store_string(table->field[0], db_name);
- p++;
- } else {
- field_store_string(table->field[0], NULL);
- p = index->table_name;
- }
- strcpy(table_name_raw, (const char*)p);
- filename_to_tablename(table_name_raw, table_name, sizeof(table_name));
- field_store_string(table->field[1], table_name);
- field_store_string(table->field[2], index->name);
+ table->field[0]->store(ut_conv_dulint_to_longlong(index_id));
+ table->field[1]->store(block->page.space);
+ table->field[2]->store(block->page.offset);
+ table->field[3]->store(page_get_n_recs(frame));
+ table->field[4]->store(page_get_data_size(frame));
+ table->field[5]->store(block->is_hashed);
+ table->field[6]->store(block->page.access_time);
+ table->field[7]->store(block->page.newest_modification != 0);
+ table->field[8]->store(block->page.oldest_modification != 0);
+ table->field[9]->store(block->page.old);
+ table->field[10]->store(0);
+ table->field[11]->store(block->page.buf_fix_count);
+ table->field[12]->store(block->page.flush_type);
- table->field[3]->store(block->page.space);
- table->field[4]->store(block->page.offset);
- table->field[5]->store(page_get_n_recs(frame));
- table->field[6]->store(page_get_data_size(frame));
- table->field[7]->store(block->is_hashed);
- table->field[8]->store(block->page.access_time);
- table->field[9]->store(block->page.newest_modification != 0);
- table->field[10]->store(block->page.oldest_modification != 0);
- table->field[11]->store(block->page.old);
- table->field[12]->store(0);
- table->field[13]->store(block->page.buf_fix_count);
- table->field[14]->store(block->page.flush_type);
-
- if (schema_table_store_record(thd, table)) {
- status = 1;
- break;
- }
+ if (schema_table_store_record(thd, table)) {
+ status = 1;
+ break;
}
}
}
}
- mutex_exit(&(dict_sys->mutex));
buf_pool_mutex_exit();
DBUG_RETURN(status);
@@ -928,7 +875,6 @@ i_s_innodb_buffer_pool_pages_blob_fill(
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
buf_pool_mutex_enter();
- mutex_enter(&(dict_sys->mutex));
chunk = buf_pool->chunks;
@@ -984,7 +930,6 @@ i_s_innodb_buffer_pool_pages_blob_fill(
}
}
- mutex_exit(&(dict_sys->mutex));
buf_pool_mutex_exit();
DBUG_RETURN(status);
@@ -3459,7 +3404,7 @@ i_s_innodb_table_stats_fill(
field_store_string(i_s_table->field[0], buf);
field_store_string(i_s_table->field[1], ptr);
- i_s_table->field[2]->store(table->stat_n_rows);
+ i_s_table->field[2]->store(table->stat_n_rows, 1);
i_s_table->field[3]->store(table->stat_clustered_index_size);
i_s_table->field[4]->store(table->stat_sum_of_other_index_sizes);
i_s_table->field[5]->store(table->stat_modified_counter);
@@ -3538,6 +3483,9 @@ i_s_innodb_index_stats_fill(
i_s_table->field[3]->store(index->n_uniq);
row_per_keys[0] = '\0';
+
+ /* It is remained optimistic operation still for now */
+ //dict_index_stat_mutex_enter(index);
if (index->stat_n_diff_key_vals) {
for (i = 1; i <= index->n_uniq; i++) {
ib_int64_t rec_per_key;
@@ -3551,6 +3499,8 @@ i_s_innodb_index_stats_fill(
strncat(row_per_keys, buff, 256 - strlen(row_per_keys));
}
}
+ //dict_index_stat_mutex_exit(index);
+
field_store_string(i_s_table->field[4], row_per_keys);
i_s_table->field[5]->store(index->stat_index_size);
@@ -3857,6 +3807,14 @@ UNIV_INTERN struct st_maria_plugin i_s_innodb_admin_command_maria =
static ST_FIELD_INFO i_s_innodb_sys_tables_info[] =
{
+ {STRUCT_FLD(field_name, "SCHEMA"),
+ STRUCT_FLD(field_length, NAME_LEN),
+ STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
+ STRUCT_FLD(value, 0),
+ STRUCT_FLD(field_flags, 0),
+ STRUCT_FLD(old_name, ""),
+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
+
{STRUCT_FLD(field_name, "NAME"),
STRUCT_FLD(field_length, NAME_LEN),
STRUCT_FLD(field_type, MYSQL_TYPE_STRING),
@@ -3985,6 +3943,35 @@ static ST_FIELD_INFO i_s_innodb_sys_indexes_info[] =
END_OF_ST_FIELD_INFO
};
+static ST_FIELD_INFO i_s_innodb_sys_stats_info[] =
+{
+ {STRUCT_FLD(field_name, "INDEX_ID"),
+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
+ STRUCT_FLD(value, 0),
+ STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
+ STRUCT_FLD(old_name, ""),
+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
+
+ {STRUCT_FLD(field_name, "KEY_COLS"),
+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
+ STRUCT_FLD(value, 0),
+ STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
+ STRUCT_FLD(old_name, ""),
+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
+
+ {STRUCT_FLD(field_name, "DIFF_VALS"),
+ STRUCT_FLD(field_length, MY_INT64_NUM_DECIMAL_DIGITS),
+ STRUCT_FLD(field_type, MYSQL_TYPE_LONGLONG),
+ STRUCT_FLD(value, 0),
+ STRUCT_FLD(field_flags, MY_I_S_UNSIGNED),
+ STRUCT_FLD(old_name, ""),
+ STRUCT_FLD(open_method, SKIP_OPEN_TABLE)},
+
+ END_OF_ST_FIELD_INFO
+};
+
static
int
copy_string_field(
@@ -4015,6 +4002,54 @@ copy_string_field(
static
int
+copy_name_fields(
+/*=============*/
+ TABLE* table,
+ int table_field_1,
+ const rec_t* rec,
+ int rec_field)
+{
+ int status;
+ const byte* data;
+ ulint len;
+
+ data = rec_get_nth_field_old(rec, rec_field, &len);
+ if (len == UNIV_SQL_NULL) {
+ table->field[table_field_1]->set_null();
+ table->field[table_field_1 + 1]->set_null();
+ status = 0; /* success */
+ } else {
+ char buf[NAME_LEN * 2 + 2];
+ char* ptr;
+
+ if (len > NAME_LEN * 2 + 1) {
+ table->field[table_field_1]->set_null();
+ status = field_store_string(table->field[table_field_1 + 1],
+ "###TOO LONG NAME###");
+ goto end_func;
+ }
+
+ strncpy(buf, (char*)data, len);
+ buf[len] = '\0';
+ ptr = strchr(buf, '/');
+ if (ptr) {
+ *ptr = '\0';
+ ++ptr;
+
+ status = field_store_string(table->field[table_field_1], buf);
+ status |= field_store_string(table->field[table_field_1 + 1], ptr);
+ } else {
+ table->field[table_field_1]->set_null();
+ status = field_store_string(table->field[table_field_1 + 1], buf);
+ }
+ }
+
+end_func:
+ return status;
+}
+
+static
+int
copy_int_field(
/*===========*/
TABLE* table,
@@ -4083,49 +4118,49 @@ copy_sys_tables_rec(
/* NAME */
field = dict_index_get_nth_col_pos(index, 0);
- status = copy_string_field(table, 0, rec, field);
+ status = copy_name_fields(table, 0, rec, field);
if (status) {
return status;
}
/* ID */
field = dict_index_get_nth_col_pos(index, 1);
- status = copy_id_field(table, 1, rec, field);
+ status = copy_id_field(table, 2, rec, field);
if (status) {
return status;
}
/* N_COLS */
field = dict_index_get_nth_col_pos(index, 2);
- status = copy_int_field(table, 2, rec, field);
+ status = copy_int_field(table, 3, rec, field);
if (status) {
return status;
}
/* TYPE */
field = dict_index_get_nth_col_pos(index, 3);
- status = copy_int_field(table, 3, rec, field);
+ status = copy_int_field(table, 4, rec, field);
if (status) {
return status;
}
/* MIX_ID */
field = dict_index_get_nth_col_pos(index, 4);
- status = copy_id_field(table, 4, rec, field);
+ status = copy_id_field(table, 5, rec, field);
if (status) {
return status;
}
/* MIX_LEN */
field = dict_index_get_nth_col_pos(index, 5);
- status = copy_int_field(table, 5, rec, field);
+ status = copy_int_field(table, 6, rec, field);
if (status) {
return status;
}
/* CLUSTER_NAME */
field = dict_index_get_nth_col_pos(index, 6);
- status = copy_string_field(table, 6, rec, field);
+ status = copy_string_field(table, 7, rec, field);
if (status) {
return status;
}
/* SPACE */
field = dict_index_get_nth_col_pos(index, 7);
- status = copy_int_field(table, 7, rec, field);
+ status = copy_int_field(table, 8, rec, field);
if (status) {
return status;
}
@@ -4193,6 +4228,40 @@ copy_sys_indexes_rec(
static
int
+copy_sys_stats_rec(
+/*===============*/
+ TABLE* table,
+ const dict_index_t* index,
+ const rec_t* rec
+)
+{
+ int status;
+ int field;
+
+ /* INDEX_ID */
+ field = dict_index_get_nth_col_pos(index, 0);
+ status = copy_id_field(table, 0, rec, field);
+ if (status) {
+ return status;
+ }
+ /* KEY_COLS */
+ field = dict_index_get_nth_col_pos(index, 1);
+ status = copy_int_field(table, 1, rec, field);
+ if (status) {
+ return status;
+ }
+ /* DIFF_VALS */
+ field = dict_index_get_nth_col_pos(index, 2);
+ status = copy_id_field(table, 2, rec, field);
+ if (status) {
+ return status;
+ }
+
+ return 0;
+}
+
+static
+int
i_s_innodb_schema_table_fill(
/*=========================*/
THD* thd,
@@ -4220,6 +4289,8 @@ i_s_innodb_schema_table_fill(
id = 0;
} else if (innobase_strcasecmp(table_name, "innodb_sys_indexes") == 0) {
id = 1;
+ } else if (innobase_strcasecmp(table_name, "innodb_sys_stats") == 0) {
+ id = 2;
} else {
DBUG_RETURN(1);
}
@@ -4233,8 +4304,10 @@ i_s_innodb_schema_table_fill(
if (id == 0) {
innodb_table = dict_table_get_low("SYS_TABLES");
- } else {
+ } else if (id == 1) {
innodb_table = dict_table_get_low("SYS_INDEXES");
+ } else {
+ innodb_table = dict_table_get_low("SYS_STATS");
}
index = UT_LIST_GET_FIRST(innodb_table->indexes);
@@ -4259,8 +4332,10 @@ i_s_innodb_schema_table_fill(
if (id == 0) {
status = copy_sys_tables_rec(table, index, rec);
- } else {
+ } else if (id == 1) {
status = copy_sys_indexes_rec(table, index, rec);
+ } else {
+ status = copy_sys_stats_rec(table, index, rec);
}
if (status) {
btr_pcur_close(&pcur);
@@ -4325,6 +4400,21 @@ i_s_innodb_sys_indexes_init(
DBUG_RETURN(0);
}
+static
+int
+i_s_innodb_sys_stats_init(
+/*======================*/
+ void* p)
+{
+ DBUG_ENTER("i_s_innodb_sys_stats_init");
+ ST_SCHEMA_TABLE* schema = (ST_SCHEMA_TABLE*) p;
+
+ schema->fields_info = i_s_innodb_sys_stats_info;
+ schema->fill_table = i_s_innodb_schema_table_fill;
+
+ DBUG_RETURN(0);
+}
+
UNIV_INTERN struct st_mysql_plugin i_s_innodb_sys_tables =
{
STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
@@ -4391,3 +4481,36 @@ UNIV_INTERN struct st_maria_plugin i_s_innodb_sys_indexes_maria =
STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_BETA)
};
+UNIV_INTERN struct st_mysql_plugin i_s_innodb_sys_stats =
+{
+ STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
+ STRUCT_FLD(info, &i_s_info),
+ STRUCT_FLD(name, "INNODB_SYS_STATS"),
+ STRUCT_FLD(author, plugin_author),
+ STRUCT_FLD(descr, "InnoDB SYS_STATS table"),
+ STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
+ STRUCT_FLD(init, i_s_innodb_sys_stats_init),
+ STRUCT_FLD(deinit, i_s_common_deinit),
+ STRUCT_FLD(version, 0x0100 /* 1.0 */),
+ STRUCT_FLD(status_vars, NULL),
+ STRUCT_FLD(system_vars, NULL),
+ STRUCT_FLD(__reserved1, NULL)
+};
+
+UNIV_INTERN struct st_maria_plugin i_s_innodb_sys_stats_maria =
+{
+ STRUCT_FLD(type, MYSQL_INFORMATION_SCHEMA_PLUGIN),
+ STRUCT_FLD(info, &i_s_info),
+ STRUCT_FLD(name, "INNODB_SYS_STATS"),
+ STRUCT_FLD(author, plugin_author),
+ STRUCT_FLD(descr, "InnoDB SYS_STATS table"),
+ STRUCT_FLD(license, PLUGIN_LICENSE_GPL),
+ STRUCT_FLD(init, i_s_innodb_sys_stats_init),
+ STRUCT_FLD(deinit, i_s_common_deinit),
+ STRUCT_FLD(version, 0x0100 /* 1.0 */),
+ STRUCT_FLD(status_vars, NULL),
+ STRUCT_FLD(system_vars, NULL),
+ STRUCT_FLD(version_info, "1.0"),
+ STRUCT_FLD(maturity, MariaDB_PLUGIN_MATURITY_BETA)
+};
+
diff --git a/storage/xtradb/handler/i_s.h b/storage/xtradb/handler/i_s.h
index 8252c6d1fa2..7a5c3ead5ed 100644
--- a/storage/xtradb/handler/i_s.h
+++ b/storage/xtradb/handler/i_s.h
@@ -43,6 +43,7 @@ extern struct st_mysql_plugin i_s_innodb_index_stats;
extern struct st_mysql_plugin i_s_innodb_admin_command;
extern struct st_mysql_plugin i_s_innodb_sys_tables;
extern struct st_mysql_plugin i_s_innodb_sys_indexes;
+extern struct st_mysql_plugin i_s_innodb_sys_stats;
extern struct st_maria_plugin i_s_innodb_buffer_pool_pages_maria;
extern struct st_maria_plugin i_s_innodb_buffer_pool_pages_index_maria;
@@ -61,5 +62,6 @@ extern struct st_maria_plugin i_s_innodb_index_stats_maria;
extern struct st_maria_plugin i_s_innodb_admin_command_maria;
extern struct st_maria_plugin i_s_innodb_sys_tables_maria;
extern struct st_maria_plugin i_s_innodb_sys_indexes_maria;
+extern struct st_maria_plugin i_s_innodb_sys_stats_maria;
#endif /* i_s_h */
diff --git a/storage/xtradb/handler/innodb_patch_info.h b/storage/xtradb/handler/innodb_patch_info.h
index 5fa50129a04..e68f12d0fec 100644
--- a/storage/xtradb/handler/innodb_patch_info.h
+++ b/storage/xtradb/handler/innodb_patch_info.h
@@ -41,11 +41,12 @@ struct innodb_enhancement {
{"innodb_admin_command_base","XtraDB specific command interface through i_s","","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_show_lock_name","Show mutex/lock name instead of crated file/line","","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_extend_slow","Extended statistics in slow.log","It is InnoDB-part only. It needs to patch also to mysqld.","http://www.percona.com/docs/wiki/percona-xtradb"},
-{"innodb_relax_table_creation","Relax limitation of column size at table creation as builtin InnoDB.","","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_lru_dump_restore","Dump and restore command for content of buffer pool","","http://www.percona.com/docs/wiki/percona-xtradb"},
+{"innodb_separate_doublewrite","Add option 'innodb_doublewrite_file' to separate doublewrite dedicated tablespace","","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_pass_corrupt_table","Treat tables as corrupt instead of crash, when meet corrupt blocks","","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_fast_checksum","Using the checksum on 32bit-unit calculation","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_files_extend","allow >4GB transaction log files, and can vary universal page size of datafiles","incompatible for unpatched ver.","http://www.percona.com/docs/wiki/percona-xtradb"},
{"innodb_sys_tables_sys_indexes","Expose InnoDB SYS_TABLES and SYS_INDEXES schema tables","","http://www.percona.com/docs/wiki/percona-xtradb"},
+{"innodb_buffer_pool_shm","Put buffer pool contents to shared memory segment and reuse it at clean restart [experimental]","","http://www.percona.com/docs/wiki/percona-xtradb"},
{NULL, NULL, NULL, NULL}
};
diff --git a/storage/xtradb/ibuf/ibuf0ibuf.c b/storage/xtradb/ibuf/ibuf0ibuf.c
index 94f3751dd04..e01c2d6b800 100644
--- a/storage/xtradb/ibuf/ibuf0ibuf.c
+++ b/storage/xtradb/ibuf/ibuf0ibuf.c
@@ -733,24 +733,41 @@ page containing the descriptor bits for the file page; the bitmap page
is x-latched */
static
page_t*
-ibuf_bitmap_get_map_page(
-/*=====================*/
- ulint space, /*!< in: space id of the file page */
- ulint page_no,/*!< in: page number of the file page */
- ulint zip_size,/*!< in: compressed page size in bytes;
- 0 for uncompressed pages */
- mtr_t* mtr) /*!< in: mtr */
+ibuf_bitmap_get_map_page_func(
+/*==========================*/
+ ulint space, /*!< in: space id of the file page */
+ ulint page_no,/*!< in: page number of the file page */
+ ulint zip_size,/*!< in: compressed page size in bytes;
+ 0 for uncompressed pages */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
+ mtr_t* mtr) /*!< in: mtr */
{
buf_block_t* block;
- block = buf_page_get(space, zip_size,
- ibuf_bitmap_page_no_calc(zip_size, page_no),
- RW_X_LATCH, mtr);
+ block = buf_page_get_gen(space, zip_size,
+ ibuf_bitmap_page_no_calc(zip_size, page_no),
+ RW_X_LATCH, NULL, BUF_GET,
+ file, line, mtr);
buf_block_dbg_add_level(block, SYNC_IBUF_BITMAP);
return(buf_block_get_frame(block));
}
+/********************************************************************//**
+Gets the ibuf bitmap page where the bits describing a given file page are
+stored.
+@return bitmap page where the file page is mapped, that is, the bitmap
+page containing the descriptor bits for the file page; the bitmap page
+is x-latched
+@param space in: space id of the file page
+@param page_no in: page number of the file page
+@param zip_size in: compressed page size in bytes; 0 for uncompressed pages
+@param mtr in: mini-transaction */
+#define ibuf_bitmap_get_map_page(space, page_no, zip_size, mtr) \
+ ibuf_bitmap_get_map_page_func(space, page_no, zip_size, \
+ __FILE__, __LINE__, mtr)
+
/************************************************************************//**
Sets the free bits of the page in the ibuf bitmap. This is done in a separate
mini-transaction, hence this operation does not restrict further work to only
diff --git a/storage/xtradb/include/btr0btr.h b/storage/xtradb/include/btr0btr.h
index d5c8258513c..5e6a76c7d21 100644
--- a/storage/xtradb/include/btr0btr.h
+++ b/storage/xtradb/include/btr0btr.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -193,6 +193,10 @@ btr_leaf_page_release(
mtr_t* mtr); /*!< in: mtr */
/**************************************************************//**
Gets the child node file address in a node pointer.
+NOTE: the offsets array must contain all offsets for the record since
+we read the last field according to offsets and assume that it contains
+the child page number. In other words offsets must have been retrieved
+with rec_get_offsets(n_fields=ULINT_UNDEFINED).
@return child node address */
UNIV_INLINE
ulint
@@ -317,12 +321,16 @@ Inserts a data tuple to a tree on a non-leaf level. It is assumed
that mtr holds an x-latch on the tree. */
UNIV_INTERN
void
-btr_insert_on_non_leaf_level(
-/*=========================*/
+btr_insert_on_non_leaf_level_func(
+/*==============================*/
dict_index_t* index, /*!< in: index */
ulint level, /*!< in: level, must be > 0 */
dtuple_t* tuple, /*!< in: the record to be inserted */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+# define btr_insert_on_non_leaf_level(i,l,t,m) \
+ btr_insert_on_non_leaf_level_func(i,l,t,__FILE__,__LINE__,m)
#endif /* !UNIV_HOTBACKUP */
/****************************************************************//**
Sets a record as the predefined minimum record. */
diff --git a/storage/xtradb/include/btr0btr.ic b/storage/xtradb/include/btr0btr.ic
index 4aa4a41f50d..c9c38f3c3b3 100644
--- a/storage/xtradb/include/btr0btr.ic
+++ b/storage/xtradb/include/btr0btr.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -257,6 +257,10 @@ btr_page_set_prev(
/**************************************************************//**
Gets the child node file address in a node pointer.
+NOTE: the offsets array must contain all offsets for the record since
+we read the last field according to offsets and assume that it contains
+the child page number. In other words offsets must have been retrieved
+with rec_get_offsets(n_fields=ULINT_UNDEFINED).
@return child node address */
UNIV_INLINE
ulint
diff --git a/storage/xtradb/include/btr0cur.h b/storage/xtradb/include/btr0cur.h
index 480a3877e54..716f15c4267 100644
--- a/storage/xtradb/include/btr0cur.h
+++ b/storage/xtradb/include/btr0cur.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -152,29 +152,39 @@ btr_cur_search_to_nth_level(
ulint has_search_latch,/*!< in: latch mode the caller
currently has on btr_search_latch:
RW_S_LATCH, or 0 */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
/*****************************************************************//**
Opens a cursor at either end of an index. */
UNIV_INTERN
void
-btr_cur_open_at_index_side(
-/*=======================*/
+btr_cur_open_at_index_side_func(
+/*============================*/
ibool from_left, /*!< in: TRUE if open to the low end,
FALSE if to the high end */
dict_index_t* index, /*!< in: index */
ulint latch_mode, /*!< in: latch mode */
btr_cur_t* cursor, /*!< in: cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_cur_open_at_index_side(f,i,l,c,m) \
+ btr_cur_open_at_index_side_func(f,i,l,c,__FILE__,__LINE__,m)
/**********************************************************************//**
Positions a cursor at a randomly chosen position within a B-tree. */
UNIV_INTERN
void
-btr_cur_open_at_rnd_pos(
-/*====================*/
+btr_cur_open_at_rnd_pos_func(
+/*=========================*/
dict_index_t* index, /*!< in: index */
ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */
btr_cur_t* cursor, /*!< in/out: B-tree cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_cur_open_at_rnd_pos(i,l,c,m) \
+ btr_cur_open_at_rnd_pos_func(i,l,c,__FILE__,__LINE__,m)
/*************************************************************//**
Tries to perform an insert to a page in an index tree, next to cursor.
It is assumed that mtr holds an x-latch on the page. The operation does
diff --git a/storage/xtradb/include/btr0pcur.h b/storage/xtradb/include/btr0pcur.h
index 12b1375d8b7..2334a266280 100644
--- a/storage/xtradb/include/btr0pcur.h
+++ b/storage/xtradb/include/btr0pcur.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -82,8 +82,8 @@ Initializes and opens a persistent cursor to an index tree. It should be
closed with btr_pcur_close. */
UNIV_INLINE
void
-btr_pcur_open(
-/*==========*/
+btr_pcur_open_func(
+/*===============*/
dict_index_t* index, /*!< in: index */
const dtuple_t* tuple, /*!< in: tuple on which search done */
ulint mode, /*!< in: PAGE_CUR_L, ...;
@@ -94,14 +94,18 @@ btr_pcur_open(
record! */
ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ... */
btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_pcur_open(i,t,md,l,c,m) \
+ btr_pcur_open_func(i,t,md,l,c,__FILE__,__LINE__,m)
/**************************************************************//**
Opens an persistent cursor to an index tree without initializing the
cursor. */
UNIV_INLINE
void
-btr_pcur_open_with_no_init(
-/*=======================*/
+btr_pcur_open_with_no_init_func(
+/*============================*/
dict_index_t* index, /*!< in: index */
const dtuple_t* tuple, /*!< in: tuple on which search done */
ulint mode, /*!< in: PAGE_CUR_L, ...;
@@ -119,7 +123,12 @@ btr_pcur_open_with_no_init(
ulint has_search_latch,/*!< in: latch mode the caller
currently has on btr_search_latch:
RW_S_LATCH, or 0 */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_pcur_open_with_no_init(ix,t,md,l,cur,has,m) \
+ btr_pcur_open_with_no_init_func(ix,t,md,l,cur,has,__FILE__,__LINE__,m)
+
/*****************************************************************//**
Opens a persistent cursor at either end of an index. */
UNIV_INLINE
@@ -160,8 +169,8 @@ before first in tree. The latching mode must be BTR_SEARCH_LEAF or
BTR_MODIFY_LEAF. */
UNIV_INTERN
void
-btr_pcur_open_on_user_rec(
-/*======================*/
+btr_pcur_open_on_user_rec_func(
+/*===========================*/
dict_index_t* index, /*!< in: index */
const dtuple_t* tuple, /*!< in: tuple on which search done */
ulint mode, /*!< in: PAGE_CUR_L, ... */
@@ -169,17 +178,25 @@ btr_pcur_open_on_user_rec(
BTR_MODIFY_LEAF */
btr_pcur_t* cursor, /*!< in: memory buffer for persistent
cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_pcur_open_on_user_rec(i,t,md,l,c,m) \
+ btr_pcur_open_on_user_rec_func(i,t,md,l,c,__FILE__,__LINE__,m)
/**********************************************************************//**
Positions a cursor at a randomly chosen position within a B-tree. */
UNIV_INLINE
void
-btr_pcur_open_at_rnd_pos(
-/*=====================*/
+btr_pcur_open_at_rnd_pos_func(
+/*==========================*/
dict_index_t* index, /*!< in: index */
ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */
btr_pcur_t* cursor, /*!< in/out: B-tree pcur */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_pcur_open_at_rnd_pos(i,l,c,m) \
+ btr_pcur_open_at_rnd_pos_func(i,l,c,__FILE__,__LINE__,m)
/**************************************************************//**
Frees the possible old_rec_buf buffer of a persistent cursor and sets the
latch mode of the persistent cursor to BTR_NO_LATCHES. */
@@ -218,11 +235,15 @@ record and it can be restored on a user record whose ordering fields
are identical to the ones of the original user record */
UNIV_INTERN
ibool
-btr_pcur_restore_position(
-/*======================*/
+btr_pcur_restore_position_func(
+/*===========================*/
ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */
btr_pcur_t* cursor, /*!< in: detached persistent cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr); /*!< in: mtr */
+#define btr_pcur_restore_position(l,cur,mtr) \
+ btr_pcur_restore_position_func(l,cur,__FILE__,__LINE__,mtr)
/**************************************************************//**
If the latch mode of the cursor is BTR_LEAF_SEARCH or BTR_LEAF_MODIFY,
releases the page latch and bufferfix reserved by the cursor.
@@ -260,20 +281,13 @@ btr_pcur_get_mtr(
/*=============*/
btr_pcur_t* cursor); /*!< in: persistent cursor */
/**************************************************************//**
-Commits the pcur mtr and sets the pcur latch mode to BTR_NO_LATCHES,
+Commits the mtr and sets the pcur latch mode to BTR_NO_LATCHES,
that is, the cursor becomes detached. If there have been modifications
to the page where pcur is positioned, this can be used instead of
btr_pcur_release_leaf. Function btr_pcur_store_position should be used
before calling this, if restoration of cursor is wanted later. */
UNIV_INLINE
void
-btr_pcur_commit(
-/*============*/
- btr_pcur_t* pcur); /*!< in: persistent cursor */
-/**************************************************************//**
-Differs from btr_pcur_commit in that we can specify the mtr to commit. */
-UNIV_INLINE
-void
btr_pcur_commit_specify_mtr(
/*========================*/
btr_pcur_t* pcur, /*!< in: persistent cursor */
diff --git a/storage/xtradb/include/btr0pcur.ic b/storage/xtradb/include/btr0pcur.ic
index 0ca7223f861..0c38797e6c5 100644
--- a/storage/xtradb/include/btr0pcur.ic
+++ b/storage/xtradb/include/btr0pcur.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -395,30 +395,13 @@ btr_pcur_move_to_next(
}
/**************************************************************//**
-Commits the pcur mtr and sets the pcur latch mode to BTR_NO_LATCHES,
+Commits the mtr and sets the pcur latch mode to BTR_NO_LATCHES,
that is, the cursor becomes detached. If there have been modifications
to the page where pcur is positioned, this can be used instead of
btr_pcur_release_leaf. Function btr_pcur_store_position should be used
before calling this, if restoration of cursor is wanted later. */
UNIV_INLINE
void
-btr_pcur_commit(
-/*============*/
- btr_pcur_t* pcur) /*!< in: persistent cursor */
-{
- ut_a(pcur->pos_state == BTR_PCUR_IS_POSITIONED);
-
- pcur->latch_mode = BTR_NO_LATCHES;
-
- mtr_commit(pcur->mtr);
-
- pcur->pos_state = BTR_PCUR_WAS_POSITIONED;
-}
-
-/**************************************************************//**
-Differs from btr_pcur_commit in that we can specify the mtr to commit. */
-UNIV_INLINE
-void
btr_pcur_commit_specify_mtr(
/*========================*/
btr_pcur_t* pcur, /*!< in: persistent cursor */
@@ -483,8 +466,8 @@ Initializes and opens a persistent cursor to an index tree. It should be
closed with btr_pcur_close. */
UNIV_INLINE
void
-btr_pcur_open(
-/*==========*/
+btr_pcur_open_func(
+/*===============*/
dict_index_t* index, /*!< in: index */
const dtuple_t* tuple, /*!< in: tuple on which search done */
ulint mode, /*!< in: PAGE_CUR_L, ...;
@@ -495,6 +478,8 @@ btr_pcur_open(
record! */
ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ... */
btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
btr_cur_t* btr_cursor;
@@ -511,7 +496,7 @@ btr_pcur_open(
btr_cursor = btr_pcur_get_btr_cur(cursor);
btr_cur_search_to_nth_level(index, 0, tuple, mode, latch_mode,
- btr_cursor, 0, mtr);
+ btr_cursor, 0, file, line, mtr);
cursor->pos_state = BTR_PCUR_IS_POSITIONED;
cursor->trx_if_known = NULL;
@@ -522,8 +507,8 @@ Opens an persistent cursor to an index tree without initializing the
cursor. */
UNIV_INLINE
void
-btr_pcur_open_with_no_init(
-/*=======================*/
+btr_pcur_open_with_no_init_func(
+/*============================*/
dict_index_t* index, /*!< in: index */
const dtuple_t* tuple, /*!< in: tuple on which search done */
ulint mode, /*!< in: PAGE_CUR_L, ...;
@@ -541,6 +526,8 @@ btr_pcur_open_with_no_init(
ulint has_search_latch,/*!< in: latch mode the caller
currently has on btr_search_latch:
RW_S_LATCH, or 0 */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
btr_cur_t* btr_cursor;
@@ -553,7 +540,8 @@ btr_pcur_open_with_no_init(
btr_cursor = btr_pcur_get_btr_cur(cursor);
btr_cur_search_to_nth_level(index, 0, tuple, mode, latch_mode,
- btr_cursor, has_search_latch, mtr);
+ btr_cursor, has_search_latch,
+ file, line, mtr);
cursor->pos_state = BTR_PCUR_IS_POSITIONED;
cursor->old_stored = BTR_PCUR_OLD_NOT_STORED;
@@ -600,11 +588,13 @@ btr_pcur_open_at_index_side(
Positions a cursor at a randomly chosen position within a B-tree. */
UNIV_INLINE
void
-btr_pcur_open_at_rnd_pos(
-/*=====================*/
+btr_pcur_open_at_rnd_pos_func(
+/*==========================*/
dict_index_t* index, /*!< in: index */
ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ... */
btr_pcur_t* cursor, /*!< in/out: B-tree pcur */
+ const char* file, /*!< in: file name */
+ ulint line, /*!< in: line where called */
mtr_t* mtr) /*!< in: mtr */
{
/* Initialize the cursor */
@@ -614,8 +604,9 @@ btr_pcur_open_at_rnd_pos(
btr_pcur_init(cursor);
- btr_cur_open_at_rnd_pos(index, latch_mode,
- btr_pcur_get_btr_cur(cursor), mtr);
+ btr_cur_open_at_rnd_pos_func(index, latch_mode,
+ btr_pcur_get_btr_cur(cursor),
+ file, line, mtr);
cursor->pos_state = BTR_PCUR_IS_POSITIONED;
cursor->old_stored = BTR_PCUR_OLD_NOT_STORED;
diff --git a/storage/xtradb/include/buf0buf.h b/storage/xtradb/include/buf0buf.h
index c95fcc00dd3..a7854e3038d 100644
--- a/storage/xtradb/include/buf0buf.h
+++ b/storage/xtradb/include/buf0buf.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -33,8 +33,10 @@ Created 11/5/1995 Heikki Tuuri
#include "hash0hash.h"
#include "ut0byte.h"
#include "page0types.h"
+#include "ut0rbt.h"
#ifndef UNIV_HOTBACKUP
#include "os0proc.h"
+#include "srv0srv.h"
/** @name Modes for buf_page_get_gen */
/* @{ */
@@ -202,20 +204,14 @@ with care. */
#define buf_page_get_with_no_latch(SP, ZS, OF, MTR) buf_page_get_gen(\
SP, ZS, OF, RW_NO_LATCH, NULL,\
BUF_GET_NO_LATCH, __FILE__, __LINE__, MTR)
-/**************************************************************//**
-NOTE! The following macros should be used instead of
-buf_page_optimistic_get_func, to improve debugging. Only values RW_S_LATCH and
-RW_X_LATCH are allowed as LA! */
-#define buf_page_optimistic_get(LA, BL, MC, MTR) \
- buf_page_optimistic_get_func(LA, BL, MC, __FILE__, __LINE__, MTR)
/********************************************************************//**
This is the general function used to get optimistic access to a database
page.
@return TRUE if success */
UNIV_INTERN
ibool
-buf_page_optimistic_get_func(
-/*=========================*/
+buf_page_optimistic_get(
+/*====================*/
ulint rw_latch,/*!< in: RW_S_LATCH, RW_X_LATCH */
buf_block_t* block, /*!< in: guessed block */
ib_uint64_t modify_clock,/*!< in: modify clock value if mode is
@@ -1205,15 +1201,21 @@ struct buf_block_struct{
rw_lock_t lock; /*!< read-write lock of the buffer
frame */
unsigned lock_hash_val:32;/*!< hashed value of the page address
- in the record lock hash table */
- unsigned check_index_page_at_flush:1;
+ in the record lock hash table;
+ protected by buf_block_t::lock
+ (or buf_block_t::mutex, buf_pool_mutex
+ in buf_page_get_gen(),
+ buf_page_init_for_read()
+ and buf_page_create()) */
+ ibool check_index_page_at_flush;
/*!< TRUE if we know that this is
an index page, and want the database
to check its consistency before flush;
note that there may be pages in the
buffer pool which are index pages,
but this flag is not set because
- we do not keep track of all pages */
+ we do not keep track of all pages;
+ NOT protected by any mutex */
/* @} */
/** @name Optimistic search field */
/* @{ */
@@ -1300,11 +1302,23 @@ struct buf_block_struct{
/**********************************************************************//**
Compute the hash fold value for blocks in buf_pool->zip_hash. */
/* @{ */
-#define BUF_POOL_ZIP_FOLD_PTR(ptr) ((ulint) (ptr) / UNIV_PAGE_SIZE)
+/* the fold should be relative when srv_buffer_pool_shm_key is enabled */
+#define BUF_POOL_ZIP_FOLD_PTR(ptr) (!srv_buffer_pool_shm_key\
+ ?((ulint) (ptr) / UNIV_PAGE_SIZE)\
+ :((ulint) ((char*)ptr - (char*)(buf_pool->chunks->blocks->frame)) / UNIV_PAGE_SIZE))
#define BUF_POOL_ZIP_FOLD(b) BUF_POOL_ZIP_FOLD_PTR((b)->frame)
#define BUF_POOL_ZIP_FOLD_BPAGE(b) BUF_POOL_ZIP_FOLD((buf_block_t*) (b))
/* @} */
+/** A chunk of buffers. The buffer pool is allocated in chunks. */
+struct buf_chunk_struct{
+ ulint mem_size; /*!< allocated size of the chunk */
+ ulint size; /*!< size of frames[] and blocks[] */
+ void* mem; /*!< pointer to the memory area which
+ was allocated for the frames */
+ buf_block_t* blocks; /*!< array of buffer control blocks */
+};
+
/** @brief The buffer pool statistics structure. */
struct buf_pool_stat_struct{
ulint n_page_gets; /*!< number of page gets performed;
@@ -1379,6 +1393,19 @@ struct buf_pool_struct{
/*!< this is in the set state
when there is no flush batch
of the given type running */
+ ib_rbt_t* flush_rbt; /* !< a red-black tree is used
+ exclusively during recovery to
+ speed up insertions in the
+ flush_list. This tree contains
+ blocks in order of
+ oldest_modification LSN and is
+ kept in sync with the
+ flush_list.
+ Each member of the tree MUST
+ also be on the flush_list.
+ This tree is relevant only in
+ recovery and is set to NULL
+ once the recovery is over. */
ulint freed_page_clock;/*!< a sequence number used
to count the number of buffer
blocks removed from the end of
diff --git a/storage/xtradb/include/buf0buf.ic b/storage/xtradb/include/buf0buf.ic
index c9809fbdcd8..93cc68e7fc9 100644
--- a/storage/xtradb/include/buf0buf.ic
+++ b/storage/xtradb/include/buf0buf.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -81,7 +81,7 @@ buf_page_peek_if_too_old(
unsigned access_time = buf_page_is_accessed(bpage);
if (access_time > 0
- && (ut_time_ms() - access_time)
+ && ((ib_uint32_t) (ut_time_ms() - access_time))
>= buf_LRU_old_threshold_ms) {
return(TRUE);
}
@@ -743,6 +743,12 @@ buf_block_get_lock_hash_val(
/*========================*/
const buf_block_t* block) /*!< in: block */
{
+ ut_ad(block);
+ ut_ad(buf_page_in_file(&block->page));
+#ifdef UNIV_SYNC_DEBUG
+ ut_ad(rw_lock_own(&(((buf_block_t*) block)->lock), RW_LOCK_EXCLUSIVE)
+ || rw_lock_own(&(((buf_block_t*) block)->lock), RW_LOCK_SHARED));
+#endif /* UNIV_SYNC_DEBUG */
return(block->lock_hash_val);
}
@@ -967,7 +973,12 @@ buf_page_hash_get(
ut_a(buf_page_in_file(bpage));
ut_ad(bpage->in_page_hash);
ut_ad(!bpage->in_zip_hash);
+#if UNIV_WORD_SIZE == 4
+ /* On 32-bit systems, there is no padding in
+ buf_page_t. On other systems, Valgrind could complain
+ about uninitialized pad bytes. */
UNIV_MEM_ASSERT_RW(bpage, sizeof *bpage);
+#endif
}
return(bpage);
diff --git a/storage/xtradb/include/buf0flu.h b/storage/xtradb/include/buf0flu.h
index cac4bf9fe4b..2f7108fda1b 100644
--- a/storage/xtradb/include/buf0flu.h
+++ b/storage/xtradb/include/buf0flu.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -40,6 +40,16 @@ buf_flush_remove(
/*=============*/
buf_page_t* bpage); /*!< in: pointer to the block in question */
/********************************************************************//**
+Relocates a buffer control block on the flush_list.
+Note that it is assumed that the contents of bpage has already been
+copied to dpage. */
+UNIV_INTERN
+void
+buf_flush_relocate_on_flush_list(
+/*=============================*/
+ buf_page_t* bpage, /*!< in/out: control block being moved */
+ buf_page_t* dpage); /*!< in/out: destination block */
+/********************************************************************//**
Updates the flush system data structures when a write is completed. */
UNIV_INTERN
void
@@ -140,8 +150,8 @@ how much redo the workload is generating and at what rate. */
struct buf_flush_stat_struct
{
- ib_uint64_t redo; /**< amount of redo generated. */
- ulint n_flushed; /**< number of pages flushed. */
+ ib_uint64_t redo; /*!< amount of redo generated. */
+ ulint n_flushed; /*!< number of pages flushed. */
};
/** Statistics for selecting flush rate of dirty pages. */
@@ -176,6 +186,22 @@ buf_flush_validate(void);
/*====================*/
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
+/******************************************************************//**
+Initialize the red-black tree to speed up insertions into the flush_list
+during recovery process. Should be called at the start of recovery
+process before any page has been read/written. */
+UNIV_INTERN
+void
+buf_flush_init_flush_rbt(void);
+/*==========================*/
+
+/******************************************************************//**
+Frees up the red-black tree. */
+UNIV_INTERN
+void
+buf_flush_free_flush_rbt(void);
+/*==========================*/
+
/** When buf_flush_free_margin is called, it tries to make this many blocks
available to replacement in the free list and at the end of the LRU list (to
make sure that a read-ahead batch can be read efficiently in a single
diff --git a/storage/xtradb/include/buf0lru.h b/storage/xtradb/include/buf0lru.h
index 0a7d01c95cf..d3b59e8b579 100644
--- a/storage/xtradb/include/buf0lru.h
+++ b/storage/xtradb/include/buf0lru.h
@@ -96,7 +96,7 @@ buf_LRU_insert_zip_clean(
Try to free a block. If bpage is a descriptor of a compressed-only
page, the descriptor object will be freed as well.
-NOTE: If this function returns BUF_LRU_FREED, it will not temporarily
+NOTE: If this function returns BUF_LRU_FREED, it will temporarily
release buf_pool_mutex. Furthermore, the page frame will no longer be
accessible via bpage.
diff --git a/storage/xtradb/include/buf0rea.h b/storage/xtradb/include/buf0rea.h
index 71f62ff7b49..56d3d24a3b7 100644
--- a/storage/xtradb/include/buf0rea.h
+++ b/storage/xtradb/include/buf0rea.h
@@ -158,8 +158,7 @@ buf_read_recv_pages(
/** The size in pages of the area which the read-ahead algorithms read if
invoked */
-#define BUF_READ_AHEAD_AREA \
- ut_min(64, ut_2_power_up(buf_pool->curr_size / 32))
+#define BUF_READ_AHEAD_AREA 64
/** @name Modes used in read-ahead @{ */
/** read only pages belonging to the insert buffer tree */
diff --git a/storage/xtradb/include/data0type.ic b/storage/xtradb/include/data0type.ic
index 240b4288f39..2bf67a941bd 100644
--- a/storage/xtradb/include/data0type.ic
+++ b/storage/xtradb/include/data0type.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -285,6 +285,10 @@ dtype_new_store_for_order_and_null_size(
#endif
ulint len;
+ ut_ad(type);
+ ut_ad(type->mtype >= DATA_VARCHAR);
+ ut_ad(type->mtype <= DATA_MYSQL);
+
buf[0] = (byte)(type->mtype & 0xFFUL);
if (type->prtype & DATA_BINARY_TYPE) {
diff --git a/storage/xtradb/include/db0err.h b/storage/xtradb/include/db0err.h
index 747e9b5364e..c841c2b4afe 100644
--- a/storage/xtradb/include/db0err.h
+++ b/storage/xtradb/include/db0err.h
@@ -28,6 +28,8 @@ Created 5/24/1996 Heikki Tuuri
enum db_err {
+ DB_SUCCESS_LOCKED_REC = 9, /*!< like DB_SUCCESS, but a new
+ explicit record lock was created */
DB_SUCCESS = 10,
/* The following are error codes */
diff --git a/storage/xtradb/include/dict0boot.h b/storage/xtradb/include/dict0boot.h
index 51d37ee98d1..9239e031a7f 100644
--- a/storage/xtradb/include/dict0boot.h
+++ b/storage/xtradb/include/dict0boot.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -46,13 +46,14 @@ dict_hdr_get(
/*=========*/
mtr_t* mtr); /*!< in: mtr */
/**********************************************************************//**
-Returns a new row, table, index, or tree id.
-@return the new id */
+Returns a new table, index, or space id. */
UNIV_INTERN
-dulint
+void
dict_hdr_get_new_id(
/*================*/
- ulint type); /*!< in: DICT_HDR_ROW_ID, ... */
+ dulint* table_id, /*!< out: table id (not assigned if NULL) */
+ dulint* index_id, /*!< out: index id (not assigned if NULL) */
+ ulint* space_id); /*!< out: space id (not assigned if NULL) */
/**********************************************************************//**
Returns a new row id.
@return the new id */
@@ -100,6 +101,7 @@ dict_create(void);
#define DICT_COLUMNS_ID ut_dulint_create(0, 2)
#define DICT_INDEXES_ID ut_dulint_create(0, 3)
#define DICT_FIELDS_ID ut_dulint_create(0, 4)
+#define DICT_STATS_ID ut_dulint_create(0, 6)
/* The following is a secondary index on SYS_TABLES */
#define DICT_TABLE_IDS_ID ut_dulint_create(0, 5)
@@ -119,17 +121,21 @@ dict_create(void);
#define DICT_HDR_ROW_ID 0 /* The latest assigned row id */
#define DICT_HDR_TABLE_ID 8 /* The latest assigned table id */
#define DICT_HDR_INDEX_ID 16 /* The latest assigned index id */
-#define DICT_HDR_MIX_ID 24 /* Obsolete, always 0. */
+#define DICT_HDR_MAX_SPACE_ID 24 /* The latest assigned space id, or 0*/
+#define DICT_HDR_MIX_ID_LOW 28 /* Obsolete,always DICT_HDR_FIRST_ID */
#define DICT_HDR_TABLES 32 /* Root of the table index tree */
#define DICT_HDR_TABLE_IDS 36 /* Root of the table index tree */
#define DICT_HDR_COLUMNS 40 /* Root of the column index tree */
#define DICT_HDR_INDEXES 44 /* Root of the index index tree */
#define DICT_HDR_FIELDS 48 /* Root of the index field
index tree */
+#define DICT_HDR_STATS 52 /* Root of the stats tree */
#define DICT_HDR_FSEG_HEADER 56 /* Segment header for the tablespace
segment into which the dictionary
header is created */
+
+#define DICT_HDR_XTRADB_MARK 256 /* Flag to distinguish expansion of XtraDB */
/*-------------------------------------------------------------*/
/* The field number of the page number field in the sys_indexes table
@@ -137,12 +143,17 @@ clustered index */
#define DICT_SYS_INDEXES_PAGE_NO_FIELD 8
#define DICT_SYS_INDEXES_SPACE_NO_FIELD 7
#define DICT_SYS_INDEXES_TYPE_FIELD 6
+#define DICT_SYS_INDEXES_NAME_FIELD 4
+
+#define DICT_SYS_STATS_DIFF_VALS_FIELD 4
/* When a row id which is zero modulo this number (which must be a power of
two) is assigned, the field DICT_HDR_ROW_ID on the dictionary header page is
updated */
#define DICT_HDR_ROW_ID_WRITE_MARGIN 256
+#define DICT_HDR_XTRADB_FLAG ut_dulint_create(0x58545241UL,0x44425F31UL) /* "XTRADB_1" */
+
#ifndef UNIV_NONINL
#include "dict0boot.ic"
#endif
diff --git a/storage/xtradb/include/dict0crea.h b/storage/xtradb/include/dict0crea.h
index cce1246b789..0249091a195 100644
--- a/storage/xtradb/include/dict0crea.h
+++ b/storage/xtradb/include/dict0crea.h
@@ -53,6 +53,14 @@ ind_create_graph_create(
dict_index_t* index, /*!< in: index to create, built as a memory data
structure */
mem_heap_t* heap); /*!< in: heap where created */
+/*********************************************************************//**
+*/
+UNIV_INTERN
+ind_node_t*
+ind_insert_stats_graph_create(
+/*==========================*/
+ dict_index_t* index,
+ mem_heap_t* heap);
/***********************************************************//**
Creates a table. This is a high-level function used in SQL execution graphs.
@return query thread to run next or NULL */
@@ -62,6 +70,13 @@ dict_create_table_step(
/*===================*/
que_thr_t* thr); /*!< in: query thread */
/***********************************************************//**
+*/
+UNIV_INTERN
+que_thr_t*
+dict_insert_stats_step(
+/*===================*/
+ que_thr_t* thr);
+/***********************************************************//**
Creates an index. This is a high-level function used in SQL execution
graphs.
@return query thread to run next or NULL */
@@ -170,6 +185,7 @@ struct ind_node_struct{
ins_node_t* field_def; /* child node which does the inserts of
the field definitions; the row to be inserted
is built by the parent node */
+ ins_node_t* stats_def;
commit_node_t* commit_node;
/* child node which performs a commit after
a successful index creation */
@@ -180,6 +196,7 @@ struct ind_node_struct{
dict_table_t* table; /*!< table which owns the index */
dtuple_t* ind_row;/* index definition row built */
ulint field_no;/* next field definition to insert */
+ ulint stats_no;
mem_heap_t* heap; /*!< memory heap used as auxiliary storage */
};
@@ -189,6 +206,7 @@ struct ind_node_struct{
#define INDEX_CREATE_INDEX_TREE 3
#define INDEX_COMMIT_WORK 4
#define INDEX_ADD_TO_CACHE 5
+#define INDEX_BUILD_STATS_COLS 6
#ifndef UNIV_NONINL
#include "dict0crea.ic"
diff --git a/storage/xtradb/include/dict0dict.h b/storage/xtradb/include/dict0dict.h
index 8272bfe2422..3c5e620d3c1 100644
--- a/storage/xtradb/include/dict0dict.h
+++ b/storage/xtradb/include/dict0dict.h
@@ -352,6 +352,7 @@ dict_create_foreign_constraints(
name before it: test.table2; the
default database id the database of
parameter name */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -928,9 +929,10 @@ UNIV_INTERN
void
dict_table_check_for_dup_indexes(
/*=============================*/
- const dict_table_t* table); /*!< in: Check for dup indexes
+ const dict_table_t* table, /*!< in: Check for dup indexes
in this table */
-
+ ibool tmp_ok);/*!< in: TRUE=allow temporary
+ index names */
#endif /* UNIV_DEBUG */
/**********************************************************************//**
Builds a node pointer out of a physical record and a page number.
@@ -1038,8 +1040,9 @@ void
dict_update_statistics_low(
/*=======================*/
dict_table_t* table, /*!< in/out: table */
- ibool has_dict_mutex);/*!< in: TRUE if the caller has the
+ ibool has_dict_mutex, /*!< in: TRUE if the caller has the
dictionary mutex */
+ ibool sync);
/*********************************************************************//**
Calculates new estimates for table and index statistics. The statistics
are used in query optimization. */
@@ -1047,7 +1050,8 @@ UNIV_INTERN
void
dict_update_statistics(
/*===================*/
- dict_table_t* table); /*!< in/out: table */
+ dict_table_t* table, /*!< in/out: table */
+ ibool sync);
/********************************************************************//**
Reserves the dictionary system mutex for MySQL. */
UNIV_INTERN
@@ -1060,6 +1064,22 @@ UNIV_INTERN
void
dict_mutex_exit_for_mysql(void);
/*===========================*/
+/**********************************************************************//**
+Lock the appropriate mutex to protect index->stat_n_diff_key_vals[].
+index->id is used to pick the right mutex and it should not change
+before dict_index_stat_mutex_exit() is called on this index. */
+UNIV_INTERN
+void
+dict_index_stat_mutex_enter(
+/*========================*/
+ const dict_index_t* index); /*!< in: index */
+/**********************************************************************//**
+Unlock the appropriate mutex that protects index->stat_n_diff_key_vals[]. */
+UNIV_INTERN
+void
+dict_index_stat_mutex_exit(
+/*=======================*/
+ const dict_index_t* index); /*!< in: index */
/********************************************************************//**
Checks if the database name in two table names is the same.
@return TRUE if same db name */
@@ -1142,6 +1162,7 @@ struct dict_sys_struct{
dict_table_t* sys_columns; /*!< SYS_COLUMNS table */
dict_table_t* sys_indexes; /*!< SYS_INDEXES table */
dict_table_t* sys_fields; /*!< SYS_FIELDS table */
+ dict_table_t* sys_stats; /*!< SYS_STATS table */
};
#endif /* !UNIV_HOTBACKUP */
diff --git a/storage/xtradb/include/dict0mem.h b/storage/xtradb/include/dict0mem.h
index 603ecfda3f9..37c5a4a24fc 100644
--- a/storage/xtradb/include/dict0mem.h
+++ b/storage/xtradb/include/dict0mem.h
@@ -80,21 +80,39 @@ combination of types */
/** File format */
/* @{ */
#define DICT_TF_FORMAT_SHIFT 5 /* file format */
-#define DICT_TF_FORMAT_MASK (127 << DICT_TF_FORMAT_SHIFT)
+#define DICT_TF_FORMAT_MASK \
+((~(~0 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT))) << DICT_TF_FORMAT_SHIFT)
#define DICT_TF_FORMAT_51 0 /*!< InnoDB/MySQL up to 5.1 */
#define DICT_TF_FORMAT_ZIP 1 /*!< InnoDB plugin for 5.1:
compressed tables,
new BLOB treatment */
/** Maximum supported file format */
#define DICT_TF_FORMAT_MAX DICT_TF_FORMAT_ZIP
-
+/* @} */
#define DICT_TF_BITS 6 /*!< number of flag bits */
#if (1 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT)) <= DICT_TF_FORMAT_MAX
# error "DICT_TF_BITS is insufficient for DICT_TF_FORMAT_MAX"
#endif
/* @} */
+
+/** @brief Additional table flags.
+
+These flags will be stored in SYS_TABLES.MIX_LEN. All unused flags
+will be written as 0. The column may contain garbage for tables
+created with old versions of InnoDB that only implemented
+ROW_FORMAT=REDUNDANT. */
+/* @{ */
+#define DICT_TF2_SHIFT DICT_TF_BITS
+ /*!< Shift value for
+ table->flags. */
+#define DICT_TF2_TEMPORARY 1 /*!< TRUE for tables from
+ CREATE TEMPORARY TABLE. */
+#define DICT_TF2_BITS (DICT_TF2_SHIFT + 1)
+ /*!< Total number of bits
+ in table->flags. */
/* @} */
+
/**********************************************************************//**
Creates a table memory object.
@return own: table object */
@@ -364,7 +382,7 @@ initialized to 0, NULL or FALSE in dict_mem_table_create(). */
struct dict_table_struct{
dulint id; /*!< id of the table */
mem_heap_t* heap; /*!< memory heap */
- const char* name; /*!< table name */
+ char* name; /*!< table name */
const char* dir_path_of_temp_table;/*!< NULL or the directory path
where a TEMPORARY table that was explicitly
created by a user should be placed if
@@ -374,7 +392,7 @@ struct dict_table_struct{
unsigned space:32;
/*!< space where the clustered index of the
table is placed */
- unsigned flags:DICT_TF_BITS;/*!< DICT_TF_COMPACT, ... */
+ unsigned flags:DICT_TF2_BITS;/*!< DICT_TF_COMPACT, ... */
unsigned ibd_file_missing:1;
/*!< TRUE if this is in a single-table
tablespace and the .ibd file is missing; then
diff --git a/storage/xtradb/include/fil0fil.h b/storage/xtradb/include/fil0fil.h
index bacaafa1c72..07c80ef8609 100644
--- a/storage/xtradb/include/fil0fil.h
+++ b/storage/xtradb/include/fil0fil.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -110,9 +110,10 @@ extern fil_addr_t fil_addr_null;
contents of this field is valid
for all uncompressed pages. */
#define FIL_PAGE_FILE_FLUSH_LSN 26 /*!< this is only defined for the
- first page in a data file: the file
- has been flushed to disk at least up
- to this lsn */
+ first page in a system tablespace
+ data file (ibdata*, not *.ibd):
+ the file has been flushed to disk
+ at least up to this lsn */
#define FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID 34 /*!< starting from 4.1.x this
contains the space id of the page */
#define FIL_PAGE_DATA 38 /*!< start of the data on the page */
@@ -225,6 +226,16 @@ fil_space_create(
0 for uncompressed tablespaces */
ulint purpose);/*!< in: FIL_TABLESPACE, or FIL_LOG if log */
/*******************************************************************//**
+Assigns a new space id for a new single-table tablespace. This works simply by
+incrementing the global counter. If 4 billion id's is not enough, we may need
+to recycle id's.
+@return TRUE if assigned, FALSE if not */
+UNIV_INTERN
+ibool
+fil_assign_new_space_id(
+/*====================*/
+ ulint* space_id); /*!< in/out: space id */
+/*******************************************************************//**
Returns the size of the space in pages. The tablespace must be cached in the
memory cache.
@return space size, 0 if space not found */
@@ -427,9 +438,7 @@ UNIV_INTERN
ulint
fil_create_new_single_table_tablespace(
/*===================================*/
- ulint* space_id, /*!< in/out: space id; if this is != 0,
- then this is an input parameter,
- otherwise output */
+ ulint space_id, /*!< in: space id */
const char* tablename, /*!< in: the table name in the usual
databasename/tablename format
of InnoDB, or a dir path to a temp
@@ -498,16 +507,6 @@ UNIV_INTERN
ulint
fil_load_single_table_tablespaces(void);
/*===================================*/
-/********************************************************************//**
-If we need crash recovery, and we have called
-fil_load_single_table_tablespaces() and dict_load_single_table_tablespaces(),
-we can call this function to print an error message of orphaned .ibd files
-for which there is not a data dictionary entry with a matching table name
-and space id. */
-UNIV_INTERN
-void
-fil_print_orphaned_tablespaces(void);
-/*================================*/
/*******************************************************************//**
Returns TRUE if a single-table tablespace does not exist in the memory cache,
or is being deleted there.
diff --git a/storage/xtradb/include/ha_prototypes.h b/storage/xtradb/include/ha_prototypes.h
index b737a00b3dc..445d94eeabb 100644
--- a/storage/xtradb/include/ha_prototypes.h
+++ b/storage/xtradb/include/ha_prototypes.h
@@ -215,11 +215,21 @@ innobase_casedn_str(
/**********************************************************************//**
Determines the connection character set.
@return connection character set */
+UNIV_INTERN
struct charset_info_st*
innobase_get_charset(
/*=================*/
void* mysql_thd); /*!< in: MySQL thread handle */
-
+/**********************************************************************//**
+Determines the current SQL statement.
+@return SQL statement string */
+UNIV_INTERN
+const char*
+innobase_get_stmt(
+/*==============*/
+ void* mysql_thd, /*!< in: MySQL thread handle */
+ size_t* length) /*!< out: length of the SQL statement */
+ __attribute__((nonnull));
/******************************************************************//**
This function is used to find the storage length in bytes of the first n
characters for prefix indexes using a multibyte character set. The function
@@ -258,4 +268,12 @@ thd_lock_wait_timeout(
void* thd); /*!< in: thread handle (THD*), or NULL to query
the global innodb_lock_wait_timeout */
+/******************************************************************//**
+*/
+
+ulong
+thd_flush_log_at_trx_commit_session(
+/*================================*/
+ void* thd);
+
#endif
diff --git a/storage/xtradb/include/hash0hash.h b/storage/xtradb/include/hash0hash.h
index 977cb829f35..9dc20cc057f 100644
--- a/storage/xtradb/include/hash0hash.h
+++ b/storage/xtradb/include/hash0hash.h
@@ -49,6 +49,28 @@ hash_table_t*
hash_create(
/*========*/
ulint n); /*!< in: number of array cells */
+
+/*************************************************************//**
+*/
+UNIV_INTERN
+ulint
+hash_create_needed(
+/*===============*/
+ ulint n);
+
+UNIV_INTERN
+void
+hash_create_init(
+/*=============*/
+ hash_table_t* table,
+ ulint n);
+
+UNIV_INTERN
+void
+hash_create_reuse(
+/*==============*/
+ hash_table_t* table);
+
#ifndef UNIV_HOTBACKUP
/*************************************************************//**
Creates a mutex array to protect a hash table. */
@@ -328,6 +350,33 @@ do {\
}\
} while (0)
+/********************************************************************//**
+Align nodes with moving location.*/
+#define HASH_OFFSET(TABLE, NODE_TYPE, PTR_NAME, FADDR, FOFFSET, BOFFSET) \
+do {\
+ ulint i2222;\
+ ulint cell_count2222;\
+\
+ cell_count2222 = hash_get_n_cells(TABLE);\
+\
+ for (i2222 = 0; i2222 < cell_count2222; i2222++) {\
+ NODE_TYPE* node2222;\
+\
+ if ((TABLE)->array[i2222].node) \
+ (TABLE)->array[i2222].node = (void*)((char*)(TABLE)->array[i2222].node \
+ + (((TABLE)->array[i2222].node > (void*)FADDR)?FOFFSET:BOFFSET));\
+ node2222 = HASH_GET_FIRST((TABLE), i2222);\
+\
+ while (node2222) {\
+ if (node2222->PTR_NAME) \
+ node2222->PTR_NAME = (void*)((char*)node2222->PTR_NAME \
+ + ((((void*)node2222->PTR_NAME) > (void*)FADDR)?FOFFSET:BOFFSET));\
+\
+ node2222 = node2222->PTR_NAME;\
+ }\
+ }\
+} while (0)
+
/************************************************************//**
Gets the mutex index for a fold value in a hash table.
@return mutex number */
@@ -434,11 +483,12 @@ struct hash_table_struct {
these heaps */
#endif /* !UNIV_HOTBACKUP */
mem_heap_t* heap;
+#ifdef UNIV_DEBUG
ulint magic_n;
+# define HASH_TABLE_MAGIC_N 76561114
+#endif /* UNIV_DEBUG */
};
-#define HASH_TABLE_MAGIC_N 76561114
-
#ifndef UNIV_NONINL
#include "hash0hash.ic"
#endif
diff --git a/storage/xtradb/include/hash0hash.ic b/storage/xtradb/include/hash0hash.ic
index 19da2d50701..0b437894e2e 100644
--- a/storage/xtradb/include/hash0hash.ic
+++ b/storage/xtradb/include/hash0hash.ic
@@ -35,6 +35,8 @@ hash_get_nth_cell(
hash_table_t* table, /*!< in: hash table */
ulint n) /*!< in: cell index */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ut_ad(n < table->n_cells);
return(table->array + n);
@@ -48,6 +50,8 @@ hash_table_clear(
/*=============*/
hash_table_t* table) /*!< in/out: hash table */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
memset(table->array, 0x0,
table->n_cells * sizeof(*table->array));
}
@@ -61,6 +65,8 @@ hash_get_n_cells(
/*=============*/
hash_table_t* table) /*!< in: table */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
return(table->n_cells);
}
@@ -74,6 +80,8 @@ hash_calc_hash(
ulint fold, /*!< in: folded value */
hash_table_t* table) /*!< in: hash table */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
return(ut_hash_ulint(fold, table->n_cells));
}
@@ -88,6 +96,8 @@ hash_get_mutex_no(
hash_table_t* table, /*!< in: hash table */
ulint fold) /*!< in: fold */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ut_ad(ut_is_2pow(table->n_mutexes));
return(ut_2pow_remainder(hash_calc_hash(fold, table),
table->n_mutexes));
@@ -103,6 +113,8 @@ hash_get_nth_heap(
hash_table_t* table, /*!< in: hash table */
ulint i) /*!< in: index of the heap */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ut_ad(i < table->n_mutexes);
return(table->heaps[i]);
@@ -120,6 +132,9 @@ hash_get_heap(
{
ulint i;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
+
if (table->heap) {
return(table->heap);
}
@@ -139,6 +154,8 @@ hash_get_nth_mutex(
hash_table_t* table, /*!< in: hash table */
ulint i) /*!< in: index of the mutex */
{
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
ut_ad(i < table->n_mutexes);
return(table->mutexes + i);
@@ -156,6 +173,9 @@ hash_get_mutex(
{
ulint i;
+ ut_ad(table);
+ ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
+
i = hash_get_mutex_no(table, fold);
return(hash_get_nth_mutex(table, i));
diff --git a/storage/xtradb/include/lock0lock.h b/storage/xtradb/include/lock0lock.h
index 82e4c9bd976..73f885ecf04 100644
--- a/storage/xtradb/include/lock0lock.h
+++ b/storage/xtradb/include/lock0lock.h
@@ -43,6 +43,7 @@ extern ibool lock_print_waits;
#endif /* UNIV_DEBUG */
/* Buffer for storing information about the most recent deadlock error */
extern FILE* lock_latest_err_file;
+extern ulint srv_n_lock_deadlock_count;
/*********************************************************************//**
Gets the size of a lock struct.
@@ -340,11 +341,12 @@ lock_sec_rec_modify_check_and_lock(
que_thr_t* thr, /*!< in: query thread */
mtr_t* mtr); /*!< in/out: mini-transaction */
/*********************************************************************//**
-Like the counterpart for a clustered index below, but now we read a
+Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_sec_rec_read_check_and_lock(
/*=============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -371,9 +373,10 @@ if the query thread should anyway be suspended for some reason; if not, then
puts the transaction and the query thread to the lock wait state and inserts a
waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_clust_rec_read_check_and_lock(
/*===============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -613,13 +616,16 @@ lock_rec_print(
FILE* file, /*!< in: file where to print */
const lock_t* lock); /*!< in: record type lock */
/*********************************************************************//**
-Prints info of locks for all transactions. */
+Prints info of locks for all transactions.
+@return FALSE if not able to obtain kernel mutex
+and exits without printing info */
UNIV_INTERN
-void
+ibool
lock_print_info_summary(
/*====================*/
- FILE* file); /*!< in: file where to print */
-/*********************************************************************//**
+ FILE* file, /*!< in: file where to print */
+ ibool nowait);/*!< in: whether to wait for the kernel mutex */
+/*************************************************************************
Prints info of locks for each transaction. */
UNIV_INTERN
void
diff --git a/storage/xtradb/include/log0log.h b/storage/xtradb/include/log0log.h
index 135aeb69e2d..8fce4ef96bc 100644
--- a/storage/xtradb/include/log0log.h
+++ b/storage/xtradb/include/log0log.h
@@ -1,23 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-/*****************************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2009, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -825,7 +808,17 @@ struct log_struct{
written to some log group; for this to
be advanced, it is enough that the
write i/o has been completed for all
- log groups */
+ log groups.
+ Note that since InnoDB currently
+ has only one log group therefore
+ this value is redundant. Also it
+ is possible that this value
+ falls behind the
+ flushed_to_disk_lsn transiently.
+ It is appropriate to use either
+ flushed_to_disk_lsn or
+ write_lsn which are always
+ up-to-date and accurate. */
ib_uint64_t write_lsn; /*!< end lsn for the current running
write */
ulint write_end_offset;/*!< the data in buffer has
diff --git a/storage/xtradb/include/log0log.ic b/storage/xtradb/include/log0log.ic
index 36d151a3064..1ce00fd7313 100644
--- a/storage/xtradb/include/log0log.ic
+++ b/storage/xtradb/include/log0log.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -314,12 +314,15 @@ log_reserve_and_write_fast(
ulint data_len;
#ifdef UNIV_LOG_LSN_DEBUG
/* length of the LSN pseudo-record */
- ulint lsn_len = 1
- + mach_get_compressed_size(log_sys->lsn >> 32)
- + mach_get_compressed_size(log_sys->lsn & 0xFFFFFFFFUL);
+ ulint lsn_len;
#endif /* UNIV_LOG_LSN_DEBUG */
mutex_enter(&log_sys->mutex);
+#ifdef UNIV_LOG_LSN_DEBUG
+ lsn_len = 1
+ + mach_get_compressed_size(log_sys->lsn >> 32)
+ + mach_get_compressed_size(log_sys->lsn & 0xFFFFFFFFUL);
+#endif /* UNIV_LOG_LSN_DEBUG */
data_len = len
#ifdef UNIV_LOG_LSN_DEBUG
@@ -430,7 +433,10 @@ void
log_free_check(void)
/*================*/
{
- /* ut_ad(sync_thread_levels_empty()); */
+
+#ifdef UNIV_SYNC_DEBUG
+ ut_ad(sync_thread_levels_empty_gen(TRUE));
+#endif /* UNIV_SYNC_DEBUG */
if (log_sys->check_flush_or_checkpoint) {
diff --git a/storage/xtradb/include/log0recv.h b/storage/xtradb/include/log0recv.h
index ac6b19a3f6a..15065267250 100644
--- a/storage/xtradb/include/log0recv.h
+++ b/storage/xtradb/include/log0recv.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved.
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
@@ -176,6 +176,12 @@ UNIV_INTERN
void
recv_recovery_from_checkpoint_finish(void);
/*======================================*/
+/********************************************************//**
+Initiates the rollback of active transactions. */
+UNIV_INTERN
+void
+recv_recovery_rollback_active(void);
+/*===============================*/
/*******************************************************//**
Scans log from a buffer and stores new log data to the parsing buffer.
Parses and hashes the log records if new data found. Unless
@@ -258,12 +264,14 @@ void
recv_sys_init(
/*==========*/
ulint available_memory); /*!< in: available memory in bytes */
+#ifndef UNIV_HOTBACKUP
/********************************************************//**
Reset the state of the recovery system variables. */
UNIV_INTERN
void
recv_sys_var_init(void);
/*===================*/
+#endif /* !UNIV_HOTBACKUP */
/*******************************************************************//**
Empties the hash table of stored log records, applying them to appropriate
pages. */
@@ -360,8 +368,8 @@ typedef struct recv_addr_struct recv_addr_t;
struct recv_addr_struct{
enum recv_addr_state state;
/*!< recovery state of the page */
- ulint space; /*!< space id */
- ulint page_no;/*!< page number */
+ unsigned space:32;/*!< space id */
+ unsigned page_no:32;/*!< page number */
UT_LIST_BASE_NODE_T(recv_t)
rec_list;/*!< list of log records for this page */
hash_node_t addr_hash;/*!< hash node in the hash bucket chain */
diff --git a/storage/xtradb/include/mach0data.ic b/storage/xtradb/include/mach0data.ic
index ef20356bd31..96d2417ac81 100644
--- a/storage/xtradb/include/mach0data.ic
+++ b/storage/xtradb/include/mach0data.ic
@@ -36,7 +36,7 @@ mach_write_to_1(
ulint n) /*!< in: ulint integer to be stored, >= 0, < 256 */
{
ut_ad(b);
- ut_ad(n <= 0xFFUL);
+ ut_ad((n | 0xFFUL) <= 0xFFUL);
b[0] = (byte)n;
}
@@ -65,7 +65,7 @@ mach_write_to_2(
ulint n) /*!< in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFUL);
+ ut_ad((n | 0xFFFFUL) <= 0xFFFFUL);
b[0] = (byte)(n >> 8);
b[1] = (byte)(n);
@@ -81,10 +81,7 @@ mach_read_from_2(
/*=============*/
const byte* b) /*!< in: pointer to 2 bytes */
{
- ut_ad(b);
- return( ((ulint)(b[0]) << 8)
- + (ulint)(b[1])
- );
+ return(((ulint)(b[0]) << 8) | (ulint)(b[1]));
}
/********************************************************//**
@@ -129,7 +126,7 @@ mach_write_to_3(
ulint n) /*!< in: ulint integer to be stored */
{
ut_ad(b);
- ut_ad(n <= 0xFFFFFFUL);
+ ut_ad((n | 0xFFFFFFUL) <= 0xFFFFFFUL);
b[0] = (byte)(n >> 16);
b[1] = (byte)(n >> 8);
@@ -148,8 +145,8 @@ mach_read_from_3(
{
ut_ad(b);
return( ((ulint)(b[0]) << 16)
- + ((ulint)(b[1]) << 8)
- + (ulint)(b[2])
+ | ((ulint)(b[1]) << 8)
+ | (ulint)(b[2])
);
}
@@ -183,9 +180,9 @@ mach_read_from_4(
{
ut_ad(b);
return( ((ulint)(b[0]) << 24)
- + ((ulint)(b[1]) << 16)
- + ((ulint)(b[2]) << 8)
- + (ulint)(b[3])
+ | ((ulint)(b[1]) << 16)
+ | ((ulint)(b[2]) << 8)
+ | (ulint)(b[3])
);
}
@@ -721,7 +718,7 @@ mach_read_from_2_little_endian(
/*===========================*/
const byte* buf) /*!< in: from where to read */
{
- return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256);
+ return((ulint)(buf[0]) | ((ulint)(buf[1]) << 8));
}
/*********************************************************//**
diff --git a/storage/xtradb/include/mem0dbg.h b/storage/xtradb/include/mem0dbg.h
index a064af5c678..d81e1418b2b 100644
--- a/storage/xtradb/include/mem0dbg.h
+++ b/storage/xtradb/include/mem0dbg.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -28,6 +28,13 @@ Created 6/9/1994 Heikki Tuuri
check fields whose sizes are given below */
#ifdef UNIV_MEM_DEBUG
+# ifndef UNIV_HOTBACKUP
+/* The mutex which protects in the debug version the hash table
+containing the list of live memory heaps, and also the global
+variables in mem0dbg.c. */
+extern mutex_t mem_hash_mutex;
+# endif /* !UNIV_HOTBACKUP */
+
#define MEM_FIELD_HEADER_SIZE ut_calc_align(2 * sizeof(ulint),\
UNIV_MEM_ALIGNMENT)
#define MEM_FIELD_TRAILER_SIZE sizeof(ulint)
diff --git a/storage/xtradb/include/mem0dbg.ic b/storage/xtradb/include/mem0dbg.ic
index cb9245411dc..b0c8178a623 100644
--- a/storage/xtradb/include/mem0dbg.ic
+++ b/storage/xtradb/include/mem0dbg.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -25,9 +25,6 @@ Created 6/8/1994 Heikki Tuuri
*************************************************************************/
#ifdef UNIV_MEM_DEBUG
-# ifndef UNIV_HOTBACKUP
-extern mutex_t mem_hash_mutex;
-# endif /* !UNIV_HOTBACKUP */
extern ulint mem_current_allocated_memory;
/******************************************************************//**
diff --git a/storage/xtradb/include/mem0mem.h b/storage/xtradb/include/mem0mem.h
index 98f8748e529..ee28cf7b225 100644
--- a/storage/xtradb/include/mem0mem.h
+++ b/storage/xtradb/include/mem0mem.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -359,6 +359,9 @@ struct mem_block_info_struct {
to the heap is also the first block in this list,
though it also contains the base node of the list. */
ulint len; /*!< physical length of this block in bytes */
+ ulint total_size; /* physical length in bytes of all blocks
+ in the heap. This is defined only in the base
+ node and is set to ULINT_UNDEFINED in others. */
ulint type; /*!< type of heap: MEM_HEAP_DYNAMIC, or
MEM_HEAP_BUF possibly ORed to MEM_HEAP_BTR_SEARCH */
ulint free; /*!< offset in bytes of the first free position for
diff --git a/storage/xtradb/include/mem0mem.ic b/storage/xtradb/include/mem0mem.ic
index e7080d8c508..cbce2edc661 100644
--- a/storage/xtradb/include/mem0mem.ic
+++ b/storage/xtradb/include/mem0mem.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -579,18 +579,12 @@ mem_heap_get_size(
/*==============*/
mem_heap_t* heap) /*!< in: heap */
{
- mem_block_t* block;
ulint size = 0;
ut_ad(mem_heap_check(heap));
- block = heap;
-
- while (block != NULL) {
+ size = heap->total_size;
- size += mem_block_get_len(block);
- block = UT_LIST_GET_NEXT(list, block);
- }
#ifndef UNIV_HOTBACKUP
if (heap->free_block) {
size += UNIV_PAGE_SIZE;
diff --git a/storage/xtradb/include/mtr0log.ic b/storage/xtradb/include/mtr0log.ic
index 5c24c38b337..63af02ba409 100644
--- a/storage/xtradb/include/mtr0log.ic
+++ b/storage/xtradb/include/mtr0log.ic
@@ -27,8 +27,8 @@ Created 12/7/1995 Heikki Tuuri
#include "ut0lst.h"
#include "buf0buf.h"
#include "fsp0types.h"
+#include "srv0srv.h"
#include "trx0sys.h"
-
/********************************************************//**
Opens a buffer to mlog. It must be closed with mlog_close.
@return buffer, NULL if log mode MTR_LOG_NONE */
@@ -201,8 +201,9 @@ mlog_write_initial_log_record_fast(
the doublewrite buffer is located in pages
FSP_EXTENT_SIZE, ..., 3 * FSP_EXTENT_SIZE - 1 in the
system tablespace */
- if (space == TRX_SYS_SPACE
- && offset >= FSP_EXTENT_SIZE && offset < 3 * FSP_EXTENT_SIZE) {
+ if ((space == TRX_SYS_SPACE
+ || (srv_doublewrite_file && space == TRX_DOUBLEWRITE_SPACE))
+ && offset >= (ulint)FSP_EXTENT_SIZE && offset < 3 * (ulint)FSP_EXTENT_SIZE) {
if (trx_doublewrite_buf_is_being_created) {
/* Do nothing: we only come to this branch in an
InnoDB database creation. We do not redo log
diff --git a/storage/xtradb/include/mtr0mtr.ic b/storage/xtradb/include/mtr0mtr.ic
index 310c7c4117f..18f8e87b3cf 100644
--- a/storage/xtradb/include/mtr0mtr.ic
+++ b/storage/xtradb/include/mtr0mtr.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
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
@@ -70,6 +70,7 @@ mtr_memo_push(
ut_ad(type <= MTR_MEMO_X_LOCK);
ut_ad(mtr);
ut_ad(mtr->magic_n == MTR_MAGIC_N);
+ ut_ad(mtr->state == MTR_ACTIVE);
memo = &(mtr->memo);
@@ -92,6 +93,7 @@ mtr_set_savepoint(
ut_ad(mtr);
ut_ad(mtr->magic_n == MTR_MAGIC_N);
+ ut_ad(mtr->state == MTR_ACTIVE);
memo = &(mtr->memo);
@@ -149,6 +151,7 @@ mtr_memo_contains(
ut_ad(mtr);
ut_ad(mtr->magic_n == MTR_MAGIC_N);
+ ut_ad(mtr->state == MTR_ACTIVE || mtr->state == MTR_COMMITTING);
memo = &(mtr->memo);
diff --git a/storage/xtradb/include/os0file.h b/storage/xtradb/include/os0file.h
index 3eff5216867..eeab8a2b5d9 100644
--- a/storage/xtradb/include/os0file.h
+++ b/storage/xtradb/include/os0file.h
@@ -1,23 +1,6 @@
-/*****************************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
/***********************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted
diff --git a/storage/xtradb/include/os0proc.h b/storage/xtradb/include/os0proc.h
index fd46bd7db87..582cef6f803 100644
--- a/storage/xtradb/include/os0proc.h
+++ b/storage/xtradb/include/os0proc.h
@@ -32,6 +32,11 @@ Created 9/30/1995 Heikki Tuuri
#ifdef UNIV_LINUX
#include <sys/ipc.h>
#include <sys/shm.h>
+#else
+# if defined HAVE_SYS_IPC_H && HAVE_SYS_SHM_H
+#include <sys/ipc.h>
+#include <sys/shm.h>
+# endif
#endif
typedef void* os_process_t;
@@ -70,6 +75,29 @@ os_mem_free_large(
ulint size); /*!< in: size returned by
os_mem_alloc_large() */
+
+/****************************************************************//**
+Allocates or attaches and reuses shared memory segment.
+The content is not cleared automatically.
+@return allocated memory */
+UNIV_INTERN
+void*
+os_shm_alloc(
+/*=========*/
+ ulint* n, /*!< in/out: number of bytes */
+ uint key,
+ ibool* is_new);
+
+/****************************************************************//**
+Detach shared memory segment. */
+UNIV_INTERN
+void
+os_shm_free(
+/*========*/
+ void *ptr, /*!< in: pointer returned by
+ os_shm_alloc() */
+ ulint size); /*!< in: size returned by
+ os_shm_alloc() */
#ifndef UNIV_NONINL
#include "os0proc.ic"
#endif
diff --git a/storage/xtradb/include/page0page.h b/storage/xtradb/include/page0page.h
index e182c8f58be..5b2bcf7c054 100644
--- a/storage/xtradb/include/page0page.h
+++ b/storage/xtradb/include/page0page.h
@@ -500,7 +500,7 @@ ibool
page_is_leaf(
/*=========*/
const page_t* page) /*!< in: page */
- __attribute__((nonnull, pure));
+ __attribute__((pure));
/************************************************************//**
Gets the pointer to the next record on the page.
@return pointer to next record */
diff --git a/storage/xtradb/include/page0page.ic b/storage/xtradb/include/page0page.ic
index 9655e6c7e27..dab9dc742e4 100644
--- a/storage/xtradb/include/page0page.ic
+++ b/storage/xtradb/include/page0page.ic
@@ -275,6 +275,9 @@ page_is_leaf(
/*=========*/
const page_t* page) /*!< in: page */
{
+ if (!page) {
+ return(FALSE);
+ }
return(!*(const uint16*) (page + (PAGE_HEADER + PAGE_LEVEL)));
}
diff --git a/storage/xtradb/include/page0zip.h b/storage/xtradb/include/page0zip.h
index 574809e5227..4d37302ed20 100644
--- a/storage/xtradb/include/page0zip.h
+++ b/storage/xtradb/include/page0zip.h
@@ -114,7 +114,7 @@ page_zip_compress(
const page_t* page, /*!< in: uncompressed page */
dict_index_t* index, /*!< in: index of the B-tree node */
mtr_t* mtr) /*!< in: mini-transaction, or NULL */
- __attribute__((nonnull(1,2,3)));
+ __attribute__((nonnull(1,3)));
/**********************************************************************//**
Decompress a page. This function should tolerate errors on the compressed
diff --git a/storage/xtradb/include/que0que.h b/storage/xtradb/include/que0que.h
index 420f34550e2..09a671f49b1 100644
--- a/storage/xtradb/include/que0que.h
+++ b/storage/xtradb/include/que0que.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -30,6 +30,7 @@ Created 5/27/1996 Heikki Tuuri
#include "data0data.h"
#include "dict0types.h"
#include "trx0trx.h"
+#include "trx0roll.h"
#include "srv0srv.h"
#include "usr0types.h"
#include "que0types.h"
@@ -215,6 +216,16 @@ trx_t*
thr_get_trx(
/*========*/
que_thr_t* thr); /*!< in: query thread */
+/*******************************************************************//**
+Determines if this thread is rolling back an incomplete transaction
+in crash recovery.
+@return TRUE if thr is rolling back an incomplete transaction in crash
+recovery */
+UNIV_INLINE
+ibool
+thr_is_recv(
+/*========*/
+ const que_thr_t* thr); /*!< in: query thread */
/***********************************************************************//**
Gets the type of a graph node. */
UNIV_INLINE
@@ -481,6 +492,8 @@ struct que_fork_struct{
#define QUE_NODE_CALL 31
#define QUE_NODE_EXIT 32
+#define QUE_NODE_INSERT_STATS 34
+
/* Query thread states */
#define QUE_THR_RUNNING 1
#define QUE_THR_PROCEDURE_WAIT 2
diff --git a/storage/xtradb/include/que0que.ic b/storage/xtradb/include/que0que.ic
index a1c0dc1e77a..bd936670e1e 100644
--- a/storage/xtradb/include/que0que.ic
+++ b/storage/xtradb/include/que0que.ic
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -38,6 +38,20 @@ thr_get_trx(
return(thr->graph->trx);
}
+/*******************************************************************//**
+Determines if this thread is rolling back an incomplete transaction
+in crash recovery.
+@return TRUE if thr is rolling back an incomplete transaction in crash
+recovery */
+UNIV_INLINE
+ibool
+thr_is_recv(
+/*========*/
+ const que_thr_t* thr) /*!< in: query thread */
+{
+ return(trx_is_recv(thr->graph->trx));
+}
+
/***********************************************************************//**
Gets the first thr in a fork. */
UNIV_INLINE
diff --git a/storage/xtradb/include/rem0cmp.h b/storage/xtradb/include/rem0cmp.h
index 421308af49b..fcea62ad486 100644
--- a/storage/xtradb/include/rem0cmp.h
+++ b/storage/xtradb/include/rem0cmp.h
@@ -148,7 +148,9 @@ cmp_rec_rec_simple(
const rec_t* rec2, /*!< in: physical record */
const ulint* offsets1,/*!< in: rec_get_offsets(rec1, ...) */
const ulint* offsets2,/*!< in: rec_get_offsets(rec2, ...) */
- const dict_index_t* index); /*!< in: data dictionary index */
+ const dict_index_t* index, /*!< in: data dictionary index */
+ ibool* null_eq);/*!< out: set to TRUE if
+ found matching null values */
/*************************************************************//**
This function is used to compare two physical records. Only the common
first fields are compared, and if an externally stored field is
diff --git a/storage/xtradb/include/rem0rec.ic b/storage/xtradb/include/rem0rec.ic
index 8e5bd9a7fcd..fa96c97f95e 100644
--- a/storage/xtradb/include/rem0rec.ic
+++ b/storage/xtradb/include/rem0rec.ic
@@ -268,7 +268,7 @@ rec_get_next_ptr_const(
return(NULL);
}
- if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) {
+ if (UNIV_LIKELY(comp != 0)) {
#if UNIV_PAGE_SIZE <= 32768
/* Note that for 64 KiB pages, field_value can 'wrap around'
and the debug assertion is not valid */
@@ -336,7 +336,7 @@ rec_get_next_offs(
field_value = mach_read_from_2(rec - REC_NEXT);
- if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) {
+ if (UNIV_LIKELY(comp != 0)) {
#if UNIV_PAGE_SIZE <= 32768
/* Note that for 64 KiB pages, field_value can 'wrap around'
and the debug assertion is not valid */
@@ -647,7 +647,7 @@ rec_get_info_and_status_bits(
& (REC_INFO_BITS_MASK >> REC_INFO_BITS_SHIFT)
# error "REC_NEW_STATUS_MASK and REC_INFO_BITS_MASK overlap"
#endif
- if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) {
+ if (UNIV_LIKELY(comp != 0)) {
bits = rec_get_info_bits(rec, TRUE) | rec_get_status(rec);
} else {
bits = rec_get_info_bits(rec, FALSE);
@@ -683,7 +683,7 @@ rec_get_deleted_flag(
const rec_t* rec, /*!< in: physical record */
ulint comp) /*!< in: nonzero=compact page format */
{
- if (UNIV_EXPECT(comp, REC_OFFS_COMPACT)) {
+ if (UNIV_LIKELY(comp != 0)) {
return(UNIV_UNLIKELY(
rec_get_bit_field_1(rec, REC_NEW_INFO_BITS,
REC_INFO_DELETED_FLAG,
diff --git a/storage/xtradb/include/row0mysql.h b/storage/xtradb/include/row0mysql.h
index 261ab239cd8..8c5b5b7e0da 100644
--- a/storage/xtradb/include/row0mysql.h
+++ b/storage/xtradb/include/row0mysql.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2000, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 2000, 2010, Innobase Oy. All Rights Reserved.
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
@@ -253,15 +253,6 @@ row_table_got_default_clust_index(
/*==============================*/
const dict_table_t* table); /*!< in: table */
/*********************************************************************//**
-Calculates the key number used inside MySQL for an Innobase index. We have
-to take into account if we generated a default clustered index for the table
-@return the key number used inside MySQL */
-UNIV_INTERN
-ulint
-row_get_mysql_key_number_for_index(
-/*===============================*/
- const dict_index_t* index); /*!< in: index */
-/*********************************************************************//**
Does an update or delete of a row for MySQL.
@return error code or DB_SUCCESS */
UNIV_INTERN
@@ -273,27 +264,26 @@ row_update_for_mysql(
row_prebuilt_t* prebuilt); /*!< in: prebuilt struct in MySQL
handle */
/*********************************************************************//**
-This can only be used when srv_locks_unsafe_for_binlog is TRUE or
-session is using a READ COMMITTED isolation level. Before
-calling this function we must use trx_reset_new_rec_lock_info() and
-trx_register_new_rec_lock() to store the information which new record locks
-really were set. This function removes a newly set lock under prebuilt->pcur,
-and also under prebuilt->clust_pcur. Currently, this is only used and tested
-in the case of an UPDATE or a DELETE statement, where the row lock is of the
-LOCK_X type.
-Thus, this implements a 'mini-rollback' that releases the latest record
-locks we set.
-@return error code or DB_SUCCESS */
+This can only be used when srv_locks_unsafe_for_binlog is TRUE or this
+session is using a READ COMMITTED or READ UNCOMMITTED isolation level.
+Before calling this function row_search_for_mysql() must have
+initialized prebuilt->new_rec_locks to store the information which new
+record locks really were set. This function removes a newly set
+clustered index record lock under prebuilt->pcur or
+prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that
+releases the latest clustered index record lock we set.
+@return error code or DB_SUCCESS */
UNIV_INTERN
int
row_unlock_for_mysql(
/*=================*/
- row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL
+ row_prebuilt_t* prebuilt, /*!< in/out: prebuilt struct in MySQL
handle */
- ibool has_latches_on_recs);/*!< TRUE if called so that we have
- the latches on the records under pcur
- and clust_pcur, and we do not need to
- reposition the cursors. */
+ ibool has_latches_on_recs);/*!< in: TRUE if called
+ so that we have the latches on
+ the records under pcur and
+ clust_pcur, and we do not need
+ to reposition the cursors. */
/*********************************************************************//**
Creates an query graph node of 'update' type to be used in the MySQL
interface.
@@ -386,6 +376,14 @@ row_create_index_for_mysql(
then checked for not being too
large. */
/*********************************************************************//**
+*/
+UNIV_INTERN
+int
+row_insert_stats_for_mysql(
+/*=======================*/
+ dict_index_t* index,
+ trx_t* trx);
+/*********************************************************************//**
Scans a table create SQL string and adds to the data dictionary
the foreign key constraints declared in the string. This function
should be called after the indexes for a table have been created.
@@ -403,6 +401,7 @@ row_table_add_foreign_constraints(
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the
database name before it: test.table2 */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -451,6 +450,12 @@ row_drop_table_for_mysql(
const char* name, /*!< in: table name */
trx_t* trx, /*!< in: transaction handle */
ibool drop_db);/*!< in: TRUE=dropping whole database */
+/*********************************************************************//**
+Drop all temporary tables during crash recovery. */
+UNIV_INTERN
+void
+row_mysql_drop_temp_tables(void);
+/*============================*/
/*********************************************************************//**
Discards the tablespace of a table which stored in an .ibd file. Discarding
@@ -494,14 +499,19 @@ row_rename_table_for_mysql(
trx_t* trx, /*!< in: transaction handle */
ibool commit); /*!< in: if TRUE then commit trx */
/*********************************************************************//**
-Checks a table for corruption.
-@return DB_ERROR or DB_SUCCESS */
+Checks that the index contains entries in an ascending order, unique
+constraint is not broken, and calculates the number of index entries
+in the read view of the current transaction.
+@return DB_SUCCESS if ok */
UNIV_INTERN
ulint
-row_check_table_for_mysql(
+row_check_index_for_mysql(
/*======================*/
- row_prebuilt_t* prebuilt); /*!< in: prebuilt struct in MySQL
- handle */
+ row_prebuilt_t* prebuilt, /*!< in: prebuilt struct
+ in MySQL handle */
+ const dict_index_t* index, /*!< in: index */
+ ulint* n_rows); /*!< out: number of entries
+ seen in the consistent read */
/*********************************************************************//**
Determines if a table is a magic monitor table.
@@ -701,18 +711,17 @@ struct row_prebuilt_struct {
ulint new_rec_locks; /*!< normally 0; if
srv_locks_unsafe_for_binlog is
TRUE or session is using READ
- COMMITTED isolation level, in a
- cursor search, if we set a new
- record lock on an index, this is
- incremented; this is used in
- releasing the locks under the
- cursors if we are performing an
- UPDATE and we determine after
- retrieving the row that it does
- not need to be locked; thus,
- these can be used to implement a
- 'mini-rollback' that releases
- the latest record locks */
+ COMMITTED or READ UNCOMMITTED
+ isolation level, set in
+ row_search_for_mysql() if we set a new
+ record lock on the secondary
+ or clustered index; this is
+ used in row_unlock_for_mysql()
+ when releasing the lock under
+ the cursor if we determine
+ after retrieving the row that
+ it does not need to be locked
+ ('mini-rollback') */
ulint mysql_prefix_len;/*!< byte offset of the end of
the last requested column */
ulint mysql_row_len; /*!< length in bytes of a row in the
diff --git a/storage/xtradb/include/row0sel.h b/storage/xtradb/include/row0sel.h
index 01a5afaa23e..8544b9d08ba 100644
--- a/storage/xtradb/include/row0sel.h
+++ b/storage/xtradb/include/row0sel.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved.
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
@@ -105,17 +105,6 @@ row_fetch_print(
/*============*/
void* row, /*!< in: sel_node_t* */
void* user_arg); /*!< in: not used */
-/****************************************************************//**
-Callback function for fetch that stores an unsigned 4 byte integer to the
-location pointed. The column's type must be DATA_INT, DATA_UNSIGNED, length
-= 4.
-@return always returns NULL */
-UNIV_INTERN
-void*
-row_fetch_store_uint4(
-/*==================*/
- void* row, /*!< in: sel_node_t* */
- void* user_arg); /*!< in: data pointer */
/***********************************************************//**
Prints a row in a select result.
@return query thread to run next or NULL */
diff --git a/storage/xtradb/include/srv0srv.h b/storage/xtradb/include/srv0srv.h
index 99ad3ad03d0..0904a5da1eb 100644
--- a/storage/xtradb/include/srv0srv.h
+++ b/storage/xtradb/include/srv0srv.h
@@ -1,7 +1,8 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, 2009, Google Inc.
+Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are
incorporated with their permission, and subject to the conditions contained in
the file COPYING.Google.
+Portions of this file contain modifications contributed and copyrighted
+by Percona Inc.. Those modifications are
+gratefully acknowledged and are described briefly in the InnoDB
+documentation. The contributions by Percona Inc. are incorporated with
+their permission, and subject to the conditions contained in the file
+COPYING.Percona.
+
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.
@@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
-/***********************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-Copyright (c) 2009, Percona Inc.
-
-Portions of this file contain modifications contributed and copyrighted
-by Percona Inc.. Those modifications are
-gratefully acknowledged and are described briefly in the InnoDB
-documentation. The contributions by Percona Inc. are incorporated with
-their permission, and subject to the conditions contained in the file
-COPYING.Percona.
-
-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.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-***********************************************************************/
/**************************************************//**
@file include/srv0srv.h
@@ -133,9 +115,10 @@ extern char** srv_data_file_names;
extern ulint* srv_data_file_sizes;
extern ulint* srv_data_file_is_raw_partition;
+extern char* srv_doublewrite_file;
+
extern ibool srv_extra_undoslots;
-extern ibool srv_fast_recovery;
extern ibool srv_recovery_stats;
extern ulint srv_use_purge_thread;
@@ -173,6 +156,8 @@ extern ulint srv_buf_pool_curr_size; /*!< current size in bytes */
extern ulint srv_mem_pool_size;
extern ulint srv_lock_table_size;
+extern uint srv_buffer_pool_shm_key;
+
extern ibool srv_thread_concurrency_timer_based;
extern ulint srv_n_file_io_threads;
@@ -224,6 +209,7 @@ extern ulong srv_stats_method;
#define SRV_STATS_METHOD_IGNORE_NULLS 2
extern ulong srv_stats_auto_update;
extern ulint srv_stats_update_need_lock;
+extern ibool srv_use_sys_stats_table;
extern ibool srv_use_doublewrite_buf;
extern ibool srv_use_checksums;
@@ -247,7 +233,6 @@ extern ulong srv_read_ahead;
extern ulong srv_adaptive_checkpoint;
extern ulong srv_expand_import;
-extern ulint srv_relax_table_creation;
extern ulint srv_pass_corrupt_table;
extern ulong srv_extra_rsegments;
@@ -265,7 +250,8 @@ extern ibool srv_print_innodb_tablespace_monitor;
extern ibool srv_print_verbose_log;
extern ibool srv_print_innodb_table_monitor;
-extern ibool srv_lock_timeout_and_monitor_active;
+extern ibool srv_lock_timeout_active;
+extern ibool srv_monitor_active;
extern ibool srv_error_monitor_active;
extern ulong srv_n_spin_wait_rounds;
@@ -384,8 +370,9 @@ enum {
when writing data files, but do flush
after writing to log files */
SRV_UNIX_NOSYNC, /*!< do not flush after writing */
- SRV_UNIX_O_DIRECT /*!< invoke os_file_set_nocache() on
+ SRV_UNIX_O_DIRECT, /*!< invoke os_file_set_nocache() on
data files */
+ SRV_UNIX_ALL_O_DIRECT /* new method for examination: logfile also open O_DIRECT */
};
/** Alternatives for file i/o in Windows */
@@ -595,15 +582,23 @@ srv_release_mysql_thread_if_suspended(
MySQL OS thread */
/*********************************************************************//**
A thread which wakes up threads whose lock wait may have lasted too long.
-This also prints the info output by various InnoDB monitors.
@return a dummy parameter */
UNIV_INTERN
os_thread_ret_t
-srv_lock_timeout_and_monitor_thread(
-/*================================*/
+srv_lock_timeout_thread(
+/*====================*/
void* arg); /*!< in: a dummy parameter required by
os_thread_create */
/*********************************************************************//**
+A thread which prints the info output by various InnoDB monitors.
+@return a dummy parameter */
+UNIV_INTERN
+os_thread_ret_t
+srv_monitor_thread(
+/*===============*/
+ void* arg); /*!< in: a dummy parameter required by
+ os_thread_create */
+/*************************************************************************
A thread which prints warnings about semaphore waits which have lasted
too long. These can be used to track bugs which cause hangs.
@return a dummy parameter */
@@ -614,12 +609,15 @@ srv_error_monitor_thread(
void* arg); /*!< in: a dummy parameter required by
os_thread_create */
/******************************************************************//**
-Outputs to a file the output of the InnoDB Monitor. */
+Outputs to a file the output of the InnoDB Monitor.
+@return FALSE if not all information printed
+due to failure to obtain necessary mutex */
UNIV_INTERN
-void
+ibool
srv_printf_innodb_monitor(
/*======================*/
FILE* file, /*!< in: output stream */
+ ibool nowait, /*!< in: whether to wait for kernel mutex */
ulint* trx_start, /*!< out: file position of the start of
the list of active transactions */
ulint* trx_end); /*!< out: file position of the end of
@@ -664,6 +662,7 @@ struct export_var_struct{
ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */
ulint innodb_buffer_pool_read_ahead; /*!< srv_read_ahead */
ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
+ ulint innodb_deadlocks; /* ??? */
ulint innodb_dblwr_pages_written; /*!< srv_dblwr_pages_written */
ulint innodb_dblwr_writes; /*!< srv_dblwr_writes */
ibool innodb_have_atomic_builtins; /*!< HAVE_ATOMIC_BUILTINS */
diff --git a/storage/xtradb/include/sync0rw.h b/storage/xtradb/include/sync0rw.h
index 85fa014d77a..4edf93f4042 100644
--- a/storage/xtradb/include/sync0rw.h
+++ b/storage/xtradb/include/sync0rw.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -429,8 +429,9 @@ ibool
rw_lock_own(
/*========*/
rw_lock_t* lock, /*!< in: rw-lock */
- ulint lock_type); /*!< in: lock type: RW_LOCK_SHARED,
+ ulint lock_type) /*!< in: lock type: RW_LOCK_SHARED,
RW_LOCK_EX */
+ __attribute__((warn_unused_result));
#endif /* UNIV_SYNC_DEBUG */
/******************************************************************//**
Checks if somebody has locked the rw-lock in the specified mode. */
@@ -555,11 +556,12 @@ struct rw_lock_struct {
//unsigned cline:14; /*!< Line where created */
unsigned last_s_line:14; /*!< Line number where last time s-locked */
unsigned last_x_line:14; /*!< Line number where last time x-locked */
+#ifdef UNIV_DEBUG
ulint magic_n; /*!< RW_LOCK_MAGIC_N */
-};
-
/** Value of rw_lock_struct::magic_n */
#define RW_LOCK_MAGIC_N 22643
+#endif /* UNIV_DEBUG */
+};
#ifdef UNIV_SYNC_DEBUG
/** The structure for storing debug info of an rw-lock */
diff --git a/storage/xtradb/include/sync0sync.h b/storage/xtradb/include/sync0sync.h
index c653e44b5bd..a500cf1da45 100644
--- a/storage/xtradb/include/sync0sync.h
+++ b/storage/xtradb/include/sync0sync.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -206,7 +206,8 @@ UNIV_INTERN
ibool
mutex_own(
/*======*/
- const mutex_t* mutex); /*!< in: mutex */
+ const mutex_t* mutex) /*!< in: mutex */
+ __attribute__((warn_unused_result));
#endif /* UNIV_DEBUG */
#ifdef UNIV_SYNC_DEBUG
/******************************************************************//**
@@ -238,16 +239,27 @@ ibool
sync_thread_levels_empty(void);
/*==========================*/
/******************************************************************//**
-Checks that the level array for the current thread is empty.
-@return TRUE if empty except the exceptions specified below */
+Checks if the level array for the current thread contains a
+mutex or rw-latch at the specified level.
+@return a matching latch, or NULL if not found */
UNIV_INTERN
-ibool
-sync_thread_levels_empty_gen(
-/*=========================*/
+void*
+sync_thread_levels_contains(
+/*========================*/
+ ulint level); /*!< in: latching order level
+ (SYNC_DICT, ...)*/
+/******************************************************************//**
+Checks if the level array for the current thread is empty.
+@return a latch, or NULL if empty except the exceptions specified below */
+UNIV_INTERN
+void*
+sync_thread_levels_nonempty_gen(
+/*============================*/
ibool dict_mutex_allowed); /*!< in: TRUE if dictionary mutex is
allowed to be owned by the thread,
also purge_is_running mutex is
allowed */
+#define sync_thread_levels_empty_gen(d) (!sync_thread_levels_nonempty_gen(d))
/******************************************************************//**
Gets the debug information for a reserved mutex. */
UNIV_INTERN
@@ -426,7 +438,7 @@ or row lock! */
#define SYNC_FILE_FORMAT_TAG 1200 /* Used to serialize access to the
file format tag */
#define SYNC_DICT_OPERATION 1001 /* table create, drop, etc. reserve
- this in X-mode, implicit or backround
+ this in X-mode; implicit or backround
operations purge, rollback, foreign
key checks reserve this in S-mode */
#define SYNC_DICT 1000
diff --git a/storage/xtradb/include/trx0rseg.h b/storage/xtradb/include/trx0rseg.h
index 0d7dc60329f..303188f09f2 100644
--- a/storage/xtradb/include/trx0rseg.h
+++ b/storage/xtradb/include/trx0rseg.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
diff --git a/storage/xtradb/include/trx0sys.h b/storage/xtradb/include/trx0sys.h
index 13d93d5a77a..9ef9485b611 100644
--- a/storage/xtradb/include/trx0sys.h
+++ b/storage/xtradb/include/trx0sys.h
@@ -124,6 +124,22 @@ trx_sys_hdr_page(
/*=============*/
ulint space, /*!< in: space */
ulint page_no);/*!< in: page number */
+/***************************************************************//**
+Checks if a space is the system tablespaces.
+@return TRUE if system tablespace */
+UNIV_INLINE
+ibool
+trx_sys_sys_space(
+/*==============*/
+ ulint space); /*!< in: space */
+/***************************************************************//**
+Checks if a space is the doublewrite tablespace.
+@return TRUE if doublewrite tablespace */
+UNIV_INLINE
+ibool
+trx_sys_doublewrite_space(
+/*======================*/
+ ulint space); /*!< in: space */
/*****************************************************************//**
Creates and initializes the central memory structures for the transaction
system. This is called when the database is started. */
@@ -137,6 +153,13 @@ UNIV_INTERN
void
trx_sys_create(void);
/*================*/
+/*****************************************************************//**
+Creates and initializes the dummy transaction system page for tablespace. */
+UNIV_INTERN
+void
+trx_sys_dummy_create(
+/*=================*/
+ ulint space);
/*********************************************************************
Create extra rollback segments when create_new_db */
UNIV_INTERN
@@ -303,6 +326,7 @@ UNIV_INTERN
void
trx_sys_update_mysql_binlog_offset(
/*===============================*/
+ trx_sysf_t* sys_header,
const char* file_name_in,/*!< in: MySQL log file name */
ib_int64_t offset, /*!< in: position in that log file */
ulint field, /*!< in: offset of the MySQL log info field in
@@ -343,12 +367,14 @@ UNIV_INTERN
void
trx_sys_file_format_tag_init(void);
/*==============================*/
+#ifndef UNIV_HOTBACKUP
/*****************************************************************//**
Shutdown/Close the transaction system. */
UNIV_INTERN
void
trx_sys_close(void);
/*===============*/
+#endif /* !UNIV_HOTBACKUP */
/*****************************************************************//**
Get the name representation of the file format from its id.
@return pointer to the name */
@@ -444,6 +470,8 @@ trx_sys_file_format_id_to_name(
/* Space id and page no where the trx system file copy resides */
#define TRX_SYS_SPACE 0 /* the SYSTEM tablespace */
+#define TRX_DOUBLEWRITE_SPACE 1 /* the doublewrite buffer tablespace if used */
+#define TRX_SYS_SPACE_MAX 9 /* reserved max space id for system tablespaces */
#include "fsp0fsp.h"
#define TRX_SYS_PAGE_NO FSP_TRX_SYS_PAGE_NO
@@ -507,7 +535,6 @@ this contains the same fields as TRX_SYS_MYSQL_LOG_INFO below */
within that file */
#define TRX_SYS_MYSQL_LOG_NAME 12 /*!< MySQL log file name */
-#ifndef UNIV_HOTBACKUP
/** Doublewrite buffer */
/* @{ */
/** The offset of the doublewrite buffer header on the trx system header page */
@@ -559,6 +586,7 @@ FIL_PAGE_ARCH_LOG_NO_OR_SPACE_NO. */
#define TRX_SYS_DOUBLEWRITE_BLOCK_SIZE FSP_EXTENT_SIZE
/* @} */
+#ifndef UNIV_HOTBACKUP
/** File format tag */
/* @{ */
/** The offset of the file format tag on the trx system header page
diff --git a/storage/xtradb/include/trx0sys.ic b/storage/xtradb/include/trx0sys.ic
index 820d31d0692..c7b09d4aec2 100644
--- a/storage/xtradb/include/trx0sys.ic
+++ b/storage/xtradb/include/trx0sys.ic
@@ -71,6 +71,40 @@ trx_sys_hdr_page(
}
/***************************************************************//**
+Checks if a space is the system tablespaces.
+@return TRUE if system tablespace */
+UNIV_INLINE
+ibool
+trx_sys_sys_space(
+/*==============*/
+ ulint space) /*!< in: space */
+{
+ if (srv_doublewrite_file) {
+ /* several spaces are reserved */
+ return((ibool)(space <= TRX_SYS_SPACE_MAX));
+ } else {
+ return((ibool)(space == TRX_SYS_SPACE));
+ }
+}
+
+/***************************************************************//**
+Checks if a space is the doublewrite tablespace.
+@return TRUE if doublewrite tablespace */
+UNIV_INLINE
+ibool
+trx_sys_doublewrite_space(
+/*======================*/
+ ulint space) /*!< in: space */
+{
+ if (srv_doublewrite_file) {
+ /* doublewrite buffer is separated */
+ return((ibool)(space == TRX_DOUBLEWRITE_SPACE));
+ } else {
+ return((ibool)(space == TRX_SYS_SPACE));
+ }
+}
+
+/***************************************************************//**
Gets the pointer in the nth slot of the rseg array.
@return pointer to rseg object, NULL if slot not in use */
UNIV_INLINE
diff --git a/storage/xtradb/include/trx0trx.h b/storage/xtradb/include/trx0trx.h
index 3b845e498d0..4c0ce392bcd 100644
--- a/storage/xtradb/include/trx0trx.h
+++ b/storage/xtradb/include/trx0trx.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -338,9 +338,7 @@ trx_commit_step(
/**********************************************************************//**
Prints info about a transaction to the given file. The caller must own the
-kernel mutex and must have called
-innobase_mysql_prepare_print_arbitrary_thd(), unless he knows that MySQL
-or InnoDB cannot meanwhile change the info printed here. */
+kernel mutex. */
UNIV_INTERN
void
trx_print(
@@ -351,7 +349,7 @@ trx_print(
use the default max length */
/** Type of data dictionary operation */
-enum trx_dict_op {
+typedef enum trx_dict_op {
/** The transaction is not modifying the data dictionary. */
TRX_DICT_OP_NONE = 0,
/** The transaction is creating a table or an index, or
@@ -363,7 +361,7 @@ enum trx_dict_op {
existing table. In crash recovery, the data dictionary
must be locked, but the table must not be dropped. */
TRX_DICT_OP_INDEX = 2
-};
+} trx_dict_op_t;
/**********************************************************************//**
Determine if a transaction is a dictionary operation.
@@ -393,6 +391,14 @@ ibool
trx_is_interrupted(
/*===============*/
trx_t* trx); /*!< in: transaction */
+/**********************************************************************//**
+Determines if the currently running transaction is in strict mode.
+@return TRUE if strict */
+UNIV_INTERN
+ibool
+trx_is_strict(
+/*==========*/
+ trx_t* trx); /*!< in: transaction */
#else /* !UNIV_HOTBACKUP */
#define trx_is_interrupted(trx) FALSE
#endif /* !UNIV_HOTBACKUP */
@@ -465,69 +471,80 @@ rolling back after a database recovery */
struct trx_struct{
ulint magic_n;
- /* All the next fields are protected by the kernel mutex, except the
- undo logs which are protected by undo_mutex */
+
+ /* These fields are not protected by any mutex. */
const char* op_info; /*!< English text describing the
current operation, or an empty
string */
- unsigned is_purge:1; /*!< 0=user transaction, 1=purge */
- unsigned is_recovered:1; /*!< 0=normal transaction,
- 1=recovered, must be rolled back */
- unsigned conc_state:2; /*!< state of the trx from the point
+ ulint conc_state; /*!< state of the trx from the point
of view of concurrency control:
TRX_ACTIVE, TRX_COMMITTED_IN_MEMORY,
... */
- unsigned que_state:2; /*!< valid when conc_state == TRX_ACTIVE:
- TRX_QUE_RUNNING, TRX_QUE_LOCK_WAIT,
- ... */
- unsigned isolation_level:2;/* TRX_ISO_REPEATABLE_READ, ... */
- unsigned check_foreigns:1;/* normally TRUE, but if the user
+ ulint isolation_level;/* TRX_ISO_REPEATABLE_READ, ... */
+ ulint check_foreigns; /* normally TRUE, but if the user
wants to suppress foreign key checks,
(in table imports, for example) we
set this FALSE */
- unsigned check_unique_secondary:1;
+ ulint check_unique_secondary;
/* normally TRUE, but if the user
wants to speed up inserts by
suppressing unique key checks
for secondary indexes when we decide
if we can use the insert buffer for
them, we set this FALSE */
- unsigned support_xa:1; /*!< normally we do the XA two-phase
+ ulint support_xa; /*!< normally we do the XA two-phase
commit steps, but by setting this to
FALSE, one can save CPU time and about
150 bytes in the undo log size as then
we skip XA steps */
- unsigned flush_log_later:1;/* In 2PC, we hold the
+ ulint flush_log_at_trx_commit_session;
+ ulint flush_log_later;/* In 2PC, we hold the
prepare_commit mutex across
both phases. In that case, we
defer flush of the logs to disk
until after we release the
mutex. */
- unsigned must_flush_log_later:1;/* this flag is set to TRUE in
+ ulint must_flush_log_later;/* this flag is set to TRUE in
trx_commit_off_kernel() if
flush_log_later was TRUE, and there
were modifications by the transaction;
in that case we must flush the log
in trx_commit_complete_for_mysql() */
- unsigned dict_operation:2;/**< @see enum trx_dict_op */
- unsigned duplicates:2; /*!< TRX_DUP_IGNORE | TRX_DUP_REPLACE */
- unsigned active_trans:2; /*!< 1 - if a transaction in MySQL
+ ulint duplicates; /*!< TRX_DUP_IGNORE | TRX_DUP_REPLACE */
+ ulint active_trans; /*!< 1 - if a transaction in MySQL
is active. 2 - if prepare_commit_mutex
was taken */
- unsigned has_search_latch:1;
+ ulint has_search_latch;
/* TRUE if this trx has latched the
search system latch in S-mode */
- unsigned declared_to_be_inside_innodb:1;
+ ulint deadlock_mark; /*!< a mark field used in deadlock
+ checking algorithm. */
+ trx_dict_op_t dict_operation; /**< @see enum trx_dict_op */
+
+ /* Fields protected by the srv_conc_mutex. */
+ ulint declared_to_be_inside_innodb;
/* this is TRUE if we have declared
this transaction in
srv_conc_enter_innodb to be inside the
InnoDB engine */
- unsigned handling_signals:1;/* this is TRUE as long as the trx
- is handling signals */
- unsigned dict_operation_lock_mode:2;
- /* 0, RW_S_LATCH, or RW_X_LATCH:
+
+ /* Fields protected by dict_operation_lock. The very latch
+ it is used to track. */
+ ulint dict_operation_lock_mode;
+ /*!< 0, RW_S_LATCH, or RW_X_LATCH:
the latch mode trx currently holds
on dict_operation_lock */
+
+ /* All the next fields are protected by the kernel mutex, except the
+ undo logs which are protected by undo_mutex */
+ ulint is_purge; /*!< 0=user transaction, 1=purge */
+ ulint is_recovered; /*!< 0=normal transaction,
+ 1=recovered, must be rolled back */
+ ulint que_state; /*!< valid when conc_state
+ == TRX_ACTIVE: TRX_QUE_RUNNING,
+ TRX_QUE_LOCK_WAIT, ... */
+ ulint handling_signals;/* this is TRUE as long as the trx
+ is handling signals */
time_t start_time; /*!< time the trx object was created
or the state last time became
TRX_ACTIVE */
@@ -544,9 +561,6 @@ struct trx_struct{
/*------------------------------*/
void* mysql_thd; /*!< MySQL thread handle corresponding
to this trx, or NULL */
- char** mysql_query_str;/* pointer to the field in mysqld_thd
- which contains the pointer to the
- current SQL query string */
const char* mysql_log_file_name;
/* if MySQL binlog is used, this field
contains a pointer to the latest file
@@ -657,11 +671,6 @@ struct trx_struct{
wait_thrs; /*!< query threads belonging to this
trx that are in the QUE_THR_LOCK_WAIT
state */
- ulint deadlock_mark; /*!< a mark field used in deadlock
- checking algorithm. This must be
- in its own machine word, because
- it can be changed by other
- threads while holding kernel_mutex. */
/*------------------------------*/
mem_heap_t* lock_heap; /*!< memory heap for the locks of the
transaction */
diff --git a/storage/xtradb/include/trx0types.h b/storage/xtradb/include/trx0types.h
index 24cf57d53d5..40a7256cbfd 100644
--- a/storage/xtradb/include/trx0types.h
+++ b/storage/xtradb/include/trx0types.h
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -70,6 +70,13 @@ typedef struct trx_named_savept_struct trx_named_savept_t;
enum trx_rb_ctx {
RB_NONE = 0, /*!< no rollback */
RB_NORMAL, /*!< normal rollback */
+ RB_RECOVERY_PURGE_REC,
+ /*!< rolling back an incomplete transaction,
+ in crash recovery, rolling back an
+ INSERT that was performed by updating a
+ delete-marked record; if the delete-marked record
+ no longer exists in an active read view, it will
+ be purged */
RB_RECOVERY /*!< rolling back an incomplete transaction,
in crash recovery */
};
diff --git a/storage/xtradb/include/univ.i b/storage/xtradb/include/univ.i
index 0d9417fab38..71476443964 100644
--- a/storage/xtradb/include/univ.i
+++ b/storage/xtradb/include/univ.i
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Copyright (c) 2009, Sun Microsystems, Inc.
@@ -46,8 +46,8 @@ Created 1/20/1994 Heikki Tuuri
#define INNODB_VERSION_MAJOR 1
#define INNODB_VERSION_MINOR 0
-#define INNODB_VERSION_BUGFIX 6
-#define PERCONA_INNODB_VERSION 10
+#define INNODB_VERSION_BUGFIX 10
+#define PERCONA_INNODB_VERSION 12.0
/* The following is the InnoDB version as shown in
SELECT plugin_version FROM information_schema.plugins;
@@ -118,7 +118,7 @@ if we are compiling on Windows. */
/* Include <sys/stat.h> to get S_I... macros defined for os0file.c */
# include <sys/stat.h>
-# if !defined(__NETWARE__) && !defined(__WIN__)
+# if !defined(__NETWARE__) && !defined(__WIN__)
# include <sys/mman.h> /* mmap() for os0proc.c */
# endif
@@ -168,6 +168,9 @@ command. Not tested on Windows. */
#define UNIV_COMPILE_TEST_FUNCS
*/
+#if defined(HAVE_valgrind)&& defined(HAVE_VALGRIND_MEMCHECK_H)
+# define UNIV_DEBUG_VALGRIND
+#endif
#if 0
#define UNIV_DEBUG_VALGRIND /* Enable extra
Valgrind instrumentation */
@@ -232,11 +235,6 @@ by one. */
/* the above option prevents forcing of log to disk
at a buffer page write: it should be tested with this
option off; also some ibuf tests are suppressed */
-/*
-#define UNIV_BASIC_LOG_DEBUG
-*/
- /* the above option enables basic recovery debugging:
- new allocated file pages are reset */
/* Linkage specifier for non-static InnoDB symbols (variables and functions)
that are only referenced from within InnoDB, not from MySQL */
@@ -299,6 +297,12 @@ management to ensure correct alignment for doubles etc. */
/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM 32
+/* The maximum length of a table name. This is the MySQL limit and is
+defined in mysql_com.h like NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN, the
+number does not include a terminating '\0'. InnoDB probably can handle
+longer names internally */
+#define MAX_TABLE_NAME_LEN 192
+
/*
UNIVERSAL TYPE DEFINITIONS
==========================
@@ -326,10 +330,12 @@ macro ULINTPF. */
typedef unsigned __int64 ulint;
#define ULINTPF "%I64u"
typedef __int64 lint;
+#define MYSQL_SYSVAR_ULINT MYSQL_SYSVAR_ULONGLONG
#else
typedef unsigned long int ulint;
#define ULINTPF "%lu"
typedef long int lint;
+#define MYSQL_SYSVAR_ULINT MYSQL_SYSVAR_ULONG
#endif
#ifdef __WIN__
diff --git a/storage/xtradb/include/ut0lst.h b/storage/xtradb/include/ut0lst.h
index 7b15c052978..4305f6571b5 100644
--- a/storage/xtradb/include/ut0lst.h
+++ b/storage/xtradb/include/ut0lst.h
@@ -257,5 +257,48 @@ do { \
ut_a(ut_list_node_313 == NULL); \
} while (0)
+/********************************************************************//**
+Align nodes with moving location.
+@param NAME the name of the list
+@param TYPE node type
+@param BASE base node (not a pointer to it)
+@param OFFSET offset moved */
+#define UT_LIST_OFFSET(NAME, TYPE, BASE, FADDR, FOFFSET, BOFFSET) \
+do { \
+ ulint ut_list_i_313; \
+ TYPE* ut_list_node_313; \
+ \
+ if ((BASE).start) \
+ (BASE).start = (void*)((char*)((BASE).start) \
+ + (((void*)((BASE).start) > (void*)FADDR)?FOFFSET:BOFFSET));\
+ if ((BASE).end) \
+ (BASE).end = (void*)((char*)((BASE).end) \
+ + (((void*)((BASE).end) > (void*)FADDR)?FOFFSET:BOFFSET));\
+ \
+ ut_list_node_313 = (BASE).start; \
+ \
+ for (ut_list_i_313 = (BASE).count; ut_list_i_313--; ) { \
+ ut_a(ut_list_node_313); \
+ if ((ut_list_node_313->NAME).prev) \
+ (ut_list_node_313->NAME).prev = (void*)((char*)((ut_list_node_313->NAME).prev) \
+ + (((void*)((ut_list_node_313->NAME).prev) > (void*)FADDR)?FOFFSET:BOFFSET));\
+ if ((ut_list_node_313->NAME).next) \
+ (ut_list_node_313->NAME).next = (void *)((char*)((ut_list_node_313->NAME).next) \
+ + (((void*)((ut_list_node_313->NAME).next)> (void*)FADDR)?FOFFSET:BOFFSET));\
+ ut_list_node_313 = (ut_list_node_313->NAME).next; \
+ } \
+ \
+ ut_a(ut_list_node_313 == NULL); \
+ \
+ ut_list_node_313 = (BASE).end; \
+ \
+ for (ut_list_i_313 = (BASE).count; ut_list_i_313--; ) { \
+ ut_a(ut_list_node_313); \
+ ut_list_node_313 = (ut_list_node_313->NAME).prev; \
+ } \
+ \
+ ut_a(ut_list_node_313 == NULL); \
+} while (0)
+
#endif
diff --git a/storage/xtradb/include/ut0rbt.h b/storage/xtradb/include/ut0rbt.h
new file mode 100644
index 00000000000..6fd050acfe7
--- /dev/null
+++ b/storage/xtradb/include/ut0rbt.h
@@ -0,0 +1,309 @@
+/*****************************************************************************
+Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.
+
+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., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+
+*****************************************************************************/
+
+/*******************************************************************//**
+@file include/ut0rbt.h
+Red-Black tree implementation.
+
+Created 2007-03-20 Sunny Bains
+************************************************************************/
+
+#ifndef INNOBASE_UT0RBT_H
+#define INNOBASE_UT0RBT_H
+
+#if !defined(IB_RBT_TESTING)
+#include "univ.i"
+#include "ut0mem.h"
+#else
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#define ut_malloc malloc
+#define ut_free free
+#define ulint unsigned long
+#define ut_a(c) assert(c)
+#define ut_error assert(0)
+#define ibool unsigned int
+#define TRUE 1
+#define FALSE 0
+#endif
+
+/* Red black tree typedefs */
+typedef struct ib_rbt_struct ib_rbt_t;
+typedef struct ib_rbt_node_struct ib_rbt_node_t;
+/* FIXME: Iterator is a better name than _bound_ */
+typedef struct ib_rbt_bound_struct ib_rbt_bound_t;
+typedef void (*ib_rbt_print_node)(const ib_rbt_node_t* node);
+typedef int (*ib_rbt_compare)(const void* p1, const void* p2);
+
+/* Red black tree color types */
+enum ib_rbt_color_enum {
+ IB_RBT_RED,
+ IB_RBT_BLACK
+};
+
+typedef enum ib_rbt_color_enum ib_rbt_color_t;
+
+/* Red black tree node */
+struct ib_rbt_node_struct {
+ ib_rbt_color_t color; /* color of this node */
+
+ ib_rbt_node_t* left; /* points left child */
+ ib_rbt_node_t* right; /* points right child */
+ ib_rbt_node_t* parent; /* points parent node */
+
+ char value[1]; /* Data value */
+};
+
+/* Red black tree instance.*/
+struct ib_rbt_struct {
+ ib_rbt_node_t* nil; /* Black colored node that is
+ used as a sentinel. This is
+ pre-allocated too.*/
+
+ ib_rbt_node_t* root; /* Root of the tree, this is
+ pre-allocated and the first
+ data node is the left child.*/
+
+ ulint n_nodes; /* Total number of data nodes */
+
+ ib_rbt_compare compare; /* Fn. to use for comparison */
+ ulint sizeof_value; /* Sizeof the item in bytes */
+};
+
+/* The result of searching for a key in the tree, this is useful for
+a speedy lookup and insert if key doesn't exist.*/
+struct ib_rbt_bound_struct {
+ const ib_rbt_node_t*
+ last; /* Last node visited */
+
+ int result; /* Result of comparing with
+ the last non-nil node that
+ was visited */
+};
+
+/* Size in elements (t is an rb tree instance) */
+#define rbt_size(t) (t->n_nodes)
+
+/* Check whether the rb tree is empty (t is an rb tree instance) */
+#define rbt_empty(t) (rbt_size(t) == 0)
+
+/* Get data value (t is the data type, n is an rb tree node instance) */
+#define rbt_value(t, n) ((t*) &n->value[0])
+
+/* Compare a key with the node value (t is tree, k is key, n is node)*/
+#define rbt_compare(t, k, n) (t->compare(k, n->value))
+
+/****************************************************************//**
+Free an instance of a red black tree */
+UNIV_INTERN
+void
+rbt_free(
+/*=====*/
+ ib_rbt_t* tree); /*!< in: rb tree to free */
+/****************************************************************//**
+Create an instance of a red black tree
+@return rb tree instance */
+UNIV_INTERN
+ib_rbt_t*
+rbt_create(
+/*=======*/
+ size_t sizeof_value, /*!< in: size in bytes */
+ ib_rbt_compare compare); /*!< in: comparator */
+/****************************************************************//**
+Delete a node from the red black tree, identified by key.
+@return TRUE if success FALSE if not found */
+UNIV_INTERN
+ibool
+rbt_delete(
+/*=======*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key); /*!< in: key to delete */
+/****************************************************************//**
+Remove a node from the rb tree, the node is not free'd, that is the
+callers responsibility.
+@return the deleted node with the const. */
+UNIV_INTERN
+ib_rbt_node_t*
+rbt_remove_node(
+/*============*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t*
+ node); /*!< in: node to delete, this
+ is a fudge and declared const
+ because the caller has access
+ only to const nodes.*/
+/****************************************************************//**
+Find a matching node in the rb tree.
+@return node if found else return NULL */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_lookup(
+/*=======*/
+ const ib_rbt_t* tree, /*!< in: rb tree to search */
+ const void* key); /*!< in: key to lookup */
+/****************************************************************//**
+Generic insert of a value in the rb tree.
+@return inserted node */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_insert(
+/*=======*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key, /*!< in: key for ordering */
+ const void* value); /*!< in: data that will be
+ copied to the node.*/
+/****************************************************************//**
+Add a new node to the tree, useful for data that is pre-sorted.
+@return appended node */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_add_node(
+/*=========*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_bound_t* parent, /*!< in: parent */
+ const void* value); /*!< in: this value is copied
+ to the node */
+/****************************************************************//**
+Return the left most data node in the tree
+@return left most node */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_first(
+/*======*/
+ const ib_rbt_t* tree); /*!< in: rb tree */
+/****************************************************************//**
+Return the right most data node in the tree
+@return right most node */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_last(
+/*=====*/
+ const ib_rbt_t* tree); /*!< in: rb tree */
+/****************************************************************//**
+Return the next node from current.
+@return successor node to current that is passed in. */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_next(
+/*=====*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* /*!< in: current node */
+ current);
+/****************************************************************//**
+Return the prev node from current.
+@return precedessor node to current that is passed in */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_prev(
+/*=====*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* /*!< in: current node */
+ current);
+/****************************************************************//**
+Find the node that has the lowest key that is >= key.
+@return node that satisfies the lower bound constraint or NULL */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_lower_bound(
+/*============*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key); /*!< in: key to search */
+/****************************************************************//**
+Find the node that has the greatest key that is <= key.
+@return node that satisifies the upper bound constraint or NULL */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_upper_bound(
+/*============*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key); /*!< in: key to search */
+/****************************************************************//**
+Search for the key, a node will be retuned in parent.last, whether it
+was found or not. If not found then parent.last will contain the
+parent node for the possibly new key otherwise the matching node.
+@return result of last comparison */
+UNIV_INTERN
+int
+rbt_search(
+/*=======*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_bound_t* parent, /*!< in: search bounds */
+ const void* key); /*!< in: key to search */
+/****************************************************************//**
+Search for the key, a node will be retuned in parent.last, whether it
+was found or not. If not found then parent.last will contain the
+parent node for the possibly new key otherwise the matching node.
+@return result of last comparison */
+UNIV_INTERN
+int
+rbt_search_cmp(
+/*===========*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_bound_t* parent, /*!< in: search bounds */
+ const void* key, /*!< in: key to search */
+ ib_rbt_compare compare); /*!< in: comparator */
+/****************************************************************//**
+Clear the tree, deletes (and free's) all the nodes. */
+UNIV_INTERN
+void
+rbt_clear(
+/*======*/
+ ib_rbt_t* tree); /*!< in: rb tree */
+/****************************************************************//**
+Merge the node from dst into src. Return the number of nodes merged.
+@return no. of recs merged */
+UNIV_INTERN
+ulint
+rbt_merge_uniq(
+/*===========*/
+ ib_rbt_t* dst, /*!< in: dst rb tree */
+ const ib_rbt_t* src); /*!< in: src rb tree */
+/****************************************************************//**
+Merge the node from dst into src. Return the number of nodes merged.
+Delete the nodes from src after copying node to dst. As a side effect
+the duplicates will be left untouched in the src, since we don't support
+duplicates (yet). NOTE: src and dst must be similar, the function doesn't
+check for this condition (yet).
+@return no. of recs merged */
+UNIV_INTERN
+ulint
+rbt_merge_uniq_destructive(
+/*=======================*/
+ ib_rbt_t* dst, /*!< in: dst rb tree */
+ ib_rbt_t* src); /*!< in: src rb tree */
+/****************************************************************//**
+Verify the integrity of the RB tree. For debugging. 0 failure else height
+of tree (in count of black nodes).
+@return TRUE if OK FALSE if tree invalid. */
+UNIV_INTERN
+ibool
+rbt_validate(
+/*=========*/
+ const ib_rbt_t* tree); /*!< in: tree to validate */
+/****************************************************************//**
+Iterate over the tree in depth first order. */
+UNIV_INTERN
+void
+rbt_print(
+/*======*/
+ const ib_rbt_t* tree, /*!< in: tree to traverse */
+ ib_rbt_print_node print); /*!< in: print function */
+
+#endif /* INNOBASE_UT0RBT_H */
diff --git a/storage/xtradb/include/ut0rnd.ic b/storage/xtradb/include/ut0rnd.ic
index 372b5b6d5b7..c2043660efd 100644
--- a/storage/xtradb/include/ut0rnd.ic
+++ b/storage/xtradb/include/ut0rnd.ic
@@ -152,6 +152,7 @@ ut_hash_ulint(
ulint key, /*!< in: value to be hashed */
ulint table_size) /*!< in: hash table size */
{
+ ut_ad(table_size);
key = key ^ UT_HASH_RANDOM_MASK2;
return(key % table_size);
diff --git a/storage/xtradb/lock/lock0lock.c b/storage/xtradb/lock/lock0lock.c
index 59394f13766..7ec4a53e0ea 100644
--- a/storage/xtradb/lock/lock0lock.c
+++ b/storage/xtradb/lock/lock0lock.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -376,6 +376,7 @@ UNIV_INTERN FILE* lock_latest_err_file;
/* Flags for recursive deadlock search */
#define LOCK_VICTIM_IS_START 1
#define LOCK_VICTIM_IS_OTHER 2
+#define LOCK_EXCEED_MAX_DEPTH 3
/********************************************************************//**
Checks if a lock request results in a deadlock.
@@ -394,24 +395,25 @@ Looks recursively for a deadlock.
deadlock and we chose 'start' as the victim, LOCK_VICTIM_IS_OTHER if a
deadlock was found and we chose some other trx as a victim: we must do
the search again in this last case because there may be another
-deadlock! */
+deadlock!
+LOCK_EXCEED_MAX_DEPTH if the lock search exceeds max steps or max depth. */
static
ulint
lock_deadlock_recursive(
/*====================*/
trx_t* start, /*!< in: recursion starting point */
trx_t* trx, /*!< in: a transaction waiting for a lock */
- lock_t* wait_lock, /*!< in: the lock trx is waiting to be granted */
+ lock_t* wait_lock, /*!< in: lock that is waiting to be granted */
ulint* cost, /*!< in/out: number of calculation steps thus
far: if this exceeds LOCK_MAX_N_STEPS_...
- we return LOCK_VICTIM_IS_START */
+ we return LOCK_EXCEED_MAX_DEPTH */
ulint depth); /*!< in: recursion depth: if this exceeds
LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK, we
- return LOCK_VICTIM_IS_START */
+ return LOCK_EXCEED_MAX_DEPTH */
/*********************************************************************//**
Gets the nth bit of a record lock.
-@return TRUE if bit set */
+@return TRUE if bit set also if i == ULINT_UNDEFINED return FALSE*/
UNIV_INLINE
ibool
lock_rec_get_nth_bit(
@@ -1222,7 +1224,7 @@ lock_rec_get_first_on_page(
/*********************************************************************//**
Gets the next explicit lock request on a record.
-@return next lock, NULL if none exists */
+@return next lock, NULL if none exists or if heap_no == ULINT_UNDEFINED */
UNIV_INLINE
lock_t*
lock_rec_get_next(
@@ -1731,11 +1733,11 @@ lock_rec_create(
Enqueues a waiting request for a lock which cannot be granted immediately.
Checks for deadlocks.
@return DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED, or
-DB_SUCCESS; DB_SUCCESS means that there was a deadlock, but another
-transaction was chosen as a victim, and we got the lock immediately:
-no need to wait then */
+DB_SUCCESS_LOCKED_REC; DB_SUCCESS_LOCKED_REC means that
+there was a deadlock, but another transaction was chosen as a victim,
+and we got the lock immediately: no need to wait then */
static
-ulint
+enum db_err
lock_rec_enqueue_waiting(
/*=====================*/
ulint type_mode,/*!< in: lock mode this
@@ -1809,7 +1811,7 @@ lock_rec_enqueue_waiting(
if (trx->wait_lock == NULL) {
- return(DB_SUCCESS);
+ return(DB_SUCCESS_LOCKED_REC);
}
trx->que_state = TRX_QUE_LOCK_WAIT;
@@ -1929,6 +1931,16 @@ somebody_waits:
return(lock_rec_create(type_mode, block, heap_no, index, trx));
}
+/** Record locking request status */
+enum lock_rec_req_status {
+ /** Failed to acquire a lock */
+ LOCK_REC_FAIL,
+ /** Succeeded in acquiring a lock (implicit or already acquired) */
+ LOCK_REC_SUCCESS,
+ /** Explicitly created a new lock */
+ LOCK_REC_SUCCESS_CREATED
+};
+
/*********************************************************************//**
This is a fast routine for locking a record in the most common cases:
there are no explicit locks on the page, or there is just one lock, owned
@@ -1936,9 +1948,9 @@ by this transaction, and of the right type_mode. This is a low-level function
which does NOT look at implicit locks! Checks lock compatibility within
explicit locks. This function sets a normal next-key lock, or in the case of
a page supremum record, a gap type lock.
-@return TRUE if locking succeeded */
+@return whether the locking succeeded */
UNIV_INLINE
-ibool
+enum lock_rec_req_status
lock_rec_lock_fast(
/*===============*/
ibool impl, /*!< in: if TRUE, no lock is set
@@ -1977,19 +1989,19 @@ lock_rec_lock_fast(
lock_rec_create(mode, block, heap_no, index, trx);
}
- return(TRUE);
+ return(LOCK_REC_SUCCESS_CREATED);
}
if (lock_rec_get_next_on_page(lock)) {
- return(FALSE);
+ return(LOCK_REC_FAIL);
}
if (lock->trx != trx
|| lock->type_mode != (mode | LOCK_REC)
|| lock_rec_get_n_bits(lock) <= heap_no) {
- return(FALSE);
+ return(LOCK_REC_FAIL);
}
if (!impl) {
@@ -1998,10 +2010,11 @@ lock_rec_lock_fast(
if (!lock_rec_get_nth_bit(lock, heap_no)) {
lock_rec_set_nth_bit(lock, heap_no);
+ return(LOCK_REC_SUCCESS_CREATED);
}
}
- return(TRUE);
+ return(LOCK_REC_SUCCESS);
}
/*********************************************************************//**
@@ -2009,9 +2022,10 @@ This is the general, and slower, routine for locking a record. This is a
low-level function which does NOT look at implicit locks! Checks lock
compatibility within explicit locks. This function sets a normal next-key
lock, or in the case of a page supremum record, a gap type lock.
-@return DB_SUCCESS, DB_LOCK_WAIT, or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
static
-ulint
+enum db_err
lock_rec_lock_slow(
/*===============*/
ibool impl, /*!< in: if TRUE, no lock is set
@@ -2028,7 +2042,6 @@ lock_rec_lock_slow(
que_thr_t* thr) /*!< in: query thread */
{
trx_t* trx;
- ulint err;
ut_ad(mutex_own(&kernel_mutex));
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
@@ -2047,27 +2060,23 @@ lock_rec_lock_slow(
/* The trx already has a strong enough lock on rec: do
nothing */
- err = DB_SUCCESS;
} else if (lock_rec_other_has_conflicting(mode, block, heap_no, trx)) {
/* If another transaction has a non-gap conflicting request in
the queue, as this transaction does not have a lock strong
enough already granted on the record, we have to wait. */
- err = lock_rec_enqueue_waiting(mode, block, heap_no,
- index, thr);
- } else {
- if (!impl) {
- /* Set the requested lock on the record */
-
- lock_rec_add_to_queue(LOCK_REC | mode, block,
- heap_no, index, trx);
- }
+ return(lock_rec_enqueue_waiting(mode, block, heap_no,
+ index, thr));
+ } else if (!impl) {
+ /* Set the requested lock on the record */
- err = DB_SUCCESS;
+ lock_rec_add_to_queue(LOCK_REC | mode, block,
+ heap_no, index, trx);
+ return(DB_SUCCESS_LOCKED_REC);
}
- return(err);
+ return(DB_SUCCESS);
}
/*********************************************************************//**
@@ -2076,9 +2085,10 @@ possible, enqueues a waiting lock request. This is a low-level function
which does NOT look at implicit locks! Checks lock compatibility within
explicit locks. This function sets a normal next-key lock, or in the case
of a page supremum record, a gap type lock.
-@return DB_SUCCESS, DB_LOCK_WAIT, or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
static
-ulint
+enum db_err
lock_rec_lock(
/*==========*/
ibool impl, /*!< in: if TRUE, no lock is set
@@ -2094,8 +2104,6 @@ lock_rec_lock(
dict_index_t* index, /*!< in: index of record */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
-
ut_ad(mutex_own(&kernel_mutex));
ut_ad((LOCK_MODE_MASK & mode) != LOCK_S
|| lock_table_has(thr_get_trx(thr), index->table, LOCK_IS));
@@ -2107,18 +2115,20 @@ lock_rec_lock(
|| mode - (LOCK_MODE_MASK & mode) == LOCK_REC_NOT_GAP
|| mode - (LOCK_MODE_MASK & mode) == 0);
- if (lock_rec_lock_fast(impl, mode, block, heap_no, index, thr)) {
-
- /* We try a simplified and faster subroutine for the most
- common cases */
-
- err = DB_SUCCESS;
- } else {
- err = lock_rec_lock_slow(impl, mode, block,
- heap_no, index, thr);
+ /* We try a simplified and faster subroutine for the most
+ common cases */
+ switch (lock_rec_lock_fast(impl, mode, block, heap_no, index, thr)) {
+ case LOCK_REC_SUCCESS:
+ return(DB_SUCCESS);
+ case LOCK_REC_SUCCESS_CREATED:
+ return(DB_SUCCESS_LOCKED_REC);
+ case LOCK_REC_FAIL:
+ return(lock_rec_lock_slow(impl, mode, block,
+ heap_no, index, thr));
}
- return(err);
+ ut_error;
+ return(DB_ERROR);
}
/*********************************************************************//**
@@ -2404,7 +2414,7 @@ lock_rec_inherit_to_gap(
if (!lock_rec_get_insert_intention(lock)
&& !((srv_locks_unsafe_for_binlog
|| lock->trx->isolation_level
- == TRX_ISO_READ_COMMITTED)
+ <= TRX_ISO_READ_COMMITTED)
&& lock_get_mode(lock) == LOCK_X)) {
lock_rec_add_to_queue(LOCK_REC | LOCK_GAP
@@ -3267,8 +3277,6 @@ lock_deadlock_occurs(
lock_t* lock, /*!< in: lock the transaction is requesting */
trx_t* trx) /*!< in: transaction */
{
- dict_table_t* table;
- dict_index_t* index;
trx_t* mark_trx;
ulint ret;
ulint cost = 0;
@@ -3290,31 +3298,51 @@ retry:
ret = lock_deadlock_recursive(trx, trx, lock, &cost, 0);
- if (ret == LOCK_VICTIM_IS_OTHER) {
+ switch (ret) {
+ case LOCK_VICTIM_IS_OTHER:
/* We chose some other trx as a victim: retry if there still
is a deadlock */
-
goto retry;
- }
- if (UNIV_UNLIKELY(ret == LOCK_VICTIM_IS_START)) {
- if (lock_get_type_low(lock) & LOCK_TABLE) {
- table = lock->un_member.tab_lock.table;
- index = NULL;
+ case LOCK_EXCEED_MAX_DEPTH:
+ /* If the lock search exceeds the max step
+ or the max depth, the current trx will be
+ the victim. Print its information. */
+ rewind(lock_latest_err_file);
+ ut_print_timestamp(lock_latest_err_file);
+
+ fputs("TOO DEEP OR LONG SEARCH IN THE LOCK TABLE"
+ " WAITS-FOR GRAPH, WE WILL ROLL BACK"
+ " FOLLOWING TRANSACTION \n",
+ lock_latest_err_file);
+
+ fputs("\n*** TRANSACTION:\n", lock_latest_err_file);
+ trx_print(lock_latest_err_file, trx, 3000);
+
+ fputs("*** WAITING FOR THIS LOCK TO BE GRANTED:\n",
+ lock_latest_err_file);
+
+ if (lock_get_type(lock) == LOCK_REC) {
+ lock_rec_print(lock_latest_err_file, lock);
} else {
- index = lock->index;
- table = index->table;
+ lock_table_print(lock_latest_err_file, lock);
}
+ break;
- lock_deadlock_found = TRUE;
-
+ case LOCK_VICTIM_IS_START:
+ srv_n_lock_deadlock_count++;
fputs("*** WE ROLL BACK TRANSACTION (2)\n",
lock_latest_err_file);
+ break;
- return(TRUE);
+ default:
+ /* No deadlock detected*/
+ return(FALSE);
}
- return(FALSE);
+ lock_deadlock_found = TRUE;
+
+ return(TRUE);
}
/********************************************************************//**
@@ -3323,25 +3351,26 @@ Looks recursively for a deadlock.
deadlock and we chose 'start' as the victim, LOCK_VICTIM_IS_OTHER if a
deadlock was found and we chose some other trx as a victim: we must do
the search again in this last case because there may be another
-deadlock! */
+deadlock!
+LOCK_EXCEED_MAX_DEPTH if the lock search exceeds max steps or max depth. */
static
ulint
lock_deadlock_recursive(
/*====================*/
trx_t* start, /*!< in: recursion starting point */
trx_t* trx, /*!< in: a transaction waiting for a lock */
- lock_t* wait_lock, /*!< in: the lock trx is waiting to be granted */
+ lock_t* wait_lock, /*!< in: lock that is waiting to be granted */
ulint* cost, /*!< in/out: number of calculation steps thus
far: if this exceeds LOCK_MAX_N_STEPS_...
- we return LOCK_VICTIM_IS_START */
+ we return LOCK_EXCEED_MAX_DEPTH */
ulint depth) /*!< in: recursion depth: if this exceeds
LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK, we
- return LOCK_VICTIM_IS_START */
+ return LOCK_EXCEED_MAX_DEPTH */
{
+ ulint ret;
lock_t* lock;
- ulint bit_no = ULINT_UNDEFINED;
trx_t* lock_trx;
- ulint ret;
+ ulint heap_no = ULINT_UNDEFINED;
ut_a(trx);
ut_a(start);
@@ -3357,27 +3386,44 @@ lock_deadlock_recursive(
*cost = *cost + 1;
- lock = wait_lock;
-
if (lock_get_type_low(wait_lock) == LOCK_REC) {
+ ulint space;
+ ulint page_no;
- bit_no = lock_rec_find_set_bit(wait_lock);
+ heap_no = lock_rec_find_set_bit(wait_lock);
+ ut_a(heap_no != ULINT_UNDEFINED);
+
+ space = wait_lock->un_member.rec_lock.space;
+ page_no = wait_lock->un_member.rec_lock.page_no;
+
+ lock = lock_rec_get_first_on_page_addr(space, page_no);
+
+ /* Position the iterator on the first matching record lock. */
+ while (lock != NULL
+ && lock != wait_lock
+ && !lock_rec_get_nth_bit(lock, heap_no)) {
+
+ lock = lock_rec_get_next_on_page(lock);
+ }
- ut_a(bit_no != ULINT_UNDEFINED);
+ if (lock == wait_lock) {
+ lock = NULL;
+ }
+
+ ut_ad(lock == NULL || lock_rec_get_nth_bit(lock, heap_no));
+
+ } else {
+ lock = wait_lock;
}
/* Look at the locks ahead of wait_lock in the lock queue */
for (;;) {
- if (lock_get_type_low(lock) & LOCK_TABLE) {
-
- lock = UT_LIST_GET_PREV(un_member.tab_lock.locks,
- lock);
- } else {
- ut_ad(lock_get_type_low(lock) == LOCK_REC);
- ut_a(bit_no != ULINT_UNDEFINED);
+ /* Get previous table lock. */
+ if (heap_no == ULINT_UNDEFINED) {
- lock = (lock_t*) lock_rec_get_prev(lock, bit_no);
+ lock = UT_LIST_GET_PREV(
+ un_member.tab_lock.locks, lock);
}
if (lock == NULL) {
@@ -3395,7 +3441,7 @@ lock_deadlock_recursive(
lock_trx = lock->trx;
- if (lock_trx == start || too_far) {
+ if (lock_trx == start) {
/* We came back to the recursion starting
point: a deadlock detected; or we have
@@ -3442,19 +3488,10 @@ lock_deadlock_recursive(
}
#ifdef UNIV_DEBUG
if (lock_print_waits) {
- fputs("Deadlock detected"
- " or too long search\n",
+ fputs("Deadlock detected\n",
stderr);
}
#endif /* UNIV_DEBUG */
- if (too_far) {
-
- fputs("TOO DEEP OR LONG SEARCH"
- " IN THE LOCK TABLE"
- " WAITS-FOR GRAPH\n", ef);
-
- return(LOCK_VICTIM_IS_START);
- }
if (trx_weight_cmp(wait_lock->trx,
start) >= 0) {
@@ -3490,6 +3527,21 @@ lock_deadlock_recursive(
return(LOCK_VICTIM_IS_OTHER);
}
+ if (too_far) {
+
+#ifdef UNIV_DEBUG
+ if (lock_print_waits) {
+ fputs("Deadlock search exceeds"
+ " max steps or depth.\n",
+ stderr);
+ }
+#endif /* UNIV_DEBUG */
+ /* The information about transaction/lock
+ to be rolled back is available in the top
+ level. Do not print anything here. */
+ return(LOCK_EXCEED_MAX_DEPTH);
+ }
+
if (lock_trx->que_state == TRX_QUE_LOCK_WAIT) {
/* Another trx ahead has requested lock in an
@@ -3499,12 +3551,28 @@ lock_deadlock_recursive(
ret = lock_deadlock_recursive(
start, lock_trx,
lock_trx->wait_lock, cost, depth + 1);
+
if (ret != 0) {
return(ret);
}
}
}
+ /* Get the next record lock to check. */
+ if (heap_no != ULINT_UNDEFINED) {
+
+ ut_a(lock != NULL);
+
+ do {
+ lock = lock_rec_get_next_on_page(lock);
+ } while (lock != NULL
+ && lock != wait_lock
+ && !lock_rec_get_nth_bit(lock, heap_no));
+
+ if (lock == wait_lock) {
+ lock = NULL;
+ }
+ }
}/* end of the 'for (;;)'-loop */
}
@@ -3706,9 +3774,10 @@ lock_table_enqueue_waiting(
/*********************************************************************//**
Checks if other transactions have an incompatible mode lock request in
-the lock queue. */
+the lock queue.
+@return lock or NULL */
UNIV_INLINE
-ibool
+lock_t*
lock_table_other_has_incompatible(
/*==============================*/
trx_t* trx, /*!< in: transaction, or NULL if all
@@ -3730,13 +3799,13 @@ lock_table_other_has_incompatible(
&& (!lock_mode_compatible(lock_get_mode(lock), mode))
&& (wait || !(lock_get_wait(lock)))) {
- return(TRUE);
+ return(lock);
}
lock = UT_LIST_GET_PREV(un_member.tab_lock.locks, lock);
}
- return(FALSE);
+ return(NULL);
}
/*********************************************************************//**
@@ -3887,8 +3956,8 @@ lock_rec_unlock(
const rec_t* rec, /*!< in: record */
enum lock_mode lock_mode)/*!< in: LOCK_S or LOCK_X */
{
+ lock_t* first_lock;
lock_t* lock;
- lock_t* release_lock = NULL;
ulint heap_no;
ut_ad(trx && rec);
@@ -3898,48 +3967,40 @@ lock_rec_unlock(
mutex_enter(&kernel_mutex);
- lock = lock_rec_get_first(block, heap_no);
+ first_lock = lock_rec_get_first(block, heap_no);
/* Find the last lock with the same lock_mode and transaction
from the record. */
- while (lock != NULL) {
+ for (lock = first_lock; lock != NULL;
+ lock = lock_rec_get_next(heap_no, lock)) {
if (lock->trx == trx && lock_get_mode(lock) == lock_mode) {
- release_lock = lock;
ut_a(!lock_get_wait(lock));
+ lock_rec_reset_nth_bit(lock, heap_no);
+ goto released;
}
-
- lock = lock_rec_get_next(heap_no, lock);
}
- /* If a record lock is found, release the record lock */
-
- if (UNIV_LIKELY(release_lock != NULL)) {
- lock_rec_reset_nth_bit(release_lock, heap_no);
- } else {
- mutex_exit(&kernel_mutex);
- ut_print_timestamp(stderr);
- fprintf(stderr,
- " InnoDB: Error: unlock row could not"
- " find a %lu mode lock on the record\n",
- (ulong) lock_mode);
+ mutex_exit(&kernel_mutex);
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Error: unlock row could not"
+ " find a %lu mode lock on the record\n",
+ (ulong) lock_mode);
- return;
- }
+ return;
+released:
/* Check if we can now grant waiting lock requests */
- lock = lock_rec_get_first(block, heap_no);
-
- while (lock != NULL) {
+ for (lock = first_lock; lock != NULL;
+ lock = lock_rec_get_next(heap_no, lock)) {
if (lock_get_wait(lock)
&& !lock_rec_has_to_wait_in_queue(lock)) {
/* Grant the lock */
lock_grant(lock);
}
-
- lock = lock_rec_get_next(heap_no, lock);
}
mutex_exit(&kernel_mutex);
@@ -4260,31 +4321,34 @@ lock_rec_print(
putc('\n', file);
if ( srv_show_verbose_locks ) {
- block = buf_page_try_get(space, page_no, &mtr);
+ block = buf_page_try_get(space, page_no, &mtr);
+
+ for (i = 0; i < lock_rec_get_n_bits(lock); ++i) {
+
+ if (!lock_rec_get_nth_bit(lock, i)) {
+ continue;
+ }
+
+ fprintf(file, "Record lock, heap no %lu", (ulong) i);
+
if (block) {
- for (i = 0; i < lock_rec_get_n_bits(lock); i++) {
+ const rec_t* rec;
- if (lock_rec_get_nth_bit(lock, i)) {
+ rec = page_find_rec_with_heap_no(
+ buf_block_get_frame(block), i);
- const rec_t* rec
- = page_find_rec_with_heap_no(
- buf_block_get_frame(block), i);
- offsets = rec_get_offsets(
- rec, lock->index, offsets,
- ULINT_UNDEFINED, &heap);
+ offsets = rec_get_offsets(
+ rec, lock->index, offsets,
+ ULINT_UNDEFINED, &heap);
- fprintf(file, "Record lock, heap no %lu ",
- (ulong) i);
- rec_print_new(file, rec, offsets);
- putc('\n', file);
- }
- }
- } else {
- for (i = 0; i < lock_rec_get_n_bits(lock); i++) {
- fprintf(file, "Record lock, heap no %lu\n", (ulong) i);
- }
+ putc(' ', file);
+ rec_print_new(file, rec, offsets);
}
+
+ putc('\n', file);
}
+ }
+
mtr_commit(&mtr);
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
@@ -4329,14 +4393,26 @@ lock_get_n_rec_locks(void)
#endif /* PRINT_NUM_OF_LOCK_STRUCTS */
/*********************************************************************//**
-Prints info of locks for all transactions. */
+Prints info of locks for all transactions.
+@return FALSE if not able to obtain kernel mutex
+and exits without printing info */
UNIV_INTERN
-void
+ibool
lock_print_info_summary(
/*====================*/
- FILE* file) /*!< in: file where to print */
+ FILE* file, /*!< in: file where to print */
+ ibool nowait) /*!< in: whether to wait for the kernel mutex */
{
- lock_mutex_enter_kernel();
+ /* if nowait is FALSE, wait on the kernel mutex,
+ otherwise return immediately if fail to obtain the
+ mutex. */
+ if (!nowait) {
+ lock_mutex_enter_kernel();
+ } else if (mutex_enter_nowait(&kernel_mutex)) {
+ fputs("FAIL TO OBTAIN KERNEL MUTEX, "
+ "SKIP LOCK INFO PRINTING\n", file);
+ return(FALSE);
+ }
if (lock_deadlock_found) {
fputs("------------------------\n"
@@ -4368,6 +4444,7 @@ lock_print_info_summary(
"Total number of lock structs in row lock hash table %lu\n",
(ulong) lock_get_n_rec_locks());
#endif /* PRINT_NUM_OF_LOCK_STRUCTS */
+ return(TRUE);
}
/*********************************************************************//**
@@ -4648,6 +4725,7 @@ lock_rec_queue_validate(
ut_a(lock_rec_has_expl(LOCK_X | LOCK_REC_NOT_GAP,
block, heap_no, impl_trx));
}
+#if 0
} else {
/* The kernel mutex may get released temporarily in the
@@ -4658,6 +4736,27 @@ lock_rec_queue_validate(
(fil_space_t::latch), the following check WILL break
latching order and may cause a deadlock of threads. */
+ /* NOTE: This is a bogus check that would fail in the
+ following case: Our transaction is updating a
+ row. After it has updated the clustered index record,
+ it goes to a secondary index record and finds someone
+ else holding an explicit S- or X-lock on that
+ secondary index record, presumably from a locking
+ read. Our transaction cannot update the secondary
+ index immediately, but places a waiting X-lock request
+ on the secondary index record. There is nothing
+ illegal in this. The assertion is simply too strong. */
+
+ /* From the locking point of view, each secondary
+ index is a separate table. A lock that is held on
+ secondary index rec does not give any rights to modify
+ or read the clustered index rec. Therefore, we can
+ think of the sec index as a separate 'table' from the
+ clust index 'table'. Conversely, a transaction that
+ has acquired a lock on and modified a clustered index
+ record may need to wait for a lock on the
+ corresponding record in a secondary index. */
+
impl_trx = lock_sec_rec_some_has_impl_off_kernel(
rec, index, offsets);
@@ -4668,6 +4767,7 @@ lock_rec_queue_validate(
ut_a(lock_rec_has_expl(LOCK_X | LOCK_REC_NOT_GAP,
block, heap_no, impl_trx));
}
+#endif
}
lock = lock_rec_get_first(block, heap_no);
@@ -4765,6 +4865,13 @@ loop:
|| lock->trx->conc_state == TRX_PREPARED
|| lock->trx->conc_state == TRX_COMMITTED_IN_MEMORY);
+# ifdef UNIV_SYNC_DEBUG
+ /* Only validate the record queues when this thread is not
+ holding a space->latch. Deadlocks are possible due to
+ latching order violation when UNIV_DEBUG is defined while
+ UNIV_SYNC_DEBUG is not. */
+ if (!sync_thread_levels_contains(SYNC_FSP))
+# endif /* UNIV_SYNC_DEBUG */
for (i = nth_bit; i < lock_rec_get_n_bits(lock); i++) {
if (i == 1 || lock_rec_get_nth_bit(lock, i)) {
@@ -4930,7 +5037,7 @@ lock_rec_insert_check_and_lock(
}
trx = thr_get_trx(thr);
- next_rec = page_rec_get_next((rec_t*) rec);
+ next_rec = page_rec_get_next_const(rec);
next_rec_heap_no = page_rec_get_heap_no(next_rec);
lock_mutex_enter_kernel();
@@ -4988,7 +5095,14 @@ lock_rec_insert_check_and_lock(
lock_mutex_exit_kernel();
- if ((err == DB_SUCCESS) && !dict_index_is_clust(index)) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ /* fall through */
+ case DB_SUCCESS:
+ if (dict_index_is_clust(index)) {
+ break;
+ }
/* Update the page max trx id field */
page_update_max_trx_id(block,
buf_block_get_page_zip(block),
@@ -5111,6 +5225,10 @@ lock_clust_rec_modify_check_and_lock(
ut_ad(lock_rec_queue_validate(block, rec, index, offsets));
+ if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) {
+ err = DB_SUCCESS;
+ }
+
return(err);
}
@@ -5177,22 +5295,27 @@ lock_sec_rec_modify_check_and_lock(
}
#endif /* UNIV_DEBUG */
- if (err == DB_SUCCESS) {
+ if (err == DB_SUCCESS || err == DB_SUCCESS_LOCKED_REC) {
/* Update the page max trx id field */
+ /* It might not be necessary to do this if
+ err == DB_SUCCESS (no new lock created),
+ but it should not cost too much performance. */
page_update_max_trx_id(block,
buf_block_get_page_zip(block),
thr_get_trx(thr)->id, mtr);
+ err = DB_SUCCESS;
}
return(err);
}
/*********************************************************************//**
-Like the counterpart for a clustered index below, but now we read a
+Like lock_clust_rec_read_check_and_lock(), but reads a
secondary index record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_sec_rec_read_check_and_lock(
/*=============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -5213,8 +5336,8 @@ lock_sec_rec_read_check_and_lock(
LOCK_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
- ulint heap_no;
+ enum db_err err;
+ ulint heap_no;
ut_ad(!dict_index_is_clust(index));
ut_ad(block->frame == page_align(rec));
@@ -5265,9 +5388,10 @@ if the query thread should anyway be suspended for some reason; if not, then
puts the transaction and the query thread to the lock wait state and inserts a
waiting request for a record lock to the lock queue. Sets the requested mode
lock on the record.
-@return DB_SUCCESS, DB_LOCK_WAIT, DB_DEADLOCK, or DB_QUE_THR_SUSPENDED */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, DB_LOCK_WAIT, DB_DEADLOCK,
+or DB_QUE_THR_SUSPENDED */
UNIV_INTERN
-ulint
+enum db_err
lock_clust_rec_read_check_and_lock(
/*===============================*/
ulint flags, /*!< in: if BTR_NO_LOCKING_FLAG
@@ -5288,8 +5412,8 @@ lock_clust_rec_read_check_and_lock(
LOCK_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
- ulint heap_no;
+ enum db_err err;
+ ulint heap_no;
ut_ad(dict_index_is_clust(index));
ut_ad(block->frame == page_align(rec));
@@ -5360,17 +5484,22 @@ lock_clust_rec_read_check_and_lock_alt(
mem_heap_t* tmp_heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
- ulint ret;
+ ulint err;
rec_offs_init(offsets_);
offsets = rec_get_offsets(rec, index, offsets,
ULINT_UNDEFINED, &tmp_heap);
- ret = lock_clust_rec_read_check_and_lock(flags, block, rec, index,
+ err = lock_clust_rec_read_check_and_lock(flags, block, rec, index,
offsets, mode, gap_mode, thr);
if (tmp_heap) {
mem_heap_free(tmp_heap);
}
- return(ret);
+
+ if (UNIV_UNLIKELY(err == DB_SUCCESS_LOCKED_REC)) {
+ err = DB_SUCCESS;
+ }
+
+ return(err);
}
/*******************************************************************//**
diff --git a/storage/xtradb/log/log0log.c b/storage/xtradb/log/log0log.c
index f2487407071..fade31037b5 100644
--- a/storage/xtradb/log/log0log.c
+++ b/storage/xtradb/log/log0log.c
@@ -1,23 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-/*****************************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2009, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -1128,6 +1111,7 @@ log_io_complete(
group = (log_group_t*)((ulint)group - 1);
if (srv_unix_file_flush_method != SRV_UNIX_O_DSYNC
+ && srv_unix_file_flush_method != SRV_UNIX_ALL_O_DIRECT
&& srv_unix_file_flush_method != SRV_UNIX_NOSYNC) {
fil_flush(group->space_id);
@@ -1149,6 +1133,7 @@ log_io_complete(
logs and cannot end up here! */
if (srv_unix_file_flush_method != SRV_UNIX_O_DSYNC
+ && srv_unix_file_flush_method != SRV_UNIX_ALL_O_DIRECT
&& srv_unix_file_flush_method != SRV_UNIX_NOSYNC
&& srv_flush_log_at_trx_commit != 2) {
@@ -1529,7 +1514,8 @@ loop:
mutex_exit(&(log_sys->mutex));
- if (srv_unix_file_flush_method == SRV_UNIX_O_DSYNC) {
+ if (srv_unix_file_flush_method == SRV_UNIX_O_DSYNC
+ || srv_unix_file_flush_method == SRV_UNIX_ALL_O_DIRECT) {
/* O_DSYNC means the OS did not buffer the log file at all:
so we have also flushed to disk what we have written */
@@ -2045,7 +2031,7 @@ log_checkpoint(
return(TRUE);
}
- ut_ad(log_sys->written_to_all_lsn >= oldest_lsn);
+ ut_ad(log_sys->flushed_to_disk_lsn >= oldest_lsn);
if (log_sys->n_pending_checkpoint_writes > 0) {
/* A checkpoint write is running */
@@ -3127,7 +3113,7 @@ loop:
if (srv_fast_shutdown < 2
&& (srv_error_monitor_active
- || srv_lock_timeout_and_monitor_active)) {
+ || srv_lock_timeout_active || srv_monitor_active)) {
mutex_exit(&kernel_mutex);
diff --git a/storage/xtradb/log/log0recv.c b/storage/xtradb/log/log0recv.c
index 25eee07067c..bbb634addb0 100644
--- a/storage/xtradb/log/log0recv.c
+++ b/storage/xtradb/log/log0recv.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved.
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
@@ -138,7 +138,9 @@ UNIV_INTERN ulint recv_max_parsed_page_no;
/** This many frames must be left free in the buffer pool when we scan
the log and store the scanned log records in the buffer pool: we will
use these free frames to read in pages when we start applying the
-log records to the database. */
+log records to the database.
+This is the default value. If the actual size of the buffer pool is
+larger than 10 MB we'll set this value to 512. */
UNIV_INTERN ulint recv_n_pool_free_frames;
/** The maximum lsn we see for a page during the recovery process. If this
@@ -242,6 +244,7 @@ recv_sys_mem_free(void)
}
}
+#ifndef UNIV_HOTBACKUP
/************************************************************
Reset the state of the recovery system variables. */
UNIV_INTERN
@@ -251,7 +254,7 @@ recv_sys_var_init(void)
{
recv_lsn_checks_on = FALSE;
- recv_n_pool_free_frames = 1024;
+ recv_n_pool_free_frames = 256;
recv_recovery_on = FALSE;
@@ -277,10 +280,11 @@ recv_sys_var_init(void)
recv_max_parsed_page_no = 0;
- recv_n_pool_free_frames = 1024;
+ recv_n_pool_free_frames = 256;
recv_max_page_lsn = 0;
}
+#endif /* !UNIV_HOTBACKUP */
/************************************************************
Inits the recovery system for a recovery operation. */
@@ -295,20 +299,37 @@ recv_sys_init(
return;
}
+ /* Initialize red-black tree for fast insertions into the
+ flush_list during recovery process.
+ As this initialization is done while holding the buffer pool
+ mutex we perform it before acquiring recv_sys->mutex. */
+#ifndef UNIV_HOTBACKUP
+ buf_flush_init_flush_rbt();
+
mutex_enter(&(recv_sys->mutex));
-#ifndef UNIV_HOTBACKUP
recv_sys->heap = mem_heap_create_in_buffer(256);
#else /* !UNIV_HOTBACKUP */
recv_sys->heap = mem_heap_create(256);
recv_is_from_backup = TRUE;
#endif /* !UNIV_HOTBACKUP */
+ /* Set appropriate value of recv_n_pool_free_frames. */
+ if (buf_pool_get_curr_size() >= (10 * 1024 * 1024)) {
+ /* Buffer pool of size greater than 10 MB. */
+ recv_n_pool_free_frames = 512;
+ }
+
+ if (buf_pool_get_curr_size() >= (32 * 1024 * 1024)) {
+ /* Buffer pool of size greater than 32 MB. */
+ recv_n_pool_free_frames = 1024;
+ }
+
recv_sys->buf = ut_malloc(RECV_PARSING_BUF_SIZE);
recv_sys->len = 0;
recv_sys->recovered_offset = 0;
- recv_sys->addr_hash = hash_create(available_memory / 64);
+ recv_sys->addr_hash = hash_create(available_memory / 512);
recv_sys->n_addrs = 0;
recv_sys->apply_log_recs = FALSE;
@@ -348,7 +369,7 @@ recv_sys_empty_hash(void)
hash_table_free(recv_sys->addr_hash);
mem_heap_empty(recv_sys->heap);
- recv_sys->addr_hash = hash_create(buf_pool_get_curr_size() / 256);
+ recv_sys->addr_hash = hash_create(buf_pool_get_curr_size() / 512);
}
#ifndef UNIV_HOTBACKUP
@@ -373,6 +394,9 @@ recv_sys_debug_free(void)
recv_sys->last_block_buf_start = NULL;
mutex_exit(&(recv_sys->mutex));
+
+ /* Free up the flush_rbt. */
+ buf_flush_free_flush_rbt();
}
# endif /* UNIV_LOG_DEBUG */
@@ -2117,15 +2141,6 @@ recv_parse_log_rec(
}
#endif /* UNIV_LOG_LSN_DEBUG */
- /* Check that page_no is sensible */
-
- if (UNIV_UNLIKELY(*page_no > 0x8FFFFFFFUL)) {
-
- recv_sys->found_corrupt_log = TRUE;
-
- return(0);
- }
-
new_ptr = recv_parse_or_apply_log_rec_body(*type, new_ptr, end_ptr,
NULL, NULL);
if (UNIV_UNLIKELY(new_ptr == NULL)) {
@@ -2234,6 +2249,14 @@ recv_report_corrupt_log(
putc('\n', stderr);
}
+#ifndef UNIV_HOTBACKUP
+ if (!srv_force_recovery) {
+ fputs("InnoDB: Set innodb_force_recovery"
+ " to ignore this error.\n", stderr);
+ ut_error;
+ }
+#endif /* !UNIV_HOTBACKUP */
+
fputs("InnoDB: WARNING: the log file may have been corrupt and it\n"
"InnoDB: is possible that the log scan did not proceed\n"
"InnoDB: far enough in recovery! Please run CHECK TABLE\n"
@@ -2623,7 +2646,7 @@ recv_scan_log_recs(
ut_ad(start_lsn % OS_FILE_LOG_BLOCK_SIZE == 0);
ut_ad(len % OS_FILE_LOG_BLOCK_SIZE == 0);
- ut_ad(len > 0);
+ ut_ad(len >= OS_FILE_LOG_BLOCK_SIZE);
ut_a(store_to_hash <= TRUE);
finished = FALSE;
@@ -2748,6 +2771,16 @@ recv_scan_log_recs(
recv_sys->found_corrupt_log = TRUE;
+#ifndef UNIV_HOTBACKUP
+ if (!srv_force_recovery) {
+ fputs("InnoDB: Set"
+ " innodb_force_recovery"
+ " to ignore this error.\n",
+ stderr);
+ ut_error;
+ }
+#endif /* !UNIV_HOTBACKUP */
+
} else if (!recv_sys->found_corrupt_log) {
more_data = recv_sys_add_to_parsing_buf(
log_block, scanned_lsn);
@@ -2932,9 +2965,12 @@ recv_recovery_from_checkpoint_start_func(
ib_uint64_t contiguous_lsn;
ib_uint64_t archived_lsn;
byte* buf;
- byte log_hdr_buf[LOG_FILE_HDR_SIZE];
+ byte* log_hdr_buf;
+ byte log_hdr_buf_base[LOG_FILE_HDR_SIZE + OS_FILE_LOG_BLOCK_SIZE];
ulint err;
+ log_hdr_buf = ut_align(log_hdr_buf_base, OS_FILE_LOG_BLOCK_SIZE);
+
#ifdef UNIV_LOG_ARCHIVE
ut_ad(type != LOG_CHECKPOINT || limit_lsn == IB_ULONGLONG_MAX);
/** TRUE when recovering from a checkpoint */
@@ -3277,8 +3313,6 @@ void
recv_recovery_from_checkpoint_finish(void)
/*======================================*/
{
- int i;
-
/* Apply the hashed log records to the respective file pages */
if (srv_force_recovery < SRV_FORCE_NO_LOG_REDO) {
@@ -3403,9 +3437,16 @@ recv_recovery_from_checkpoint_finish(void)
The data dictionary latch should guarantee that there is at
most one data dictionary transaction active at a time. */
trx_rollback_or_clean_recovered(FALSE);
+}
- /* Drop partially created indexes. */
- row_merge_drop_temp_indexes();
+/********************************************************//**
+Initiates the rollback of active transactions. */
+UNIV_INTERN
+void
+recv_recovery_rollback_active(void)
+/*===============================*/
+{
+ int i;
#ifdef UNIV_SYNC_DEBUG
/* Wait for a while so that created threads have time to suspend
@@ -3415,6 +3456,11 @@ recv_recovery_from_checkpoint_finish(void)
/* Switch latching order checks on in sync0sync.c */
sync_order_checks_on = TRUE;
#endif
+ /* Drop partially created indexes. */
+ row_merge_drop_temp_indexes();
+ /* Drop temporary tables. */
+ row_mysql_drop_temp_tables();
+
if (srv_force_recovery < SRV_FORCE_NO_TRX_UNDO) {
/* Rollback the uncommitted transactions which have no user
session */
diff --git a/storage/xtradb/mem/mem0dbg.c b/storage/xtradb/mem/mem0dbg.c
index 01eda20ec45..1cd2ff15bab 100644
--- a/storage/xtradb/mem/mem0dbg.c
+++ b/storage/xtradb/mem/mem0dbg.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -180,6 +180,10 @@ mem_close(void)
{
mem_pool_free(mem_comm_pool);
mem_comm_pool = NULL;
+#ifdef UNIV_MEM_DEBUG
+ mutex_free(&mem_hash_mutex);
+ mem_hash_initialized = FALSE;
+#endif /* UNIV_MEM_DEBUG */
}
#endif /* !UNIV_HOTBACKUP */
diff --git a/storage/xtradb/mem/mem0mem.c b/storage/xtradb/mem/mem0mem.c
index ccb2fd8a7b4..c0ce8a3e1ac 100644
--- a/storage/xtradb/mem/mem0mem.c
+++ b/storage/xtradb/mem/mem0mem.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -383,6 +383,20 @@ mem_heap_create_block(
mem_block_set_free(block, MEM_BLOCK_HEADER_SIZE);
mem_block_set_start(block, MEM_BLOCK_HEADER_SIZE);
+ if (UNIV_UNLIKELY(heap == NULL)) {
+ /* This is the first block of the heap. The field
+ total_size should be initialized here */
+ block->total_size = len;
+ } else {
+ /* Not the first allocation for the heap. This block's
+ total_length field should be set to undefined. */
+ ut_d(block->total_size = ULINT_UNDEFINED);
+ UNIV_MEM_INVALID(&block->total_size,
+ sizeof block->total_size);
+
+ heap->total_size += len;
+ }
+
ut_ad((ulint)MEM_BLOCK_HEADER_SIZE < len);
return(block);
@@ -471,6 +485,10 @@ mem_heap_block_free(
mem_pool_mutex_exit();
#endif
+
+ ut_ad(heap->total_size >= block->len);
+ heap->total_size -= block->len;
+
type = heap->type;
len = block->len;
block->magic_n = MEM_FREED_BLOCK_MAGIC_N;
diff --git a/storage/xtradb/os/os0file.c b/storage/xtradb/os/os0file.c
index d3b3edea29f..48d796c38e1 100644
--- a/storage/xtradb/os/os0file.c
+++ b/storage/xtradb/os/os0file.c
@@ -1,23 +1,6 @@
-/*****************************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
/***********************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted
@@ -231,7 +214,7 @@ static os_aio_array_t* os_aio_sync_array = NULL; /*!< Synchronous I/O */
/* Per thread buffer used for merged IO requests. Used by
os_aio_simulated_handle so that a buffer doesn't have to be allocated
for each request. */
-static char* os_aio_thread_buffer[SRV_MAX_N_IO_THREADS];
+static byte* os_aio_thread_buffer[SRV_MAX_N_IO_THREADS];
static ulint os_aio_thread_buffer_size[SRV_MAX_N_IO_THREADS];
/** Number of asynchronous I/O segments. Set by os_aio_init(). */
@@ -846,7 +829,15 @@ next_file:
#ifdef HAVE_READDIR_R
ret = readdir_r(dir, (struct dirent*)dirent_buf, &ent);
- if (ret != 0) {
+ if (ret != 0
+#ifdef UNIV_AIX
+ /* On AIX, only if we got non-NULL 'ent' (result) value and
+ a non-zero 'ret' (return) value, it indicates a failed
+ readdir_r() call. An NULL 'ent' with an non-zero 'ret'
+ would indicate the "end of the directory" is reached. */
+ && ent != NULL
+#endif
+ ) {
fprintf(stderr,
"InnoDB: cannot read directory %s, error %lu\n",
dirname, (ulong)ret);
@@ -1388,7 +1379,11 @@ try_again:
/* When srv_file_per_table is on, file creation failure may not
be critical to the whole instance. Do not crash the server in
- case of unknown errors. */
+ case of unknown errors.
+ Please note "srv_file_per_table" is a global variable with
+ no explicit synchronization protection. It could be
+ changed during this execution path. It might not have the
+ same value as the one when building the table definition */
if (srv_file_per_table) {
retry = os_file_handle_error_no_exit(name,
create_mode == OS_FILE_CREATE ?
@@ -1475,7 +1470,11 @@ try_again:
/* When srv_file_per_table is on, file creation failure may not
be critical to the whole instance. Do not crash the server in
- case of unknown errors. */
+ case of unknown errors.
+ Please note "srv_file_per_table" is a global variable with
+ no explicit synchronization protection. It could be
+ changed during this execution path. It might not have the
+ same value as the one when building the table definition */
if (srv_file_per_table) {
retry = os_file_handle_error_no_exit(name,
create_mode == OS_FILE_CREATE ?
@@ -1503,6 +1502,11 @@ try_again:
os_file_set_nocache(file, name, mode_str);
}
+ /* ALL_O_DIRECT: O_DIRECT also for transaction log file */
+ if (srv_unix_file_flush_method == SRV_UNIX_ALL_O_DIRECT) {
+ os_file_set_nocache(file, name, mode_str);
+ }
+
#ifdef USE_FILE_LOCK
if (create_mode != OS_FILE_OPEN_RAW && os_file_lock(file, name)) {
@@ -4030,6 +4034,9 @@ os_aio_simulated_handle(
ulint i;
time_t now;
+ /* Fix compiler warning */
+ *consecutive_ios = NULL;
+
segment = os_aio_get_array_and_local_segment(&array, global_segment);
restart:
diff --git a/storage/xtradb/os/os0proc.c b/storage/xtradb/os/os0proc.c
index 48922886f23..c101db3d179 100644
--- a/storage/xtradb/os/os0proc.c
+++ b/storage/xtradb/os/os0proc.c
@@ -229,3 +229,175 @@ os_mem_free_large(
}
#endif
}
+
+/****************************************************************//**
+Allocates or attaches and reuses shared memory segment.
+The content is not cleared automatically.
+@return allocated memory */
+UNIV_INTERN
+void*
+os_shm_alloc(
+/*=========*/
+ ulint* n, /*!< in/out: number of bytes */
+ uint key,
+ ibool* is_new)
+{
+ void* ptr;
+#if defined HAVE_SYS_IPC_H && HAVE_SYS_SHM_H
+ ulint size;
+ int shmid;
+#endif
+
+ *is_new = FALSE;
+#if defined HAVE_SYS_IPC_H && HAVE_SYS_SHM_H
+ fprintf(stderr,
+ "InnoDB: The shared memory key %#x (%d) is specified.\n",
+ key, key);
+# if defined HAVE_LARGE_PAGES && defined UNIV_LINUX
+ if (!os_use_large_pages || !os_large_page_size) {
+ goto skip;
+ }
+
+ /* Align block size to os_large_page_size */
+ ut_ad(ut_is_2pow(os_large_page_size));
+ size = ut_2pow_round(*n + (os_large_page_size - 1),
+ os_large_page_size);
+
+ shmid = shmget((key_t)key, (size_t)size,
+ IPC_CREAT | IPC_EXCL | SHM_HUGETLB | SHM_R | SHM_W);
+ if (shmid < 0) {
+ if (errno == EEXIST) {
+ fprintf(stderr,
+ "InnoDB: HugeTLB: The shared memory segment seems to exist already.\n");
+ shmid = shmget((key_t)key, (size_t)size,
+ SHM_HUGETLB | SHM_R | SHM_W);
+ if (shmid < 0) {
+ fprintf(stderr,
+ "InnoDB: HugeTLB: Warning: Failed to allocate %lu bytes.(reuse) errno %d\n",
+ size, errno);
+ goto skip;
+ } else {
+ fprintf(stderr,
+ "InnoDB: HugeTLB: The existent shared memory segment is used.\n");
+ }
+ } else {
+ fprintf(stderr,
+ "InnoDB: HugeTLB: Warning: Failed to allocate %lu bytes.(new) errno %d\n",
+ size, errno);
+ goto skip;
+ }
+ } else {
+ *is_new = TRUE;
+ fprintf(stderr,
+ "InnoDB: HugeTLB: The new shared memory segment is created.\n");
+ }
+
+ ptr = shmat(shmid, NULL, 0);
+ if (ptr == (void *)-1) {
+ fprintf(stderr,
+ "InnoDB: HugeTLB: Warning: Failed to attach shared memory segment, errno %d\n",
+ errno);
+ ptr = NULL;
+ }
+
+ if (ptr) {
+ *n = size;
+ os_fast_mutex_lock(&ut_list_mutex);
+ ut_total_allocated_memory += size;
+ os_fast_mutex_unlock(&ut_list_mutex);
+ UNIV_MEM_ALLOC(ptr, size);
+ return(ptr);
+ }
+skip:
+ *is_new = FALSE;
+# endif /* HAVE_LARGE_PAGES && defined UNIV_LINUX */
+# ifdef HAVE_GETPAGESIZE
+ size = getpagesize();
+# else
+ size = UNIV_PAGE_SIZE;
+# endif
+ /* Align block size to system page size */
+ ut_ad(ut_is_2pow(size));
+ size = *n = ut_2pow_round(*n + (size - 1), size);
+
+ shmid = shmget((key_t)key, (size_t)size,
+ IPC_CREAT | IPC_EXCL | SHM_R | SHM_W);
+ if (shmid < 0) {
+ if (errno == EEXIST) {
+ fprintf(stderr,
+ "InnoDB: The shared memory segment seems to exist already.\n");
+ shmid = shmget((key_t)key, (size_t)size,
+ SHM_R | SHM_W);
+ if (shmid < 0) {
+ fprintf(stderr,
+ "InnoDB: Warning: Failed to allocate %lu bytes.(reuse) errno %d\n",
+ size, errno);
+ ptr = NULL;
+ goto end;
+ } else {
+ fprintf(stderr,
+ "InnoDB: The existent shared memory segment is used.\n");
+ }
+ } else {
+ fprintf(stderr,
+ "InnoDB: Warning: Failed to allocate %lu bytes.(new) errno %d\n",
+ size, errno);
+ ptr = NULL;
+ goto end;
+ }
+ } else {
+ *is_new = TRUE;
+ fprintf(stderr,
+ "InnoDB: The new shared memory segment is created.\n");
+ }
+
+ ptr = shmat(shmid, NULL, 0);
+ if (ptr == (void *)-1) {
+ fprintf(stderr,
+ "InnoDB: Warning: Failed to attach shared memory segment, errno %d\n",
+ errno);
+ ptr = NULL;
+ }
+
+ if (ptr) {
+ *n = size;
+ os_fast_mutex_lock(&ut_list_mutex);
+ ut_total_allocated_memory += size;
+ os_fast_mutex_unlock(&ut_list_mutex);
+ UNIV_MEM_ALLOC(ptr, size);
+ }
+end:
+#else /* HAVE_SYS_IPC_H && HAVE_SYS_SHM_H */
+ fprintf(stderr, "InnoDB: shared memory segment is not supported.\n");
+ ptr = NULL;
+#endif /* HAVE_SYS_IPC_H && HAVE_SYS_SHM_H */
+ return(ptr);
+}
+
+/****************************************************************//**
+Detach shared memory segment. */
+UNIV_INTERN
+void
+os_shm_free(
+/*========*/
+ void *ptr, /*!< in: pointer returned by
+ os_shm_alloc() */
+ ulint size) /*!< in: size returned by
+ os_shm_alloc() */
+{
+ os_fast_mutex_lock(&ut_list_mutex);
+ ut_a(ut_total_allocated_memory >= size);
+ os_fast_mutex_unlock(&ut_list_mutex);
+
+#if defined HAVE_SYS_IPC_H && HAVE_SYS_SHM_H
+ if (!shmdt(ptr)) {
+ os_fast_mutex_lock(&ut_list_mutex);
+ ut_a(ut_total_allocated_memory >= size);
+ ut_total_allocated_memory -= size;
+ os_fast_mutex_unlock(&ut_list_mutex);
+ UNIV_MEM_FREE(ptr, size);
+ }
+#else /* HAVE_SYS_IPC_H && HAVE_SYS_SHM_H */
+ fprintf(stderr, "InnoDB: shared memory segment is not supported.\n");
+#endif /* HAVE_SYS_IPC_H && HAVE_SYS_SHM_H */
+}
diff --git a/storage/xtradb/page/page0page.c b/storage/xtradb/page/page0page.c
index ab2ba60570e..10008f9ac25 100644
--- a/storage/xtradb/page/page0page.c
+++ b/storage/xtradb/page/page0page.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -658,6 +658,14 @@ page_copy_rec_list_end(
index, mtr);
}
+ /* Update PAGE_MAX_TRX_ID on the uncompressed page.
+ Modifications will be redo logged and copied to the compressed
+ page in page_zip_compress() or page_zip_reorganize() below. */
+ if (dict_index_is_sec_or_ibuf(index) && page_is_leaf(page)) {
+ page_update_max_trx_id(new_block, NULL,
+ page_get_max_trx_id(page), mtr);
+ }
+
if (UNIV_LIKELY_NULL(new_page_zip)) {
mtr_set_log_mode(mtr, log_mode);
@@ -696,15 +704,10 @@ page_copy_rec_list_end(
}
}
- /* Update the lock table, MAX_TRX_ID, and possible hash index */
+ /* Update the lock table and possible hash index */
lock_move_rec_list_end(new_block, block, rec);
- if (dict_index_is_sec_or_ibuf(index) && page_is_leaf(page)) {
- page_update_max_trx_id(new_block, new_page_zip,
- page_get_max_trx_id(page), mtr);
- }
-
btr_search_move_or_delete_hash_entries(new_block, block, index);
return(ret);
@@ -772,6 +775,16 @@ page_copy_rec_list_start(
mem_heap_free(heap);
}
+ /* Update PAGE_MAX_TRX_ID on the uncompressed page.
+ Modifications will be redo logged and copied to the compressed
+ page in page_zip_compress() or page_zip_reorganize() below. */
+ if (dict_index_is_sec_or_ibuf(index)
+ && page_is_leaf(page_align(rec))) {
+ page_update_max_trx_id(new_block, NULL,
+ page_get_max_trx_id(page_align(rec)),
+ mtr);
+ }
+
if (UNIV_LIKELY_NULL(new_page_zip)) {
mtr_set_log_mode(mtr, log_mode);
@@ -809,14 +822,7 @@ page_copy_rec_list_start(
}
}
- /* Update MAX_TRX_ID, the lock table, and possible hash index */
-
- if (dict_index_is_sec_or_ibuf(index)
- && page_is_leaf(page_align(rec))) {
- page_update_max_trx_id(new_block, new_page_zip,
- page_get_max_trx_id(page_align(rec)),
- mtr);
- }
+ /* Update the lock table and possible hash index */
lock_move_rec_list_start(new_block, block, rec, ret);
@@ -2408,8 +2414,13 @@ page_validate(
}
offs = page_offset(rec_get_start(rec, offsets));
+ i = rec_offs_size(offsets);
+ if (UNIV_UNLIKELY(offs + i >= UNIV_PAGE_SIZE)) {
+ fputs("InnoDB: record offset out of bounds\n", stderr);
+ goto func_exit;
+ }
- for (i = rec_offs_size(offsets); i--; ) {
+ while (i--) {
if (UNIV_UNLIKELY(buf[offs + i])) {
/* No other record may overlap this */
@@ -2517,8 +2528,13 @@ n_owned_zero:
count++;
offs = page_offset(rec_get_start(rec, offsets));
+ i = rec_offs_size(offsets);
+ if (UNIV_UNLIKELY(offs + i >= UNIV_PAGE_SIZE)) {
+ fputs("InnoDB: record offset out of bounds\n", stderr);
+ goto func_exit;
+ }
- for (i = rec_offs_size(offsets); i--; ) {
+ while (i--) {
if (UNIV_UNLIKELY(buf[offs + i])) {
fputs("InnoDB: Record overlaps another"
diff --git a/storage/xtradb/page/page0zip.c b/storage/xtradb/page/page0zip.c
index c5c373781a2..a94d2d54417 100644
--- a/storage/xtradb/page/page0zip.c
+++ b/storage/xtradb/page/page0zip.c
@@ -571,7 +571,7 @@ page_zip_dir_encode(
/* Traverse the list of stored records in the collation order,
starting from the first user record. */
- rec = page + PAGE_NEW_INFIMUM, TRUE;
+ rec = page + PAGE_NEW_INFIMUM;
i = 0;
@@ -1153,6 +1153,10 @@ page_zip_compress(
FILE* logfile = NULL;
#endif
+ if (!page) {
+ return(FALSE);
+ }
+
ut_a(page_is_comp(page));
ut_a(fil_page_get_type(page) == FIL_PAGE_INDEX);
ut_ad(page_simple_validate_new((page_t*) page));
@@ -1464,6 +1468,7 @@ page_zip_fields_free(
dict_table_t* table = index->table;
mem_heap_free(index->heap);
mutex_free(&(table->autoinc_mutex));
+ ut_free(table->name);
mem_heap_free(table->heap);
}
}
@@ -3117,8 +3122,13 @@ page_zip_validate_low(
temp_page_zip in a debugger when running valgrind --db-attach. */
VALGRIND_GET_VBITS(page, temp_page, UNIV_PAGE_SIZE);
UNIV_MEM_ASSERT_RW(page, UNIV_PAGE_SIZE);
+# if UNIV_WORD_SIZE == 4
VALGRIND_GET_VBITS(page_zip, &temp_page_zip, sizeof temp_page_zip);
+ /* On 32-bit systems, there is no padding in page_zip_des_t.
+ On other systems, Valgrind could complain about uninitialized
+ pad bytes. */
UNIV_MEM_ASSERT_RW(page_zip, sizeof *page_zip);
+# endif
VALGRIND_GET_VBITS(page_zip->data, temp_page,
page_zip_get_size(page_zip));
UNIV_MEM_ASSERT_RW(page_zip->data, page_zip_get_size(page_zip));
diff --git a/storage/xtradb/plug.in b/storage/xtradb/plug.in
index 2d7bd51ec17..37c895fb520 100644
--- a/storage/xtradb/plug.in
+++ b/storage/xtradb/plug.in
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.
+# Copyright (c) 2006, 2010, Innobase Oy. All Rights Reserved.
#
# 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
@@ -14,12 +14,13 @@
# Place, Suite 330, Boston, MA 02111-1307 USA
#
-MYSQL_STORAGE_ENGINE(innobase, innodb, [InnoDB Storage Engine],
- [Transactional Tables using InnoDB], [max,max-no-ndb])
-MYSQL_PLUGIN_DIRECTORY(innobase, [storage/xtradb])
-MYSQL_PLUGIN_STATIC(innobase, [libinnobase.a])
-MYSQL_PLUGIN_DYNAMIC(innobase, [ha_innodb.la])
-MYSQL_PLUGIN_ACTIONS(innobase, [
+MYSQL_STORAGE_ENGINE(xtradb, xtradb, [XtraDB Storage Engine],
+ [XtraDB - a drop-in replacement for InnoDB], [max,max-no-ndb])
+MYSQL_PLUGIN_DIRECTORY(xtradb, [storage/xtradb])
+MYSQL_PLUGIN_STATIC(xtradb, [libxtradb.a])
+MYSQL_PLUGIN_DYNAMIC(xtradb, [ha_xtradb.la])
+MYSQL_PLUGIN_ACTIONS(xtradb, [
+ with_plugin_innobase=$with_plugin_xtradb # for legacy code in configure.in
AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"])
AC_SUBST(innodb_system_libs)
AC_CHECK_HEADERS(aio.h sched.h)
diff --git a/storage/xtradb/que/que0que.c b/storage/xtradb/que/que0que.c
index 2fe046fa9b8..5c85a04d139 100644
--- a/storage/xtradb/que/que0que.c
+++ b/storage/xtradb/que/que0que.c
@@ -622,11 +622,21 @@ que_graph_free_recursive(
que_graph_free_recursive(cre_ind->ind_def);
que_graph_free_recursive(cre_ind->field_def);
+ if (srv_use_sys_stats_table)
+ que_graph_free_recursive(cre_ind->stats_def);
que_graph_free_recursive(cre_ind->commit_node);
mem_heap_free(cre_ind->heap);
break;
+ case QUE_NODE_INSERT_STATS:
+ cre_ind = node;
+
+ que_graph_free_recursive(cre_ind->stats_def);
+ que_graph_free_recursive(cre_ind->commit_node);
+
+ mem_heap_free(cre_ind->heap);
+ break;
case QUE_NODE_PROC:
que_graph_free_stat_list(((proc_node_t*)node)->stat_list);
@@ -1139,6 +1149,8 @@ que_node_print_info(
str = "CREATE TABLE";
} else if (type == QUE_NODE_CREATE_INDEX) {
str = "CREATE INDEX";
+ } else if (type == QUE_NODE_INSERT_STATS) {
+ str = "INSERT TO SYS_STATS";
} else if (type == QUE_NODE_FOR) {
str = "FOR LOOP";
} else if (type == QUE_NODE_RETURN) {
@@ -1256,6 +1268,8 @@ que_thr_step(
thr = dict_create_table_step(thr);
} else if (type == QUE_NODE_CREATE_INDEX) {
thr = dict_create_index_step(thr);
+ } else if (type == QUE_NODE_INSERT_STATS) {
+ thr = dict_insert_stats_step(thr);
} else if (type == QUE_NODE_ROW_PRINTF) {
thr = row_printf_step(thr);
} else {
diff --git a/storage/xtradb/rem/rem0cmp.c b/storage/xtradb/rem/rem0cmp.c
index 45230f1d7b1..8ee434f85da 100644
--- a/storage/xtradb/rem/rem0cmp.c
+++ b/storage/xtradb/rem/rem0cmp.c
@@ -706,7 +706,9 @@ cmp_rec_rec_simple(
const rec_t* rec2, /*!< in: physical record */
const ulint* offsets1,/*!< in: rec_get_offsets(rec1, ...) */
const ulint* offsets2,/*!< in: rec_get_offsets(rec2, ...) */
- const dict_index_t* index) /*!< in: data dictionary index */
+ const dict_index_t* index, /*!< in: data dictionary index */
+ ibool* null_eq)/*!< out: set to TRUE if
+ found matching null values */
{
ulint rec1_f_len; /*!< length of current field in rec1 */
const byte* rec1_b_ptr; /*!< pointer to the current byte
@@ -753,6 +755,9 @@ cmp_rec_rec_simple(
|| rec2_f_len == UNIV_SQL_NULL) {
if (rec1_f_len == rec2_f_len) {
+ if (null_eq) {
+ *null_eq = TRUE;
+ }
goto next_field;
diff --git a/storage/xtradb/rem/rem0rec.c b/storage/xtradb/rem/rem0rec.c
index 1c8b3fd8c1e..37ba8ca2ffe 100644
--- a/storage/xtradb/rem/rem0rec.c
+++ b/storage/xtradb/rem/rem0rec.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
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
@@ -212,6 +212,13 @@ rec_get_n_extern_new(
const dict_col_t* col
= dict_field_get_col(field);
len = *lens--;
+ /* If the maximum length of the field is up
+ to 255 bytes, the actual length is always
+ stored in one byte. If the maximum length is
+ more than 255 bytes, the actual length is
+ stored in one byte for 0..127. The length
+ will be encoded in two bytes when it is 128 or
+ more, or when the field is stored externally. */
if (UNIV_UNLIKELY(col->len > 255)
|| UNIV_UNLIKELY(col->mtype == DATA_BLOB)) {
if (len & 0x80) {
@@ -294,6 +301,13 @@ rec_init_offsets_comp_ordinary(
const dict_col_t* col
= dict_field_get_col(field);
len = *lens--;
+ /* If the maximum length of the field is up
+ to 255 bytes, the actual length is always
+ stored in one byte. If the maximum length is
+ more than 255 bytes, the actual length is
+ stored in one byte for 0..127. The length
+ will be encoded in two bytes when it is 128 or
+ more, or when the field is stored externally. */
if (UNIV_UNLIKELY(col->len > 255)
|| UNIV_UNLIKELY(col->mtype
== DATA_BLOB)) {
@@ -425,6 +439,15 @@ rec_init_offsets(
const dict_col_t* col
= dict_field_get_col(field);
len = *lens--;
+ /* If the maximum length of the field
+ is up to 255 bytes, the actual length
+ is always stored in one byte. If the
+ maximum length is more than 255 bytes,
+ the actual length is stored in one
+ byte for 0..127. The length will be
+ encoded in two bytes when it is 128 or
+ more, or when the field is stored
+ externally. */
if (UNIV_UNLIKELY(col->len > 255)
|| UNIV_UNLIKELY(col->mtype
== DATA_BLOB)) {
@@ -647,6 +670,13 @@ rec_get_offsets_reverse(
const dict_col_t* col
= dict_field_get_col(field);
len = *lens++;
+ /* If the maximum length of the field is up
+ to 255 bytes, the actual length is always
+ stored in one byte. If the maximum length is
+ more than 255 bytes, the actual length is
+ stored in one byte for 0..127. The length
+ will be encoded in two bytes when it is 128 or
+ more, or when the field is stored externally. */
if (UNIV_UNLIKELY(col->len > 255)
|| UNIV_UNLIKELY(col->mtype == DATA_BLOB)) {
if (len & 0x80) {
@@ -695,19 +725,9 @@ rec_get_nth_field_offs_old(
ulint os;
ulint next_os;
- ut_ad(rec && len);
- ut_ad(n < rec_get_n_fields_old(rec));
-
- if (UNIV_UNLIKELY(n > REC_MAX_N_FIELDS)) {
- fprintf(stderr, "Error: trying to access field %lu in rec\n",
- (ulong) n);
- ut_error;
- }
-
- if (UNIV_UNLIKELY(rec == NULL)) {
- fputs("Error: rec is NULL pointer\n", stderr);
- ut_error;
- }
+ ut_ad(len);
+ ut_a(rec);
+ ut_a(n < rec_get_n_fields_old(rec));
if (rec_get_1byte_offs_flag(rec)) {
os = rec_1_get_field_start_offs(rec, n);
@@ -791,12 +811,20 @@ rec_get_converted_size_comp_prefix(
ut_ad(len <= col->len || col->mtype == DATA_BLOB);
+ /* If the maximum length of a variable-length field
+ is up to 255 bytes, the actual length is always stored
+ in one byte. If the maximum length is more than 255
+ bytes, the actual length is stored in one byte for
+ 0..127. The length will be encoded in two bytes when
+ it is 128 or more, or when the field is stored externally. */
+
if (field->fixed_len) {
ut_ad(len == field->fixed_len);
/* dict_index_add_col() should guarantee this */
ut_ad(!field->prefix_len
|| field->fixed_len == field->prefix_len);
} else if (dfield_is_ext(&fields[i])) {
+ ut_ad(col->len >= 256 || col->mtype == DATA_BLOB);
extra_size += 2;
} else if (len < 128
|| (col->len < 256 && col->mtype != DATA_BLOB)) {
@@ -1096,6 +1124,8 @@ rec_convert_dtuple_to_rec_comp(
/* Store the data and the offsets */
for (i = 0, field = fields; i < n_fields; i++, field++) {
+ const dict_field_t* ifield;
+
type = dfield_get_type(field);
len = dfield_get_len(field);
@@ -1130,12 +1160,20 @@ rec_convert_dtuple_to_rec_comp(
/* only nullable fields can be null */
ut_ad(!dfield_is_null(field));
- fixed_len = dict_index_get_nth_field(index, i)->fixed_len;
-
+ ifield = dict_index_get_nth_field(index, i);
+ fixed_len = ifield->fixed_len;
+ /* If the maximum length of a variable-length field
+ is up to 255 bytes, the actual length is always stored
+ in one byte. If the maximum length is more than 255
+ bytes, the actual length is stored in one byte for
+ 0..127. The length will be encoded in two bytes when
+ it is 128 or more, or when the field is stored externally. */
if (fixed_len) {
ut_ad(len == fixed_len);
ut_ad(!dfield_is_ext(field));
} else if (dfield_is_ext(field)) {
+ ut_ad(ifield->col->len >= 256
+ || ifield->col->mtype == DATA_BLOB);
ut_ad(len <= REC_MAX_INDEX_COL_LEN
+ BTR_EXTERN_FIELD_REF_SIZE);
*lens-- = (byte) (len >> 8) | 0xc0;
@@ -1225,11 +1263,20 @@ rec_convert_dtuple_to_rec(
mem_heap_t* heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE];
const ulint* offsets;
+ ulint i;
rec_offs_init(offsets_);
offsets = rec_get_offsets(rec, index,
offsets_, ULINT_UNDEFINED, &heap);
ut_ad(rec_validate(rec, offsets));
+ ut_ad(dtuple_get_n_fields(dtuple)
+ == rec_offs_n_fields(offsets));
+
+ for (i = 0; i < rec_offs_n_fields(offsets); i++) {
+ ut_ad(!dfield_is_ext(dtuple_get_nth_field(dtuple, i))
+ == !rec_offs_nth_extern(offsets, i));
+ }
+
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
@@ -1412,6 +1459,13 @@ rec_copy_prefix_to_buf(
prefix_len += field->fixed_len;
} else {
ulint len = *lens--;
+ /* If the maximum length of the column is up
+ to 255 bytes, the actual length is always
+ stored in one byte. If the maximum length is
+ more than 255 bytes, the actual length is
+ stored in one byte for 0..127. The length
+ will be encoded in two bytes when it is 128 or
+ more, or when the column is stored externally. */
if (col->len > 255 || col->mtype == DATA_BLOB) {
if (len & 0x80) {
/* 1exxxxxx */
diff --git a/storage/xtradb/row/row0ins.c b/storage/xtradb/row/row0ins.c
index 4b104ced649..d4925e46f97 100644
--- a/storage/xtradb/row/row0ins.c
+++ b/storage/xtradb/row/row0ins.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -51,6 +51,15 @@ Created 4/20/1996 Heikki Tuuri
#define ROW_INS_PREV 1
#define ROW_INS_NEXT 2
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
/*********************************************************************//**
Creates an insert node struct.
@@ -1121,9 +1130,9 @@ nonstandard_exit_func:
/*********************************************************************//**
Sets a shared lock on a record. Used in locking possible duplicate key
records and also in checking foreign key constraints.
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
static
-ulint
+enum db_err
row_ins_set_shared_rec_lock(
/*========================*/
ulint type, /*!< in: LOCK_ORDINARY, LOCK_GAP, or
@@ -1134,7 +1143,7 @@ row_ins_set_shared_rec_lock(
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
+ enum db_err err;
ut_ad(rec_offs_validate(rec, index, offsets));
@@ -1152,9 +1161,9 @@ row_ins_set_shared_rec_lock(
/*********************************************************************//**
Sets a exclusive lock on a record. Used in locking possible duplicate key
records
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
static
-ulint
+enum db_err
row_ins_set_exclusive_rec_lock(
/*===========================*/
ulint type, /*!< in: LOCK_ORDINARY, LOCK_GAP, or
@@ -1165,7 +1174,7 @@ row_ins_set_exclusive_rec_lock(
const ulint* offsets,/*!< in: rec_get_offsets(rec, index) */
que_thr_t* thr) /*!< in: query thread */
{
- ulint err;
+ enum db_err err;
ut_ad(rec_offs_validate(rec, index, offsets));
@@ -1205,7 +1214,6 @@ row_ins_check_foreign_constraint(
dict_index_t* check_index;
ulint n_fields_cmp;
btr_pcur_t pcur;
- ibool moved;
int cmp;
ulint err;
ulint i;
@@ -1336,7 +1344,7 @@ run_again:
/* Scan index records and check if there is a matching record */
- for (;;) {
+ do {
const rec_t* rec = btr_pcur_get_rec(&pcur);
const buf_block_t* block = btr_pcur_get_block(&pcur);
@@ -1348,7 +1356,7 @@ run_again:
if (page_rec_is_infimum(rec)) {
- goto next_rec;
+ continue;
}
offsets = rec_get_offsets(rec, check_index,
@@ -1359,12 +1367,13 @@ run_again:
err = row_ins_set_shared_rec_lock(LOCK_ORDINARY, block,
rec, check_index,
offsets, thr);
- if (err != DB_SUCCESS) {
-
- break;
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ continue;
+ default:
+ goto end_scan;
}
-
- goto next_rec;
}
cmp = cmp_dtuple_rec(entry, rec, offsets);
@@ -1375,9 +1384,12 @@ run_again:
err = row_ins_set_shared_rec_lock(
LOCK_ORDINARY, block,
rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
} else {
/* Found a matching record. Lock only
@@ -1388,15 +1400,18 @@ run_again:
LOCK_REC_NOT_GAP, block,
rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
if (check_ref) {
err = DB_SUCCESS;
- break;
+ goto end_scan;
} else if (foreign->type != 0) {
/* There is an ON UPDATE or ON DELETE
condition: check them in a separate
@@ -1422,7 +1437,7 @@ run_again:
err = DB_FOREIGN_DUPLICATE_KEY;
}
- break;
+ goto end_scan;
}
/* row_ins_foreign_check_on_constraint
@@ -1435,49 +1450,41 @@ run_again:
thr, foreign, rec, entry);
err = DB_ROW_IS_REFERENCED;
- break;
+ goto end_scan;
}
}
- }
+ } else {
+ ut_a(cmp < 0);
- if (cmp < 0) {
err = row_ins_set_shared_rec_lock(
LOCK_GAP, block,
rec, check_index, offsets, thr);
- if (err != DB_SUCCESS) {
- break;
- }
-
- if (check_ref) {
- err = DB_NO_REFERENCED_ROW;
- row_ins_foreign_report_add_err(
- trx, foreign, rec, entry);
- } else {
- err = DB_SUCCESS;
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ if (check_ref) {
+ err = DB_NO_REFERENCED_ROW;
+ row_ins_foreign_report_add_err(
+ trx, foreign, rec, entry);
+ } else {
+ err = DB_SUCCESS;
+ }
}
- break;
+ goto end_scan;
}
+ } while (btr_pcur_move_to_next(&pcur, &mtr));
- ut_a(cmp == 0);
-next_rec:
- moved = btr_pcur_move_to_next(&pcur, &mtr);
-
- if (!moved) {
- if (check_ref) {
- rec = btr_pcur_get_rec(&pcur);
- row_ins_foreign_report_add_err(
- trx, foreign, rec, entry);
- err = DB_NO_REFERENCED_ROW;
- } else {
- err = DB_SUCCESS;
- }
-
- break;
- }
+ if (check_ref) {
+ row_ins_foreign_report_add_err(
+ trx, foreign, btr_pcur_get_rec(&pcur), entry);
+ err = DB_NO_REFERENCED_ROW;
+ } else {
+ err = DB_SUCCESS;
}
+end_scan:
btr_pcur_close(&pcur);
mtr_commit(&mtr);
@@ -1725,9 +1732,13 @@ row_ins_scan_sec_index_for_duplicate(
rec, index, offsets, thr);
}
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
break;
+ default:
+ goto end_scan;
}
if (page_rec_is_supremum(rec)) {
@@ -1744,17 +1755,15 @@ row_ins_scan_sec_index_for_duplicate(
thr_get_trx(thr)->error_info = index;
- break;
+ goto end_scan;
}
+ } else {
+ ut_a(cmp < 0);
+ goto end_scan;
}
-
- if (cmp < 0) {
- break;
- }
-
- ut_a(cmp == 0);
} while (btr_pcur_move_to_next(&pcur, &mtr));
+end_scan:
if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap);
}
@@ -1843,7 +1852,11 @@ row_ins_duplicate_error_in_clust(
cursor->index, offsets, thr);
}
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto func_exit;
}
@@ -1883,7 +1896,11 @@ row_ins_duplicate_error_in_clust(
rec, cursor->index, offsets, thr);
}
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto func_exit;
}
@@ -1997,7 +2014,7 @@ row_ins_index_entry_low(
btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE,
mode | BTR_INSERT | ignore_sec_unique,
- &cursor, 0, &mtr);
+ &cursor, 0, __FILE__, __LINE__, &mtr);
if (cursor.flag == BTR_CUR_INSERT_TO_IBUF) {
/* The insertion was made to the insert buffer already during
@@ -2055,7 +2072,8 @@ row_ins_index_entry_low(
btr_cur_search_to_nth_level(index, 0, entry,
PAGE_CUR_LE,
mode | BTR_INSERT,
- &cursor, 0, &mtr);
+ &cursor, 0,
+ __FILE__, __LINE__, &mtr);
}
}
@@ -2110,7 +2128,8 @@ function_exit:
mtr_start(&mtr);
btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE,
- BTR_MODIFY_TREE, &cursor, 0, &mtr);
+ BTR_MODIFY_TREE, &cursor, 0,
+ __FILE__, __LINE__, &mtr);
rec = btr_cur_get_rec(&cursor);
offsets = rec_get_offsets(rec, index, NULL,
ULINT_UNDEFINED, &heap);
diff --git a/storage/xtradb/row/row0merge.c b/storage/xtradb/row/row0merge.c
index 93b2095dc26..47c03c77850 100644
--- a/storage/xtradb/row/row0merge.c
+++ b/storage/xtradb/row/row0merge.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2005, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 2005, 2010, Innobase Oy. All Rights Reserved.
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
@@ -424,14 +424,13 @@ row_merge_dup_report(
row_merge_dup_t* dup, /*!< in/out: for reporting duplicates */
const dfield_t* entry) /*!< in: duplicate index entry */
{
- mrec_buf_t buf;
+ mrec_buf_t* buf;
const dtuple_t* tuple;
dtuple_t tuple_store;
const rec_t* rec;
const dict_index_t* index = dup->index;
ulint n_fields= dict_index_get_n_fields(index);
- mem_heap_t* heap = NULL;
- ulint offsets_[REC_OFFS_NORMAL_SIZE];
+ mem_heap_t* heap;
ulint* offsets;
ulint n_ext;
@@ -441,22 +440,22 @@ row_merge_dup_report(
return;
}
- rec_offs_init(offsets_);
-
/* Convert the tuple to a record and then to MySQL format. */
+ heap = mem_heap_create((1 + REC_OFFS_HEADER_SIZE + n_fields)
+ * sizeof *offsets
+ + sizeof *buf);
+
+ buf = mem_heap_alloc(heap, sizeof *buf);
tuple = dtuple_from_fields(&tuple_store, entry, n_fields);
n_ext = dict_index_is_clust(index) ? dtuple_get_n_ext(tuple) : 0;
- rec = rec_convert_dtuple_to_rec(buf, index, tuple, n_ext);
- offsets = rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED,
- &heap);
+ rec = rec_convert_dtuple_to_rec(*buf, index, tuple, n_ext);
+ offsets = rec_get_offsets(rec, index, NULL, ULINT_UNDEFINED, &heap);
innobase_rec_to_mysql(dup->table, rec, index, offsets);
- if (UNIV_LIKELY_NULL(heap)) {
- mem_heap_free(heap);
- }
+ mem_heap_free(heap);
}
/*************************************************************//**
@@ -627,22 +626,26 @@ row_merge_buf_write(
}
/******************************************************//**
-Create a memory heap and allocate space for row_merge_rec_offsets().
+Create a memory heap and allocate space for row_merge_rec_offsets()
+and mrec_buf_t[3].
@return memory heap */
static
mem_heap_t*
row_merge_heap_create(
/*==================*/
const dict_index_t* index, /*!< in: record descriptor */
+ mrec_buf_t** buf, /*!< out: 3 buffers */
ulint** offsets1, /*!< out: offsets */
ulint** offsets2) /*!< out: offsets */
{
ulint i = 1 + REC_OFFS_HEADER_SIZE
+ dict_index_get_n_fields(index);
- mem_heap_t* heap = mem_heap_create(2 * i * sizeof *offsets1);
+ mem_heap_t* heap = mem_heap_create(2 * i * sizeof **offsets1
+ + 3 * sizeof **buf);
- *offsets1 = mem_heap_alloc(heap, i * sizeof *offsets1);
- *offsets2 = mem_heap_alloc(heap, i * sizeof *offsets2);
+ *buf = mem_heap_alloc(heap, 3 * sizeof **buf);
+ *offsets1 = mem_heap_alloc(heap, i * sizeof **offsets1);
+ *offsets2 = mem_heap_alloc(heap, i * sizeof **offsets2);
(*offsets1)[0] = (*offsets2)[0] = i;
(*offsets1)[1] = (*offsets2)[1] = dict_index_get_n_fields(index);
@@ -714,14 +717,16 @@ row_merge_read(
}
/********************************************************************//**
-Read a merge block from the file system.
+Write a merge block to the file system.
@return TRUE if request was successful, FALSE if fail */
static
ibool
row_merge_write(
/*============*/
int fd, /*!< in: file descriptor */
- ulint offset, /*!< in: offset where to write */
+ ulint offset, /*!< in: offset where to read
+ in number of row_merge_block_t
+ elements */
const void* buf) /*!< in: data */
{
ib_uint64_t ofs = ((ib_uint64_t) offset)
@@ -1072,11 +1077,14 @@ row_merge_cmp(
record to be compared */
const ulint* offsets1, /*!< in: first record offsets */
const ulint* offsets2, /*!< in: second record offsets */
- const dict_index_t* index) /*!< in: index */
+ const dict_index_t* index, /*!< in: index */
+ ibool* null_eq) /*!< out: set to TRUE if
+ found matching null values */
{
int cmp;
- cmp = cmp_rec_rec_simple(mrec1, mrec2, offsets1, offsets2, index);
+ cmp = cmp_rec_rec_simple(mrec1, mrec2, offsets1, offsets2, index,
+ null_eq);
#ifdef UNIV_DEBUG
if (row_merge_print_cmp) {
@@ -1401,7 +1409,8 @@ row_merge_blocks(
{
mem_heap_t* heap; /*!< memory heap for offsets0, offsets1 */
- mrec_buf_t buf[3]; /*!< buffer for handling split mrec in block[] */
+ mrec_buf_t* buf; /*!< buffer for handling
+ split mrec in block[] */
const byte* b0; /*!< pointer to block[0] */
const byte* b1; /*!< pointer to block[1] */
byte* b2; /*!< pointer to block[2] */
@@ -1421,7 +1430,7 @@ row_merge_blocks(
}
#endif /* UNIV_DEBUG */
- heap = row_merge_heap_create(index, &offsets0, &offsets1);
+ heap = row_merge_heap_create(index, &buf, &offsets0, &offsets1);
/* Write a record and read the next record. Split the output
file in two halves, which can be merged on the following pass. */
@@ -1448,11 +1457,13 @@ corrupt:
}
while (mrec0 && mrec1) {
+ ibool null_eq = FALSE;
switch (row_merge_cmp(mrec0, mrec1,
- offsets0, offsets1, index)) {
+ offsets0, offsets1, index,
+ &null_eq)) {
case 0:
if (UNIV_UNLIKELY
- (dict_index_is_unique(index))) {
+ (dict_index_is_unique(index) && !null_eq)) {
innobase_rec_to_mysql(table, mrec0,
index, offsets0);
mem_heap_free(heap);
@@ -1507,7 +1518,7 @@ row_merge_blocks_copy(
{
mem_heap_t* heap; /*!< memory heap for offsets0, offsets1 */
- mrec_buf_t buf[3]; /*!< buffer for handling
+ mrec_buf_t* buf; /*!< buffer for handling
split mrec in block[] */
const byte* b0; /*!< pointer to block[0] */
byte* b2; /*!< pointer to block[2] */
@@ -1525,7 +1536,7 @@ row_merge_blocks_copy(
}
#endif /* UNIV_DEBUG */
- heap = row_merge_heap_create(index, &offsets0, &offsets1);
+ heap = row_merge_heap_create(index, &buf, &offsets0, &offsets1);
/* Write a record and read the next record. Split the output
file in two halves, which can be merged on the following pass. */
@@ -1574,22 +1585,28 @@ row_merge(
const dict_index_t* index, /*!< in: index being created */
merge_file_t* file, /*!< in/out: file containing
index entries */
- ulint* half, /*!< in/out: half the file */
row_merge_block_t* block, /*!< in/out: 3 buffers */
int* tmpfd, /*!< in/out: temporary file handle */
- TABLE* table) /*!< in/out: MySQL table, for
+ TABLE* table, /*!< in/out: MySQL table, for
reporting erroneous key value
if applicable */
+ ulint* num_run,/*!< in/out: Number of runs remain
+ to be merged */
+ ulint* run_offset) /*!< in/out: Array contains the
+ first offset number for each merge
+ run */
{
ulint foffs0; /*!< first input offset */
ulint foffs1; /*!< second input offset */
ulint error; /*!< error code */
merge_file_t of; /*!< output file */
- const ulint ihalf = *half;
+ const ulint ihalf = run_offset[*num_run / 2];
/*!< half the input file */
- ulint ohalf; /*!< half the output file */
+ ulint n_run = 0;
+ /*!< num of runs generated from this merge */
UNIV_MEM_ASSERT_W(block[0], 3 * sizeof block[0]);
+
ut_ad(ihalf < file->offset);
of.fd = *tmpfd;
@@ -1597,17 +1614,20 @@ row_merge(
of.n_rec = 0;
/* Merge blocks to the output file. */
- ohalf = 0;
foffs0 = 0;
foffs1 = ihalf;
+ UNIV_MEM_INVALID(run_offset, *num_run * sizeof *run_offset);
+
for (; foffs0 < ihalf && foffs1 < file->offset; foffs0++, foffs1++) {
- ulint ahalf; /*!< arithmetic half the input file */
if (UNIV_UNLIKELY(trx_is_interrupted(trx))) {
return(DB_INTERRUPTED);
}
+ /* Remember the offset number for this run */
+ run_offset[n_run++] = of.offset;
+
error = row_merge_blocks(index, file, block,
&foffs0, &foffs1, &of, table);
@@ -1615,21 +1635,6 @@ row_merge(
return(error);
}
- /* Record the offset of the output file when
- approximately half the output has been generated. In
- this way, the next invocation of row_merge() will
- spend most of the time in this loop. The initial
- estimate is ohalf==0. */
- ahalf = file->offset / 2;
- ut_ad(ohalf <= of.offset);
-
- /* Improve the estimate until reaching half the input
- file size, or we can not get any closer to it. All
- comparands should be non-negative when !(ohalf < ahalf)
- because ohalf <= of.offset. */
- if (ohalf < ahalf || of.offset - ahalf < ohalf - ahalf) {
- ohalf = of.offset;
- }
}
/* Copy the last blocks, if there are any. */
@@ -1639,6 +1644,9 @@ row_merge(
return(DB_INTERRUPTED);
}
+ /* Remember the offset number for this run */
+ run_offset[n_run++] = of.offset;
+
if (!row_merge_blocks_copy(index, file, block, &foffs0, &of)) {
return(DB_CORRUPTION);
}
@@ -1651,6 +1659,9 @@ row_merge(
return(DB_INTERRUPTED);
}
+ /* Remember the offset number for this run */
+ run_offset[n_run++] = of.offset;
+
if (!row_merge_blocks_copy(index, file, block, &foffs1, &of)) {
return(DB_CORRUPTION);
}
@@ -1662,10 +1673,23 @@ row_merge(
return(DB_CORRUPTION);
}
+ ut_ad(n_run <= *num_run);
+
+ *num_run = n_run;
+
+ /* Each run can contain one or more offsets. As merge goes on,
+ the number of runs (to merge) will reduce until we have one
+ single run. So the number of runs will always be smaller than
+ the number of offsets in file */
+ ut_ad((*num_run) <= file->offset);
+
+ /* The number of offsets in output file is always equal or
+ smaller than input file */
+ ut_ad(of.offset <= file->offset);
+
/* Swap file descriptors for the next pass. */
*tmpfd = file->fd;
*file = of;
- *half = ohalf;
UNIV_MEM_INVALID(block[0], 3 * sizeof block[0]);
@@ -1690,27 +1714,44 @@ row_merge_sort(
if applicable */
{
ulint half = file->offset / 2;
+ ulint num_runs;
+ ulint* run_offset;
+ ulint error = DB_SUCCESS;
+
+ /* Record the number of merge runs we need to perform */
+ num_runs = file->offset;
+
+ /* If num_runs are less than 1, nothing to merge */
+ if (num_runs <= 1) {
+ return(error);
+ }
+
+ /* "run_offset" records each run's first offset number */
+ run_offset = (ulint*) mem_alloc(file->offset * sizeof(ulint));
+
+ /* This tells row_merge() where to start for the first round
+ of merge. */
+ run_offset[half] = half;
/* The file should always contain at least one byte (the end
of file marker). Thus, it must be at least one block. */
ut_ad(file->offset > 0);
+ /* Merge the runs until we have one big run */
do {
- ulint error;
+ error = row_merge(trx, index, file, block, tmpfd,
+ table, &num_runs, run_offset);
- error = row_merge(trx, index, file, &half,
- block, tmpfd, table);
+ UNIV_MEM_ASSERT_RW(run_offset, num_runs * sizeof *run_offset);
if (error != DB_SUCCESS) {
- return(error);
+ break;
}
+ } while (num_runs > 1);
- /* half > 0 should hold except when the file consists
- of one block. No need to merge further then. */
- ut_ad(half > 0 || file->offset == 1);
- } while (half < file->offset && half > 0);
+ mem_free(run_offset);
- return(DB_SUCCESS);
+ return(error);
}
/*************************************************************//**
@@ -1767,7 +1808,6 @@ row_merge_insert_index_tuples(
int fd, /*!< in: file descriptor */
row_merge_block_t* block) /*!< in/out: file buffer */
{
- mrec_buf_t buf;
const byte* b;
que_thr_t* thr;
ins_node_t* node;
@@ -1786,7 +1826,7 @@ row_merge_insert_index_tuples(
trx->op_info = "inserting index entries";
- graph_heap = mem_heap_create(500);
+ graph_heap = mem_heap_create(500 + sizeof(mrec_buf_t));
node = ins_node_create(INS_DIRECT, table, graph_heap);
thr = pars_complete_graph_for_exec(node, trx, graph_heap);
@@ -1808,12 +1848,14 @@ row_merge_insert_index_tuples(
if (!row_merge_read(fd, foffs, block)) {
error = DB_CORRUPTION;
} else {
+ mrec_buf_t* buf = mem_heap_alloc(graph_heap, sizeof *buf);
+
for (;;) {
const mrec_t* mrec;
dtuple_t* dtuple;
ulint n_ext;
- b = row_merge_read_rec(block, &buf, b, index,
+ b = row_merge_read_rec(block, buf, b, index,
fd, &foffs, &mrec, offsets);
if (UNIV_UNLIKELY(!b)) {
/* End of list, or I/O error */
@@ -1981,17 +2023,17 @@ row_merge_drop_index(
"UPDATE SYS_INDEXES SET NAME=CONCAT('"
TEMP_INDEX_PREFIX_STR "', NAME) WHERE ID = :indexid;\n"
"COMMIT WORK;\n"
+ /* Drop the statistics of the index. */
+ "DELETE FROM SYS_STATS WHERE INDEX_ID = :indexid;\n"
/* Drop the field definitions of the index. */
"DELETE FROM SYS_FIELDS WHERE INDEX_ID = :indexid;\n"
/* Drop the index definition and the B-tree. */
- "DELETE FROM SYS_INDEXES WHERE ID = :indexid\n"
- " AND TABLE_ID = :tableid;\n"
+ "DELETE FROM SYS_INDEXES WHERE ID = :indexid;\n"
"END;\n";
ut_ad(index && table && trx);
pars_info_add_dulint_literal(info, "indexid", index->id);
- pars_info_add_dulint_literal(info, "tableid", table->id);
trx_start_if_not_started(trx);
trx->op_info = "dropping index";
@@ -2040,47 +2082,82 @@ row_merge_drop_temp_indexes(void)
/*=============================*/
{
trx_t* trx;
- ulint err;
-
- /* We use the private SQL parser of Innobase to generate the
- query graphs needed in deleting the dictionary data from system
- tables in Innobase. Deleting a row from SYS_INDEXES table also
- frees the file segments of the B-tree associated with the index. */
- static const char drop_temp_indexes[] =
- "PROCEDURE DROP_TEMP_INDEXES_PROC () IS\n"
- "indexid CHAR;\n"
- "DECLARE CURSOR c IS SELECT ID FROM SYS_INDEXES\n"
- "WHERE SUBSTR(NAME,0,1)='" TEMP_INDEX_PREFIX_STR "';\n"
- "BEGIN\n"
- "\tOPEN c;\n"
- "\tWHILE 1=1 LOOP\n"
- "\t\tFETCH c INTO indexid;\n"
- "\t\tIF (SQL % NOTFOUND) THEN\n"
- "\t\t\tEXIT;\n"
- "\t\tEND IF;\n"
- "\t\tDELETE FROM SYS_FIELDS WHERE INDEX_ID = indexid;\n"
- "\t\tDELETE FROM SYS_INDEXES WHERE ID = indexid;\n"
- "\tEND LOOP;\n"
- "\tCLOSE c;\n"
- "\tCOMMIT WORK;\n"
- "END;\n";
+ btr_pcur_t pcur;
+ mtr_t mtr;
+ /* Load the table definitions that contain partially defined
+ indexes, so that the data dictionary information can be checked
+ when accessing the tablename.ibd files. */
trx = trx_allocate_for_background();
trx->op_info = "dropping partially created indexes";
row_mysql_lock_data_dictionary(trx);
- /* Incomplete transactions may be holding some locks on the
- data dictionary tables. However, they should never have been
- able to lock the records corresponding to the partially
- created indexes that we are attempting to delete, because the
- table was locked when the indexes were being created. We will
- drop the partially created indexes before the rollback of
- incomplete transactions is initiated. Thus, this should not
- interfere with the incomplete transactions. */
- trx->isolation_level = TRX_ISO_READ_UNCOMMITTED;
- err = que_eval_sql(NULL, drop_temp_indexes, FALSE, trx);
- ut_a(err == DB_SUCCESS);
+ mtr_start(&mtr);
+
+ btr_pcur_open_at_index_side(
+ TRUE,
+ dict_table_get_first_index(dict_sys->sys_indexes),
+ BTR_SEARCH_LEAF, &pcur, TRUE, &mtr);
+
+ for (;;) {
+ const rec_t* rec;
+ const byte* field;
+ ulint len;
+ dulint table_id;
+ dict_table_t* table;
+
+ btr_pcur_move_to_next_user_rec(&pcur, &mtr);
+
+ if (!btr_pcur_is_on_user_rec(&pcur)) {
+ break;
+ }
+
+ rec = btr_pcur_get_rec(&pcur);
+ field = rec_get_nth_field_old(rec, DICT_SYS_INDEXES_NAME_FIELD,
+ &len);
+ if (len == UNIV_SQL_NULL || len == 0
+ || (char) *field != TEMP_INDEX_PREFIX) {
+ continue;
+ }
+
+ /* This is a temporary index. */
+
+ field = rec_get_nth_field_old(rec, 0/*TABLE_ID*/, &len);
+ if (len != 8) {
+ /* Corrupted TABLE_ID */
+ continue;
+ }
+ table_id = mach_read_from_8(field);
+
+ btr_pcur_store_position(&pcur, &mtr);
+ btr_pcur_commit_specify_mtr(&pcur, &mtr);
+
+ table = dict_table_get_on_id_low(table_id);
+
+ if (table) {
+ dict_index_t* index;
+ dict_index_t* next_index;
+
+ for (index = dict_table_get_first_index(table);
+ index; index = next_index) {
+
+ next_index = dict_table_get_next_index(index);
+
+ if (*index->name == TEMP_INDEX_PREFIX) {
+ row_merge_drop_index(index, table, trx);
+ trx_commit_for_mysql(trx);
+ }
+ }
+ }
+
+ mtr_start(&mtr);
+ btr_pcur_restore_position(BTR_SEARCH_LEAF,
+ &pcur, &mtr);
+ }
+
+ btr_pcur_close(&pcur);
+ mtr_commit(&mtr);
row_mysql_unlock_data_dictionary(trx);
trx_free_for_background(trx);
}
@@ -2268,7 +2345,7 @@ row_merge_rename_tables(
{
ulint err = DB_ERROR;
pars_info_t* info;
- const char* old_name= old_table->name;
+ char old_name[MAX_TABLE_NAME_LEN + 1];
ut_ad(trx->mysql_thread_id == os_thread_get_curr_id());
ut_ad(old_table != new_table);
@@ -2276,6 +2353,17 @@ row_merge_rename_tables(
ut_a(trx->dict_operation_lock_mode == RW_X_LATCH);
+ /* store the old/current name to an automatic variable */
+ if (strlen(old_table->name) + 1 <= sizeof(old_name)) {
+ memcpy(old_name, old_table->name, strlen(old_table->name) + 1);
+ } else {
+ ut_print_timestamp(stderr);
+ fprintf(stderr, "InnoDB: too long table name: '%s', "
+ "max length is %d\n", old_table->name,
+ MAX_TABLE_NAME_LEN);
+ ut_error;
+ }
+
trx->op_info = "renaming tables";
/* We use the private SQL parser of Innobase to generate the query
diff --git a/storage/xtradb/row/row0mysql.c b/storage/xtradb/row/row0mysql.c
index 8585b816911..62221fa456d 100644
--- a/storage/xtradb/row/row0mysql.c
+++ b/storage/xtradb/row/row0mysql.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2000, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 2000, 2010, Innobase Oy. All Rights Reserved.
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
@@ -30,6 +30,7 @@ Created 9/17/2000 Heikki Tuuri
#include "row0mysql.ic"
#endif
+#include "ha_prototypes.h"
#include "row0ins.h"
#include "row0merge.h"
#include "row0sel.h"
@@ -485,7 +486,7 @@ next_column:
/****************************************************************//**
Handles user errors and lock waits detected by the database engine.
@return TRUE if it was a lock wait and we should continue running the
-query thread */
+query thread and in that case the thr is ALREADY in the running state. */
UNIV_INTERN
ibool
row_mysql_handle_errors(
@@ -522,6 +523,7 @@ handle_new_error:
case DB_CANNOT_ADD_CONSTRAINT:
case DB_TOO_MANY_CONCURRENT_TRXS:
case DB_OUT_OF_FILE_SPACE:
+ case DB_INTERRUPTED:
if (savept) {
/* Roll back the latest, possibly incomplete
insertion or update */
@@ -624,6 +626,8 @@ row_create_prebuilt(
prebuilt->select_lock_type = LOCK_NONE;
prebuilt->stored_select_lock_type = 99999999;
+ UNIV_MEM_INVALID(&prebuilt->stored_select_lock_type,
+ sizeof prebuilt->stored_select_lock_type);
prebuilt->search_tuple = dtuple_create(
heap, 2 * dict_table_get_n_cols(table));
@@ -864,7 +868,7 @@ row_update_statistics_if_needed(
if (counter > 2000000000
|| ((ib_int64_t)counter > 16 + table->stat_n_rows / 16)) {
- dict_update_statistics(table);
+ dict_update_statistics(table, TRUE);
}
}
@@ -1124,6 +1128,13 @@ row_insert_for_mysql(
thr = que_fork_get_first_thr(prebuilt->ins_graph);
+ if (!prebuilt->mysql_has_locked) {
+ fprintf(stderr, "InnoDB: Error: row_insert_for_mysql is called without ha_innobase::external_lock()\n");
+ if (trx->mysql_thd != NULL) {
+ innobase_mysql_print_thd(stderr, trx->mysql_thd, 600);
+ }
+ }
+
if (prebuilt->sql_stat_start) {
node->state = INS_NODE_SET_IX_LOCK;
prebuilt->sql_stat_start = FALSE;
@@ -1430,27 +1441,26 @@ run_again:
}
/*********************************************************************//**
-This can only be used when srv_locks_unsafe_for_binlog is TRUE or
-this session is using a READ COMMITTED isolation level. Before
-calling this function we must use trx_reset_new_rec_lock_info() and
-trx_register_new_rec_lock() to store the information which new record locks
-really were set. This function removes a newly set lock under prebuilt->pcur,
-and also under prebuilt->clust_pcur. Currently, this is only used and tested
-in the case of an UPDATE or a DELETE statement, where the row lock is of the
-LOCK_X type.
-Thus, this implements a 'mini-rollback' that releases the latest record
-locks we set.
-@return error code or DB_SUCCESS */
+This can only be used when srv_locks_unsafe_for_binlog is TRUE or this
+session is using a READ COMMITTED or READ UNCOMMITTED isolation level.
+Before calling this function row_search_for_mysql() must have
+initialized prebuilt->new_rec_locks to store the information which new
+record locks really were set. This function removes a newly set
+clustered index record lock under prebuilt->pcur or
+prebuilt->clust_pcur. Thus, this implements a 'mini-rollback' that
+releases the latest clustered index record lock we set.
+@return error code or DB_SUCCESS */
UNIV_INTERN
int
row_unlock_for_mysql(
/*=================*/
- row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL
+ row_prebuilt_t* prebuilt, /*!< in/out: prebuilt struct in MySQL
handle */
- ibool has_latches_on_recs)/*!< TRUE if called so that we have
- the latches on the records under pcur
- and clust_pcur, and we do not need to
- reposition the cursors. */
+ ibool has_latches_on_recs)/*!< in: TRUE if called so
+ that we have the latches on
+ the records under pcur and
+ clust_pcur, and we do not need
+ to reposition the cursors. */
{
btr_pcur_t* pcur = prebuilt->pcur;
btr_pcur_t* clust_pcur = prebuilt->clust_pcur;
@@ -1461,7 +1471,7 @@ row_unlock_for_mysql(
if (UNIV_UNLIKELY
(!srv_locks_unsafe_for_binlog
- && trx->isolation_level != TRX_ISO_READ_COMMITTED)) {
+ && trx->isolation_level > TRX_ISO_READ_COMMITTED)) {
fprintf(stderr,
"InnoDB: Error: calling row_unlock_for_mysql though\n"
@@ -1648,37 +1658,6 @@ row_table_got_default_clust_index(
}
/*********************************************************************//**
-Calculates the key number used inside MySQL for an Innobase index. We have
-to take into account if we generated a default clustered index for the table
-@return the key number used inside MySQL */
-UNIV_INTERN
-ulint
-row_get_mysql_key_number_for_index(
-/*===============================*/
- const dict_index_t* index) /*!< in: index */
-{
- const dict_index_t* ind;
- ulint i;
-
- ut_a(index);
-
- i = 0;
- ind = dict_table_get_first_index(index->table);
-
- while (index != ind) {
- ind = dict_table_get_next_index(ind);
- i++;
- }
-
- if (row_table_got_default_clust_index(index->table)) {
- ut_a(i > 0);
- i--;
- }
-
- return(i);
-}
-
-/*********************************************************************//**
Locks the data dictionary in shared mode from modifications, for performing
foreign key check, rollback, or other operation invisible to MySQL. */
UNIV_INTERN
@@ -2044,6 +2023,45 @@ error_handling:
}
/*********************************************************************//**
+*/
+UNIV_INTERN
+int
+row_insert_stats_for_mysql(
+/*=======================*/
+ dict_index_t* index,
+ trx_t* trx)
+{
+ ind_node_t* node;
+ mem_heap_t* heap;
+ que_thr_t* thr;
+ ulint err;
+
+ ut_ad(trx->mysql_thread_id == os_thread_get_curr_id());
+
+ trx->op_info = "try to insert rows to SYS_STATS";
+
+ trx_start_if_not_started(trx);
+ trx->error_state = DB_SUCCESS;
+
+ heap = mem_heap_create(512);
+
+ node = ind_insert_stats_graph_create(index, heap);
+
+ thr = pars_complete_graph_for_exec(node, trx, heap);
+
+ ut_a(thr == que_fork_start_command(que_node_get_parent(thr)));
+ que_run_threads(thr);
+
+ err = trx->error_state;
+
+ que_graph_free((que_t*) que_node_get_parent(thr));
+
+ trx->op_info = "";
+
+ return((int) err);
+}
+
+/*********************************************************************//**
Scans a table create SQL string and adds to the data dictionary
the foreign key constraints declared in the string. This function
should be called after the indexes for a table have been created.
@@ -2062,6 +2080,7 @@ row_table_add_foreign_constraints(
FOREIGN KEY (a, b) REFERENCES table2(c, d),
table2 can be written also with the
database name before it: test.table2 */
+ size_t sql_length, /*!< in: length of sql_string */
const char* name, /*!< in: table full name in the
normalized form
database_name/table_name */
@@ -2083,8 +2102,8 @@ row_table_add_foreign_constraints(
trx_set_dict_operation(trx, TRX_DICT_OP_TABLE);
- err = dict_create_foreign_constraints(trx, sql_string, name,
- reject_fks);
+ err = dict_create_foreign_constraints(trx, sql_string, sql_length,
+ name, reject_fks);
if (err == DB_SUCCESS) {
/* Check that also referencing constraints are ok */
err = dict_load_foreigns(name, TRUE);
@@ -2428,7 +2447,7 @@ row_discard_tablespace_for_mysql(
goto funct_exit;
}
- new_id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID);
+ dict_hdr_get_new_id(&new_id, NULL, NULL);
/* Remove all locks except the table-level S and X locks. */
lock_remove_all_on_table(table, FALSE);
@@ -2790,10 +2809,11 @@ row_truncate_table_for_mysql(
dict_index_t* index;
- space = 0;
+ dict_hdr_get_new_id(NULL, NULL, &space);
- if (fil_create_new_single_table_tablespace(
- &space, table->name, FALSE, flags,
+ if (space == ULINT_UNDEFINED
+ || fil_create_new_single_table_tablespace(
+ space, table->name, FALSE, flags,
FIL_IBD_FILE_INITIAL_SIZE) != DB_SUCCESS) {
ut_print_timestamp(stderr);
fprintf(stderr,
@@ -2898,7 +2918,7 @@ next_rec:
mem_heap_free(heap);
- new_id = dict_hdr_get_new_id(DICT_HDR_TABLE_ID);
+ dict_hdr_get_new_id(&new_id, NULL, NULL);
info = pars_info_create();
@@ -2942,7 +2962,7 @@ next_rec:
dict_table_autoinc_lock(table);
dict_table_autoinc_initialize(table, 1);
dict_table_autoinc_unlock(table);
- dict_update_statistics(table);
+ dict_update_statistics(table, TRUE);
trx_commit_for_mysql(trx);
@@ -3244,6 +3264,8 @@ check_next_foreign:
" IF (SQL % NOTFOUND) THEN\n"
" found := 0;\n"
" ELSE\n"
+ " DELETE FROM SYS_STATS\n"
+ " WHERE INDEX_ID = index_id;\n"
" DELETE FROM SYS_FIELDS\n"
" WHERE INDEX_ID = index_id;\n"
" DELETE FROM SYS_INDEXES\n"
@@ -3258,19 +3280,13 @@ check_next_foreign:
"END;\n"
, FALSE, trx);
- if (err != DB_SUCCESS) {
- ut_a(err == DB_OUT_OF_FILE_SPACE);
-
- err = DB_MUST_GET_MORE_FILE_SPACE;
-
- row_mysql_handle_errors(&err, trx, NULL, NULL);
-
- ut_error;
- } else {
- ibool is_path;
+ switch (err) {
+ ibool is_temp;
const char* name_or_path;
mem_heap_t* heap;
+ case DB_SUCCESS:
+
heap = mem_heap_create(200);
/* Clone the name, in case it has been allocated
@@ -3280,12 +3296,13 @@ check_next_foreign:
space_id = table->space;
if (table->dir_path_of_temp_table != NULL) {
- is_path = TRUE;
name_or_path = mem_heap_strdup(
heap, table->dir_path_of_temp_table);
+ is_temp = TRUE;
} else {
- is_path = FALSE;
name_or_path = name;
+ is_temp = (table->flags >> DICT_TF2_SHIFT)
+ & DICT_TF2_TEMPORARY;
}
dict_table_remove_from_cache(table);
@@ -3302,11 +3319,11 @@ check_next_foreign:
/* Do not drop possible .ibd tablespace if something went
wrong: we do not want to delete valuable data of the user */
- if (err == DB_SUCCESS && space_id > 0) {
+ if (err == DB_SUCCESS && !trx_sys_sys_space(space_id)) {
if (!fil_space_for_table_exists_in_mem(space_id,
name_or_path,
- is_path,
- FALSE, TRUE)) {
+ is_temp, FALSE,
+ !is_temp)) {
err = DB_SUCCESS;
fprintf(stderr,
@@ -3335,7 +3352,27 @@ check_next_foreign:
}
mem_heap_free(heap);
+ break;
+
+ case DB_TOO_MANY_CONCURRENT_TRXS:
+ /* Cannot even find a free slot for the
+ the undo log. We can directly exit here
+ and return the DB_TOO_MANY_CONCURRENT_TRXS
+ error. */
+ break;
+
+ case DB_OUT_OF_FILE_SPACE:
+ err = DB_MUST_GET_MORE_FILE_SPACE;
+
+ row_mysql_handle_errors(&err, trx, NULL, NULL);
+
+ /* Fall through to raise error */
+
+ default:
+ /* No other possible error returns */
+ ut_error;
}
+
funct_exit:
if (locked_dictionary) {
@@ -3351,6 +3388,90 @@ funct_exit:
return((int) err);
}
+/*********************************************************************//**
+Drop all temporary tables during crash recovery. */
+UNIV_INTERN
+void
+row_mysql_drop_temp_tables(void)
+/*============================*/
+{
+ trx_t* trx;
+ btr_pcur_t pcur;
+ mtr_t mtr;
+ mem_heap_t* heap;
+
+ trx = trx_allocate_for_background();
+ trx->op_info = "dropping temporary tables";
+ row_mysql_lock_data_dictionary(trx);
+
+ heap = mem_heap_create(200);
+
+ mtr_start(&mtr);
+
+ btr_pcur_open_at_index_side(
+ TRUE,
+ dict_table_get_first_index(dict_sys->sys_tables),
+ BTR_SEARCH_LEAF, &pcur, TRUE, &mtr);
+
+ for (;;) {
+ const rec_t* rec;
+ const byte* field;
+ ulint len;
+ const char* table_name;
+ dict_table_t* table;
+
+ btr_pcur_move_to_next_user_rec(&pcur, &mtr);
+
+ if (!btr_pcur_is_on_user_rec(&pcur)) {
+ break;
+ }
+
+ rec = btr_pcur_get_rec(&pcur);
+ field = rec_get_nth_field_old(rec, 4/*N_COLS*/, &len);
+ if (len != 4 || !(mach_read_from_4(field) & 0x80000000UL)) {
+ continue;
+ }
+
+ /* Because this is not a ROW_FORMAT=REDUNDANT table,
+ the is_temp flag is valid. Examine it. */
+
+ field = rec_get_nth_field_old(rec, 7/*MIX_LEN*/, &len);
+ if (len != 4
+ || !(mach_read_from_4(field) & DICT_TF2_TEMPORARY)) {
+ continue;
+ }
+
+ /* This is a temporary table. */
+ field = rec_get_nth_field_old(rec, 0/*NAME*/, &len);
+ if (len == UNIV_SQL_NULL || len == 0) {
+ /* Corrupted SYS_TABLES.NAME */
+ continue;
+ }
+
+ table_name = mem_heap_strdupl(heap, (const char*) field, len);
+
+ btr_pcur_store_position(&pcur, &mtr);
+ btr_pcur_commit_specify_mtr(&pcur, &mtr);
+
+ table = dict_load_table(table_name);
+
+ if (table) {
+ row_drop_table_for_mysql(table_name, trx, FALSE);
+ trx_commit_for_mysql(trx);
+ }
+
+ mtr_start(&mtr);
+ btr_pcur_restore_position(BTR_SEARCH_LEAF,
+ &pcur, &mtr);
+ }
+
+ btr_pcur_close(&pcur);
+ mtr_commit(&mtr);
+ mem_heap_free(heap);
+ row_mysql_unlock_data_dictionary(trx);
+ trx_free_for_background(trx);
+}
+
/*******************************************************************//**
Drop all foreign keys in a database, see Bug#18942.
Called at the end of row_drop_database_for_mysql().
@@ -3902,14 +4023,15 @@ Checks that the index contains entries in an ascending order, unique
constraint is not broken, and calculates the number of index entries
in the read view of the current transaction.
@return TRUE if ok */
-static
+UNIV_INTERN
ibool
-row_scan_and_check_index(
-/*=====================*/
- row_prebuilt_t* prebuilt, /*!< in: prebuilt struct in MySQL */
- dict_index_t* index, /*!< in: index */
- ulint* n_rows) /*!< out: number of entries seen in the
- current consistent read */
+row_check_index_for_mysql(
+/*======================*/
+ row_prebuilt_t* prebuilt, /*!< in: prebuilt struct
+ in MySQL handle */
+ const dict_index_t* index, /*!< in: index */
+ ulint* n_rows) /*!< out: number of entries
+ seen in the consistent read */
{
dtuple_t* prev_entry = NULL;
ulint matched_fields;
@@ -3930,31 +4052,9 @@ row_scan_and_check_index(
*n_rows = 0;
- if (!row_merge_is_index_usable(prebuilt->trx, index)) {
- /* A newly created index may lack some delete-marked
- records that may exist in the read view of
- prebuilt->trx. Thus, such indexes must not be
- accessed by consistent read. */
- return(is_ok);
- }
-
buf = mem_alloc(UNIV_PAGE_SIZE);
heap = mem_heap_create(100);
- /* Make a dummy template in prebuilt, which we will use
- in scanning the index entries */
-
- prebuilt->index = index;
- /* row_merge_is_index_usable() was already checked above. */
- prebuilt->index_usable = TRUE;
- prebuilt->sql_stat_start = TRUE;
- prebuilt->template_type = ROW_MYSQL_DUMMY_TEMPLATE;
- prebuilt->n_template = 0;
- prebuilt->need_to_access_clustered = FALSE;
-
- dtuple_set_n_fields(prebuilt->search_tuple, 0);
-
- prebuilt->select_lock_type = LOCK_NONE;
cnt = 1000;
ret = row_search_for_mysql(buf, PAGE_CUR_G, prebuilt, 0, 0);
@@ -4073,119 +4173,6 @@ not_ok:
}
/*********************************************************************//**
-Checks a table for corruption.
-@return DB_ERROR or DB_SUCCESS */
-UNIV_INTERN
-ulint
-row_check_table_for_mysql(
-/*======================*/
- row_prebuilt_t* prebuilt) /*!< in: prebuilt struct in MySQL
- handle */
-{
- dict_table_t* table = prebuilt->table;
- dict_index_t* index;
- ulint n_rows;
- ulint n_rows_in_table = ULINT_UNDEFINED;
- ulint ret = DB_SUCCESS;
- ulint old_isolation_level;
-
- if (table->ibd_file_missing) {
- ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: Error:\n"
- "InnoDB: MySQL is trying to use a table handle"
- " but the .ibd file for\n"
- "InnoDB: table %s does not exist.\n"
- "InnoDB: Have you deleted the .ibd file"
- " from the database directory under\n"
- "InnoDB: the MySQL datadir, or have you"
- " used DISCARD TABLESPACE?\n"
- "InnoDB: Look from\n"
- "InnoDB: " REFMAN "innodb-troubleshooting.html\n"
- "InnoDB: how you can resolve the problem.\n",
- table->name);
- return(DB_ERROR);
- }
-
- prebuilt->trx->op_info = "checking table";
-
- old_isolation_level = prebuilt->trx->isolation_level;
-
- /* We must run the index record counts at an isolation level
- >= READ COMMITTED, because a dirty read can see a wrong number
- of records in some index; to play safe, we use always
- REPEATABLE READ here */
-
- prebuilt->trx->isolation_level = TRX_ISO_REPEATABLE_READ;
-
- /* Enlarge the fatal lock wait timeout during CHECK TABLE. */
- mutex_enter(&kernel_mutex);
- srv_fatal_semaphore_wait_threshold += 7200; /* 2 hours */
- mutex_exit(&kernel_mutex);
-
- index = dict_table_get_first_index(table);
-
- while (index != NULL) {
- /* fputs("Validating index ", stderr);
- ut_print_name(stderr, trx, FALSE, index->name);
- putc('\n', stderr); */
-
- if (!btr_validate_index(index, prebuilt->trx)) {
- ret = DB_ERROR;
- } else {
- if (!row_scan_and_check_index(prebuilt,index, &n_rows)){
- ret = DB_ERROR;
- }
-
- if (trx_is_interrupted(prebuilt->trx)) {
- ret = DB_INTERRUPTED;
- break;
- }
-
- /* fprintf(stderr, "%lu entries in index %s\n", n_rows,
- index->name); */
-
- if (index == dict_table_get_first_index(table)) {
- n_rows_in_table = n_rows;
- } else if (n_rows != n_rows_in_table) {
-
- ret = DB_ERROR;
-
- fputs("Error: ", stderr);
- dict_index_name_print(stderr,
- prebuilt->trx, index);
- fprintf(stderr,
- " contains %lu entries,"
- " should be %lu\n",
- (ulong) n_rows,
- (ulong) n_rows_in_table);
- }
- }
-
- index = dict_table_get_next_index(index);
- }
-
- /* Restore the original isolation level */
- prebuilt->trx->isolation_level = old_isolation_level;
-
- /* We validate also the whole adaptive hash index for all tables
- at every CHECK TABLE */
-
- if (!btr_search_validate()) {
-
- ret = DB_ERROR;
- }
-
- /* Restore the fatal lock wait timeout after CHECK TABLE. */
- mutex_enter(&kernel_mutex);
- srv_fatal_semaphore_wait_threshold -= 7200; /* 2 hours */
- mutex_exit(&kernel_mutex);
-
- prebuilt->trx->op_info = "";
-
- return(ret);
-}
-
-/*********************************************************************//**
Determines if a table is a magic monitor table.
@return TRUE if monitor table */
UNIV_INTERN
diff --git a/storage/xtradb/row/row0purge.c b/storage/xtradb/row/row0purge.c
index 500ebe571ab..835af990672 100644
--- a/storage/xtradb/row/row0purge.c
+++ b/storage/xtradb/row/row0purge.c
@@ -44,6 +44,16 @@ Created 3/14/1997 Heikki Tuuri
#include "row0mysql.h"
#include "log0log.h"
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/********************************************************************//**
Creates a purge node to a query graph.
@return own: purge node */
@@ -126,6 +136,7 @@ row_purge_remove_clust_if_poss_low(
pcur = &(node->pcur);
btr_cur = btr_pcur_get_btr_cur(pcur);
+ log_free_check();
mtr_start(&mtr);
success = row_purge_reposition_pcur(mode, node, &mtr);
diff --git a/storage/xtradb/row/row0row.c b/storage/xtradb/row/row0row.c
index 128ac3ba3e8..cb7dfa2b7c9 100644
--- a/storage/xtradb/row/row0row.c
+++ b/storage/xtradb/row/row0row.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -915,6 +915,10 @@ row_raw_format(
ret = row_raw_format_int(data, data_len, prtype,
buf, buf_size, &format_in_hex);
+ if (format_in_hex) {
+
+ goto format_in_hex;
+ }
break;
case DATA_CHAR:
case DATA_VARCHAR:
@@ -923,14 +927,15 @@ row_raw_format(
ret = row_raw_format_str(data, data_len, prtype,
buf, buf_size, &format_in_hex);
+ if (format_in_hex) {
+
+ goto format_in_hex;
+ }
+
break;
/* XXX support more data types */
default:
-
- format_in_hex = TRUE;
- }
-
- if (format_in_hex) {
+ format_in_hex:
if (UNIV_LIKELY(buf_size > 2)) {
diff --git a/storage/xtradb/row/row0sel.c b/storage/xtradb/row/row0sel.c
index 61b4f84d6b2..0c728154257 100644
--- a/storage/xtradb/row/row0sel.c
+++ b/storage/xtradb/row/row0sel.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -132,7 +132,8 @@ index record.
NOTE: the comparison is NOT done as a binary comparison, but character
fields are compared with collation!
@return TRUE if the secondary record is equal to the corresponding
-fields in the clustered record, when compared with collation */
+fields in the clustered record, when compared with collation;
+FALSE if not equal or if the clustered record has been marked for deletion */
static
ibool
row_sel_sec_rec_is_for_clust_rec(
@@ -431,10 +432,6 @@ row_sel_fetch_columns(
data = rec_get_nth_field(rec, offsets,
field_no, &len);
- if (len == UNIV_SQL_NULL) {
- len = UNIV_SQL_NULL;
- }
-
needs_copy = column->copy_val;
}
@@ -855,7 +852,7 @@ row_sel_get_clust_rec(
trx = thr_get_trx(thr);
if (srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED) {
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED) {
lock_type = LOCK_REC_NOT_GAP;
} else {
lock_type = LOCK_ORDINARY;
@@ -866,8 +863,14 @@ row_sel_get_clust_rec(
clust_rec, index, offsets,
node->row_lock_mode, lock_type, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
+ /* Declare the variable uninitialized in Valgrind.
+ It should be set to DB_SUCCESS at func_exit. */
+ UNIV_MEM_INVALID(&err, sizeof err);
+ break;
+ default:
goto err_exit;
}
} else {
@@ -937,9 +940,9 @@ err_exit:
/*********************************************************************//**
Sets a lock on a record.
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
UNIV_INLINE
-ulint
+enum db_err
sel_set_rec_lock(
/*=============*/
const buf_block_t* block, /*!< in: buffer block of rec */
@@ -951,8 +954,8 @@ sel_set_rec_lock(
LOC_REC_NOT_GAP */
que_thr_t* thr) /*!< in: query thread */
{
- trx_t* trx;
- ulint err;
+ trx_t* trx;
+ enum db_err err;
trx = thr_get_trx(thr);
@@ -1468,7 +1471,7 @@ rec_loop:
if (srv_locks_unsafe_for_binlog
|| trx->isolation_level
- == TRX_ISO_READ_COMMITTED) {
+ <= TRX_ISO_READ_COMMITTED) {
if (page_rec_is_supremum(next_rec)) {
@@ -1485,11 +1488,15 @@ rec_loop:
node->row_lock_mode,
lock_type, thr);
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
/* Note that in this case we will store in pcur
the PREDECESSOR of the record we are waiting
the lock for */
-
goto lock_wait_or_error;
}
}
@@ -1525,7 +1532,7 @@ skip_lock:
trx = thr_get_trx(thr);
if (srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED) {
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED) {
if (page_rec_is_supremum(rec)) {
@@ -1541,8 +1548,12 @@ skip_lock:
rec, index, offsets,
node->row_lock_mode, lock_type, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -2170,36 +2181,6 @@ row_fetch_print(
return((void*)42);
}
-/****************************************************************//**
-Callback function for fetch that stores an unsigned 4 byte integer to the
-location pointed. The column's type must be DATA_INT, DATA_UNSIGNED, length
-= 4.
-@return always returns NULL */
-UNIV_INTERN
-void*
-row_fetch_store_uint4(
-/*==================*/
- void* row, /*!< in: sel_node_t* */
- void* user_arg) /*!< in: data pointer */
-{
- sel_node_t* node = row;
- ib_uint32_t* val = user_arg;
- ulint tmp;
-
- dfield_t* dfield = que_node_get_val(node->select_list);
- const dtype_t* type = dfield_get_type(dfield);
- ulint len = dfield_get_len(dfield);
-
- ut_a(dtype_get_mtype(type) == DATA_INT);
- ut_a(dtype_get_prtype(type) & DATA_UNSIGNED);
- ut_a(len == 4);
-
- tmp = mach_read_from_4(dfield_get_data(dfield));
- *val = (ib_uint32_t) tmp;
-
- return(NULL);
-}
-
/***********************************************************//**
Prints a row in a select result.
@return query thread to run next or NULL */
@@ -2531,6 +2512,7 @@ row_sel_field_store_in_mysql_format(
byte* pad_ptr;
ut_ad(len != UNIV_SQL_NULL);
+ UNIV_MEM_ASSERT_RW(data, len);
switch (templ->type) {
case DATA_INT:
@@ -2698,6 +2680,16 @@ row_sel_store_mysql_rec(
prebuilt->blob_heap = NULL;
}
+// psergey@askmonty.org: don't take the following:
+#if 0
+ /* init null bytes with default values as they might be
+
+ left uninitialized in some cases and these uninited bytes
+ might be copied into mysql record buffer that leads to
+ valgrind warnings */
+ memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len);
+#endif
+
for (i = start_field_no; i < end_field_no /* prebuilt->n_template */ ; i++) {
templ = prebuilt->mysql_template + i;
@@ -2781,6 +2773,9 @@ row_sel_store_mysql_rec(
/* MySQL assumes that the field for an SQL
NULL value is set to the default value. */
+ UNIV_MEM_ASSERT_RW(prebuilt->default_rec
+ + templ->mysql_col_offset,
+ templ->mysql_col_len);
mysql_rec[templ->mysql_null_byte_offset]
|= (byte) templ->mysql_null_bit_mask;
memcpy(mysql_rec + templ->mysql_col_offset,
@@ -2832,9 +2827,9 @@ row_sel_build_prev_vers_for_mysql(
Retrieves the clustered index record corresponding to a record in a
non-clustered index. Does the necessary locking. Used in the MySQL
interface.
-@return DB_SUCCESS or error code */
+@return DB_SUCCESS, DB_SUCCESS_LOCKED_REC, or error code */
static
-ulint
+enum db_err
row_sel_get_clust_rec_for_mysql(
/*============================*/
row_prebuilt_t* prebuilt,/*!< in: prebuilt struct in the handle */
@@ -2861,7 +2856,7 @@ row_sel_get_clust_rec_for_mysql(
dict_index_t* clust_index;
const rec_t* clust_rec;
rec_t* old_vers;
- ulint err;
+ enum db_err err;
trx_t* trx;
*out_rec = NULL;
@@ -2920,6 +2915,7 @@ row_sel_get_clust_rec_for_mysql(
clust_rec = NULL;
+ err = DB_SUCCESS;
goto func_exit;
}
@@ -2935,8 +2931,11 @@ row_sel_get_clust_rec_for_mysql(
0, btr_pcur_get_block(prebuilt->clust_pcur),
clust_rec, clust_index, *offsets,
prebuilt->select_lock_type, LOCK_REC_NOT_GAP, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
+ break;
+ default:
goto err_exit;
}
} else {
@@ -2983,6 +2982,7 @@ row_sel_get_clust_rec_for_mysql(
if (clust_rec
&& (old_vers
+ || trx->isolation_level <= TRX_ISO_READ_UNCOMMITTED
|| rec_get_deleted_flag(rec, dict_table_is_comp(
sec_index->table)))
&& !row_sel_sec_rec_is_for_clust_rec(
@@ -2995,6 +2995,8 @@ row_sel_get_clust_rec_for_mysql(
rec, sec_index, clust_rec, clust_index));
#endif
}
+
+ err = DB_SUCCESS;
}
func_exit:
@@ -3007,7 +3009,6 @@ func_exit:
btr_pcur_store_position(prebuilt->clust_pcur, mtr);
}
- err = DB_SUCCESS;
err_exit:
return(err);
}
@@ -3104,6 +3105,11 @@ row_sel_pop_cached_row_for_mysql(
for (i = 0; i < prebuilt->n_template; i++) {
templ = prebuilt->mysql_template + i;
+#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
+ UNIV_MEM_ASSERT_RW(cached_rec
+ + templ->mysql_col_offset,
+ templ->mysql_col_len);
+#endif
ut_memcpy(buf + templ->mysql_col_offset,
cached_rec + templ->mysql_col_offset,
templ->mysql_col_len);
@@ -3122,6 +3128,11 @@ row_sel_pop_cached_row_for_mysql(
}
}
else {
+#if 0 /* Some of the cached_rec may legitimately be uninitialized. */
+ UNIV_MEM_ASSERT_RW(prebuilt->fetch_cache
+ [prebuilt->fetch_cache_first],
+ prebuilt->mysql_prefix_len);
+#endif
ut_memcpy(buf,
prebuilt->fetch_cache[prebuilt->fetch_cache_first],
prebuilt->mysql_prefix_len);
@@ -3175,6 +3186,8 @@ row_sel_push_cache_row_for_mysql(
}
ut_ad(prebuilt->fetch_cache_first == 0);
+ UNIV_MEM_INVALID(prebuilt->fetch_cache[prebuilt->n_fetch_cached],
+ prebuilt->mysql_row_len);
if (UNIV_UNLIKELY(!row_sel_store_mysql_rec(
prebuilt->fetch_cache[
@@ -3242,14 +3255,17 @@ row_sel_try_search_shortcut_for_mysql(
ut_ad(dict_index_is_clust(index));
ut_ad(!prebuilt->templ_contains_blob);
+#ifndef UNIV_SEARCH_DEBUG
btr_pcur_open_with_no_init(index, search_tuple, PAGE_CUR_GE,
BTR_SEARCH_LEAF, pcur,
-#ifndef UNIV_SEARCH_DEBUG
RW_S_LATCH,
-#else
+ mtr);
+#else /* UNIV_SEARCH_DEBUG */
+ btr_pcur_open_with_no_init(index, search_tuple, PAGE_CUR_GE,
+ BTR_SEARCH_LEAF, pcur,
0,
-#endif
mtr);
+#endif /* UNIV_SEARCH_DEBUG */
rec = btr_pcur_get_rec(pcur);
if (!page_rec_is_user_rec(rec)) {
@@ -3350,6 +3366,7 @@ row_search_for_mysql(
ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_;
ibool some_fields_in_buffer;
+ ibool problematic_use = FALSE;
ibool get_clust_rec = 0;
rec_offs_init(offsets_);
@@ -3667,6 +3684,13 @@ shortcut_fails_too_big_rec:
trx->has_search_latch = FALSE;
}
+ ut_ad(prebuilt->sql_stat_start || trx->conc_state == TRX_ACTIVE);
+ ut_ad(trx->conc_state == TRX_NOT_STARTED
+ || trx->conc_state == TRX_ACTIVE);
+ ut_ad(prebuilt->sql_stat_start
+ || prebuilt->select_lock_type != LOCK_NONE
+ || trx->read_view);
+
trx_start_if_not_started(trx);
if (trx->isolation_level <= TRX_ISO_READ_COMMITTED
@@ -3737,7 +3761,7 @@ shortcut_fails_too_big_rec:
&& !page_rec_is_supremum(rec)
&& set_also_gap_locks
&& !(srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED)
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE) {
/* Try to place a gap lock on the next index record
@@ -3751,8 +3775,12 @@ shortcut_fails_too_big_rec:
prebuilt->select_lock_type,
LOCK_GAP, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3768,6 +3796,15 @@ shortcut_fails_too_big_rec:
}
}
+ if (!prebuilt->mysql_has_locked) {
+ fprintf(stderr, "InnoDB: Error: row_search_for_mysql() is called without ha_innobase::external_lock()\n");
+ if (trx->mysql_thd != NULL) {
+ innobase_mysql_print_thd(stderr, trx->mysql_thd, 600);
+ }
+ problematic_use = TRUE;
+ }
+retry_check:
+
if (!prebuilt->sql_stat_start) {
/* No need to set an intention lock or assign a read view */
@@ -3778,6 +3815,14 @@ shortcut_fails_too_big_rec:
" perform a consistent read\n"
"InnoDB: but the read view is not assigned!\n",
stderr);
+ if (problematic_use) {
+ fprintf(stderr, "InnoDB: It may be caused by calling "
+ "without ha_innobase::external_lock()\n"
+ "InnoDB: For the first-aid, avoiding the crash. "
+ "But it should be fixed ASAP.\n");
+ prebuilt->sql_stat_start = TRUE;
+ goto retry_check;
+ }
trx_print(stderr, trx, 600);
fputc('\n', stderr);
ut_a(0);
@@ -3840,7 +3885,7 @@ rec_loop:
if (set_also_gap_locks
&& !(srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED)
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE) {
/* Try to place a lock on the index record */
@@ -3857,8 +3902,12 @@ rec_loop:
prebuilt->select_lock_type,
LOCK_ORDINARY, thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -3974,7 +4023,7 @@ wrong_offs:
if (set_also_gap_locks
&& !(srv_locks_unsafe_for_binlog
|| trx->isolation_level
- == TRX_ISO_READ_COMMITTED)
+ <= TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE) {
/* Try to place a gap lock on the index
@@ -3988,8 +4037,11 @@ wrong_offs:
prebuilt->select_lock_type, LOCK_GAP,
thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -4010,7 +4062,7 @@ wrong_offs:
if (set_also_gap_locks
&& !(srv_locks_unsafe_for_binlog
|| trx->isolation_level
- == TRX_ISO_READ_COMMITTED)
+ <= TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE) {
/* Try to place a gap lock on the index
@@ -4024,8 +4076,11 @@ wrong_offs:
prebuilt->select_lock_type, LOCK_GAP,
thr);
- if (err != DB_SUCCESS) {
-
+ switch (err) {
+ case DB_SUCCESS_LOCKED_REC:
+ case DB_SUCCESS:
+ break;
+ default:
goto lock_wait_or_error;
}
}
@@ -4058,7 +4113,7 @@ wrong_offs:
if (!set_also_gap_locks
|| srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED
|| (unique_search
&& !UNIV_UNLIKELY(rec_get_deleted_flag(rec, comp)))) {
@@ -4095,17 +4150,24 @@ no_gap_lock:
switch (err) {
const rec_t* old_vers;
- case DB_SUCCESS:
+ case DB_SUCCESS_LOCKED_REC:
if (srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED) {
+ || trx->isolation_level
+ <= TRX_ISO_READ_COMMITTED) {
/* Note that a record of
prebuilt->index was locked. */
prebuilt->new_rec_locks = 1;
}
+ err = DB_SUCCESS;
+ case DB_SUCCESS:
break;
case DB_LOCK_WAIT:
+ /* Never unlock rows that were part of a conflict. */
+ prebuilt->new_rec_locks = 0;
+
if (UNIV_LIKELY(prebuilt->row_read_type
!= ROW_READ_TRY_SEMI_CONSISTENT)
+ || unique_search
|| index != clust_index) {
goto lock_wait_or_error;
@@ -4132,7 +4194,6 @@ no_gap_lock:
if (UNIV_LIKELY(trx->wait_lock != NULL)) {
lock_cancel_waiting_and_release(
trx->wait_lock);
- prebuilt->new_rec_locks = 0;
} else {
mutex_exit(&kernel_mutex);
@@ -4144,9 +4205,6 @@ no_gap_lock:
ULINT_UNDEFINED,
&heap);
err = DB_SUCCESS;
- /* Note that a record of
- prebuilt->index was locked. */
- prebuilt->new_rec_locks = 1;
break;
}
mutex_exit(&kernel_mutex);
@@ -4229,7 +4287,7 @@ no_gap_lock:
/* The record is delete-marked: we can skip it */
if ((srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED)
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE
&& !did_semi_consistent_read) {
@@ -4299,33 +4357,36 @@ idx_cond_check:
err = row_sel_get_clust_rec_for_mysql(prebuilt, index, rec,
thr, &clust_rec,
&offsets, &heap, &mtr);
- if (err != DB_SUCCESS) {
+ switch (err) {
+ case DB_SUCCESS:
+ if (clust_rec == NULL) {
+ /* The record did not exist in the read view */
+ ut_ad(prebuilt->select_lock_type == LOCK_NONE);
+ goto next_rec;
+ }
+ break;
+ case DB_SUCCESS_LOCKED_REC:
+ ut_a(clust_rec != NULL);
+ if (srv_locks_unsafe_for_binlog
+ || trx->isolation_level
+ <= TRX_ISO_READ_COMMITTED) {
+ /* Note that the clustered index record
+ was locked. */
+ prebuilt->new_rec_locks = 2;
+ }
+ err = DB_SUCCESS;
+ break;
+ default:
goto lock_wait_or_error;
}
- if (clust_rec == NULL) {
- /* The record did not exist in the read view */
- ut_ad(prebuilt->select_lock_type == LOCK_NONE);
-
- goto next_rec;
- }
-
- if ((srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED)
- && prebuilt->select_lock_type != LOCK_NONE) {
- /* Note that both the secondary index record
- and the clustered index record were locked. */
- ut_ad(prebuilt->new_rec_locks == 1);
- prebuilt->new_rec_locks = 2;
- }
-
if (UNIV_UNLIKELY(rec_get_deleted_flag(clust_rec, comp))) {
/* The record is delete marked: we can skip it */
if ((srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED)
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
&& prebuilt->select_lock_type != LOCK_NONE) {
/* No need to keep a lock on a delete-marked
@@ -4547,7 +4608,7 @@ lock_wait_or_error:
moves_up, &mtr);
if ((srv_locks_unsafe_for_binlog
- || trx->isolation_level == TRX_ISO_READ_COMMITTED)
+ || trx->isolation_level <= TRX_ISO_READ_COMMITTED)
&& !same_user_rec) {
/* Since we were not able to restore the cursor
@@ -4711,7 +4772,6 @@ row_search_autoinc_read_column(
ut_a(len != UNIV_SQL_NULL);
- /* we assume AUTOINC value cannot be negative */
switch (mtype) {
case DATA_INT:
ut_a(len <= sizeof value);
@@ -4720,12 +4780,12 @@ row_search_autoinc_read_column(
case DATA_FLOAT:
ut_a(len == sizeof(float));
- value = mach_float_read(data);
+ value = (ib_uint64_t) mach_float_read(data);
break;
case DATA_DOUBLE:
ut_a(len == sizeof(double));
- value = mach_double_read(data);
+ value = (ib_uint64_t) mach_double_read(data);
break;
default:
diff --git a/storage/xtradb/row/row0uins.c b/storage/xtradb/row/row0uins.c
index 9f9c814f1a5..930a5cf13b6 100644
--- a/storage/xtradb/row/row0uins.c
+++ b/storage/xtradb/row/row0uins.c
@@ -46,6 +46,16 @@ Created 2/25/1997 Heikki Tuuri
#include "ibuf0ibuf.h"
#include "log0log.h"
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/***************************************************************//**
Removes a clustered index record. The pcur in node was positioned on the
record, now it is detached.
@@ -152,7 +162,6 @@ row_undo_ins_remove_sec_low(
ulint err;
mtr_t mtr;
- log_free_check();
mtr_start(&mtr);
found = row_search_index_entry(index, entry, mode, &pcur, &mtr);
@@ -335,6 +344,7 @@ row_undo_ins(
transactions. */
ut_a(trx_is_recv(node->trx));
} else {
+ log_free_check();
err = row_undo_ins_remove_sec(node->index, entry);
if (err != DB_SUCCESS) {
@@ -346,5 +356,6 @@ row_undo_ins(
node->index = dict_table_get_next_index(node->index);
}
+ log_free_check();
return(row_undo_ins_remove_clust_rec(node));
}
diff --git a/storage/xtradb/row/row0umod.c b/storage/xtradb/row/row0umod.c
index 6be475d8c78..8464b0f95cc 100644
--- a/storage/xtradb/row/row0umod.c
+++ b/storage/xtradb/row/row0umod.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1997, 2010, Innobase Oy. All Rights Reserved.
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
@@ -58,12 +58,22 @@ delete marked clustered index record was delete unmarked and possibly also
some of its fields were changed. Now, it is possible that the delete marked
version has become obsolete at the time the undo is started. */
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/***********************************************************//**
Checks if also the previous version of the clustered index record was
modified or inserted by the same transaction, and its undo number is such
that it should be undone in the same rollback.
@return TRUE if also previous modify or insert of this row should be undone */
-UNIV_INLINE
+static
ibool
row_undo_mod_undo_also_prev_vers(
/*=============================*/
@@ -144,13 +154,17 @@ row_undo_mod_clust_low(
/***********************************************************//**
Removes a clustered index record after undo if possible.
+This is attempted when the record was inserted by updating a
+delete-marked record and there no longer exist transactions
+that would see the delete-marked record. In other words, we
+roll back the insert by purging the record.
@return DB_SUCCESS, DB_FAIL, or error code: we may run out of file space */
static
ulint
row_undo_mod_remove_clust_low(
/*==========================*/
undo_node_t* node, /*!< in: row undo node */
- que_thr_t* thr __attribute__((unused)), /*!< in: query thread */
+ que_thr_t* thr, /*!< in: query thread */
mtr_t* mtr, /*!< in: mtr */
ulint mode) /*!< in: BTR_MODIFY_LEAF or BTR_MODIFY_TREE */
{
@@ -159,6 +173,7 @@ row_undo_mod_remove_clust_low(
ulint err;
ibool success;
+ ut_ad(node->rec_type == TRX_UNDO_UPD_DEL_REC);
pcur = &(node->pcur);
btr_cur = btr_pcur_get_btr_cur(pcur);
@@ -190,11 +205,13 @@ row_undo_mod_remove_clust_low(
} else {
ut_ad(mode == BTR_MODIFY_TREE);
- /* Note that since this operation is analogous to purge,
- we can free also inherited externally stored fields:
- hence the RB_NONE in the call below */
+ /* This operation is analogous to purge, we can free also
+ inherited externally stored fields */
- btr_cur_pessimistic_delete(&err, FALSE, btr_cur, RB_NONE, mtr);
+ btr_cur_pessimistic_delete(&err, FALSE, btr_cur,
+ thr_is_recv(thr)
+ ? RB_RECOVERY_PURGE_REC
+ : RB_NONE, mtr);
/* The delete operation may fail if we have little
file space left: TODO: easiest to crash the database
@@ -224,6 +241,8 @@ row_undo_mod_clust(
ut_ad(node && thr);
+ log_free_check();
+
/* Check if also the previous version of the clustered index record
should be undone in this same rollback operation */
@@ -370,10 +389,11 @@ row_undo_mod_del_mark_or_remove_sec_low(
} else {
ut_ad(mode == BTR_MODIFY_TREE);
- /* No need to distinguish RB_RECOVERY here, because we
- are deleting a secondary index record: the distinction
- between RB_NORMAL and RB_RECOVERY only matters when
- deleting a record that contains externally stored
+ /* No need to distinguish RB_RECOVERY_PURGE here,
+ because we are deleting a secondary index record:
+ the distinction between RB_NORMAL and
+ RB_RECOVERY_PURGE only matters when deleting a
+ record that contains externally stored
columns. */
ut_ad(!dict_index_is_clust(index));
btr_cur_pessimistic_delete(&err, FALSE, btr_cur,
@@ -438,7 +458,7 @@ row_undo_mod_del_unmark_sec_and_undo_update(
BTR_MODIFY_TREE */
que_thr_t* thr, /*!< in: query thread */
dict_index_t* index, /*!< in: index */
- dtuple_t* entry) /*!< in: index entry */
+ const dtuple_t* entry) /*!< in: index entry */
{
mem_heap_t* heap;
btr_pcur_t pcur;
@@ -533,6 +553,7 @@ row_undo_mod_upd_del_sec(
dict_index_t* index;
ulint err = DB_SUCCESS;
+ ut_ad(node->rec_type == TRX_UNDO_UPD_DEL_REC);
heap = mem_heap_create(1024);
while (node->index != NULL) {
@@ -550,7 +571,7 @@ row_undo_mod_upd_del_sec(
does not exist. However, this situation may
only occur during the rollback of incomplete
transactions. */
- ut_a(trx_is_recv(thr_get_trx(thr)));
+ ut_a(thr_is_recv(thr));
} else {
err = row_undo_mod_del_mark_or_remove_sec(
node, thr, index, entry);
@@ -648,24 +669,55 @@ row_undo_mod_upd_exist_sec(
/* Build the newest version of the index entry */
entry = row_build_index_entry(node->row, node->ext,
index, heap);
- ut_a(entry);
- /* NOTE that if we updated the fields of a
- delete-marked secondary index record so that
- alphabetically they stayed the same, e.g.,
- 'abc' -> 'aBc', we cannot return to the original
- values because we do not know them. But this should
- not cause problems because in row0sel.c, in queries
- we always retrieve the clustered index record or an
- earlier version of it, if the secondary index record
- through which we do the search is delete-marked. */
-
- err = row_undo_mod_del_mark_or_remove_sec(node, thr,
- index,
- entry);
- if (err != DB_SUCCESS) {
- mem_heap_free(heap);
-
- return(err);
+ if (UNIV_UNLIKELY(!entry)) {
+ /* The server must have crashed in
+ row_upd_clust_rec_by_insert(), in
+ row_ins_index_entry_low() before
+ btr_store_big_rec_extern_fields()
+ has written the externally stored columns
+ (BLOBs) of the new clustered index entry. */
+
+ /* The table must be in DYNAMIC or COMPRESSED
+ format. REDUNDANT and COMPACT formats
+ store a local 768-byte prefix of each
+ externally stored column. */
+ ut_a(dict_table_get_format(index->table)
+ >= DICT_TF_FORMAT_ZIP);
+
+ /* This is only legitimate when
+ rolling back an incomplete transaction
+ after crash recovery. */
+ ut_a(thr_get_trx(thr)->is_recovered);
+
+ /* The server must have crashed before
+ completing the insert of the new
+ clustered index entry and before
+ inserting to the secondary indexes.
+ Because node->row was not yet written
+ to this index, we can ignore it. But
+ we must restore node->undo_row. */
+ } else {
+ /* NOTE that if we updated the fields of a
+ delete-marked secondary index record so that
+ alphabetically they stayed the same, e.g.,
+ 'abc' -> 'aBc', we cannot return to the
+ original values because we do not know them.
+ But this should not cause problems because
+ in row0sel.c, in queries we always retrieve
+ the clustered index record or an earlier
+ version of it, if the secondary index record
+ through which we do the search is
+ delete-marked. */
+
+ err = row_undo_mod_del_mark_or_remove_sec(
+ node, thr, index, entry);
+ if (err != DB_SUCCESS) {
+ mem_heap_free(heap);
+
+ return(err);
+ }
+
+ mem_heap_empty(heap);
}
/* We may have to update the delete mark in the
@@ -674,7 +726,6 @@ row_undo_mod_upd_exist_sec(
the secondary index record if we updated its fields
but alphabetically they stayed the same, e.g.,
'abc' -> 'aBc'. */
- mem_heap_empty(heap);
entry = row_build_index_entry(node->undo_row,
node->undo_ext,
index, heap);
diff --git a/storage/xtradb/row/row0undo.c b/storage/xtradb/row/row0undo.c
index 3d739c9689a..9ef842b5114 100644
--- a/storage/xtradb/row/row0undo.c
+++ b/storage/xtradb/row/row0undo.c
@@ -297,7 +297,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_lock_data_dictionary(trx);
+ row_mysql_freeze_data_dictionary(trx);
}
if (node->state == UNDO_NODE_INSERT) {
@@ -312,7 +312,7 @@ row_undo(
if (locked_data_dict) {
- row_mysql_unlock_data_dictionary(trx);
+ row_mysql_unfreeze_data_dictionary(trx);
}
/* Do some cleanup */
diff --git a/storage/xtradb/row/row0upd.c b/storage/xtradb/row/row0upd.c
index 58dfd43ead9..d0aaecd3dae 100644
--- a/storage/xtradb/row/row0upd.c
+++ b/storage/xtradb/row/row0upd.c
@@ -92,6 +92,16 @@ the x-latch freed? The most efficient way for performing a
searched delete is obviously to keep the x-latch for several
steps of query graph execution. */
+/*************************************************************************
+IMPORTANT NOTE: Any operation that generates redo MUST check that there
+is enough space in the redo log before for that operation. This is
+done by calling log_free_check(). The reason for checking the
+availability of the redo log space before the start of the operation is
+that we MUST not hold any synchonization objects when performing the
+check.
+If you make a change in this module make sure that no codepath is
+introduced where a call to log_free_check() is bypassed. */
+
/***********************************************************//**
Checks if an update vector changes some of the first ordering fields of an
index record. This is only used in foreign key checks and we can assume
@@ -1344,9 +1354,6 @@ row_upd_copy_columns(
data = rec_get_nth_field(rec, offsets,
column->field_nos[SYM_CLUST_FIELD_NO],
&len);
- if (len == UNIV_SQL_NULL) {
- len = UNIV_SQL_NULL;
- }
eval_node_copy_and_alloc_val(column, data, len);
column = UT_LIST_GET_NEXT(col_var_list, column);
@@ -1456,7 +1463,6 @@ row_upd_sec_index_entry(
entry = row_build_index_entry(node->row, node->ext, index, heap);
ut_a(entry);
- log_free_check();
mtr_start(&mtr);
found = row_search_index_entry(index, entry, BTR_MODIFY_LEAF, &pcur,
@@ -1532,7 +1538,7 @@ Updates the secondary index record if it is changed in the row update or
deletes it if this is a delete.
@return DB_SUCCESS if operation successfully completed, else error
code or DB_LOCK_WAIT */
-UNIV_INLINE
+static
ulint
row_upd_sec_step(
/*=============*/
@@ -2018,6 +2024,7 @@ row_upd(
if (node->state == UPD_NODE_UPDATE_CLUSTERED
|| node->state == UPD_NODE_INSERT_CLUSTERED) {
+ log_free_check();
err = row_upd_clust_step(node, thr);
if (err != DB_SUCCESS) {
@@ -2032,6 +2039,8 @@ row_upd(
}
while (node->index != NULL) {
+
+ log_free_check();
err = row_upd_sec_step(node, thr);
if (err != DB_SUCCESS) {
diff --git a/storage/xtradb/srv/srv0srv.c b/storage/xtradb/srv/srv0srv.c
index e655c4e844d..b9905116603 100644
--- a/storage/xtradb/srv/srv0srv.c
+++ b/storage/xtradb/srv/srv0srv.c
@@ -1,7 +1,8 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, 2009 Google Inc.
+Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are
incorporated with their permission, and subject to the conditions contained in
the file COPYING.Google.
+Portions of this file contain modifications contributed and copyrighted
+by Percona Inc.. Those modifications are
+gratefully acknowledged and are described briefly in the InnoDB
+documentation. The contributions by Percona Inc. are incorporated with
+their permission, and subject to the conditions contained in the file
+COPYING.Percona.
+
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.
@@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
-/***********************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-Copyright (c) 2009, Percona Inc.
-
-Portions of this file contain modifications contributed and copyrighted
-by Percona Inc.. Those modifications are
-gratefully acknowledged and are described briefly in the InnoDB
-documentation. The contributions by Percona Inc. are incorporated with
-their permission, and subject to the conditions contained in the file
-COPYING.Percona.
-
-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.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-***********************************************************************/
/**************************************************//**
@file srv/srv0srv.c
@@ -122,7 +104,8 @@ UNIV_INTERN ulint srv_fatal_semaphore_wait_threshold = 600;
in microseconds, in order to reduce the lagging of the purge thread. */
UNIV_INTERN ulint srv_dml_needed_delay = 0;
-UNIV_INTERN ibool srv_lock_timeout_and_monitor_active = FALSE;
+UNIV_INTERN ibool srv_lock_timeout_active = FALSE;
+UNIV_INTERN ibool srv_monitor_active = FALSE;
UNIV_INTERN ibool srv_error_monitor_active = FALSE;
UNIV_INTERN const char* srv_main_thread_op_info = "";
@@ -162,9 +145,10 @@ UNIV_INTERN char** srv_data_file_names = NULL;
/* size in database pages */
UNIV_INTERN ulint* srv_data_file_sizes = NULL;
+UNIV_INTERN char* srv_doublewrite_file = NULL;
+
UNIV_INTERN ibool srv_extra_undoslots = FALSE;
-UNIV_INTERN ibool srv_fast_recovery = FALSE;
UNIV_INTERN ibool srv_recovery_stats = FALSE;
UNIV_INTERN ulint srv_use_purge_thread = 0;
@@ -198,11 +182,20 @@ UNIV_INTERN ulong srv_flush_log_at_trx_commit = 1;
the checkpoints. */
UNIV_INTERN char srv_adaptive_flushing = TRUE;
-UNIV_INTERN ulong srv_show_locks_held = 10;
-UNIV_INTERN ulong srv_show_verbose_locks = 0;
+UNIV_INTERN ulong srv_show_locks_held = 10;
+UNIV_INTERN ulong srv_show_verbose_locks = 0;
+
+/** Maximum number of times allowed to conditionally acquire
+mutex before switching to blocking wait on the mutex */
+#define MAX_MUTEX_NOWAIT 20
+/** Check whether the number of failed nonblocking mutex
+acquisition attempts exceeds maximum allowed value. If so,
+srv_printf_innodb_monitor() will request mutex acquisition
+with mutex_enter(), which will wait until it gets the mutex. */
+#define MUTEX_NOWAIT(mutex_skipped) ((mutex_skipped) < MAX_MUTEX_NOWAIT)
-/* The sort order table of the MySQL latin1_swedish_ci character set
+/** The sort order table of the MySQL latin1_swedish_ci character set
collation */
UNIV_INTERN const byte* srv_latin1_ordering;
@@ -218,6 +211,9 @@ UNIV_INTERN ulint srv_buf_pool_curr_size = 0;
UNIV_INTERN ulint srv_mem_pool_size = ULINT_MAX;
UNIV_INTERN ulint srv_lock_table_size = ULINT_MAX;
+/* key value for shm */
+UNIV_INTERN uint srv_buffer_pool_shm_key = 0;
+
/* This parameter is deprecated. Use srv_n_io_[read|write]_threads
instead. */
UNIV_INTERN ulint srv_n_file_io_threads = ULINT_MAX;
@@ -387,6 +383,7 @@ UNIV_INTERN unsigned long long srv_stats_sample_pages = 8;
UNIV_INTERN ulong srv_stats_method = 0;
UNIV_INTERN ulong srv_stats_auto_update = 1;
UNIV_INTERN ulint srv_stats_update_need_lock = 1;
+UNIV_INTERN ibool srv_use_sys_stats_table = FALSE;
UNIV_INTERN ibool srv_use_doublewrite_buf = TRUE;
UNIV_INTERN ibool srv_use_checksums = TRUE;
@@ -410,7 +407,6 @@ UNIV_INTERN ulong srv_read_ahead = 3; /* 1: random 2: linear 3: Both */
UNIV_INTERN ulong srv_adaptive_checkpoint = 0; /* 0: none 1: reflex 2: estimate */
UNIV_INTERN ulong srv_expand_import = 0; /* 0:disable 1:enable */
-UNIV_INTERN ulint srv_relax_table_creation = 0; /* 0:disable 1:enable */
UNIV_INTERN ulint srv_pass_corrupt_table = 0; /* 0:disable 1:enable */
UNIV_INTERN ulong srv_extra_rsegments = 0; /* extra rseg for users */
@@ -439,7 +435,7 @@ static ulint srv_n_rows_inserted_old = 0;
static ulint srv_n_rows_updated_old = 0;
static ulint srv_n_rows_deleted_old = 0;
static ulint srv_n_rows_read_old = 0;
-
+UNIV_INTERN ulint srv_n_lock_deadlock_count = 0;
UNIV_INTERN ulint srv_n_lock_wait_count = 0;
UNIV_INTERN ulint srv_n_lock_wait_current_count = 0;
UNIV_INTERN ib_int64_t srv_n_lock_wait_time = 0;
@@ -1771,6 +1767,11 @@ srv_suspend_mysql_thread(
trx->error_state = DB_LOCK_WAIT_TIMEOUT;
}
+
+ if (trx_is_interrupted(trx)) {
+
+ trx->error_state = DB_INTERRUPTED;
+ }
}
/********************************************************************//**
@@ -1833,12 +1834,15 @@ srv_refresh_innodb_monitor_stats(void)
}
/******************************************************************//**
-Outputs to a file the output of the InnoDB Monitor. */
+Outputs to a file the output of the InnoDB Monitor.
+@return FALSE if not all information printed
+due to failure to obtain necessary mutex */
UNIV_INTERN
-void
+ibool
srv_printf_innodb_monitor(
/*======================*/
FILE* file, /*!< in: output stream */
+ ibool nowait, /*!< in: whether to wait for kernel mutex */
ulint* trx_start, /*!< out: file position of the start of
the list of active transactions */
ulint* trx_end) /*!< out: file position of the end of
@@ -1847,6 +1851,7 @@ srv_printf_innodb_monitor(
double time_elapsed;
time_t current_time;
ulint n_reserved;
+ ibool ret;
ulint btr_search_sys_subtotal;
ulint lock_sys_subtotal;
@@ -1877,9 +1882,9 @@ srv_printf_innodb_monitor(
"Per second averages calculated from the last %lu seconds\n",
(ulong)time_elapsed);
- fputs("----------\n"
- "BACKGROUND THREAD\n"
- "----------\n", file);
+ fputs("-----------------\n"
+ "BACKGROUND THREAD\n"
+ "-----------------\n", file);
srv_print_master_thread_info(file);
fputs("----------\n"
@@ -2069,22 +2074,28 @@ srv_printf_innodb_monitor(
srv_n_rows_deleted_old = srv_n_rows_deleted;
srv_n_rows_read_old = srv_n_rows_read;
- lock_print_info_summary(file);
- if (trx_start) {
- long t = ftell(file);
- if (t < 0) {
- *trx_start = ULINT_UNDEFINED;
- } else {
- *trx_start = (ulint) t;
+ /* Only if lock_print_info_summary proceeds correctly,
+ before we call the lock_print_info_all_transactions
+ to print all the lock information. */
+ ret = lock_print_info_summary(file, nowait);
+
+ if (ret) {
+ if (trx_start) {
+ long t = ftell(file);
+ if (t < 0) {
+ *trx_start = ULINT_UNDEFINED;
+ } else {
+ *trx_start = (ulint) t;
+ }
}
- }
- lock_print_info_all_transactions(file);
- if (trx_end) {
- long t = ftell(file);
- if (t < 0) {
- *trx_end = ULINT_UNDEFINED;
- } else {
- *trx_end = (ulint) t;
+ lock_print_info_all_transactions(file);
+ if (trx_end) {
+ long t = ftell(file);
+ if (t < 0) {
+ *trx_end = ULINT_UNDEFINED;
+ } else {
+ *trx_end = (ulint) t;
+ }
}
}
@@ -2093,6 +2104,8 @@ srv_printf_innodb_monitor(
"============================\n", file);
mutex_exit(&srv_innodb_monitor_mutex);
fflush(file);
+
+ return(ret);
}
/******************************************************************//**
@@ -2133,6 +2146,8 @@ srv_export_innodb_status(void)
= UT_LIST_GET_LEN(buf_pool->flush_list);
export_vars.innodb_buffer_pool_pages_free
= UT_LIST_GET_LEN(buf_pool->free);
+ export_vars.innodb_deadlocks
+ = srv_n_lock_deadlock_count;
#ifdef UNIV_DEBUG
export_vars.innodb_buffer_pool_pages_latched
= buf_get_latched_pages_number();
@@ -2181,26 +2196,23 @@ srv_export_innodb_status(void)
}
/*********************************************************************//**
-A thread which wakes up threads whose lock wait may have lasted too long.
-This also prints the info output by various InnoDB monitors.
+A thread which prints the info output by various InnoDB monitors.
@return a dummy parameter */
UNIV_INTERN
os_thread_ret_t
-srv_lock_timeout_and_monitor_thread(
-/*================================*/
+srv_monitor_thread(
+/*===============*/
void* arg __attribute__((unused)))
/*!< in: a dummy parameter required by
os_thread_create */
{
- srv_slot_t* slot;
double time_elapsed;
time_t current_time;
time_t last_table_monitor_time;
time_t last_tablespace_monitor_time;
time_t last_monitor_time;
- ibool some_waits;
- double wait_time;
- ulint i;
+ ulint mutex_skipped;
+ ibool last_srv_print_monitor;
#ifdef UNIV_DEBUG_THREAD_CREATION
fprintf(stderr, "Lock timeout thread starts, id %lu\n",
@@ -2211,13 +2223,15 @@ srv_lock_timeout_and_monitor_thread(
last_table_monitor_time = time(NULL);
last_tablespace_monitor_time = time(NULL);
last_monitor_time = time(NULL);
+ mutex_skipped = 0;
+ last_srv_print_monitor = srv_print_innodb_monitor;
loop:
- srv_lock_timeout_and_monitor_active = TRUE;
+ srv_monitor_active = TRUE;
- /* When someone is waiting for a lock, we wake up every second
- and check if a timeout has passed for a lock wait */
+ /* Wake up every 5 seconds to see if we need to print
+ monitor information. */
- os_thread_sleep(1000000);
+ os_thread_sleep(5000000);
current_time = time(NULL);
@@ -2227,14 +2241,40 @@ loop:
last_monitor_time = time(NULL);
if (srv_print_innodb_monitor) {
- srv_printf_innodb_monitor(stderr, NULL, NULL);
+ /* Reset mutex_skipped counter everytime
+ srv_print_innodb_monitor changes. This is to
+ ensure we will not be blocked by kernel_mutex
+ for short duration information printing,
+ such as requested by sync_array_print_long_waits() */
+ if (!last_srv_print_monitor) {
+ mutex_skipped = 0;
+ last_srv_print_monitor = TRUE;
+ }
+
+ if (!srv_printf_innodb_monitor(stderr,
+ MUTEX_NOWAIT(mutex_skipped),
+ NULL, NULL)) {
+ mutex_skipped++;
+ } else {
+ /* Reset the counter */
+ mutex_skipped = 0;
+ }
+ } else {
+ last_srv_print_monitor = FALSE;
}
+
if (srv_innodb_status) {
mutex_enter(&srv_monitor_file_mutex);
rewind(srv_monitor_file);
- srv_printf_innodb_monitor(srv_monitor_file, NULL,
- NULL);
+ if (!srv_printf_innodb_monitor(srv_monitor_file,
+ MUTEX_NOWAIT(mutex_skipped),
+ NULL, NULL)) {
+ mutex_skipped++;
+ } else {
+ mutex_skipped = 0;
+ }
+
os_file_set_eof(srv_monitor_file);
mutex_exit(&srv_monitor_file_mutex);
}
@@ -2287,6 +2327,56 @@ loop:
}
}
+ if (srv_shutdown_state >= SRV_SHUTDOWN_CLEANUP) {
+ goto exit_func;
+ }
+
+ if (srv_print_innodb_monitor
+ || srv_print_innodb_lock_monitor
+ || srv_print_innodb_tablespace_monitor
+ || srv_print_innodb_table_monitor) {
+ goto loop;
+ }
+
+ srv_monitor_active = FALSE;
+
+ goto loop;
+
+exit_func:
+ srv_monitor_active = FALSE;
+
+ /* We count the number of threads in os_thread_exit(). A created
+ thread should always use that to exit and not use return() to exit. */
+
+ os_thread_exit(NULL);
+
+ OS_THREAD_DUMMY_RETURN;
+}
+
+/*********************************************************************//**
+A thread which wakes up threads whose lock wait may have lasted too long.
+@return a dummy parameter */
+UNIV_INTERN
+os_thread_ret_t
+srv_lock_timeout_thread(
+/*====================*/
+ void* arg __attribute__((unused)))
+ /* in: a dummy parameter required by
+ os_thread_create */
+{
+ srv_slot_t* slot;
+ ibool some_waits;
+ double wait_time;
+ ulint i;
+
+loop:
+ /* When someone is waiting for a lock, we wake up every second
+ and check if a timeout has passed for a lock wait */
+
+ os_thread_sleep(1000000);
+
+ srv_lock_timeout_active = TRUE;
+
mutex_enter(&kernel_mutex);
some_waits = FALSE;
@@ -2310,9 +2400,10 @@ loop:
lock_wait_timeout = thd_lock_wait_timeout(
trx->mysql_thd);
- if (lock_wait_timeout < 100000000
- && (wait_time > (double) lock_wait_timeout
- || wait_time < 0)) {
+ if (trx_is_interrupted(trx)
+ || (lock_wait_timeout < 100000000
+ && (wait_time > (double) lock_wait_timeout
+ || wait_time < 0))) {
/* Timeout exceeded or a wrap-around in system
time counter: cancel the lock request queued
@@ -2337,17 +2428,11 @@ loop:
goto exit_func;
}
- if (some_waits || srv_print_innodb_monitor
- || srv_print_innodb_lock_monitor
- || srv_print_innodb_tablespace_monitor
- || srv_print_innodb_table_monitor) {
+ if (some_waits) {
goto loop;
}
- /* No one was waiting for a lock and no monitor was active:
- suspend this thread */
-
- srv_lock_timeout_and_monitor_active = FALSE;
+ srv_lock_timeout_active = FALSE;
#if 0
/* The following synchronisation is disabled, since
@@ -2357,7 +2442,7 @@ loop:
goto loop;
exit_func:
- srv_lock_timeout_and_monitor_active = FALSE;
+ srv_lock_timeout_active = FALSE;
/* We count the number of threads in os_thread_exit(). A created
thread should always use that to exit and not use return() to exit. */
@@ -2706,7 +2791,10 @@ loop:
BUF_FLUSH_LIST,
n_flush,
IB_ULONGLONG_MAX);
- skip_sleep = TRUE;
+
+ if (n_flush == PCT_IO(100)) {
+ skip_sleep = TRUE;
+ }
}
mutex_enter(&(log_sys->mutex));
@@ -2817,7 +2905,7 @@ loop:
if (bpl) {
retry_flush_batch:
n_pages_flushed = buf_flush_batch(BUF_FLUSH_LIST,
- bpl,
+ (ulint) bpl,
oldest_lsn + (lsn - lsn_old));
if (n_pages_flushed == ULINT_UNDEFINED) {
os_thread_sleep(5000);
diff --git a/storage/xtradb/srv/srv0start.c b/storage/xtradb/srv/srv0start.c
index dcc13ea17b6..62ffa366f18 100644
--- a/storage/xtradb/srv/srv0start.c
+++ b/storage/xtradb/srv/srv0start.c
@@ -1,7 +1,8 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
+Copyright (c) 2009, Percona Inc.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
@@ -9,6 +10,13 @@ briefly in the InnoDB documentation. The contributions by Google are
incorporated with their permission, and subject to the conditions contained in
the file COPYING.Google.
+Portions of this file contain modifications contributed and copyrighted
+by Percona Inc.. Those modifications are
+gratefully acknowledged and are described briefly in the InnoDB
+documentation. The contributions by Percona Inc. are incorporated with
+their permission, and subject to the conditions contained in the file
+COPYING.Percona.
+
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.
@@ -22,32 +30,6 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
-/***********************************************************************
-
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
-Copyright (c) 2009, Percona Inc.
-
-Portions of this file contain modifications contributed and copyrighted
-by Percona Inc.. Those modifications are
-gratefully acknowledged and are described briefly in the InnoDB
-documentation. The contributions by Percona Inc. are incorporated with
-their permission, and subject to the conditions contained in the file
-COPYING.Percona.
-
-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.,
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-***********************************************************************/
/********************************************************************//**
@file srv/srv0start.c
@@ -105,6 +87,7 @@ Created 2/16/1996 Heikki Tuuri
# include "btr0pcur.h"
# include "thr0loc.h"
# include "os0sync.h" /* for INNODB_RW_LOCKS_USE_ATOMICS */
+# include "zlib.h" /* for ZLIB_VERSION */
/** Log sequence number immediately after startup */
UNIV_INTERN ib_uint64_t srv_start_lsn;
@@ -143,9 +126,9 @@ static mutex_t ios_mutex;
static ulint ios;
/** io_handler_thread parameters for thread identification */
-static ulint n[SRV_MAX_N_IO_THREADS + 5 + 64];
+static ulint n[SRV_MAX_N_IO_THREADS + 6 + 64];
/** io_handler_thread identifiers */
-static os_thread_id_t thread_ids[SRV_MAX_N_IO_THREADS + 5 + 64];
+static os_thread_id_t thread_ids[SRV_MAX_N_IO_THREADS + 6 + 64];
/** We use this mutex to test the return value of pthread_mutex_trylock
on successful locking. HP-UX does NOT return 0, though Linux et al do. */
@@ -728,6 +711,7 @@ open_or_create_data_files(
/*======================*/
ibool* create_new_db, /*!< out: TRUE if new database should be
created */
+ ibool* create_new_doublewrite_file,
#ifdef UNIV_LOG_ARCHIVE
ulint* min_arch_log_no,/*!< out: min of archived log
numbers in data files */
@@ -760,6 +744,7 @@ open_or_create_data_files(
*sum_of_new_sizes = 0;
*create_new_db = FALSE;
+ *create_new_doublewrite_file = FALSE;
srv_normalize_path_for_win(srv_data_home);
@@ -992,6 +977,142 @@ skip_size_check:
srv_data_file_is_raw_partition[i] != 0);
}
+ /* special file for doublewrite buffer */
+ if (srv_doublewrite_file)
+ {
+ srv_normalize_path_for_win(srv_doublewrite_file);
+
+ fprintf(stderr,
+ "InnoDB: Notice: innodb_doublewrite_file is specified.\n"
+ "InnoDB: This is for expert only. Don't use if you don't understand what is it 'WELL'.\n"
+ "InnoDB: ### Don't specify older file than the last checkpoint ###\n"
+ "InnoDB: otherwise the older doublewrite buffer will break your data during recovery!\n");
+
+ strcpy(name, srv_doublewrite_file);
+
+ /* First we try to create the file: if it already
+ exists, ret will get value FALSE */
+
+ files[i] = os_file_create(name, OS_FILE_CREATE,
+ OS_FILE_NORMAL,
+ OS_DATA_FILE, &ret);
+
+ if (ret == FALSE && os_file_get_last_error(FALSE)
+ != OS_FILE_ALREADY_EXISTS
+#ifdef UNIV_AIX
+ /* AIX 5.1 after security patch ML7 may have
+ errno set to 0 here, which causes our function
+ to return 100; work around that AIX problem */
+ && os_file_get_last_error(FALSE) != 100
+#endif
+ ) {
+ fprintf(stderr,
+ "InnoDB: Error in creating"
+ " or opening %s\n",
+ name);
+
+ return(DB_ERROR);
+ }
+
+ if (ret == FALSE) {
+ /* We open the data file */
+
+ files[i] = os_file_create(
+ name, OS_FILE_OPEN, OS_FILE_NORMAL,
+ OS_DATA_FILE, &ret);
+
+ if (!ret) {
+ fprintf(stderr,
+ "InnoDB: Error in opening %s\n", name);
+ os_file_get_last_error(TRUE);
+
+ return(DB_ERROR);
+ }
+
+ ret = os_file_get_size(files[i], &size, &size_high);
+ ut_a(ret);
+ /* Round size downward to megabytes */
+
+ rounded_size_pages
+ = (size / (1024 * 1024) + 4096 * size_high)
+ << (20 - UNIV_PAGE_SIZE_SHIFT);
+
+ if (rounded_size_pages != TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9) {
+
+ fprintf(stderr,
+ "InnoDB: Warning: doublewrite buffer file %s"
+ " is of a different size\n"
+ "InnoDB: %lu pages"
+ " (rounded down to MB)\n"
+ "InnoDB: than intended size"
+ " %lu pages...\n",
+ name,
+ (ulong) rounded_size_pages,
+ (ulong) TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9);
+ }
+
+ fil_read_flushed_lsn_and_arch_log_no(
+ files[i], one_opened,
+#ifdef UNIV_LOG_ARCHIVE
+ min_arch_log_no, max_arch_log_no,
+#endif /* UNIV_LOG_ARCHIVE */
+ min_flushed_lsn, max_flushed_lsn);
+ one_opened = TRUE;
+ } else {
+ /* We created the data file and now write it full of
+ zeros */
+
+ *create_new_doublewrite_file = TRUE;
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Doublewrite buffer file %s did not"
+ " exist: new to be created\n",
+ name);
+
+ if (*create_new_db == FALSE) {
+ fprintf(stderr,
+ "InnoDB: Warning: Previous version's ibdata files may cause crash.\n"
+ " If you use that, please use the ibdata files of this version.\n");
+ }
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+ " InnoDB: Setting file %s size to %lu MB\n",
+ name,
+ (ulong) ((TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9)
+ >> (20 - UNIV_PAGE_SIZE_SHIFT)));
+
+ fprintf(stderr,
+ "InnoDB: Database physically writes the"
+ " file full: wait...\n");
+
+ ret = os_file_set_size(
+ name, files[i],
+ srv_calc_low32(TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9),
+ srv_calc_high32(TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9));
+
+ if (!ret) {
+ fprintf(stderr,
+ "InnoDB: Error in creating %s:"
+ " probably out of disk space\n", name);
+
+ return(DB_ERROR);
+ }
+ }
+
+ ret = os_file_close(files[i]);
+ ut_a(ret);
+
+ fil_space_create(name, TRX_DOUBLEWRITE_SPACE, 0, FIL_TABLESPACE);
+
+ ut_a(fil_validate());
+
+ fil_node_create(name, TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9, TRX_DOUBLEWRITE_SPACE, FALSE);
+
+ i++;
+ }
+
ios = 0;
mutex_create(&ios_mutex, SYNC_NO_ORDER_CHECK);
@@ -1010,6 +1131,7 @@ innobase_start_or_create_for_mysql(void)
{
buf_pool_t* ret;
ibool create_new_db;
+ ibool create_new_doublewrite_file;
ibool log_file_created;
ibool log_created = FALSE;
ibool log_opened = FALSE;
@@ -1074,7 +1196,11 @@ innobase_start_or_create_for_mysql(void)
#ifdef UNIV_IBUF_DEBUG
fprintf(stderr,
"InnoDB: !!!!!!!! UNIV_IBUF_DEBUG switched on !!!!!!!!!\n"
- "InnoDB: Crash recovery will fail with UNIV_IBUF_DEBUG\n");
+# ifdef UNIV_IBUF_COUNT_DEBUG
+ "InnoDB: !!!!!!!! UNIV_IBUF_COUNT_DEBUG switched on !!!!!!!!!\n"
+ "InnoDB: Crash recovery will fail with UNIV_IBUF_COUNT_DEBUG\n"
+# endif
+ );
#endif
#ifdef UNIV_SYNC_DEBUG
@@ -1101,7 +1227,15 @@ innobase_start_or_create_for_mysql(void)
"InnoDB: The InnoDB memory heap is disabled\n");
}
- fprintf(stderr, "InnoDB: %s\n", IB_ATOMICS_STARTUP_MSG);
+ fputs("InnoDB: " IB_ATOMICS_STARTUP_MSG
+ "\nInnoDB: Compressed tables use zlib " ZLIB_VERSION
+#ifdef UNIV_ZIP_DEBUG
+ " with validation"
+#endif /* UNIV_ZIP_DEBUG */
+#ifdef UNIV_ZIP_COPY
+ " and extra copying"
+#endif /* UNIV_ZIP_COPY */
+ "\n" , stderr);
/* Since InnoDB does not currently clean up all its internal data
structures in MySQL Embedded Server Library server_end(), we
@@ -1168,6 +1302,9 @@ innobase_start_or_create_for_mysql(void)
} else if (0 == ut_strcmp(srv_file_flush_method_str, "O_DIRECT")) {
srv_unix_file_flush_method = SRV_UNIX_O_DIRECT;
+ } else if (0 == ut_strcmp(srv_file_flush_method_str, "ALL_O_DIRECT")) {
+ srv_unix_file_flush_method = SRV_UNIX_ALL_O_DIRECT;
+
} else if (0 == ut_strcmp(srv_file_flush_method_str, "littlesync")) {
srv_unix_file_flush_method = SRV_UNIX_LITTLESYNC;
@@ -1388,6 +1525,7 @@ innobase_start_or_create_for_mysql(void)
}
err = open_or_create_data_files(&create_new_db,
+ &create_new_doublewrite_file,
#ifdef UNIV_LOG_ARCHIVE
&min_arch_log_no, &max_arch_log_no,
#endif /* UNIV_LOG_ARCHIVE */
@@ -1504,6 +1642,14 @@ innobase_start_or_create_for_mysql(void)
trx_sys_file_format_init();
+ if (create_new_doublewrite_file) {
+ mtr_start(&mtr);
+ fsp_header_init(TRX_DOUBLEWRITE_SPACE, TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * 9, &mtr);
+ mtr_commit(&mtr);
+
+ trx_sys_dummy_create(TRX_DOUBLEWRITE_SPACE);
+ }
+
if (create_new_db) {
mtr_start(&mtr);
fsp_header_init(0, sum_of_new_sizes, &mtr);
@@ -1573,6 +1719,8 @@ innobase_start_or_create_for_mysql(void)
Note that this is not as heavy weight as it seems. At
this point there will be only ONE page in the buf_LRU
and there must be no page in the buf_flush list. */
+ /* TODO: treat more correctly */
+ if (!srv_buffer_pool_shm_key)
buf_pool_invalidate();
/* We always try to do a recovery, even if the database had
@@ -1596,6 +1744,14 @@ innobase_start_or_create_for_mysql(void)
dict_boot();
trx_sys_init_at_db_start();
+ /* Initialize the fsp free limit global variable in the log
+ system */
+ fsp_header_get_free_limit();
+
+ /* recv_recovery_from_checkpoint_finish needs trx lists which
+ are initialized in trx_sys_init_at_db_start(). */
+
+ recv_recovery_from_checkpoint_finish();
if (srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE) {
/* The following call is necessary for the insert
buffer to work with multiple tablespaces. We must
@@ -1611,26 +1767,14 @@ innobase_start_or_create_for_mysql(void)
every table in the InnoDB data dictionary that has
an .ibd file.
- We also determine the maximum tablespace id used.
-
- TODO: We may have incomplete transactions in the
- data dictionary tables. Does that harm the scanning of
- the data dictionary below? */
+ We also determine the maximum tablespace id used. */
dict_check_tablespaces_and_store_max_id(
recv_needed_recovery);
}
srv_startup_is_before_trx_rollback_phase = FALSE;
-
- /* Initialize the fsp free limit global variable in the log
- system */
- fsp_header_get_free_limit();
-
- /* recv_recovery_from_checkpoint_finish needs trx lists which
- are initialized in trx_sys_init_at_db_start(). */
-
- recv_recovery_from_checkpoint_finish();
+ recv_recovery_rollback_active();
/* It is possible that file_format tag has never
been set. In this case we initialize it to minimum
@@ -1679,15 +1823,18 @@ innobase_start_or_create_for_mysql(void)
/* fprintf(stderr, "Max allowed record size %lu\n",
page_get_free_space_of_empty() / 2); */
- /* Create the thread which watches the timeouts for lock waits
- and prints InnoDB monitor info */
-
- os_thread_create(&srv_lock_timeout_and_monitor_thread, NULL,
+ /* Create the thread which watches the timeouts for lock waits */
+ os_thread_create(&srv_lock_timeout_thread, NULL,
thread_ids + 2 + SRV_MAX_N_IO_THREADS);
/* Create the thread which warns of long semaphore waits */
os_thread_create(&srv_error_monitor_thread, NULL,
thread_ids + 3 + SRV_MAX_N_IO_THREADS);
+
+ /* Create the thread which prints InnoDB monitor info */
+ os_thread_create(&srv_monitor_thread, NULL,
+ thread_ids + 4 + SRV_MAX_N_IO_THREADS);
+
srv_is_being_started = FALSE;
if (trx_doublewrite == NULL) {
@@ -1712,13 +1859,13 @@ innobase_start_or_create_for_mysql(void)
ulint i;
os_thread_create(&srv_purge_thread, NULL, thread_ids
- + (4 + SRV_MAX_N_IO_THREADS));
+ + (5 + SRV_MAX_N_IO_THREADS));
for (i = 0; i < srv_use_purge_thread - 1; i++) {
- n[5 + i + SRV_MAX_N_IO_THREADS] = i; /* using as index for arrays in purge_sys */
+ n[6 + i + SRV_MAX_N_IO_THREADS] = i; /* using as index for arrays in purge_sys */
os_thread_create(&srv_purge_worker_thread,
- n + (5 + i + SRV_MAX_N_IO_THREADS),
- thread_ids + (5 + i + SRV_MAX_N_IO_THREADS));
+ n + (6 + i + SRV_MAX_N_IO_THREADS),
+ thread_ids + (6 + i + SRV_MAX_N_IO_THREADS));
}
}
#ifdef UNIV_DEBUG
@@ -1821,7 +1968,7 @@ innobase_start_or_create_for_mysql(void)
if (srv_print_verbose_log) {
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB Plugin %s started; "
+ " Percona XtraDB (http://www.percona.com) %s started; "
"log sequence number %llu\n",
INNODB_VERSION_STR, srv_start_lsn);
}
diff --git a/storage/xtradb/sync/sync0arr.c b/storage/xtradb/sync/sync0arr.c
index cfa52cdcc88..223e1715944 100644
--- a/storage/xtradb/sync/sync0arr.c
+++ b/storage/xtradb/sync/sync0arr.c
@@ -498,7 +498,9 @@ sync_array_cell_print(
|| type == RW_LOCK_WAIT_EX
|| type == RW_LOCK_SHARED) {
- fputs(type == RW_LOCK_EX ? "X-lock on" : "S-lock on", file);
+ fputs(type == RW_LOCK_EX ? "X-lock on"
+ : type == RW_LOCK_WAIT_EX ? "X-lock (wait_ex) on"
+ : "S-lock on", file);
rwlock = cell->old_wait_rw_lock;
diff --git a/storage/xtradb/sync/sync0rw.c b/storage/xtradb/sync/sync0rw.c
index 07eac403dfe..9e10f6e943b 100644
--- a/storage/xtradb/sync/sync0rw.c
+++ b/storage/xtradb/sync/sync0rw.c
@@ -268,7 +268,7 @@ rw_lock_create_func(
lock->level = level;
#endif /* UNIV_SYNC_DEBUG */
- lock->magic_n = RW_LOCK_MAGIC_N;
+ ut_d(lock->magic_n = RW_LOCK_MAGIC_N);
lock->lock_name = cmutex_name;
@@ -282,10 +282,8 @@ rw_lock_create_func(
mutex_enter(&rw_lock_list_mutex);
- if (UT_LIST_GET_LEN(rw_lock_list) > 0) {
- ut_a(UT_LIST_GET_FIRST(rw_lock_list)->magic_n
- == RW_LOCK_MAGIC_N);
- }
+ ut_ad(UT_LIST_GET_FIRST(rw_lock_list) == NULL
+ || UT_LIST_GET_FIRST(rw_lock_list)->magic_n == RW_LOCK_MAGIC_N);
UT_LIST_ADD_FIRST(list, rw_lock_list, lock);
@@ -314,18 +312,16 @@ rw_lock_free(
os_event_free(lock->wait_ex_event);
- if (UT_LIST_GET_PREV(list, lock)) {
- ut_a(UT_LIST_GET_PREV(list, lock)->magic_n == RW_LOCK_MAGIC_N);
- }
- if (UT_LIST_GET_NEXT(list, lock)) {
- ut_a(UT_LIST_GET_NEXT(list, lock)->magic_n == RW_LOCK_MAGIC_N);
- }
+ ut_ad(UT_LIST_GET_PREV(list, lock) == NULL
+ || UT_LIST_GET_PREV(list, lock)->magic_n == RW_LOCK_MAGIC_N);
+ ut_ad(UT_LIST_GET_NEXT(list, lock) == NULL
+ || UT_LIST_GET_NEXT(list, lock)->magic_n == RW_LOCK_MAGIC_N);
UT_LIST_REMOVE(list, rw_lock_list, lock);
mutex_exit(&rw_lock_list_mutex);
- lock->magic_n = 0;
+ ut_d(lock->magic_n = 0);
}
#ifdef UNIV_DEBUG
@@ -344,7 +340,7 @@ rw_lock_validate(
ulint waiters = rw_lock_get_waiters(lock);
lint lock_word = lock->lock_word;
- ut_a(lock->magic_n == RW_LOCK_MAGIC_N);
+ ut_ad(lock->magic_n == RW_LOCK_MAGIC_N);
ut_a(waiters == 0 || waiters == 1);
ut_a(lock_word > -X_LOCK_DECR ||(-lock_word) % X_LOCK_DECR == 0);
diff --git a/storage/xtradb/sync/sync0sync.c b/storage/xtradb/sync/sync0sync.c
index c0e543f284d..225f28df78e 100644
--- a/storage/xtradb/sync/sync0sync.c
+++ b/storage/xtradb/sync/sync0sync.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1995, 2010, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
@@ -317,6 +317,15 @@ mutex_free(
ut_a(mutex_get_lock_word(mutex) == 0);
ut_a(mutex_get_waiters(mutex) == 0);
+#ifdef UNIV_MEM_DEBUG
+ if (mutex == &mem_hash_mutex) {
+ ut_ad(UT_LIST_GET_LEN(mutex_list) == 1);
+ ut_ad(UT_LIST_GET_FIRST(mutex_list) == &mem_hash_mutex);
+ UT_LIST_REMOVE(list, mutex_list, mutex);
+ goto func_exit;
+ }
+#endif /* UNIV_MEM_DEBUG */
+
if (mutex != &mutex_list_mutex
#ifdef UNIV_SYNC_DEBUG
&& mutex != &sync_thread_mutex
@@ -338,7 +347,9 @@ mutex_free(
}
os_event_free(mutex->event);
-
+#ifdef UNIV_MEM_DEBUG
+func_exit:
+#endif /* UNIV_MEM_DEBUG */
#if !defined(HAVE_ATOMIC_BUILTINS)
os_fast_mutex_free(&(mutex->os_fast_mutex));
#endif
@@ -423,20 +434,19 @@ mutex_set_waiters(
mutex_t* mutex, /*!< in: mutex */
ulint n) /*!< in: value to set */
{
-#ifndef INNODB_RW_LOCKS_USE_ATOMICS
- volatile ulint* ptr; /* declared volatile to ensure that
- the value is stored to memory */
-#endif
-
+#ifdef INNODB_RW_LOCKS_USE_ATOMICS
ut_ad(mutex);
-#ifdef INNODB_RW_LOCKS_USE_ATOMICS
if (n) {
os_compare_and_swap_ulint(&mutex->waiters, 0, 1);
} else {
os_compare_and_swap_ulint(&mutex->waiters, 1, 0);
}
#else
+ volatile ulint* ptr; /* declared volatile to ensure that
+ the value is stored to memory */
+ ut_ad(mutex);
+
ptr = &(mutex->waiters);
*ptr = n; /* Here we assume that the write of a single
@@ -959,12 +969,62 @@ sync_thread_levels_contain(
}
/******************************************************************//**
+Checks if the level array for the current thread contains a
+mutex or rw-latch at the specified level.
+@return a matching latch, or NULL if not found */
+UNIV_INTERN
+void*
+sync_thread_levels_contains(
+/*========================*/
+ ulint level) /*!< in: latching order level
+ (SYNC_DICT, ...)*/
+{
+ sync_level_t* arr;
+ sync_thread_t* thread_slot;
+ sync_level_t* slot;
+ ulint i;
+
+ if (!sync_order_checks_on) {
+
+ return(NULL);
+ }
+
+ mutex_enter(&sync_thread_mutex);
+
+ thread_slot = sync_thread_level_arrays_find_slot();
+
+ if (thread_slot == NULL) {
+
+ mutex_exit(&sync_thread_mutex);
+
+ return(NULL);
+ }
+
+ arr = thread_slot->levels;
+
+ for (i = 0; i < SYNC_THREAD_N_LEVELS; i++) {
+
+ slot = sync_thread_levels_get_nth(arr, i);
+
+ if (slot->latch != NULL && slot->level == level) {
+
+ mutex_exit(&sync_thread_mutex);
+ return(slot->latch);
+ }
+ }
+
+ mutex_exit(&sync_thread_mutex);
+
+ return(NULL);
+}
+
+/******************************************************************//**
Checks that the level array for the current thread is empty.
-@return TRUE if empty except the exceptions specified below */
+@return a latch, or NULL if empty except the exceptions specified below */
UNIV_INTERN
-ibool
-sync_thread_levels_empty_gen(
-/*=========================*/
+void*
+sync_thread_levels_nonempty_gen(
+/*============================*/
ibool dict_mutex_allowed) /*!< in: TRUE if dictionary mutex is
allowed to be owned by the thread,
also purge_is_running mutex is
@@ -977,7 +1037,7 @@ sync_thread_levels_empty_gen(
if (!sync_order_checks_on) {
- return(TRUE);
+ return(NULL);
}
mutex_enter(&sync_thread_mutex);
@@ -988,7 +1048,7 @@ sync_thread_levels_empty_gen(
mutex_exit(&sync_thread_mutex);
- return(TRUE);
+ return(NULL);
}
arr = thread_slot->levels;
@@ -1005,13 +1065,13 @@ sync_thread_levels_empty_gen(
mutex_exit(&sync_thread_mutex);
ut_error;
- return(FALSE);
+ return(slot->latch);
}
}
mutex_exit(&sync_thread_mutex);
- return(TRUE);
+ return(NULL);
}
/******************************************************************//**
@@ -1388,6 +1448,12 @@ sync_close(void)
mutex = UT_LIST_GET_FIRST(mutex_list);
while (mutex) {
+#ifdef UNIV_MEM_DEBUG
+ if (mutex == &mem_hash_mutex) {
+ mutex = UT_LIST_GET_NEXT(list, mutex);
+ continue;
+ }
+#endif /* UNIV_MEM_DEBUG */
mutex_free(mutex);
mutex = UT_LIST_GET_FIRST(mutex_list);
}
diff --git a/storage/xtradb/trx/trx0i_s.c b/storage/xtradb/trx/trx0i_s.c
index 78b20edd365..5bc8302d0c0 100644
--- a/storage/xtradb/trx/trx0i_s.c
+++ b/storage/xtradb/trx/trx0i_s.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 2007, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 2007, 2010, Innobase Oy. All Rights Reserved.
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
@@ -28,11 +28,18 @@ table cache" for later retrieval.
Created July 17, 2007 Vasil Dimov
*******************************************************/
+/* Found during the build of 5.5.3 on Linux 2.4 and early 2.6 kernels:
+ The includes "univ.i" -> "my_global.h" cause a different path
+ to be taken further down with pthread functions and types,
+ so they must come first.
+ From the symptoms, this is related to bug#46587 in the MySQL bug DB.
+*/
+#include "univ.i"
+
+#include <mysql/plugin.h>
#include "mysql_addons.h"
-#include "univ.i"
-#include <mysql/plugin.h>
#include "buf0buf.h"
#include "dict0dict.h"
#include "ha0storage.h"
@@ -422,6 +429,9 @@ fill_trx_row(
which to copy volatile
strings */
{
+ const char* stmt;
+ size_t stmt_len;
+
row->trx_id = trx_get_id(trx);
row->trx_started = (ib_time_t) trx->start_time;
row->trx_state = trx_get_que_state_str(trx);
@@ -442,37 +452,32 @@ fill_trx_row(
row->trx_weight = (ullint) ut_conv_dulint_to_longlong(TRX_WEIGHT(trx));
- if (trx->mysql_thd != NULL) {
- row->trx_mysql_thread_id
- = thd_get_thread_id(trx->mysql_thd);
- } else {
+ if (trx->mysql_thd == NULL) {
/* For internal transactions e.g., purge and transactions
being recovered at startup there is no associated MySQL
thread data structure. */
row->trx_mysql_thread_id = 0;
+ row->trx_query = NULL;
+ return(TRUE);
}
- if (trx->mysql_query_str != NULL && *trx->mysql_query_str != NULL) {
+ row->trx_mysql_thread_id = thd_get_thread_id(trx->mysql_thd);
+ stmt = innobase_get_stmt(trx->mysql_thd, &stmt_len);
- if (strlen(*trx->mysql_query_str)
- > TRX_I_S_TRX_QUERY_MAX_LEN) {
+ if (stmt != NULL) {
- char query[TRX_I_S_TRX_QUERY_MAX_LEN + 1];
+ char query[TRX_I_S_TRX_QUERY_MAX_LEN + 1];
- memcpy(query, *trx->mysql_query_str,
- TRX_I_S_TRX_QUERY_MAX_LEN);
- query[TRX_I_S_TRX_QUERY_MAX_LEN] = '\0';
+ if (stmt_len > TRX_I_S_TRX_QUERY_MAX_LEN) {
+ stmt_len = TRX_I_S_TRX_QUERY_MAX_LEN;
+ }
- row->trx_query = ha_storage_put_memlim(
- cache->storage, query,
- TRX_I_S_TRX_QUERY_MAX_LEN + 1,
- MAX_ALLOWED_FOR_STORAGE(cache));
- } else {
+ memcpy(query, stmt, stmt_len);
+ query[stmt_len] = '\0';
- row->trx_query = ha_storage_put_str_memlim(
- cache->storage, *trx->mysql_query_str,
- MAX_ALLOWED_FOR_STORAGE(cache));
- }
+ row->trx_query = ha_storage_put_memlim(
+ cache->storage, stmt, stmt_len + 1,
+ MAX_ALLOWED_FOR_STORAGE(cache));
if (row->trx_query == NULL) {
diff --git a/storage/xtradb/trx/trx0purge.c b/storage/xtradb/trx/trx0purge.c
index 41e16b35e85..1c317665878 100644
--- a/storage/xtradb/trx/trx0purge.c
+++ b/storage/xtradb/trx/trx0purge.c
@@ -1148,8 +1148,7 @@ trx_purge(void)
/* If we cannot advance the 'purge view' because of an old
'consistent read view', then the DML statements cannot be delayed.
Also, srv_max_purge_lag <= 0 means 'infinity'. */
- if (srv_max_purge_lag > 0
- && !UT_LIST_GET_LAST(trx_sys->view_list)) {
+ if (srv_max_purge_lag > 0) {
float ratio = (float) trx_sys->rseg_history_len
/ srv_max_purge_lag;
if (ratio > ULINT_MAX / 10000) {
diff --git a/storage/xtradb/trx/trx0rec.c b/storage/xtradb/trx/trx0rec.c
index 5097cf18dcd..f50e10ed756 100644
--- a/storage/xtradb/trx/trx0rec.c
+++ b/storage/xtradb/trx/trx0rec.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -350,8 +350,13 @@ trx_undo_rec_get_col_val(
ut_ad(*orig_len >= BTR_EXTERN_FIELD_REF_SIZE);
ut_ad(*len > *orig_len);
- ut_ad(*len >= REC_MAX_INDEX_COL_LEN
+ /* @see dtuple_convert_big_rec() */
+ ut_ad(*len >= BTR_EXTERN_FIELD_REF_SIZE * 2);
+ /* we do not have access to index->table here
+ ut_ad(dict_table_get_format(index->table) >= DICT_TF_FORMAT_ZIP
+ || *len >= REC_MAX_INDEX_COL_LEN
+ BTR_EXTERN_FIELD_REF_SIZE);
+ */
*len += UNIV_EXTERN_STORAGE_FIELD;
break;
@@ -977,6 +982,7 @@ trx_undo_update_rec_get_update(
fprintf(stderr, "\n"
"InnoDB: n_fields = %lu, i = %lu, ptr %p\n",
(ulong) n_fields, (ulong) i, ptr);
+ *upd = NULL;
return(NULL);
}
@@ -1074,11 +1080,15 @@ trx_undo_rec_get_partial_row(
/* If the prefix of this column is indexed,
ensure that enough prefix is stored in the
undo log record. */
- ut_a(ignore_prefix
- || !col->ord_part
- || dfield_get_len(dfield)
- >= REC_MAX_INDEX_COL_LEN
- + BTR_EXTERN_FIELD_REF_SIZE);
+ if (!ignore_prefix && col->ord_part) {
+ ut_a(dfield_get_len(dfield)
+ >= 2 * BTR_EXTERN_FIELD_REF_SIZE);
+ ut_a(dict_table_get_format(index->table)
+ >= DICT_TF_FORMAT_ZIP
+ || dfield_get_len(dfield)
+ >= REC_MAX_INDEX_COL_LEN
+ + BTR_EXTERN_FIELD_REF_SIZE);
+ }
}
}
diff --git a/storage/xtradb/trx/trx0rseg.c b/storage/xtradb/trx/trx0rseg.c
index 8d754788e2a..57b5611d624 100644
--- a/storage/xtradb/trx/trx0rseg.c
+++ b/storage/xtradb/trx/trx0rseg.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
diff --git a/storage/xtradb/trx/trx0sys.c b/storage/xtradb/trx/trx0sys.c
index 8ea34a8c81c..ad4471ada0b 100644
--- a/storage/xtradb/trx/trx0sys.c
+++ b/storage/xtradb/trx/trx0sys.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -402,6 +402,149 @@ start_again:
goto start_again;
}
+
+ if (srv_doublewrite_file) {
+ /* the same doublewrite buffer to TRX_SYS_SPACE should exist.
+ check and create if not exist.*/
+
+ mtr_start(&mtr);
+ trx_doublewrite_buf_is_being_created = TRUE;
+
+ block = buf_page_get(TRX_DOUBLEWRITE_SPACE, 0, TRX_SYS_PAGE_NO,
+ RW_X_LATCH, &mtr);
+ buf_block_dbg_add_level(block, SYNC_NO_ORDER_CHECK);
+
+ doublewrite = buf_block_get_frame(block) + TRX_SYS_DOUBLEWRITE;
+
+ if (mach_read_from_4(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC)
+ == TRX_SYS_DOUBLEWRITE_MAGIC_N) {
+ /* The doublewrite buffer has already been created:
+ just read in some numbers */
+
+ mtr_commit(&mtr);
+ } else {
+ fprintf(stderr,
+ "InnoDB: Doublewrite buffer not found in the doublewrite file:"
+ " creating new\n");
+
+ if (buf_pool_get_curr_size()
+ < ((2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
+ + FSP_EXTENT_SIZE / 2 + 100)
+ * UNIV_PAGE_SIZE)) {
+ fprintf(stderr,
+ "InnoDB: Cannot create doublewrite buffer:"
+ " you must\n"
+ "InnoDB: increase your buffer pool size.\n"
+ "InnoDB: Cannot continue operation.\n");
+
+ exit(1);
+ }
+
+ block2 = fseg_create(TRX_DOUBLEWRITE_SPACE, TRX_SYS_PAGE_NO,
+ TRX_SYS_DOUBLEWRITE
+ + TRX_SYS_DOUBLEWRITE_FSEG, &mtr);
+
+ /* fseg_create acquires a second latch on the page,
+ therefore we must declare it: */
+
+ buf_block_dbg_add_level(block2, SYNC_NO_ORDER_CHECK);
+
+ if (block2 == NULL) {
+ fprintf(stderr,
+ "InnoDB: Cannot create doublewrite buffer:"
+ " you must\n"
+ "InnoDB: increase your tablespace size.\n"
+ "InnoDB: Cannot continue operation.\n");
+
+ /* We exit without committing the mtr to prevent
+ its modifications to the database getting to disk */
+
+ exit(1);
+ }
+
+ fseg_header = buf_block_get_frame(block)
+ + TRX_SYS_DOUBLEWRITE + TRX_SYS_DOUBLEWRITE_FSEG;
+ prev_page_no = 0;
+
+ for (i = 0; i < 2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE
+ + FSP_EXTENT_SIZE / 2; i++) {
+ page_no = fseg_alloc_free_page(fseg_header,
+ prev_page_no + 1,
+ FSP_UP, &mtr);
+ if (page_no == FIL_NULL) {
+ fprintf(stderr,
+ "InnoDB: Cannot create doublewrite"
+ " buffer: you must\n"
+ "InnoDB: increase your"
+ " tablespace size.\n"
+ "InnoDB: Cannot continue operation.\n"
+ );
+
+ exit(1);
+ }
+
+ /* We read the allocated pages to the buffer pool;
+ when they are written to disk in a flush, the space
+ id and page number fields are also written to the
+ pages. When we at database startup read pages
+ from the doublewrite buffer, we know that if the
+ space id and page number in them are the same as
+ the page position in the tablespace, then the page
+ has not been written to in doublewrite. */
+
+ new_block = buf_page_get(TRX_DOUBLEWRITE_SPACE, 0, page_no,
+ RW_X_LATCH, &mtr);
+ buf_block_dbg_add_level(new_block,
+ SYNC_NO_ORDER_CHECK);
+
+ if (i == FSP_EXTENT_SIZE / 2) {
+ ut_a(page_no == FSP_EXTENT_SIZE);
+ mlog_write_ulint(doublewrite
+ + TRX_SYS_DOUBLEWRITE_BLOCK1,
+ page_no, MLOG_4BYTES, &mtr);
+ mlog_write_ulint(doublewrite
+ + TRX_SYS_DOUBLEWRITE_REPEAT
+ + TRX_SYS_DOUBLEWRITE_BLOCK1,
+ page_no, MLOG_4BYTES, &mtr);
+ } else if (i == FSP_EXTENT_SIZE / 2
+ + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE) {
+ ut_a(page_no == 2 * FSP_EXTENT_SIZE);
+ mlog_write_ulint(doublewrite
+ + TRX_SYS_DOUBLEWRITE_BLOCK2,
+ page_no, MLOG_4BYTES, &mtr);
+ mlog_write_ulint(doublewrite
+ + TRX_SYS_DOUBLEWRITE_REPEAT
+ + TRX_SYS_DOUBLEWRITE_BLOCK2,
+ page_no, MLOG_4BYTES, &mtr);
+ } else if (i > FSP_EXTENT_SIZE / 2) {
+ ut_a(page_no == prev_page_no + 1);
+ }
+
+ prev_page_no = page_no;
+ }
+
+ mlog_write_ulint(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC,
+ TRX_SYS_DOUBLEWRITE_MAGIC_N,
+ MLOG_4BYTES, &mtr);
+ mlog_write_ulint(doublewrite + TRX_SYS_DOUBLEWRITE_MAGIC
+ + TRX_SYS_DOUBLEWRITE_REPEAT,
+ TRX_SYS_DOUBLEWRITE_MAGIC_N,
+ MLOG_4BYTES, &mtr);
+
+ mlog_write_ulint(doublewrite
+ + TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED,
+ TRX_SYS_DOUBLEWRITE_SPACE_ID_STORED_N,
+ MLOG_4BYTES, &mtr);
+ mtr_commit(&mtr);
+
+ /* Flush the modified pages to disk and make a checkpoint */
+ log_make_checkpoint_at(IB_ULONGLONG_MAX, TRUE);
+
+ fprintf(stderr, "InnoDB: Doublewrite buffer created in the doublewrite file\n");
+ }
+
+ trx_doublewrite_buf_is_being_created = FALSE;
+ }
}
/****************************************************************//**
@@ -425,10 +568,19 @@ trx_sys_doublewrite_init_or_restore_pages(
ulint source_page_no;
byte* page;
byte* doublewrite;
+ ulint doublewrite_space_id;
ulint space_id;
ulint page_no;
ulint i;
+ doublewrite_space_id = (srv_doublewrite_file ? TRX_DOUBLEWRITE_SPACE : TRX_SYS_SPACE);
+
+ if (srv_doublewrite_file) {
+ fprintf(stderr,
+ "InnoDB: doublewrite file '%s' is used.\n",
+ srv_doublewrite_file);
+ }
+
/* We do the file i/o past the buffer pool */
unaligned_read_buf = ut_malloc(2 * UNIV_PAGE_SIZE);
@@ -437,7 +589,7 @@ trx_sys_doublewrite_init_or_restore_pages(
/* Read the trx sys header to check if we are using the doublewrite
buffer */
- fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, TRX_SYS_PAGE_NO, 0,
+ fil_io(OS_FILE_READ, TRUE, doublewrite_space_id, 0, TRX_SYS_PAGE_NO, 0,
UNIV_PAGE_SIZE, read_buf, NULL);
doublewrite = read_buf + TRX_SYS_DOUBLEWRITE;
@@ -475,10 +627,10 @@ trx_sys_doublewrite_init_or_restore_pages(
/* Read the pages from the doublewrite buffer to memory */
- fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, block1, 0,
+ fil_io(OS_FILE_READ, TRUE, doublewrite_space_id, 0, block1, 0,
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE,
buf, NULL);
- fil_io(OS_FILE_READ, TRUE, TRX_SYS_SPACE, 0, block2, 0,
+ fil_io(OS_FILE_READ, TRUE, doublewrite_space_id, 0, block2, 0,
TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE,
buf + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE * UNIV_PAGE_SIZE,
NULL);
@@ -534,7 +686,8 @@ trx_sys_doublewrite_init_or_restore_pages(
" doublewrite buf.\n",
(ulong) space_id, (ulong) page_no, (ulong) i);
- } else if (space_id == TRX_SYS_SPACE
+ } else if ((space_id == TRX_SYS_SPACE
+ || (srv_doublewrite_file && space_id == TRX_DOUBLEWRITE_SPACE))
&& ((page_no >= block1
&& page_no
< block1 + TRX_SYS_DOUBLEWRITE_BLOCK_SIZE)
@@ -594,8 +747,8 @@ trx_sys_doublewrite_init_or_restore_pages(
" recover the database"
" with the my.cnf\n"
"InnoDB: option:\n"
- "InnoDB: set-variable="
- "innodb_force_recovery=6\n");
+ "InnoDB:"
+ " innodb_force_recovery=6\n");
exit(1);
}
@@ -687,13 +840,13 @@ UNIV_INTERN
void
trx_sys_update_mysql_binlog_offset(
/*===============================*/
+ trx_sysf_t* sys_header,
const char* file_name_in,/*!< in: MySQL log file name */
ib_int64_t offset, /*!< in: position in that log file */
ulint field, /*!< in: offset of the MySQL log info field in
the trx sys header */
mtr_t* mtr) /*!< in: mtr */
{
- trx_sysf_t* sys_header;
const char* file_name;
if (ut_strlen(file_name_in) >= TRX_SYS_MYSQL_MASTER_LOG_NAME_LEN) {
@@ -707,8 +860,6 @@ trx_sys_update_mysql_binlog_offset(
file_name = file_name_in;
}
- sys_header = trx_sysf_get(mtr);
-
if (mach_read_from_4(sys_header + field
+ TRX_SYS_MYSQL_LOG_MAGIC_N_FLD)
!= TRX_SYS_MYSQL_LOG_MAGIC_N) {
@@ -982,6 +1133,83 @@ trx_sysf_create(
}
/*****************************************************************//**
+Creates dummy of the file page for the transaction system. */
+static
+void
+trx_sysf_dummy_create(
+/*==================*/
+ ulint space,
+ mtr_t* mtr)
+{
+ buf_block_t* block;
+ page_t* page;
+
+ ut_ad(mtr);
+
+ /* Note that below we first reserve the file space x-latch, and
+ then enter the kernel: we must do it in this order to conform
+ to the latching order rules. */
+
+ mtr_x_lock(fil_space_get_latch(space, NULL), mtr);
+ mutex_enter(&kernel_mutex);
+
+ /* Create the trx sys file block in a new allocated file segment */
+ block = fseg_create(space, 0, TRX_SYS + TRX_SYS_FSEG_HEADER,
+ mtr);
+ buf_block_dbg_add_level(block, SYNC_TRX_SYS_HEADER);
+
+ fprintf(stderr, "%lu\n", buf_block_get_page_no(block));
+ ut_a(buf_block_get_page_no(block) == TRX_SYS_PAGE_NO);
+
+ page = buf_block_get_frame(block);
+
+ mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_TYPE_TRX_SYS,
+ MLOG_2BYTES, mtr);
+
+ /* Reset the doublewrite buffer magic number to zero so that we
+ know that the doublewrite buffer has not yet been created (this
+ suppresses a Valgrind warning) */
+
+ mlog_write_ulint(page + TRX_SYS_DOUBLEWRITE
+ + TRX_SYS_DOUBLEWRITE_MAGIC, 0, MLOG_4BYTES, mtr);
+
+#ifdef UNDEFINED
+ /* TODO: REMOVE IT: The bellow is not needed, I think */
+ sys_header = trx_sysf_get(mtr);
+
+ /* Start counting transaction ids from number 1 up */
+ mlog_write_dulint(sys_header + TRX_SYS_TRX_ID_STORE,
+ ut_dulint_create(0, 1), mtr);
+
+ /* Reset the rollback segment slots */
+ for (i = 0; i < TRX_SYS_N_RSEGS; i++) {
+
+ trx_sysf_rseg_set_space(sys_header, i, ULINT_UNDEFINED, mtr);
+ trx_sysf_rseg_set_page_no(sys_header, i, FIL_NULL, mtr);
+ }
+
+ /* The remaining area (up to the page trailer) is uninitialized.
+ Silence Valgrind warnings about it. */
+ UNIV_MEM_VALID(sys_header + (TRX_SYS_RSEGS
+ + TRX_SYS_N_RSEGS * TRX_SYS_RSEG_SLOT_SIZE
+ + TRX_SYS_RSEG_SPACE),
+ (UNIV_PAGE_SIZE - FIL_PAGE_DATA_END
+ - (TRX_SYS_RSEGS
+ + TRX_SYS_N_RSEGS * TRX_SYS_RSEG_SLOT_SIZE
+ + TRX_SYS_RSEG_SPACE))
+ + page - sys_header);
+
+ /* Create the first rollback segment in the SYSTEM tablespace */
+ page_no = trx_rseg_header_create(space, 0, ULINT_MAX, &slot_no,
+ mtr);
+ ut_a(slot_no == TRX_SYS_SYSTEM_RSEG_ID);
+ ut_a(page_no != FIL_NULL);
+#endif
+
+ mutex_exit(&kernel_mutex);
+}
+
+/*****************************************************************//**
Creates and initializes the central memory structures for the transaction
system. This is called when the database is started. */
UNIV_INTERN
@@ -1087,6 +1315,26 @@ trx_sys_create(void)
trx_sys_init_at_db_start();
}
+/*****************************************************************//**
+Creates and initializes the dummy transaction system page for tablespace. */
+UNIV_INTERN
+void
+trx_sys_dummy_create(
+/*=================*/
+ ulint space)
+{
+ mtr_t mtr;
+
+ /* This function is only for doublewrite file for now */
+ ut_a(space == TRX_DOUBLEWRITE_SPACE);
+
+ mtr_start(&mtr);
+
+ trx_sysf_dummy_create(space, &mtr);
+
+ mtr_commit(&mtr);
+}
+
/*********************************************************************
Create extra rollback segments when create_new_db */
UNIV_INTERN
@@ -1608,6 +1856,7 @@ trx_sys_file_format_id_to_name(
#endif /* !UNIV_HOTBACKUP */
+#ifndef UNIV_HOTBACKUP
/*********************************************************************
Shutdown/Close the transaction system. */
UNIV_INTERN
@@ -1684,3 +1933,4 @@ trx_sys_close(void)
trx_sys = NULL;
mutex_exit(&kernel_mutex);
}
+#endif /* !UNIV_HOTBACKUP */
diff --git a/storage/xtradb/trx/trx0trx.c b/storage/xtradb/trx/trx0trx.c
index e81daf4cad9..9584f0c4c46 100644
--- a/storage/xtradb/trx/trx0trx.c
+++ b/storage/xtradb/trx/trx0trx.c
@@ -1,6 +1,6 @@
/*****************************************************************************
-Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
+Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
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
@@ -109,6 +109,8 @@ trx_create(
trx->support_xa = TRUE;
+ trx->flush_log_at_trx_commit_session = 3; /* means to use innodb_flush_log_at_trx_commit value */
+
trx->check_foreigns = TRUE;
trx->check_unique_secondary = TRUE;
@@ -119,7 +121,6 @@ trx_create(
trx->table_id = ut_dulint_zero;
trx->mysql_thd = NULL;
- trx->mysql_query_str = NULL;
trx->active_trans = 0;
trx->duplicates = 0;
@@ -455,6 +456,7 @@ trx_lists_init_at_db_start(void)
trx_undo_t* undo;
trx_t* trx;
+ ut_ad(mutex_own(&kernel_mutex));
UT_LIST_INIT(trx_sys->trx_list);
/* Look from the rollback segments if there exist undo logs for
@@ -735,6 +737,9 @@ trx_start(
generated by the same transaction, doesn't. */
trx->support_xa = thd_supports_xa(trx->mysql_thd);
+ trx->flush_log_at_trx_commit_session =
+ thd_flush_log_at_trx_commit_session(trx->mysql_thd);
+
mutex_enter(&kernel_mutex);
ret = trx_start_low(trx, rseg_id);
@@ -757,6 +762,7 @@ trx_commit_off_kernel(
trx_rseg_t* rseg;
trx_undo_t* undo;
mtr_t mtr;
+ trx_sysf_t* sys_header = NULL;
ut_ad(mutex_own(&kernel_mutex));
@@ -814,7 +820,11 @@ trx_commit_off_kernel(
if (trx->mysql_log_file_name
&& trx->mysql_log_file_name[0] != '\0') {
+ if (!sys_header) {
+ sys_header = trx_sysf_get(&mtr);
+ }
trx_sys_update_mysql_binlog_offset(
+ sys_header,
trx->mysql_log_file_name,
trx->mysql_log_offset,
TRX_SYS_MYSQL_LOG_INFO, &mtr);
@@ -823,11 +833,16 @@ trx_commit_off_kernel(
if (trx->mysql_master_log_file_name[0] != '\0') {
/* This database server is a MySQL replication slave */
+ if (!sys_header) {
+ sys_header = trx_sysf_get(&mtr);
+ }
trx_sys_update_mysql_binlog_offset(
+ sys_header,
trx->mysql_relay_log_file_name,
trx->mysql_relay_log_pos,
TRX_SYS_MYSQL_RELAY_LOG_INFO, &mtr);
trx_sys_update_mysql_binlog_offset(
+ sys_header,
trx->mysql_master_log_file_name,
trx->mysql_master_log_pos,
TRX_SYS_MYSQL_MASTER_LOG_INFO, &mtr);
@@ -885,7 +900,7 @@ trx_commit_off_kernel(
recovery i.e.: back ground rollback thread is still active
then there is a chance that the rollback thread may see
this trx as COMMITTED_IN_MEMORY and goes adhead to clean it
- up calling trx_cleanup_at_db_startup(). This can happen
+ up calling trx_cleanup_at_db_startup(). This can happen
in the case we are committing a trx here that is left in
PREPARED state during the crash. Note that commit of the
rollback of a PREPARED trx happens in the recovery thread
@@ -906,6 +921,7 @@ trx_commit_off_kernel(
trx->read_view = NULL;
if (lsn) {
+ ulint flush_log_at_trx_commit;
mutex_exit(&kernel_mutex);
@@ -914,6 +930,12 @@ trx_commit_off_kernel(
trx_undo_insert_cleanup(trx);
}
+ if (trx->flush_log_at_trx_commit_session == 3) {
+ flush_log_at_trx_commit = srv_flush_log_at_trx_commit;
+ } else {
+ flush_log_at_trx_commit = trx->flush_log_at_trx_commit_session;
+ }
+
/* NOTE that we could possibly make a group commit more
efficient here: call os_thread_yield here to allow also other
trxs to come to commit! */
@@ -945,9 +967,9 @@ trx_commit_off_kernel(
if (trx->flush_log_later) {
/* Do nothing yet */
trx->must_flush_log_later = TRUE;
- } else if (srv_flush_log_at_trx_commit == 0) {
+ } else if (flush_log_at_trx_commit == 0) {
/* Do nothing */
- } else if (srv_flush_log_at_trx_commit == 1) {
+ } else if (flush_log_at_trx_commit == 1) {
if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) {
/* Write the log but do not flush it to disk */
@@ -959,7 +981,7 @@ trx_commit_off_kernel(
log_write_up_to(lsn, LOG_WAIT_ONE_GROUP, TRUE);
}
- } else if (srv_flush_log_at_trx_commit == 2) {
+ } else if (flush_log_at_trx_commit == 2) {
/* Write the log but do not flush it to disk */
@@ -982,7 +1004,6 @@ trx_commit_off_kernel(
trx->rseg = NULL;
trx->undo_no = ut_dulint_zero;
trx->last_sql_stat_start.least_undo_no = ut_dulint_zero;
- trx->mysql_query_str = NULL;
ut_ad(UT_LIST_GET_LEN(trx->wait_thrs) == 0);
ut_ad(UT_LIST_GET_LEN(trx->trx_locks) == 0);
@@ -1640,16 +1661,23 @@ trx_commit_complete_for_mysql(
trx_t* trx) /*!< in: trx handle */
{
ib_uint64_t lsn = trx->commit_lsn;
+ ulint flush_log_at_trx_commit;
ut_a(trx);
trx->op_info = "flushing log";
+ if (trx->flush_log_at_trx_commit_session == 3) {
+ flush_log_at_trx_commit = srv_flush_log_at_trx_commit;
+ } else {
+ flush_log_at_trx_commit = trx->flush_log_at_trx_commit_session;
+ }
+
if (!trx->must_flush_log_later) {
/* Do nothing */
- } else if (srv_flush_log_at_trx_commit == 0) {
+ } else if (flush_log_at_trx_commit == 0) {
/* Do nothing */
- } else if (srv_flush_log_at_trx_commit == 1) {
+ } else if (flush_log_at_trx_commit == 1) {
if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) {
/* Write the log but do not flush it to disk */
@@ -1660,7 +1688,7 @@ trx_commit_complete_for_mysql(
log_write_up_to(lsn, LOG_WAIT_ONE_GROUP, TRUE);
}
- } else if (srv_flush_log_at_trx_commit == 2) {
+ } else if (flush_log_at_trx_commit == 2) {
/* Write the log but do not flush it to disk */
@@ -1921,6 +1949,8 @@ trx_prepare_off_kernel(
/*--------------------------------------*/
if (lsn) {
+ ulint flush_log_at_trx_commit;
+
/* Depending on the my.cnf options, we may now write the log
buffer to the log files, making the prepared state of the
transaction durable if the OS does not crash. We may also
@@ -1940,9 +1970,15 @@ trx_prepare_off_kernel(
mutex_exit(&kernel_mutex);
- if (srv_flush_log_at_trx_commit == 0) {
+ if (trx->flush_log_at_trx_commit_session == 3) {
+ flush_log_at_trx_commit = srv_flush_log_at_trx_commit;
+ } else {
+ flush_log_at_trx_commit = trx->flush_log_at_trx_commit_session;
+ }
+
+ if (flush_log_at_trx_commit == 0) {
/* Do nothing */
- } else if (srv_flush_log_at_trx_commit == 1) {
+ } else if (flush_log_at_trx_commit == 1) {
if (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) {
/* Write the log but do not flush it to disk */
@@ -1954,7 +1990,7 @@ trx_prepare_off_kernel(
log_write_up_to(lsn, LOG_WAIT_ONE_GROUP, TRUE);
}
- } else if (srv_flush_log_at_trx_commit == 2) {
+ } else if (flush_log_at_trx_commit == 2) {
/* Write the log but do not flush it to disk */
diff --git a/storage/xtradb/ut/ut0auxconf_atomic_pthread_t_gcc.c b/storage/xtradb/ut/ut0auxconf_atomic_pthread_t_gcc.c
deleted file mode 100644
index 30de5aa6f17..00000000000
--- a/storage/xtradb/ut/ut0auxconf_atomic_pthread_t_gcc.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-
-/*****************************************************************************
-If this program compiles, then pthread_t objects can be used as arguments
-to GCC atomic builtin functions.
-
-Created March 5, 2009 Vasil Dimov
-*****************************************************************************/
-
-#include <pthread.h>
-#include <string.h>
-
-int
-main(int argc, char** argv)
-{
- pthread_t x1;
- pthread_t x2;
- pthread_t x3;
-
- memset(&x1, 0x0, sizeof(x1));
- memset(&x2, 0x0, sizeof(x2));
- memset(&x3, 0x0, sizeof(x3));
-
- __sync_bool_compare_and_swap(&x1, x2, x3);
-
- return(0);
-}
diff --git a/storage/xtradb/ut/ut0auxconf_atomic_pthread_t_solaris.c b/storage/xtradb/ut/ut0auxconf_atomic_pthread_t_solaris.c
deleted file mode 100644
index 310603c7503..00000000000
--- a/storage/xtradb/ut/ut0auxconf_atomic_pthread_t_solaris.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-
-/*****************************************************************************
-If this program compiles and returns 0, then pthread_t objects can be used as
-arguments to Solaris libc atomic functions.
-
-Created April 18, 2009 Vasil Dimov
-*****************************************************************************/
-
-#include <pthread.h>
-#include <string.h>
-
-int
-main(int argc, char** argv)
-{
- pthread_t x1;
- pthread_t x2;
- pthread_t x3;
-
- memset(&x1, 0x0, sizeof(x1));
- memset(&x2, 0x0, sizeof(x2));
- memset(&x3, 0x0, sizeof(x3));
-
- if (sizeof(pthread_t) == 4) {
-
- atomic_cas_32(&x1, x2, x3);
-
- } else if (sizeof(pthread_t) == 8) {
-
- atomic_cas_64(&x1, x2, x3);
-
- } else {
-
- return(1);
- }
-
- return(0);
-}
diff --git a/storage/xtradb/ut/ut0auxconf_have_gcc_atomics.c b/storage/xtradb/ut/ut0auxconf_have_gcc_atomics.c
deleted file mode 100644
index da5c13d7d79..00000000000
--- a/storage/xtradb/ut/ut0auxconf_have_gcc_atomics.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-
-/*****************************************************************************
-If this program compiles and returns 0, then GCC atomic funcions are available.
-
-Created September 12, 2009 Vasil Dimov
-*****************************************************************************/
-
-int
-main(int argc, char** argv)
-{
- long x;
- long y;
- long res;
- char c;
-
- x = 10;
- y = 123;
- res = __sync_bool_compare_and_swap(&x, x, y);
- if (!res || x != y) {
- return(1);
- }
-
- x = 10;
- y = 123;
- res = __sync_bool_compare_and_swap(&x, x + 1, y);
- if (res || x != 10) {
- return(1);
- }
-
- x = 10;
- y = 123;
- res = __sync_add_and_fetch(&x, y);
- if (res != 123 + 10 || x != 123 + 10) {
- return(1);
- }
-
- c = 10;
- res = __sync_lock_test_and_set(&c, 123);
- if (res != 10 || c != 123) {
- return(1);
- }
-
- return(0);
-}
diff --git a/storage/xtradb/ut/ut0auxconf_have_solaris_atomics.c b/storage/xtradb/ut/ut0auxconf_have_solaris_atomics.c
deleted file mode 100644
index 7eb704edd4b..00000000000
--- a/storage/xtradb/ut/ut0auxconf_have_solaris_atomics.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-
-/*****************************************************************************
-If this program compiles, then Solaris libc atomic funcions are available.
-
-Created April 18, 2009 Vasil Dimov
-*****************************************************************************/
-#include <atomic.h>
-
-int
-main(int argc, char** argv)
-{
- ulong_t ulong = 0;
- uint32_t uint32 = 0;
- uint64_t uint64 = 0;
-
- atomic_cas_ulong(&ulong, 0, 1);
- atomic_cas_32(&uint32, 0, 1);
- atomic_cas_64(&uint64, 0, 1);
- atomic_add_long(&ulong, 0);
-
- return(0);
-}
diff --git a/storage/xtradb/ut/ut0auxconf_pause.c b/storage/xtradb/ut/ut0auxconf_pause.c
deleted file mode 100644
index 54d63bdd9bc..00000000000
--- a/storage/xtradb/ut/ut0auxconf_pause.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-
-/*****************************************************************************
-If this program compiles and can be run and returns 0, then the pause
-instruction is available.
-
-Created Jul 21, 2009 Vasil Dimov
-*****************************************************************************/
-
-int
-main(int argc, char** argv)
-{
- __asm__ __volatile__ ("pause");
-
- return(0);
-}
diff --git a/storage/xtradb/ut/ut0auxconf_sizeof_pthread_t.c b/storage/xtradb/ut/ut0auxconf_sizeof_pthread_t.c
deleted file mode 100644
index 96add4526ef..00000000000
--- a/storage/xtradb/ut/ut0auxconf_sizeof_pthread_t.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*****************************************************************************
-
-Copyright (c) 2009, Innobase Oy. All Rights Reserved.
-
-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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-*****************************************************************************/
-
-/*****************************************************************************
-This program should compile and when run, print a single line like:
-#define SIZEOF_PTHREAD_T %d
-
-Created April 18, 2009 Vasil Dimov
-*****************************************************************************/
-
-#include <stdio.h>
-#include <pthread.h>
-
-int
-main(int argc, char** argv)
-{
- printf("#define SIZEOF_PTHREAD_T %d\n", (int) sizeof(pthread_t));
-
- return(0);
-}
diff --git a/storage/xtradb/ut/ut0rbt.c b/storage/xtradb/ut/ut0rbt.c
new file mode 100644
index 00000000000..3d7bc91e714
--- /dev/null
+++ b/storage/xtradb/ut/ut0rbt.c
@@ -0,0 +1,1249 @@
+/*****************************************************************************
+
+Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.
+
+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., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+
+*****************************************************************************/
+
+/*******************************************************************//**
+@file ut/ut0rbt.c
+Red-Black tree implementation
+
+Created 2007-03-20 Sunny Bains
+***********************************************************************/
+
+#include "ut0rbt.h"
+
+/************************************************************************
+Definition of a red-black tree
+==============================
+
+A red-black tree is a binary search tree which has the following
+red-black properties:
+
+ 1. Every node is either red or black.
+ 2. Every leaf (NULL - in our case tree->nil) is black.
+ 3. If a node is red, then both its children are black.
+ 4. Every simple path from a node to a descendant leaf contains the
+ same number of black nodes.
+
+ from (3) above, the implication is that on any path from the root
+ to a leaf, red nodes must not be adjacent.
+
+ However, any number of black nodes may appear in a sequence. */
+
+#if defined(IB_RBT_TESTING)
+#warning "Testing enabled!"
+#endif
+
+#define ROOT(t) (t->root->left)
+#define SIZEOF_NODE(t) ((sizeof(ib_rbt_node_t) + t->sizeof_value) - 1)
+
+/****************************************************************//**
+Print out the sub-tree recursively. */
+static
+void
+rbt_print_subtree(
+/*==============*/
+ const ib_rbt_t* tree, /*!< in: tree to traverse */
+ const ib_rbt_node_t* node, /*!< in: node to print */
+ ib_rbt_print_node print) /*!< in: print key function */
+{
+ /* FIXME: Doesn't do anything yet */
+ if (node != tree->nil) {
+ print(node);
+ rbt_print_subtree(tree, node->left, print);
+ rbt_print_subtree(tree, node->right, print);
+ }
+}
+
+/****************************************************************//**
+Verify that the keys are in order.
+@return TRUE of OK. FALSE if not ordered */
+static
+ibool
+rbt_check_ordering(
+/*===============*/
+ const ib_rbt_t* tree) /*!< in: tree to verfify */
+{
+ const ib_rbt_node_t* node;
+ const ib_rbt_node_t* prev = NULL;
+
+ /* Iterate over all the nodes, comparing each node with the prev */
+ for (node = rbt_first(tree); node; node = rbt_next(tree, prev)) {
+
+ if (prev && tree->compare(prev->value, node->value) >= 0) {
+ return(FALSE);
+ }
+
+ prev = node;
+ }
+
+ return(TRUE);
+}
+
+/****************************************************************//**
+Check that every path from the root to the leaves has the same count.
+Count is expressed in the number of black nodes.
+@return 0 on failure else black height of the subtree */
+static
+ibool
+rbt_count_black_nodes(
+/*==================*/
+ const ib_rbt_t* tree, /*!< in: tree to verify */
+ const ib_rbt_node_t* node) /*!< in: start of sub-tree */
+{
+ ulint result;
+
+ if (node != tree->nil) {
+ ulint left_height = rbt_count_black_nodes(tree, node->left);
+
+ ulint right_height = rbt_count_black_nodes(tree, node->right);
+
+ if (left_height == 0
+ || right_height == 0
+ || left_height != right_height) {
+
+ result = 0;
+ } else if (node->color == IB_RBT_RED) {
+
+ /* Case 3 */
+ if (node->left->color != IB_RBT_BLACK
+ || node->right->color != IB_RBT_BLACK) {
+
+ result = 0;
+ } else {
+ result = left_height;
+ }
+ /* Check if it's anything other than RED or BLACK. */
+ } else if (node->color != IB_RBT_BLACK) {
+
+ result = 0;
+ } else {
+
+ result = right_height + 1;
+ }
+ } else {
+ result = 1;
+ }
+
+ return(result);
+}
+
+/****************************************************************//**
+Turn the node's right child's left sub-tree into node's right sub-tree.
+This will also make node's right child it's parent. */
+static
+void
+rbt_rotate_left(
+/*============*/
+ const ib_rbt_node_t* nil, /*!< in: nil node of the tree */
+ ib_rbt_node_t* node) /*!< in: node to rotate */
+{
+ ib_rbt_node_t* right = node->right;
+
+ node->right = right->left;
+
+ if (right->left != nil) {
+ right->left->parent = node;
+ }
+
+ /* Right's new parent was node's parent. */
+ right->parent = node->parent;
+
+ /* Since root's parent is tree->nil and root->parent->left points
+ back to root, we can avoid the check. */
+ if (node == node->parent->left) {
+ /* Node was on the left of its parent. */
+ node->parent->left = right;
+ } else {
+ /* Node must have been on the right. */
+ node->parent->right = right;
+ }
+
+ /* Finally, put node on right's left. */
+ right->left = node;
+ node->parent = right;
+}
+
+/****************************************************************//**
+Turn the node's left child's right sub-tree into node's left sub-tree.
+This also make node's left child it's parent. */
+static
+void
+rbt_rotate_right(
+/*=============*/
+ const ib_rbt_node_t* nil, /*!< in: nil node of tree */
+ ib_rbt_node_t* node) /*!< in: node to rotate */
+{
+ ib_rbt_node_t* left = node->left;
+
+ node->left = left->right;
+
+ if (left->right != nil) {
+ left->right->parent = node;
+ }
+
+ /* Left's new parent was node's parent. */
+ left->parent = node->parent;
+
+ /* Since root's parent is tree->nil and root->parent->left points
+ back to root, we can avoid the check. */
+ if (node == node->parent->right) {
+ /* Node was on the left of its parent. */
+ node->parent->right = left;
+ } else {
+ /* Node must have been on the left. */
+ node->parent->left = left;
+ }
+
+ /* Finally, put node on left's right. */
+ left->right = node;
+ node->parent = left;
+}
+
+/****************************************************************//**
+Append a node to the tree.
+@return inserted node */
+static
+ib_rbt_node_t*
+rbt_tree_add_child(
+/*===============*/
+ const ib_rbt_t* tree, /*!< in: rbt tree */
+ ib_rbt_bound_t* parent, /*!< in: node's parent */
+ ib_rbt_node_t* node) /*!< in: node to add */
+{
+ /* Cast away the const. */
+ ib_rbt_node_t* last = (ib_rbt_node_t*) parent->last;
+
+ if (last == tree->root || parent->result < 0) {
+ last->left = node;
+ } else {
+ /* FIXME: We don't handle duplicates (yet)! */
+ ut_a(parent->result != 0);
+
+ last->right = node;
+ }
+
+ node->parent = last;
+
+ return(node);
+}
+
+/****************************************************************//**
+Generic binary tree insert
+@return inserted node */
+static
+ib_rbt_node_t*
+rbt_tree_insert(
+/*============*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key, /*!< in: key for ordering */
+ ib_rbt_node_t* node) /*!< in: node hold the insert value */
+{
+ ib_rbt_bound_t parent;
+ ib_rbt_node_t* current = ROOT(tree);
+
+ parent.result = 0;
+ parent.last = tree->root;
+
+ /* Regular binary search. */
+ while (current != tree->nil) {
+
+ parent.last = current;
+ parent.result = tree->compare(key, current->value);
+
+ if (parent.result < 0) {
+ current = current->left;
+ } else {
+ current = current->right;
+ }
+ }
+
+ ut_a(current == tree->nil);
+
+ rbt_tree_add_child(tree, &parent, node);
+
+ return(node);
+}
+
+/****************************************************************//**
+Balance a tree after inserting a node. */
+static
+void
+rbt_balance_tree(
+/*=============*/
+ const ib_rbt_t* tree, /*!< in: tree to balance */
+ ib_rbt_node_t* node) /*!< in: node that was inserted */
+{
+ const ib_rbt_node_t* nil = tree->nil;
+ ib_rbt_node_t* parent = node->parent;
+
+ /* Restore the red-black property. */
+ node->color = IB_RBT_RED;
+
+ while (node != ROOT(tree) && parent->color == IB_RBT_RED) {
+ ib_rbt_node_t* grand_parent = parent->parent;
+
+ if (parent == grand_parent->left) {
+ ib_rbt_node_t* uncle = grand_parent->right;
+
+ if (uncle->color == IB_RBT_RED) {
+
+ /* Case 1 - change the colors. */
+ uncle->color = IB_RBT_BLACK;
+ parent->color = IB_RBT_BLACK;
+ grand_parent->color = IB_RBT_RED;
+
+ /* Move node up the tree. */
+ node = grand_parent;
+
+ } else {
+
+ if (node == parent->right) {
+ /* Right is a black node and node is
+ to the right, case 2 - move node
+ up and rotate. */
+ node = parent;
+ rbt_rotate_left(nil, node);
+ }
+
+ grand_parent = node->parent->parent;
+
+ /* Case 3. */
+ node->parent->color = IB_RBT_BLACK;
+ grand_parent->color = IB_RBT_RED;
+
+ rbt_rotate_right(nil, grand_parent);
+ }
+
+ } else {
+ ib_rbt_node_t* uncle = grand_parent->left;
+
+ if (uncle->color == IB_RBT_RED) {
+
+ /* Case 1 - change the colors. */
+ uncle->color = IB_RBT_BLACK;
+ parent->color = IB_RBT_BLACK;
+ grand_parent->color = IB_RBT_RED;
+
+ /* Move node up the tree. */
+ node = grand_parent;
+
+ } else {
+
+ if (node == parent->left) {
+ /* Left is a black node and node is to
+ the right, case 2 - move node up and
+ rotate. */
+ node = parent;
+ rbt_rotate_right(nil, node);
+ }
+
+ grand_parent = node->parent->parent;
+
+ /* Case 3. */
+ node->parent->color = IB_RBT_BLACK;
+ grand_parent->color = IB_RBT_RED;
+
+ rbt_rotate_left(nil, grand_parent);
+ }
+ }
+
+ parent = node->parent;
+ }
+
+ /* Color the root black. */
+ ROOT(tree)->color = IB_RBT_BLACK;
+}
+
+/****************************************************************//**
+Find the given node's successor.
+@return successor node or NULL if no successor */
+static
+ib_rbt_node_t*
+rbt_find_successor(
+/*===============*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* current)/*!< in: this is declared const
+ because it can be called via
+ rbt_next() */
+{
+ const ib_rbt_node_t* nil = tree->nil;
+ ib_rbt_node_t* next = current->right;
+
+ /* Is there a sub-tree to the right that we can follow. */
+ if (next != nil) {
+
+ /* Follow the left most links of the current right child. */
+ while (next->left != nil) {
+ next = next->left;
+ }
+
+ } else { /* We will have to go up the tree to find the successor. */
+ ib_rbt_node_t* parent = current->parent;
+
+ /* Cast away the const. */
+ next = (ib_rbt_node_t*) current;
+
+ while (parent != tree->root && next == parent->right) {
+ next = parent;
+ parent = next->parent;
+ }
+
+ next = (parent == tree->root) ? NULL : parent;
+ }
+
+ return(next);
+}
+
+/****************************************************************//**
+Find the given node's precedecessor.
+@return predecessor node or NULL if no predecesor */
+static
+ib_rbt_node_t*
+rbt_find_predecessor(
+/*=================*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* current) /*!< in: this is declared const
+ because it can be called via
+ rbt_prev() */
+{
+ const ib_rbt_node_t* nil = tree->nil;
+ ib_rbt_node_t* prev = current->left;
+
+ /* Is there a sub-tree to the left that we can follow. */
+ if (prev != nil) {
+
+ /* Follow the right most links of the current left child. */
+ while (prev->right != nil) {
+ prev = prev->right;
+ }
+
+ } else { /* We will have to go up the tree to find the precedecessor. */
+ ib_rbt_node_t* parent = current->parent;
+
+ /* Cast away the const. */
+ prev = (ib_rbt_node_t*)current;
+
+ while (parent != tree->root && prev == parent->left) {
+ prev = parent;
+ parent = prev->parent;
+ }
+
+ prev = (parent == tree->root) ? NULL : parent;
+ }
+
+ return(prev);
+}
+
+/****************************************************************//**
+Replace node with child. After applying transformations eject becomes
+an orphan. */
+static
+void
+rbt_eject_node(
+/*===========*/
+ ib_rbt_node_t* eject, /*!< in: node to eject */
+ ib_rbt_node_t* node) /*!< in: node to replace with */
+{
+ /* Update the to be ejected node's parent's child pointers. */
+ if (eject->parent->left == eject) {
+ eject->parent->left = node;
+ } else if (eject->parent->right == eject) {
+ eject->parent->right = node;
+ } else {
+ ut_a(0);
+ }
+ /* eject is now an orphan but otherwise its pointers
+ and color are left intact. */
+
+ node->parent = eject->parent;
+}
+
+/****************************************************************//**
+Replace a node with another node. */
+static
+void
+rbt_replace_node(
+/*=============*/
+ ib_rbt_node_t* replace, /*!< in: node to replace */
+ ib_rbt_node_t* node) /*!< in: node to replace with */
+{
+ ib_rbt_color_t color = node->color;
+
+ /* Update the node pointers. */
+ node->left = replace->left;
+ node->right = replace->right;
+
+ /* Update the child node pointers. */
+ node->left->parent = node;
+ node->right->parent = node;
+
+ /* Make the parent of replace point to node. */
+ rbt_eject_node(replace, node);
+
+ /* Swap the colors. */
+ node->color = replace->color;
+ replace->color = color;
+}
+
+/****************************************************************//**
+Detach node from the tree replacing it with one of it's children.
+@return the child node that now occupies the position of the detached node */
+static
+ib_rbt_node_t*
+rbt_detach_node(
+/*============*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_node_t* node) /*!< in: node to detach */
+{
+ ib_rbt_node_t* child;
+ const ib_rbt_node_t* nil = tree->nil;
+
+ if (node->left != nil && node->right != nil) {
+ /* Case where the node to be deleted has two children. */
+ ib_rbt_node_t* successor = rbt_find_successor(tree, node);
+
+ ut_a(successor != nil);
+ ut_a(successor->parent != nil);
+ ut_a(successor->left == nil);
+
+ child = successor->right;
+
+ /* Remove the successor node and replace with its child. */
+ rbt_eject_node(successor, child);
+
+ /* Replace the node to delete with its successor node. */
+ rbt_replace_node(node, successor);
+ } else {
+ ut_a(node->left == nil || node->right == nil);
+
+ child = (node->left != nil) ? node->left : node->right;
+
+ /* Replace the node to delete with one of it's children. */
+ rbt_eject_node(node, child);
+ }
+
+ /* Reset the node links. */
+ node->parent = node->right = node->left = tree->nil;
+
+ return(child);
+}
+
+/****************************************************************//**
+Rebalance the right sub-tree after deletion.
+@return node to rebalance if more rebalancing required else NULL */
+static
+ib_rbt_node_t*
+rbt_balance_right(
+/*==============*/
+ const ib_rbt_node_t* nil, /*!< in: rb tree nil node */
+ ib_rbt_node_t* parent, /*!< in: parent node */
+ ib_rbt_node_t* sibling)/*!< in: sibling node */
+{
+ ib_rbt_node_t* node = NULL;
+
+ ut_a(sibling != nil);
+
+ /* Case 3. */
+ if (sibling->color == IB_RBT_RED) {
+
+ parent->color = IB_RBT_RED;
+ sibling->color = IB_RBT_BLACK;
+
+ rbt_rotate_left(nil, parent);
+
+ sibling = parent->right;
+
+ ut_a(sibling != nil);
+ }
+
+ /* Since this will violate case 3 because of the change above. */
+ if (sibling->left->color == IB_RBT_BLACK
+ && sibling->right->color == IB_RBT_BLACK) {
+
+ node = parent; /* Parent needs to be rebalanced too. */
+ sibling->color = IB_RBT_RED;
+
+ } else {
+ if (sibling->right->color == IB_RBT_BLACK) {
+
+ ut_a(sibling->left->color == IB_RBT_RED);
+
+ sibling->color = IB_RBT_RED;
+ sibling->left->color = IB_RBT_BLACK;
+
+ rbt_rotate_right(nil, sibling);
+
+ sibling = parent->right;
+ ut_a(sibling != nil);
+ }
+
+ sibling->color = parent->color;
+ sibling->right->color = IB_RBT_BLACK;
+
+ parent->color = IB_RBT_BLACK;
+
+ rbt_rotate_left(nil, parent);
+ }
+
+ return(node);
+}
+
+/****************************************************************//**
+Rebalance the left sub-tree after deletion.
+@return node to rebalance if more rebalancing required else NULL */
+static
+ib_rbt_node_t*
+rbt_balance_left(
+/*=============*/
+ const ib_rbt_node_t* nil, /*!< in: rb tree nil node */
+ ib_rbt_node_t* parent, /*!< in: parent node */
+ ib_rbt_node_t* sibling)/*!< in: sibling node */
+{
+ ib_rbt_node_t* node = NULL;
+
+ ut_a(sibling != nil);
+
+ /* Case 3. */
+ if (sibling->color == IB_RBT_RED) {
+
+ parent->color = IB_RBT_RED;
+ sibling->color = IB_RBT_BLACK;
+
+ rbt_rotate_right(nil, parent);
+ sibling = parent->left;
+
+ ut_a(sibling != nil);
+ }
+
+ /* Since this will violate case 3 because of the change above. */
+ if (sibling->right->color == IB_RBT_BLACK
+ && sibling->left->color == IB_RBT_BLACK) {
+
+ node = parent; /* Parent needs to be rebalanced too. */
+ sibling->color = IB_RBT_RED;
+
+ } else {
+ if (sibling->left->color == IB_RBT_BLACK) {
+
+ ut_a(sibling->right->color == IB_RBT_RED);
+
+ sibling->color = IB_RBT_RED;
+ sibling->right->color = IB_RBT_BLACK;
+
+ rbt_rotate_left(nil, sibling);
+
+ sibling = parent->left;
+
+ ut_a(sibling != nil);
+ }
+
+ sibling->color = parent->color;
+ sibling->left->color = IB_RBT_BLACK;
+
+ parent->color = IB_RBT_BLACK;
+
+ rbt_rotate_right(nil, parent);
+ }
+
+ return(node);
+}
+
+/****************************************************************//**
+Delete the node and rebalance the tree if necessary */
+static
+void
+rbt_remove_node_and_rebalance(
+/*==========================*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_node_t* node) /*!< in: node to remove */
+{
+ /* Detach node and get the node that will be used
+ as rebalance start. */
+ ib_rbt_node_t* child = rbt_detach_node(tree, node);
+
+ if (node->color == IB_RBT_BLACK) {
+ ib_rbt_node_t* last = child;
+
+ ROOT(tree)->color = IB_RBT_RED;
+
+ while (child && child->color == IB_RBT_BLACK) {
+ ib_rbt_node_t* parent = child->parent;
+
+ /* Did the deletion cause an imbalance in the
+ parents left sub-tree. */
+ if (parent->left == child) {
+
+ child = rbt_balance_right(
+ tree->nil, parent, parent->right);
+
+ } else if (parent->right == child) {
+
+ child = rbt_balance_left(
+ tree->nil, parent, parent->left);
+
+ } else {
+ ut_error;
+ }
+
+ if (child) {
+ last = child;
+ }
+ }
+
+ ut_a(last);
+
+ last->color = IB_RBT_BLACK;
+ ROOT(tree)->color = IB_RBT_BLACK;
+ }
+
+ /* Note that we have removed a node from the tree. */
+ --tree->n_nodes;
+}
+
+/****************************************************************//**
+Recursively free the nodes. */
+static
+void
+rbt_free_node(
+/*==========*/
+ ib_rbt_node_t* node, /*!< in: node to free */
+ ib_rbt_node_t* nil) /*!< in: rb tree nil node */
+{
+ if (node != nil) {
+ rbt_free_node(node->left, nil);
+ rbt_free_node(node->right, nil);
+
+ ut_free(node);
+ }
+}
+
+/****************************************************************//**
+Free all the nodes and free the tree. */
+UNIV_INTERN
+void
+rbt_free(
+/*=====*/
+ ib_rbt_t* tree) /*!< in: rb tree to free */
+{
+ rbt_free_node(tree->root, tree->nil);
+ ut_free(tree->nil);
+ ut_free(tree);
+}
+
+/****************************************************************//**
+Create an instance of a red black tree.
+@return an empty rb tree */
+UNIV_INTERN
+ib_rbt_t*
+rbt_create(
+/*=======*/
+ size_t sizeof_value, /*!< in: sizeof data item */
+ ib_rbt_compare compare) /*!< in: fn to compare items */
+{
+ ib_rbt_t* tree;
+ ib_rbt_node_t* node;
+
+ tree = (ib_rbt_t*) ut_malloc(sizeof(*tree));
+ memset(tree, 0, sizeof(*tree));
+
+ tree->sizeof_value = sizeof_value;
+
+ /* Create the sentinel (NIL) node. */
+ node = tree->nil = (ib_rbt_node_t*) ut_malloc(sizeof(*node));
+ memset(node, 0, sizeof(*node));
+
+ node->color = IB_RBT_BLACK;
+ node->parent = node->left = node->right = node;
+
+ /* Create the "fake" root, the real root node will be the
+ left child of this node. */
+ node = tree->root = (ib_rbt_node_t*) ut_malloc(sizeof(*node));
+ memset(node, 0, sizeof(*node));
+
+ node->color = IB_RBT_BLACK;
+ node->parent = node->left = node->right = tree->nil;
+
+ tree->compare = compare;
+
+ return(tree);
+}
+
+/****************************************************************//**
+Generic insert of a value in the rb tree.
+@return inserted node */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_insert(
+/*=======*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key, /*!< in: key for ordering */
+ const void* value) /*!< in: value of key, this value
+ is copied to the node */
+{
+ ib_rbt_node_t* node;
+
+ /* Create the node that will hold the value data. */
+ node = (ib_rbt_node_t*) ut_malloc(SIZEOF_NODE(tree));
+
+ memcpy(node->value, value, tree->sizeof_value);
+ node->parent = node->left = node->right = tree->nil;
+
+ /* Insert in the tree in the usual way. */
+ rbt_tree_insert(tree, key, node);
+ rbt_balance_tree(tree, node);
+
+ ++tree->n_nodes;
+
+ return(node);
+}
+
+/****************************************************************//**
+Add a new node to the tree, useful for data that is pre-sorted.
+@return appended node */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_add_node(
+/*=========*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_bound_t* parent, /*!< in: bounds */
+ const void* value) /*!< in: this value is copied
+ to the node */
+{
+ ib_rbt_node_t* node;
+
+ /* Create the node that will hold the value data */
+ node = (ib_rbt_node_t*) ut_malloc(SIZEOF_NODE(tree));
+
+ memcpy(node->value, value, tree->sizeof_value);
+ node->parent = node->left = node->right = tree->nil;
+
+ /* If tree is empty */
+ if (parent->last == NULL) {
+ parent->last = tree->root;
+ }
+
+ /* Append the node, the hope here is that the caller knows
+ what s/he is doing. */
+ rbt_tree_add_child(tree, parent, node);
+ rbt_balance_tree(tree, node);
+
+ ++tree->n_nodes;
+
+#if defined(IB_RBT_TESTING)
+ ut_a(rbt_validate(tree));
+#endif
+ return(node);
+}
+
+/****************************************************************//**
+Find a matching node in the rb tree.
+@return NULL if not found else the node where key was found */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_lookup(
+/*=======*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key) /*!< in: key to use for search */
+{
+ const ib_rbt_node_t* current = ROOT(tree);
+
+ /* Regular binary search. */
+ while (current != tree->nil) {
+ int result = tree->compare(key, current->value);
+
+ if (result < 0) {
+ current = current->left;
+ } else if (result > 0) {
+ current = current->right;
+ } else {
+ break;
+ }
+ }
+
+ return(current != tree->nil ? current : NULL);
+}
+
+/****************************************************************//**
+Delete a node from the red black tree, identified by key.
+@return TRUE if success FALSE if not found */
+UNIV_INTERN
+ibool
+rbt_delete(
+/*=======*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key) /*!< in: key to delete */
+{
+ ibool deleted = FALSE;
+ ib_rbt_node_t* node = (ib_rbt_node_t*) rbt_lookup(tree, key);
+
+ if (node) {
+ rbt_remove_node_and_rebalance(tree, node);
+
+ ut_free(node);
+ deleted = TRUE;
+ }
+
+ return(deleted);
+}
+
+/****************************************************************//**
+Remove a node from the rb tree, the node is not free'd, that is the
+callers responsibility.
+@return deleted node but without the const */
+UNIV_INTERN
+ib_rbt_node_t*
+rbt_remove_node(
+/*============*/
+ ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* const_node) /*!< in: node to delete, this
+ is a fudge and declared const
+ because the caller can access
+ only const nodes */
+{
+ /* Cast away the const. */
+ rbt_remove_node_and_rebalance(tree, (ib_rbt_node_t*) const_node);
+
+ /* This is to make it easier to do something like this:
+ ut_free(rbt_remove_node(node));
+ */
+
+ return((ib_rbt_node_t*) const_node);
+}
+
+/****************************************************************//**
+Find the node that has the lowest key that is >= key.
+@return node satisfying the lower bound constraint or NULL */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_lower_bound(
+/*============*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key) /*!< in: key to search */
+{
+ ib_rbt_node_t* lb_node = NULL;
+ ib_rbt_node_t* current = ROOT(tree);
+
+ while (current != tree->nil) {
+ int result = tree->compare(key, current->value);
+
+ if (result > 0) {
+
+ current = current->right;
+
+ } else if (result < 0) {
+
+ lb_node = current;
+ current = current->left;
+
+ } else {
+ lb_node = current;
+ break;
+ }
+ }
+
+ return(lb_node);
+}
+
+/****************************************************************//**
+Find the node that has the greatest key that is <= key.
+@return node satisfying the upper bound constraint or NULL */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_upper_bound(
+/*============*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const void* key) /*!< in: key to search */
+{
+ ib_rbt_node_t* ub_node = NULL;
+ ib_rbt_node_t* current = ROOT(tree);
+
+ while (current != tree->nil) {
+ int result = tree->compare(key, current->value);
+
+ if (result > 0) {
+
+ ub_node = current;
+ current = current->right;
+
+ } else if (result < 0) {
+
+ current = current->left;
+
+ } else {
+ ub_node = current;
+ break;
+ }
+ }
+
+ return(ub_node);
+}
+
+/****************************************************************//**
+Find the node that has the greatest key that is <= key.
+@return value of result */
+UNIV_INTERN
+int
+rbt_search(
+/*=======*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_bound_t* parent, /*!< in: search bounds */
+ const void* key) /*!< in: key to search */
+{
+ ib_rbt_node_t* current = ROOT(tree);
+
+ /* Every thing is greater than the NULL root. */
+ parent->result = 1;
+ parent->last = NULL;
+
+ while (current != tree->nil) {
+
+ parent->last = current;
+ parent->result = tree->compare(key, current->value);
+
+ if (parent->result > 0) {
+ current = current->right;
+ } else if (parent->result < 0) {
+ current = current->left;
+ } else {
+ break;
+ }
+ }
+
+ return(parent->result);
+}
+
+/****************************************************************//**
+Find the node that has the greatest key that is <= key. But use the
+supplied comparison function.
+@return value of result */
+UNIV_INTERN
+int
+rbt_search_cmp(
+/*===========*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ ib_rbt_bound_t* parent, /*!< in: search bounds */
+ const void* key, /*!< in: key to search */
+ ib_rbt_compare compare) /*!< in: fn to compare items */
+{
+ ib_rbt_node_t* current = ROOT(tree);
+
+ /* Every thing is greater than the NULL root. */
+ parent->result = 1;
+ parent->last = NULL;
+
+ while (current != tree->nil) {
+
+ parent->last = current;
+ parent->result = compare(key, current->value);
+
+ if (parent->result > 0) {
+ current = current->right;
+ } else if (parent->result < 0) {
+ current = current->left;
+ } else {
+ break;
+ }
+ }
+
+ return(parent->result);
+}
+
+/****************************************************************//**
+Get the leftmost node.
+Return the left most node in the tree. */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_first(
+/*======*/
+ const ib_rbt_t* tree) /* in: rb tree */
+{
+ ib_rbt_node_t* first = NULL;
+ ib_rbt_node_t* current = ROOT(tree);
+
+ while (current != tree->nil) {
+ first = current;
+ current = current->left;
+ }
+
+ return(first);
+}
+
+/****************************************************************//**
+Return the right most node in the tree.
+@return the rightmost node or NULL */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_last(
+/*=====*/
+ const ib_rbt_t* tree) /*!< in: rb tree */
+{
+ ib_rbt_node_t* last = NULL;
+ ib_rbt_node_t* current = ROOT(tree);
+
+ while (current != tree->nil) {
+ last = current;
+ current = current->right;
+ }
+
+ return(last);
+}
+
+/****************************************************************//**
+Return the next node.
+@return node next from current */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_next(
+/*=====*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* current)/*!< in: current node */
+{
+ return(current ? rbt_find_successor(tree, current) : NULL);
+}
+
+/****************************************************************//**
+Return the previous node.
+@return node prev from current */
+UNIV_INTERN
+const ib_rbt_node_t*
+rbt_prev(
+/*=====*/
+ const ib_rbt_t* tree, /*!< in: rb tree */
+ const ib_rbt_node_t* current)/*!< in: current node */
+{
+ return(current ? rbt_find_predecessor(tree, current) : NULL);
+}
+
+/****************************************************************//**
+Reset the tree. Delete all the nodes. */
+UNIV_INTERN
+void
+rbt_clear(
+/*======*/
+ ib_rbt_t* tree) /*!< in: rb tree */
+{
+ rbt_free_node(ROOT(tree), tree->nil);
+
+ tree->n_nodes = 0;
+ tree->root->left = tree->root->right = tree->nil;
+}
+
+/****************************************************************//**
+Merge the node from dst into src. Return the number of nodes merged.
+@return no. of recs merged */
+UNIV_INTERN
+ulint
+rbt_merge_uniq(
+/*===========*/
+ ib_rbt_t* dst, /*!< in: dst rb tree */
+ const ib_rbt_t* src) /*!< in: src rb tree */
+{
+ ib_rbt_bound_t parent;
+ ulint n_merged = 0;
+ const ib_rbt_node_t* src_node = rbt_first(src);
+
+ if (rbt_empty(src) || dst == src) {
+ return(0);
+ }
+
+ for (/* No op */; src_node; src_node = rbt_next(src, src_node)) {
+
+ if (rbt_search(dst, &parent, src_node->value) != 0) {
+ rbt_add_node(dst, &parent, src_node->value);
+ ++n_merged;
+ }
+ }
+
+ return(n_merged);
+}
+
+/****************************************************************//**
+Merge the node from dst into src. Return the number of nodes merged.
+Delete the nodes from src after copying node to dst. As a side effect
+the duplicates will be left untouched in the src.
+@return no. of recs merged */
+UNIV_INTERN
+ulint
+rbt_merge_uniq_destructive(
+/*=======================*/
+ ib_rbt_t* dst, /*!< in: dst rb tree */
+ ib_rbt_t* src) /*!< in: src rb tree */
+{
+ ib_rbt_bound_t parent;
+ ib_rbt_node_t* src_node;
+ ulint old_size = rbt_size(dst);
+
+ if (rbt_empty(src) || dst == src) {
+ return(0);
+ }
+
+ for (src_node = (ib_rbt_node_t*) rbt_first(src); src_node; /* */) {
+ ib_rbt_node_t* prev = src_node;
+
+ src_node = (ib_rbt_node_t*)rbt_next(src, prev);
+
+ /* Skip duplicates. */
+ if (rbt_search(dst, &parent, prev->value) != 0) {
+
+ /* Remove and reset the node but preserve
+ the node (data) value. */
+ rbt_remove_node_and_rebalance(src, prev);
+
+ /* The nil should be taken from the dst tree. */
+ prev->parent = prev->left = prev->right = dst->nil;
+ rbt_tree_add_child(dst, &parent, prev);
+ rbt_balance_tree(dst, prev);
+
+ ++dst->n_nodes;
+ }
+ }
+
+#if defined(IB_RBT_TESTING)
+ ut_a(rbt_validate(dst));
+ ut_a(rbt_validate(src));
+#endif
+ return(rbt_size(dst) - old_size);
+}
+
+/****************************************************************//**
+Check that every path from the root to the leaves has the same count and
+the tree nodes are in order.
+@return TRUE if OK FALSE otherwise */
+UNIV_INTERN
+ibool
+rbt_validate(
+/*=========*/
+ const ib_rbt_t* tree) /*!< in: RB tree to validate */
+{
+ if (rbt_count_black_nodes(tree, ROOT(tree)) > 0) {
+ return(rbt_check_ordering(tree));
+ }
+
+ return(FALSE);
+}
+
+/****************************************************************//**
+Iterate over the tree in depth first order. */
+UNIV_INTERN
+void
+rbt_print(
+/*======*/
+ const ib_rbt_t* tree, /*!< in: tree to traverse */
+ ib_rbt_print_node print) /*!< in: print function */
+{
+ rbt_print_subtree(tree, ROOT(tree), print);
+}
diff --git a/strings/CMakeLists.txt b/strings/CMakeLists.txt
index 5ba1c0e5747..ec9e9a3a3af 100755
--- a/strings/CMakeLists.txt
+++ b/strings/CMakeLists.txt
@@ -18,7 +18,7 @@ SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -DSAFEMALLOC -DSAFE_MUT
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-SET(STRINGS_SOURCES bchange.c bcmp.c bfill.c bmove512.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c
+SET(STRINGS_SOURCES bchange.c bfill.c bmove512.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c
ctype-czech.c ctype-euc_kr.c ctype-eucjpms.c ctype-extra.c ctype-gb2312.c ctype-gbk.c
ctype-latin1.c ctype-mb.c ctype-simple.c ctype-sjis.c ctype-tis620.c ctype-uca.c
ctype-ucs2.c ctype-ujis.c ctype-utf8.c ctype-win1250ch.c ctype.c decimal.c int2str.c
@@ -30,4 +30,6 @@ SET(STRINGS_SOURCES bchange.c bcmp.c bfill.c bmove512.c bmove_upp.c ctype-big5.c
IF(NOT SOURCE_SUBLIBS)
ADD_LIBRARY(strings ${STRINGS_SOURCES})
+
+ INSTALL(TARGETS strings DESTINATION lib/opt COMPONENT runtime) # TODO: Component
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/strings/Makefile.am b/strings/Makefile.am
index 94e24045d03..9b0c1a33250 100644
--- a/strings/Makefile.am
+++ b/strings/Makefile.am
@@ -79,7 +79,3 @@ test_decimal$(EXEEXT): decimal.c $(pkglib_LIBRARIES)
$(CP) $(srcdir)/decimal.c ./test_decimal.c
$(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(pkglib_LIBRARIES)
$(RM) -f ./test_decimal.c
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
-
diff --git a/strings/bzero.c b/strings/bzero.c
index b720de65eed..59c7a19385e 100644
--- a/strings/bzero.c
+++ b/strings/bzero.c
@@ -35,10 +35,10 @@
#if VaxAsm
-static void _bzero64 _A((char *dst,int len));
+static void _bzero64 _A((void *dst,int len));
void bzero(dst, len)
-char *dst;
+void *dst;
uint len;
{
while ((int) len >= 64*K)
@@ -51,7 +51,7 @@ uint len;
}
_bzero64(dst, len)
-char *dst;
+void *dst;
int len;
{
asm("movc5 $0,*4(ap),$0,8(ap),*4(ap)");
@@ -62,7 +62,7 @@ int len;
#if defined(MC68000) && defined(DS90)
void bzero(dst, len)
-char *dst;
+void *dst;
uint len;
{
bfill(dst,len,0); /* This is very optimized ! */
@@ -71,7 +71,7 @@ uint len;
#else
void bzero(dst, len)
-register char *dst;
+register void *dst;
register uint len;
{
while (len-- != 0) *dst++ = 0;
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 4c29886d307..c9450973866 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -377,86 +377,6 @@ static int my_strxfrm_big5(uchar *dest, const uchar *src, int len)
#endif
-/*
-** Calculate min_str and max_str that ranges a LIKE string.
-** Arguments:
-** ptr Pointer to LIKE string.
-** ptr_length Length of LIKE string.
-** escape Escape character in LIKE. (Normally '\').
-** All escape characters should be removed from min_str and max_str
-** res_length Length of min_str and max_str.
-** min_str Smallest case sensitive string that ranges LIKE.
-** Should be space padded to res_length.
-** max_str Largest case sensitive string that ranges LIKE.
-** Normally padded with the biggest character sort value.
-**
-** The function should return 0 if ok and 1 if the LIKE string can't be
-** optimized !
-*/
-
-#define max_sort_char ((char) 255)
-
-static my_bool my_like_range_big5(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,size_t ptr_length,
- pbool escape, pbool w_one, pbool w_many,
- size_t res_length,
- char *min_str, char *max_str,
- size_t *min_length, size_t *max_length)
-{
- const char *end= ptr + ptr_length;
- char *min_org=min_str;
- char *min_end=min_str+res_length;
- size_t charlen= res_length / cs->mbmaxlen;
-
- for (; ptr != end && min_str != min_end && charlen > 0; ptr++, charlen--)
- {
- if (ptr+1 != end && isbig5code(ptr[0],ptr[1]))
- {
- *min_str++= *max_str++ = *ptr++;
- *min_str++= *max_str++ = *ptr;
- continue;
- }
- if (*ptr == escape && ptr+1 != end)
- {
- ptr++; /* Skip escape */
- if (isbig5code(ptr[0], ptr[1]))
- *min_str++= *max_str++ = *ptr++;
- if (min_str < min_end)
- *min_str++= *max_str++= *ptr;
- continue;
- }
- if (*ptr == w_one) /* '_' in SQL */
- {
- *min_str++='\0'; /* This should be min char */
- *max_str++=max_sort_char;
- continue;
- }
- if (*ptr == w_many) /* '%' in SQL */
- {
- /*
- Calculate length of keys:
- 'a\0\0... is the smallest possible string when we have space expand
- a\ff\ff... is the biggest possible string
- */
- *min_length= ((cs->state & MY_CS_BINSORT) ? (size_t) (min_str - min_org) :
- res_length);
- *max_length= res_length;
- do {
- *min_str++ = 0;
- *max_str++ = max_sort_char;
- } while (min_str != min_end);
- return 0;
- }
- *min_str++= *max_str++ = *ptr;
- }
-
- *min_length= *max_length= (size_t) (min_str-min_org);
- while (min_str != min_end)
- *min_str++= *max_str++= ' ';
- return 0;
-}
-
-
static uint ismbchar_big5(CHARSET_INFO *cs __attribute__((unused)),
const char* p, const char *e)
{
@@ -6338,7 +6258,7 @@ static MY_COLLATION_HANDLER my_collation_big5_chinese_ci_handler =
my_strnncollsp_big5,
my_strnxfrm_big5,
my_strnxfrmlen_simple,
- my_like_range_big5,
+ my_like_range_mb,
my_wildcmp_mb,
my_strcasecmp_mb,
my_instr_mb,
@@ -6402,7 +6322,7 @@ struct charset_info_st my_charset_big5_chinese_ci=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xF9D5, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_big5_handler,
@@ -6435,7 +6355,7 @@ struct charset_info_st my_charset_big5_bin=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xF9FE, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_big5_handler,
diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c
index 2caffe7aea2..4453516c7b3 100644
--- a/strings/ctype-cp932.c
+++ b/strings/ctype-cp932.c
@@ -306,76 +306,6 @@ static size_t my_strnxfrm_cp932(CHARSET_INFO *cs __attribute__((unused)),
}
-/*
-** Calculate min_str and max_str that ranges a LIKE string.
-** Arguments:
-** ptr Pointer to LIKE string.
-** ptr_length Length of LIKE string.
-** escape Escape character in LIKE. (Normally '\').
-** All escape characters should be removed from min_str and max_str
-** res_length Length of min_str and max_str.
-** min_str Smallest case sensitive string that ranges LIKE.
-** Should be space padded to res_length.
-** max_str Largest case sensitive string that ranges LIKE.
-** Normally padded with the biggest character sort value.
-**
-** The function should return 0 if ok and 1 if the LIKE string can't be
-** optimized !
-*/
-
-#define max_sort_char ((char) 255)
-
-static my_bool my_like_range_cp932(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,size_t ptr_length,
- pbool escape, pbool w_one, pbool w_many,
- size_t res_length,
- char *min_str,char *max_str,
- size_t *min_length, size_t *max_length)
-{
- const char *end=ptr+ptr_length;
- char *min_org=min_str;
- char *min_end=min_str+res_length;
-
- while (ptr < end && min_str < min_end) {
- if (ismbchar_cp932(cs, ptr, end)) {
- *min_str++ = *max_str++ = *ptr++;
- if (min_str < min_end)
- *min_str++ = *max_str++ = *ptr++;
- continue;
- }
- if (*ptr == escape && ptr+1 < end) {
- ptr++; /* Skip escape */
- if (ismbchar_cp932(cs, ptr, end))
- *min_str++ = *max_str++ = *ptr++;
- if (min_str < min_end)
- *min_str++ = *max_str++ = *ptr++;
- continue;
- }
- if (*ptr == w_one) { /* '_' in SQL */
- *min_str++ = '\0'; /* This should be min char */
- *max_str++ = max_sort_char;
- ptr++;
- continue;
- }
- if (*ptr == w_many)
- { /* '%' in SQL */
- *min_length = (size_t)(min_str - min_org);
- *max_length = res_length;
- do
- {
- *min_str++= 0;
- *max_str++= max_sort_char;
- } while (min_str < min_end);
- return 0;
- }
- *min_str++ = *max_str++ = *ptr++;
- }
- *min_length = *max_length = (size_t) (min_str - min_org);
- while (min_str < min_end)
- *min_str++ = *max_str++ = ' '; /* Because if key compression */
- return 0;
-}
-
/* page 0 0x00A1-0x00DF */
static const uint16 tab_cp932_uni0[]={
0xFF61,0xFF62,0xFF63,0xFF64,0xFF65,0xFF66,0xFF67,0xFF68,
@@ -5467,7 +5397,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
my_strnncollsp_cp932,
my_strnxfrm_cp932,
my_strnxfrmlen_simple,
- my_like_range_cp932,
+ my_like_range_mb,
my_wildcmp_mb, /* wildcmp */
my_strcasecmp_8bit,
my_instr_mb,
@@ -5533,7 +5463,7 @@ struct charset_info_st my_charset_cp932_japanese_ci=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -5565,7 +5495,7 @@ struct charset_info_st my_charset_cp932_bin=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c
index a5d5c1ee6ea..c16793a9539 100644
--- a/strings/ctype-euc_kr.c
+++ b/strings/ctype-euc_kr.c
@@ -8762,7 +8762,7 @@ struct charset_info_st my_charset_euckr_korean_ci=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -8795,7 +8795,7 @@ struct charset_info_st my_charset_euckr_bin=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c
index 119135c7515..d954c618ed4 100644
--- a/strings/ctype-eucjpms.c
+++ b/strings/ctype-eucjpms.c
@@ -8710,7 +8710,7 @@ struct charset_info_st my_charset_eucjpms_japanese_ci=
1, /* mbminlen */
3, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -8743,7 +8743,7 @@ struct charset_info_st my_charset_eucjpms_bin=
1, /* mbminlen */
3, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c
index 641fe2ea24e..37d0e44a4c6 100644
--- a/strings/ctype-gb2312.c
+++ b/strings/ctype-gb2312.c
@@ -5790,7 +5790,7 @@ struct charset_info_st my_charset_gb2312_chinese_ci=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xF7FE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -5822,7 +5822,7 @@ struct charset_info_st my_charset_gb2312_bin=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xF7FE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index 46b711d92be..bb9426a4b08 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -2689,86 +2689,6 @@ static size_t my_strnxfrm_gbk(CHARSET_INFO *cs __attribute__((unused)),
}
-/*
-** Calculate min_str and max_str that ranges a LIKE string.
-** Arguments:
-** ptr Pointer to LIKE string.
-** ptr_length Length of LIKE string.
-** escape Escape character in LIKE. (Normally '\').
-** All escape characters should be removed from min_str and max_str
-** res_length Length of min_str and max_str.
-** min_str Smallest case sensitive string that ranges LIKE.
-** Should be space padded to res_length.
-** max_str Largest case sensitive string that ranges LIKE.
-** Normally padded with the biggest character sort value.
-**
-** The function should return 0 if ok and 1 if the LIKE string can't be
-** optimized !
-*/
-
-#define max_sort_char ((uchar) 255)
-
-static my_bool my_like_range_gbk(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,size_t ptr_length,
- pbool escape, pbool w_one, pbool w_many,
- size_t res_length,
- char *min_str,char *max_str,
- size_t *min_length,size_t *max_length)
-{
- const char *end= ptr + ptr_length;
- char *min_org=min_str;
- char *min_end=min_str+res_length;
- size_t charlen= res_length / cs->mbmaxlen;
-
- for (; ptr != end && min_str != min_end && charlen > 0; ptr++, charlen--)
- {
- if (ptr+1 != end && isgbkcode(ptr[0],ptr[1]))
- {
- *min_str++= *max_str++ = *ptr++;
- *min_str++= *max_str++ = *ptr;
- continue;
- }
- if (*ptr == escape && ptr+1 != end)
- {
- ptr++; /* Skip escape */
- if (isgbkcode(ptr[0], ptr[1]))
- *min_str++= *max_str++ = *ptr;
- if (min_str < min_end)
- *min_str++= *max_str++= *ptr;
- continue;
- }
- if (*ptr == w_one) /* '_' in SQL */
- {
- *min_str++='\0'; /* This should be min char */
- *max_str++=max_sort_char;
- continue;
- }
- if (*ptr == w_many) /* '%' in SQL */
- {
- /*
- Calculate length of keys:
- 'a\0\0... is the smallest possible string when we have space expand
- a\ff\ff... is the biggest possible string
- */
- *min_length= ((cs->state & MY_CS_BINSORT) ? (size_t) (min_str - min_org) :
- res_length);
- *max_length= res_length;
- do {
- *min_str++= 0;
- *max_str++= max_sort_char;
- } while (min_str != min_end);
- return 0;
- }
- *min_str++= *max_str++ = *ptr;
- }
-
- *min_length= *max_length = (size_t) (min_str - min_org);
- while (min_str != min_end)
- *min_str++= *max_str++= ' '; /* Because if key compression */
- return 0;
-}
-
-
static uint ismbchar_gbk(CHARSET_INFO *cs __attribute__((unused)),
const char* p, const char *e)
{
@@ -9982,7 +9902,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
my_strnncollsp_gbk,
my_strnxfrm_gbk,
my_strnxfrmlen_simple,
- my_like_range_gbk,
+ my_like_range_mb,
my_wildcmp_mb,
my_strcasecmp_mb,
my_instr_mb,
@@ -10047,7 +9967,7 @@ struct charset_info_st my_charset_gbk_chinese_ci=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xA967, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -10079,7 +9999,7 @@ struct charset_info_st my_charset_gbk_bin=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c
index 6bb7977c294..ad9edf18bbe 100644
--- a/strings/ctype-mb.c
+++ b/strings/ctype-mb.c
@@ -498,7 +498,9 @@ static void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
DESCRIPTION
Write max key:
- for non-Unicode character sets:
- just set to 255.
+ just bfill using max_sort_char if max_sort_char is one byte.
+ In case when max_sort_char is two bytes, fill with double-byte pairs
+ and optionally pad with a single space character.
- for Unicode character set (utf-8):
create a buffer with multibyte representation of the max_sort_char
character, and copy it into max_str in a loop.
@@ -510,12 +512,20 @@ static void pad_max_char(CHARSET_INFO *cs, char *str, char *end)
if (!(cs->state & MY_CS_UNICODE))
{
- bfill(str, end - str, 255);
- return;
+ if (cs->max_sort_char <= 255)
+ {
+ bfill(str, end - str, cs->max_sort_char);
+ return;
+ }
+ buf[0]= cs->max_sort_char >> 8;
+ buf[1]= cs->max_sort_char & 0xFF;
+ buflen= 2;
+ }
+ else
+ {
+ buflen= cs->cset->wc_mb(cs, cs->max_sort_char, (uchar*) buf,
+ (uchar*) buf + sizeof(buf));
}
-
- buflen= cs->cset->wc_mb(cs, cs->max_sort_char, (uchar*) buf,
- (uchar*) buf + sizeof(buf));
DBUG_ASSERT(buflen > 0);
do
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index 81d1c57412d..a79eff70683 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -304,85 +304,6 @@ static size_t my_strnxfrm_sjis(CHARSET_INFO *cs __attribute__((unused)),
}
-/*
-** Calculate min_str and max_str that ranges a LIKE string.
-** Arguments:
-** ptr Pointer to LIKE string.
-** ptr_length Length of LIKE string.
-** escape Escape character in LIKE. (Normally '\').
-** All escape characters should be removed from min_str and max_str
-** res_length Length of min_str and max_str.
-** min_str Smallest case sensitive string that ranges LIKE.
-** Should be space padded to res_length.
-** max_str Largest case sensitive string that ranges LIKE.
-** Normally padded with the biggest character sort value.
-**
-** The function should return 0 if ok and 1 if the LIKE string can't be
-** optimized !
-*/
-
-#define max_sort_char ((char) 255)
-
-static my_bool my_like_range_sjis(CHARSET_INFO *cs __attribute__((unused)),
- const char *ptr,size_t ptr_length,
- pbool escape, pbool w_one, pbool w_many,
- size_t res_length,
- char *min_str,char *max_str,
- size_t *min_length,size_t *max_length)
-{
- const char *end= ptr + ptr_length;
- char *min_org=min_str;
- char *min_end=min_str+res_length;
- size_t charlen= res_length / cs->mbmaxlen;
-
- for ( ; ptr < end && min_str < min_end && charlen > 0 ; charlen--)
- {
- if (ismbchar_sjis(cs, ptr, end)) {
- *min_str++ = *max_str++ = *ptr++;
- if (min_str < min_end)
- *min_str++ = *max_str++ = *ptr++;
- continue;
- }
- if (*ptr == escape && ptr+1 < end) {
- ptr++; /* Skip escape */
- if (ismbchar_sjis(cs, ptr, end))
- *min_str++ = *max_str++ = *ptr++;
- if (min_str < min_end)
- *min_str++ = *max_str++ = *ptr++;
- continue;
- }
- if (*ptr == w_one) { /* '_' in SQL */
- *min_str++ = '\0'; /* This should be min char */
- *max_str++ = max_sort_char;
- ptr++;
- continue;
- }
- if (*ptr == w_many)
- { /* '%' in SQL */
- /*
- Calculate length of keys:
- 'a\0\0... is the smallest possible string when we have space expand
- a\ff\ff... is the biggest possible string
- */
- *min_length= ((cs->state & MY_CS_BINSORT) ? (size_t) (min_str - min_org) :
- res_length);
- *max_length= res_length;
- do
- {
- *min_str++= 0;
- *max_str++= max_sort_char;
- } while (min_str < min_end);
- return 0;
- }
- *min_str++ = *max_str++ = *ptr++;
- }
-
- *min_length= *max_length= (size_t) (min_str - min_org);
- while (min_str != min_end)
- *min_str++= *max_str++= ' '; /* Because if key compression */
- return 0;
-}
-
/* page 0 0x00A1-0x00DF */
static const uint16 tab_sjis_uni0[]={
0xFF61,0xFF62,0xFF63,0xFF64,0xFF65,0xFF66,0xFF67,0xFF68,
@@ -4628,7 +4549,7 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
my_strnncollsp_sjis,
my_strnxfrm_sjis,
my_strnxfrmlen_simple,
- my_like_range_sjis,
+ my_like_range_mb,
my_wildcmp_mb, /* wildcmp */
my_strcasecmp_8bit,
my_instr_mb,
@@ -4694,7 +4615,7 @@ struct charset_info_st my_charset_sjis_japanese_ci=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -4726,7 +4647,7 @@ struct charset_info_st my_charset_sjis_bin=
1, /* mbminlen */
2, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c
index 7f170ca3b40..932f58d142f 100644
--- a/strings/ctype-uca.c
+++ b/strings/ctype-uca.c
@@ -7006,7 +7006,7 @@ static my_uca_scanner_handler my_ucs2_uca_scanner_handler=
my_uca_scanner_next_ucs2
};
-#endif
+#endif /* HAVE_CHARSET_ucs2 */
/*
@@ -8836,7 +8836,7 @@ struct charset_info_st my_charset_ucs2_croatian_uca_ci=
};
-#endif
+#endif /* HAVE_CHARSET_ucs2 */
#ifdef HAVE_CHARSET_utf8
diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c
index 3adee2cff07..4ee26acdc4c 100644
--- a/strings/ctype-ujis.c
+++ b/strings/ctype-ujis.c
@@ -8567,7 +8567,7 @@ struct charset_info_st my_charset_ujis_japanese_ci=
1, /* mbminlen */
3, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
@@ -8600,7 +8600,7 @@ struct charset_info_st my_charset_ujis_bin=
1, /* mbminlen */
3, /* mbmaxlen */
0, /* min_sort_char */
- 255, /* max_sort_char */
+ 0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
&my_charset_handler,
diff --git a/strings/decimal.c b/strings/decimal.c
index 184f78a20b7..1f879fbe9ad 100644
--- a/strings/decimal.c
+++ b/strings/decimal.c
@@ -346,7 +346,7 @@ int decimal2string(decimal_t *from, char *to, int *to_len,
char *s=to;
dec1 *buf, *buf0=from->buf, tmp;
- DBUG_ASSERT(*to_len >= 2+from->sign);
+ DBUG_ASSERT(*to_len >= 2+ (int) from->sign);
/* removing leading zeroes */
buf0= remove_leading_zeroes(from, &intg);
@@ -971,7 +971,7 @@ int decimal2double(decimal_t *from, double *to)
*to= from->sign ? -result : result;
- DBUG_PRINT("info", ("result: %f (%lx)", *to, *(ulong *)to));
+ DBUG_PRINT("info", ("result: %f", *to));
return E_DEC_OK;
}
@@ -1801,7 +1801,8 @@ static int do_sub(decimal_t *from1, decimal_t *from2, decimal_t *to)
int intg1=ROUND_UP(from1->intg), intg2=ROUND_UP(from2->intg),
frac1=ROUND_UP(from1->frac), frac2=ROUND_UP(from2->frac);
int frac0=max(frac1, frac2), error;
- dec1 *buf1, *buf2, *buf0, *stop1, *stop2, *start1, *start2, carry=0;
+ dec1 *buf1, *buf2, *buf0, *stop1, *stop2, *start1, *start2;
+ my_bool carry=0;
/* let carry:=1 if from2 > from1 */
start1=buf1=from1->buf; stop1=buf1+intg1;
@@ -1869,7 +1870,7 @@ static int do_sub(decimal_t *from1, decimal_t *from2, decimal_t *to)
swap_variables(dec1 *,start1, start2);
swap_variables(int,intg1,intg2);
swap_variables(int,frac1,frac2);
- to->sign= 1 - to->sign;
+ to->sign= !to->sign;
}
FIX_INTG_FRAC_ERROR(to->len, intg1, frac0, error);
@@ -1934,8 +1935,7 @@ static int do_sub(decimal_t *from1, decimal_t *from2, decimal_t *to)
int decimal_intg(decimal_t *from)
{
int res;
- dec1 *tmp_res;
- tmp_res= remove_leading_zeroes(from, &res);
+ remove_leading_zeroes(from, &res);
return res;
}
diff --git a/strings/longlong2str.c b/strings/longlong2str.c
index d7de5bb0f7c..3b837fac6d4 100644
--- a/strings/longlong2str.c
+++ b/strings/longlong2str.c
@@ -46,11 +46,12 @@
This assumes that longlong multiplication is faster than longlong division.
*/
-char *longlong2str(longlong val,char *dst,int radix)
+char *longlong2str(longlong val,char *dst,int radix, int upcase)
{
char buffer[65];
register char *p;
long long_val;
+ const char *dig_vec= upcase ? _dig_vec_upper : _dig_vec_lower;
ulonglong uval= (ulonglong) val;
if (radix < 0)
@@ -80,14 +81,14 @@ char *longlong2str(longlong val,char *dst,int radix)
{
ulonglong quo= uval/(uint) radix;
uint rem= (uint) (uval- quo* (uint) radix);
- *--p = _dig_vec_upper[rem];
+ *--p = dig_vec[rem];
uval= quo;
}
long_val= (long) uval;
while (long_val != 0)
{
long quo= long_val/radix;
- *--p = _dig_vec_upper[(uchar) (long_val - quo*radix)];
+ *--p = dig_vec[(uchar) (long_val - quo*radix)];
long_val= quo;
}
while ((*dst++ = *p++) != 0) ;
diff --git a/strings/longlong2str_asm.c b/strings/longlong2str_asm.c
index 637815e52c5..b4a77511cfa 100644
--- a/strings/longlong2str_asm.c
+++ b/strings/longlong2str_asm.c
@@ -26,7 +26,7 @@
extern char *longlong2str_with_dig_vector(longlong val,char *dst,int radix,
const char *dig_vector);
-char *longlong2str(longlong val,char *dst,int radix)
+char *longlong2str(longlong val,char *dst,int radix, int upcase)
{
- return longlong2str_with_dig_vector(val, dst, radix, _dig_vec_upper);
+ return longlong2str_with_dig_vector(val, dst, radix, upcase ? _dig_vec_upper : _dig_vec_lower);
}
diff --git a/strings/make-ccc b/strings/make-ccc
index 78d5ad1ce42..93be2bbf862 100755
--- a/strings/make-ccc
+++ b/strings/make-ccc
@@ -1,3 +1,3 @@
-ccc -DHAVE_CONFIG_H -I. -I. -I.. -I./../include -I../include -O -DDBUG_OFF -fast -O3 -fomit-frame-pointer -c atof.c bchange.c bcmp.c bfill.c bmove.c bmove512.c bmove_upp.c ct_init.c ctype-latin1.c int2str.c is_prefix.c llstr.c longlong2str.c r_strinstr.c str2int.c strappend.c strcend.c strcont.c strend.c strfill.c strinstr.c strmake.c strmov.c strnmov.c strstr.c strtol.c strtoll.c strtoul.c strtoull.c strxmov.c strxnmov.c
+ccc -DHAVE_CONFIG_H -I. -I. -I.. -I./../include -I../include -O -DDBUG_OFF -fast -O3 -fomit-frame-pointer -c atof.c bchange.c bfill.c bmove.c bmove512.c bmove_upp.c ct_init.c ctype-latin1.c int2str.c is_prefix.c llstr.c longlong2str.c r_strinstr.c str2int.c strappend.c strcend.c strcont.c strend.c strfill.c strinstr.c strmake.c strmov.c strnmov.c strstr.c strtol.c strtoll.c strtoul.c strtoull.c strxmov.c strxnmov.c
rm libmystrings.a
ar -cr libmystrings.a atof.o
diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c
index 79267461c47..fbe4c1bdf6f 100644
--- a/strings/my_vsnprintf.c
+++ b/strings/my_vsnprintf.c
@@ -235,19 +235,19 @@ static char *process_int_arg(char *to, char *end, size_t length,
store_start= buff;
if (arg_type == 'd')
- store_end= int10_to_str(par, store_start, -10);
+ store_end= longlong10_to_str(par, store_start, -10);
else if (arg_type == 'u')
- store_end= int10_to_str(par, store_start, 10);
+ store_end= longlong10_to_str(par, store_start, 10);
else if (arg_type == 'p')
{
store_start[0]= '0';
store_start[1]= 'x';
- store_end= int2str(par, store_start + 2, 16, 0);
+ store_end= longlong2str(par, store_start + 2, 16, 0);
}
else
{
DBUG_ASSERT(arg_type == 'X' || arg_type =='x');
- store_end= int2str(par, store_start, 16, (arg_type == 'X'));
+ store_end= longlong2str(par, store_start, 16, (arg_type == 'X'));
}
if ((res_length= (size_t) (store_end - store_start)) > to_length)
@@ -430,9 +430,9 @@ start:
{
/* Integer parameter */
longlong larg;
- length= ((print_arr[i].flags & LENGTH_ARG) ?
- args_arr[print_arr[i].length].longlong_arg :
- (longlong) print_arr[i].length);
+ length= (int) ((print_arr[i].flags & LENGTH_ARG) ?
+ args_arr[print_arr[i].length].longlong_arg :
+ (longlong) print_arr[i].length);
if (args_arr[print_arr[i].arg_idx].have_longlong)
larg = args_arr[print_arr[i].arg_idx].longlong_arg;
diff --git a/strings/strxmov.c b/strings/strxmov.c
index 9dd2c936620..d5d81fd9274 100644
--- a/strings/strxmov.c
+++ b/strings/strxmov.c
@@ -32,7 +32,6 @@
#include <my_global.h>
#include "m_string.h"
-#include <stdarg.h>
char *strxmov(char *dst,const char *src, ...)
{
diff --git a/strings/xml.c b/strings/xml.c
index 1b697ec6b26..14da69e088a 100644
--- a/strings/xml.c
+++ b/strings/xml.c
@@ -123,16 +123,16 @@ static int my_xml_scan(MY_XML_PARSER *p,MY_XML_ATTR *a)
a->beg=p->cur;
a->end=p->cur;
- if ((p->end - p->cur > 3) && !bcmp(p->cur,"<!--",4))
+ if ((p->end - p->cur > 3) && !bcmp((uchar*) p->cur, (uchar*) "<!--",4))
{
- for (; (p->cur < p->end) && bcmp(p->cur, "-->", 3); p->cur++)
+ for (; (p->cur < p->end) && bcmp((uchar*) p->cur, (uchar*) "-->", 3); p->cur++)
{}
- if (!bcmp(p->cur, "-->", 3))
+ if (!bcmp((uchar*) p->cur, (uchar*) "-->", 3))
p->cur+=3;
a->end=p->cur;
lex=MY_XML_COMMENT;
}
- else if (!bcmp(p->cur, "<![CDATA[",9))
+ else if (!bcmp((uchar*) p->cur, (uchar*) "<![CDATA[",9))
{
p->cur+= 9;
for (; p->cur < p->end - 2 ; p->cur++)
diff --git a/support-files/Makefile.am b/support-files/Makefile.am
index be6b9cc0dcb..f6500e82be0 100644
--- a/support-files/Makefile.am
+++ b/support-files/Makefile.am
@@ -129,6 +129,3 @@ SUFFIXES = .sh
-e 's!@''PERL_DATA_DUMPER''@!@PERL_DATA_DUMPER@!' \
$< > $@-t
@MV@ $@-t $@
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/support-files/compiler_warnings.supp b/support-files/compiler_warnings.supp
index 8e2b63e7a46..3025fdf5f5d 100644
--- a/support-files/compiler_warnings.supp
+++ b/support-files/compiler_warnings.supp
@@ -24,7 +24,9 @@ sql_yacc.cc : .*switch statement contains 'default' but no 'case' labels.*
# Things that can be ignored in InnoDB
#
pars0grm.tab.c: .*'yyerrorlab' : unreferenced label.*
+pars0grm.c: 'yyerrorlab' : unreferenced label
_flex_tmp.c: .*not enough actual parameters for macro 'yywrap'.*
+lexyy.c : not enough actual parameters for macro 'yywrap'
pars0lex.l: .*conversion from 'ulint' to 'int', possible loss of data.*
btr/btr0cur\.c: .*value computed is not used.*: 3175-3375
include/buf0buf\.ic: unused parameter .*mtr.*
@@ -44,6 +46,7 @@ buf/buf0buf\.c: .*block_mutex.* might be used uninitialized
btr/btr0cur\.c: null argument where non-null required: 1800-3000
btr/btr0btr\.c: null argument where non-null required: 2500-3000
ibuf/ibuf0ibuf.c: null argument where non-null required: 700-1000
+fsp0fsp\.c: result of 32-bit shift implicitly converted to 64 bits
#
# bdb is not critical to keep up to date
@@ -70,6 +73,7 @@ term\.c : .*
#
.*/extra/libevent/.* : .*unused parameter.*
.*/extra/libevent/select\.c : .*comparison between signed and unsigned.* : 270-280
+signal\.c : .*unused parameter.*
#
# Ignore warnings from system libraries
@@ -107,6 +111,12 @@ term\.c : .*
.* : conversion from '.*size_t' to 'UINT'.*
.* : conversion from '.*size_t' to 'uInt'.*
.* : conversion from '.*size_t' to 'uint16'.*
+.* : The following environment variables were not found.*
+.* : no public symbols found; archive member will be inaccessible
+.* : DESCRIPTION statement not supported
+
+# Ignore uninitialized local variables on windows
+.* : uninitialized local variable .* used
#
# The following should be fixed by the ndb team
@@ -116,7 +126,7 @@ term\.c : .*
.*/ndb/.* : .*defined but not used.*
#
-# Maria warning that is ok in debug builds
+# Aria warning that is ok in debug builds
#
storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used
@@ -124,13 +134,15 @@ storage/maria/ma_pagecache.c: .*'info_check_pin' defined but not used
# Pbxt
#
xaction_xt\.cc: may be used uninitialized in this function
+lock_xt\.cc : uninitialized local variable .* used
+restart_xt\.cc : dereferencing pointer .* does break strict-aliasing
#
# I think these are due to mix of C and C++.
#
storage/pbxt/ : typedef.*was ignored in this declaration
ha_pbxt\.cc : variable.*might be clobbered by.*longjmp
-table_xt\.cc : variable.*might be clobbered by ~longjm~p or ~vfork~
+table_xt\.cc : variable.*might be clobbered by.*longjmp
#
# Yassl
@@ -152,6 +164,11 @@ mySTL/algorithm\.hpp: is used uninitialized in this function
listener.cc : .*conversion from 'SOCKET' to 'int'.*
net_serv.cc : .*conversion from 'SOCKET' to 'int'.*
+#
+# Ignorable warnings from header files
+#
+backward_warning\.h : This file includes at least one
+
# allow a little moving space for the warning below
mi_packrec\.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 560-600
ma_packrec\.c : .*result of 32-bit shift implicitly converted to 64 bits.* : 550-650
diff --git a/support-files/my-huge.cnf.sh b/support-files/my-huge.cnf.sh
index 17a7ddb5855..27ef0e5cc07 100644
--- a/support-files/my-huge.cnf.sh
+++ b/support-files/my-huge.cnf.sh
@@ -25,7 +25,7 @@ socket = @MYSQL_UNIX_ADDR@
[mysqld]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
-skip-locking
+skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
diff --git a/support-files/my-large.cnf.sh b/support-files/my-large.cnf.sh
index bbdfdb32a96..812009136f1 100644
--- a/support-files/my-large.cnf.sh
+++ b/support-files/my-large.cnf.sh
@@ -25,7 +25,7 @@ socket = @MYSQL_UNIX_ADDR@
[mysqld]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
-skip-locking
+skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
diff --git a/support-files/my-medium.cnf.sh b/support-files/my-medium.cnf.sh
index 88113d0a8d4..8fd62eaf958 100644
--- a/support-files/my-medium.cnf.sh
+++ b/support-files/my-medium.cnf.sh
@@ -26,7 +26,7 @@ socket = @MYSQL_UNIX_ADDR@
[mysqld]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
-skip-locking
+skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
diff --git a/support-files/my-small.cnf.sh b/support-files/my-small.cnf.sh
index 7dce9e60ed9..c0a86ae9671 100644
--- a/support-files/my-small.cnf.sh
+++ b/support-files/my-small.cnf.sh
@@ -26,7 +26,7 @@ socket = @MYSQL_UNIX_ADDR@
[mysqld]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
-skip-locking
+skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh
index bb8178dbcea..63ae93a313b 100644
--- a/support-files/mysql.spec.sh
+++ b/support-files/mysql.spec.sh
@@ -1,4 +1,5 @@
-# Copyright (C) 2000-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc.
+# Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010 Monty Program Ab
#
# 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
@@ -640,6 +641,7 @@ touch $RBR%{_sysconfdir}/mysqlmanager.passwd
##############################################################################
%pre server
+mysql_datadir=%{mysqldatadir}
# Check if we can safely upgrade. An upgrade is only safe if it's from one
# of our RPMs in the same version family.
@@ -708,7 +710,74 @@ HERE
fi
fi
+# We assume that if there is exactly one ".pid" file,
+# it contains the valid PID of a running MySQL server.
+NR_PID_FILES=`ls $mysql_datadir/*.pid 2>/dev/null | wc -l`
+case $NR_PID_FILES in
+ 0 ) SERVER_TO_START='' ;; # No "*.pid" file == no running server
+ 1 ) SERVER_TO_START='true' ;;
+ * ) SERVER_TO_START='' # Situation not clear
+ SEVERAL_PID_FILES=true ;;
+esac
+# That logic may be debated: We might check whether it is non-empty,
+# contains exactly one number (possibly a PID), and whether "ps" finds it.
+# OTOH, if there is no such process, it means a crash without a cleanup -
+# is that a reason not to start a new server after upgrade?
+
+STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
+
+if [ -f $STATUS_FILE ]; then
+ echo "Some previous upgrade was not finished:"
+ ls -ld $STATUS_FILE
+ echo "Please check its status, then do"
+ echo " rm $STATUS_FILE"
+ echo "before repeating the MySQL upgrade."
+ exit 1
+elif [ -n "$SEVERAL_PID_FILES" ] ; then
+ echo "Your MySQL directory '$mysql_datadir' has more than one PID file:"
+ ls -ld $mysql_datadir/*.pid
+ echo "Please check which one (if any) corresponds to a running server"
+ echo "and delete all others before repeating the MySQL upgrade."
+ exit 1
+fi
+
+NEW_VERSION=%{mysql_version}-%{release}
+
+# The "pre" section code is also run on a first installation,
+# when there is no data directory yet. Protect against error messages.
+if [ -d $mysql_datadir ] ; then
+ echo "MySQL RPM upgrade to version $NEW_VERSION" > $STATUS_FILE
+ echo "'pre' step running at `date`" >> $STATUS_FILE
+ echo >> $STATUS_FILE
+ echo "ERR file(s):" >> $STATUS_FILE
+ ls -ltr $mysql_datadir/*.err >> $STATUS_FILE
+ echo >> $STATUS_FILE
+ echo "Latest 'Version' line in latest file:" >> $STATUS_FILE
+ grep '^Version' `ls -tr $mysql_datadir/*.err | tail -1` | \
+ tail -1 >> $STATUS_FILE
+ echo >> $STATUS_FILE
+
+ if [ -n "$SERVER_TO_START" ] ; then
+ # There is only one PID file, race possibility ignored
+ echo "PID file:" >> $STATUS_FILE
+ ls -l $mysql_datadir/*.pid >> $STATUS_FILE
+ cat $mysql_datadir/*.pid >> $STATUS_FILE
+ echo >> $STATUS_FILE
+ echo "Server process:" >> $STATUS_FILE
+ ps -fp `cat $mysql_datadir/*.pid` >> $STATUS_FILE
+ echo >> $STATUS_FILE
+ echo "SERVER_TO_START=$SERVER_TO_START" >> $STATUS_FILE
+ else
+ # Take a note we checked it ...
+ echo "PID file:" >> $STATUS_FILE
+ ls -l $mysql_datadir/*.pid >> $STATUS_FILE 2>&1
+ fi
+fi
+
# Shut down a previously installed server first
+# Note we *could* make that depend on $SERVER_TO_START, but we rather don't,
+# so a "stop" is attempted even if there is no PID file.
+# (Maybe the "stop" doesn't work then, but we might fix that in itself.)
if [ -x %{_sysconfdir}/init.d/mysql ] ; then
%{_sysconfdir}/init.d/mysql stop > /dev/null 2>&1
echo "Giving mysqld 5 seconds to exit nicely"
@@ -717,17 +786,33 @@ fi
%post server
mysql_datadir=%{mysqldatadir}
+NEW_VERSION=%{mysql_version}-%{release}
+STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
# ----------------------------------------------------------------------
-# Create data directory if needed
+# Create data directory if needed, check whether upgrade or install
# ----------------------------------------------------------------------
if [ ! -d $mysql_datadir ] ; then mkdir -m 755 $mysql_datadir; fi
-if [ ! -d $mysql_datadir/mysql ] ; then mkdir $mysql_datadir/mysql; fi
+if [ -f $STATUS_FILE ] ; then
+ SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
+else
+ SERVER_TO_START='true' # This is for 5.1 only, to not change behavior
+fi
+# echo "Analyzed: SERVER_TO_START=$SERVER_TO_START"
+if [ ! -d $mysql_datadir/mysql ] ; then
+ mkdir $mysql_datadir/mysql;
+ echo "MySQL RPM installation of version $NEW_VERSION" >> $STATUS_FILE
+else
+ # If the directory exists, we may assume it is an upgrade.
+ echo "MySQL RPM upgrade to version $NEW_VERSION" >> $STATUS_FILE
+fi
if [ ! -d $mysql_datadir/test ] ; then mkdir $mysql_datadir/test; fi
# ----------------------------------------------------------------------
# Make MySQL start/shutdown automatically when the machine does it.
# ----------------------------------------------------------------------
+# NOTE: This still needs to be debated. Should we check whether these links
+# for the other run levels exist(ed) before the upgrade?
# use insserv for older SuSE Linux versions
if [ -x /sbin/insserv ] ; then
/sbin/insserv %{_sysconfdir}/init.d/mysql
@@ -771,18 +856,26 @@ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
# ----------------------------------------------------------------------
chmod -R og-rw $mysql_datadir/mysql
-# Restart in the same way that mysqld will be started normally.
-%{_sysconfdir}/init.d/mysql start
+# Was the server running before the upgrade? If so, restart the new one.
+if [ "$SERVER_TO_START" = "true" ] ; then
+ # Restart in the same way that mysqld will be started normally.
+ %{_sysconfdir}/init.d/mysql start
-# Allow mysqld_safe to start mysqld and print a message before we exit
-sleep 2
-
-#echo "Thank you for installing the MySQL Community Server! For Production
-#systems, we recommend MySQL Enterprise, which contains enterprise-ready
-#software, intelligent advisory services, and full production support with
-#scheduled service packs and more. Visit www.mysql.com/enterprise for more
-#information."
+ # Allow mysqld_safe to start mysqld and print a message before we exit
+ sleep 2
+fi
+#echo "Thank you for installing the MariaDB Server!"
+#echo "For more information about MariaDB, visit www.mariadb.org."
+
+# Collect an upgrade history ...
+echo "Upgrade/install finished at `date`" >> $STATUS_FILE
+echo >> $STATUS_FILE
+echo "=====" >> $STATUS_FILE
+STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY
+cat $STATUS_FILE >> $STATUS_HISTORY
+rm $STATUS_FILE
+
%if %{CLUSTER_BUILD}
%post ndb-storage
mysql_clusterdir=/var/lib/mysql-cluster
@@ -1068,6 +1161,17 @@ fi
# merging BK trees)
##############################################################################
%changelog
+
+* Tue Jun 15 2010 Joerg Bruehe <joerg.bruehe@sun.com>
+
+- Change the behaviour on upgrade:
+ *Iff* the server was stopped before the upgrade is started, this is taken as a
+ sign the administrator is handling that manually, and so the new server will
+ not be started automatically at the end of the upgrade.
+ The start/stop scripts will still be installed, so the server will be started
+ on the next machine boot.
+ This is the 5.1 version of fixing bug#27072 (RPM autostarting the server).
+
* Mon Mar 01 2010 Joerg Bruehe <joerg.bruehe@sun.com>
- Set "Oracle and/or its affiliates" as the vendor and copyright owner,
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 2093fc0da36..245c9ce8666 100755
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -25,3 +25,5 @@ TARGET_LINK_LIBRARIES(mysql_client_test mysqlclient_notls wsock32)
ADD_EXECUTABLE(bug25714 bug25714.c)
TARGET_LINK_LIBRARIES(bug25714 mysqlclient_notls wsock32)
+
+INSTALL(TARGETS mysql_client_test bug25714 DESTINATION bin COMPONENT runtime)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ddc6da86e1c..ca4a2a4e986 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -60,6 +60,3 @@ DEFS = -DMYSQL_CLIENT_NO_THREADS
thread_test.o: thread_test.c
$(COMPILE) -c $(INCLUDES) $<
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 0be541f7caa..789ba236a87 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -3326,7 +3326,7 @@ static void test_long_data_str()
DIE_UNLESS(rc == 1);
mysql_free_result(result);
- my_sprintf(data, (data, "%d", i*5));
+ sprintf(data, "%d", i*5);
verify_col_data("test_long_data_str", "LENGTH(longstr)", data);
data[0]= '\0';
while (i--)
@@ -3424,10 +3424,10 @@ static void test_long_data_str1()
DIE_UNLESS(rc == 1);
mysql_free_result(result);
- my_sprintf(data, (data, "%ld", (long)i*length));
+ sprintf(data, "%ld", (long)i*length);
verify_col_data("test_long_data_str", "length(longstr)", data);
- my_sprintf(data, (data, "%d", i*2));
+ sprintf(data, "%d", i*2);
verify_col_data("test_long_data_str", "length(blb)", data);
/* Test length of field->max_length */
@@ -13287,37 +13287,52 @@ static void test_bug15518()
}
-static void disable_general_log()
+static void disable_query_logs()
{
int rc;
rc= mysql_query(mysql, "set @@global.general_log=off");
myquery(rc);
+ rc= mysql_query(mysql, "set @@global.slow_query_log=off");
+ myquery(rc);
}
-static void enable_general_log(int truncate)
+static void enable_query_logs(int truncate)
{
int rc;
rc= mysql_query(mysql, "set @save_global_general_log=@@global.general_log");
myquery(rc);
+ rc= mysql_query(mysql, "set @save_global_slow_query_log=@@global.slow_query_log");
+ myquery(rc);
+
rc= mysql_query(mysql, "set @@global.general_log=on");
myquery(rc);
+ rc= mysql_query(mysql, "set @@global.slow_query_log=on");
+ myquery(rc);
+
+
if (truncate)
{
rc= mysql_query(mysql, "truncate mysql.general_log");
myquery(rc);
+
+ rc= mysql_query(mysql, "truncate mysql.slow_log");
+ myquery(rc);
}
}
-static void restore_general_log()
+static void restore_query_logs()
{
int rc;
rc= mysql_query(mysql, "set @@global.general_log=@save_global_general_log");
myquery(rc);
+
+ rc= mysql_query(mysql, "set @@global.slow_query_log=@save_global_slow_query_log");
+ myquery(rc);
}
@@ -15488,7 +15503,7 @@ static void test_bug17667()
return;
}
- enable_general_log(1);
+ enable_query_logs(1);
for (statement_cursor= statements; statement_cursor->buffer != NULL;
statement_cursor++)
@@ -15568,7 +15583,7 @@ static void test_bug17667()
statement_cursor->buffer);
}
- restore_general_log();
+ restore_query_logs();
if (!opt_silent)
printf("success. All queries found intact in the log.\n");
@@ -17432,7 +17447,7 @@ static void test_bug28386()
}
mysql_free_result(result);
- enable_general_log(1);
+ enable_query_logs(1);
stmt= mysql_simple_prepare(mysql, "SELECT ?");
check_stmt(stmt);
@@ -17471,7 +17486,7 @@ static void test_bug28386()
mysql_free_result(result);
- restore_general_log();
+ restore_query_logs();
DBUG_VOID_RETURN;
}
@@ -18137,6 +18152,195 @@ static void test_bug53371()
}
+static void test_bug53907()
+{
+ int rc;
+ uchar buf[] = "\x4test\x14../client_test_db/t1";
+
+ myheader("test_bug53907");
+
+ rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP DATABASE IF EXISTS bug53907");
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP USER 'testbug'@localhost");
+
+ rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)");
+ myquery(rc);
+ rc= mysql_query(mysql, "CREATE DATABASE bug53907");
+ myquery(rc);
+ rc= mysql_query(mysql, "GRANT SELECT ON bug53907.* to 'testbug'@localhost");
+ myquery(rc);
+
+ rc= mysql_change_user(mysql, "testbug", NULL, "bug53907");
+ myquery(rc);
+
+ rc= simple_command(mysql, COM_TABLE_DUMP, buf, sizeof(buf), 0);
+ fprintf(stderr, ">>>>>>>>> %d\n", mysql_errno(mysql));
+ DIE_UNLESS(mysql_errno(mysql) == 1103); /* ER_WRONG_TABLE_NAME */
+
+ rc= mysql_change_user(mysql, opt_user, opt_password, current_db);
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP TABLE t1");
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP DATABASE bug53907");
+ myquery(rc);
+ rc= mysql_query(mysql, "DROP USER 'testbug'@localhost");
+ myquery(rc);
+}
+
+
+/**
+ Bug#42373: libmysql can mess a connection at connect
+*/
+static void test_bug42373()
+{
+ int rc;
+ MYSQL con;
+ MYSQL_STMT *stmt;
+
+ DBUG_ENTER("test_bug42373");
+ myheader("test_42373");
+
+ rc= mysql_query(mysql, "DROP PROCEDURE IF EXISTS p1");
+ myquery(rc);
+
+ rc= mysql_query(mysql, "CREATE PROCEDURE p1()"
+ " BEGIN"
+ " SELECT 1;"
+ " INSERT INTO t1 VALUES (2);"
+ "END;");
+ myquery(rc);
+
+ rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
+ myquery(rc);
+
+ rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)");
+ myquery(rc);
+
+ /* Try with a stored procedure. */
+ DIE_UNLESS(mysql_client_init(&con));
+
+ mysql_options(&con, MYSQL_INIT_COMMAND, "CALL p1()");
+
+ DIE_UNLESS(mysql_real_connect(&con, opt_host, opt_user, opt_password,
+ current_db, opt_port, opt_unix_socket,
+ CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS));
+
+ stmt= mysql_simple_prepare(&con, "SELECT a FROM t1");
+ check_stmt(stmt);
+
+ rc= mysql_stmt_execute(stmt);
+ check_execute(stmt, rc);
+
+ rc= my_process_stmt_result(stmt);
+ DIE_UNLESS(rc == 1);
+
+ mysql_stmt_close(stmt);
+
+ /* Now try with a multi-statement. */
+ DIE_UNLESS(mysql_client_init(&con));
+
+ mysql_options(&con, MYSQL_INIT_COMMAND,
+ "SELECT 3; INSERT INTO t1 VALUES (4)");
+
+ DIE_UNLESS(mysql_real_connect(&con, opt_host, opt_user, opt_password,
+ current_db, opt_port, opt_unix_socket,
+ CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS));
+
+ stmt= mysql_simple_prepare(&con, "SELECT a FROM t1");
+ check_stmt(stmt);
+
+ rc= mysql_stmt_execute(stmt);
+ check_execute(stmt, rc);
+
+ rc= my_process_stmt_result(stmt);
+ DIE_UNLESS(rc == 2);
+
+ mysql_stmt_close(stmt);
+ mysql_close(&con);
+
+ rc= mysql_query(mysql, "DROP TABLE t1");
+ myquery(rc);
+
+ rc= mysql_query(mysql, "DROP PROCEDURE p1");
+ myquery(rc);
+
+ DBUG_VOID_RETURN;
+}
+
+
+/**
+ Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run
+*/
+
+static void test_bug54041_impl()
+{
+ int rc;
+ MYSQL_STMT *stmt;
+ MYSQL_BIND bind;
+
+ DBUG_ENTER("test_bug54041");
+ myheader("test_bug54041");
+
+ rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
+ myquery(rc);
+
+ rc= mysql_query(mysql, "CREATE TABLE t1 (a INT)");
+ myquery(rc);
+
+ stmt= mysql_simple_prepare(mysql, "SELECT a FROM t1 WHERE a > ?");
+ check_stmt(stmt);
+ verify_param_count(stmt, 1);
+
+ memset(&bind, 0, sizeof(bind));
+
+ /* Any type that does not support long data handling. */
+ bind.buffer_type= MYSQL_TYPE_LONG;
+
+ rc= mysql_stmt_bind_param(stmt, &bind);
+ check_execute(stmt, rc);
+
+ /*
+ Trick the client API into sending a long data packet for
+ the parameter. Long data is only supported for string and
+ binary types.
+ */
+ stmt->params[0].buffer_type= MYSQL_TYPE_STRING;
+
+ rc= mysql_stmt_send_long_data(stmt, 0, "data", 5);
+ check_execute(stmt, rc);
+
+ /* Undo API violation. */
+ stmt->params[0].buffer_type= MYSQL_TYPE_LONG;
+
+ rc= mysql_stmt_execute(stmt);
+ /* Incorrect arguments. */
+ check_execute_r(stmt, rc);
+
+ mysql_stmt_close(stmt);
+
+ rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1");
+ myquery(rc);
+
+ DBUG_VOID_RETURN;
+}
+
+
+/**
+ Bug#54041: MySQL 5.0.92 fails when tests from Connector/C suite run
+*/
+
+static void test_bug54041()
+{
+ enable_query_logs(0);
+ test_bug54041_impl();
+ disable_query_logs();
+ test_bug54041_impl();
+ restore_query_logs();
+}
+
+
/*
Read and parse arguments and MySQL options from my.cnf
*/
@@ -18146,17 +18350,17 @@ static char **defaults_argv;
static struct my_option client_test_long_options[] =
{
- {"basedir", 'b', "Basedir for tests.", (uchar**) &opt_basedir,
- (uchar**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"count", 't', "Number of times test to be executed", (uchar **) &opt_count,
- (uchar **) &opt_count, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
- {"database", 'D', "Database to use", (uchar **) &opt_db, (uchar **) &opt_db,
+ {"basedir", 'b', "Basedir for tests.", (char**) &opt_basedir,
+ (char**) &opt_basedir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"count", 't', "Number of times test to be executed", &opt_count,
+ &opt_count, 0, GET_UINT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0},
+ {"database", 'D', "Database to use", &opt_db, &opt_db,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
- {"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
- (uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ {"debug", '#', "Output debug log", (char**) &default_dbug_option,
+ (char**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"help", '?', "Display this help and exit", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
0, 0, 0, 0, 0},
- {"host", 'h', "Connect to host", (uchar **) &opt_host, (uchar **) &opt_host,
+ {"host", 'h', "Connect to host", &opt_host, &opt_host,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
"Password to use when connecting to server. If password is not given it's asked from the tty.",
@@ -18167,8 +18371,7 @@ static struct my_option client_test_long_options[] =
"/etc/services, "
#endif
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
- (uchar **) &opt_port,
- (uchar **) &opt_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_port, &opt_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"server-arg", 'A', "Send embedded server this as a parameter.",
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"show-tests", 'T', "Show all tests' names", 0, 0, 0, GET_NO_ARG, NO_ARG,
@@ -18177,23 +18380,23 @@ static struct my_option client_test_long_options[] =
0},
#ifdef HAVE_SMEM
{"shared-memory-base-name", 'm', "Base name of shared memory.",
- (uchar**) &shared_memory_base_name, (uchar**)&shared_memory_base_name, 0,
+ &shared_memory_base_name, (uchar**)&shared_memory_base_name, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
{"socket", 'S', "Socket file to use for connection",
- (uchar **) &opt_unix_socket, (uchar **) &opt_unix_socket, 0, GET_STR,
+ &opt_unix_socket, &opt_unix_socket, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"testcase", 'c',
"May disable some code when runs as mysql-test-run testcase.",
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
#ifndef DONT_ALLOW_USER_CHANGE
- {"user", 'u', "User for login if not current user", (uchar **) &opt_user,
- (uchar **) &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"user", 'u', "User for login if not current user", &opt_user,
+ &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
#endif
- {"vardir", 'v', "Data dir for tests.", (uchar**) &opt_vardir,
- (uchar**) &opt_vardir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"vardir", 'v', "Data dir for tests.", (char**) &opt_vardir,
+ (char**) &opt_vardir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"getopt-ll-test", 'g', "Option for testing bug in getopt library",
- (uchar **) &opt_getopt_ll_test, (uchar **) &opt_getopt_ll_test, 0,
+ &opt_getopt_ll_test, &opt_getopt_ll_test, 0,
GET_LL, REQUIRED_ARG, 0, 0, LONGLONG_MAX, 0, 0, 0},
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
@@ -18218,7 +18421,7 @@ and you are welcome to modify and redistribute it under the GPL license\n");
static struct my_tests_st my_tests[]= {
- { "disable_general_log", disable_general_log },
+ { "disable_query_logs", disable_query_logs },
{ "test_view_sp_list_fields", test_view_sp_list_fields },
{ "client_query", client_query },
{ "test_prepare_insert_update", test_prepare_insert_update},
@@ -18447,6 +18650,7 @@ static struct my_tests_st my_tests[]= {
{ "test_bug20023", test_bug20023 },
{ "test_bug45010", test_bug45010 },
{ "test_bug53371", test_bug53371 },
+ { "test_bug53907", test_bug53907 },
{ "test_bug31418", test_bug31418 },
{ "test_bug31669", test_bug31669 },
{ "test_bug28386", test_bug28386 },
@@ -18458,6 +18662,8 @@ static struct my_tests_st my_tests[]= {
{ "test_bug36326", test_bug36326 },
{ "test_bug41078", test_bug41078 },
{ "test_bug44495", test_bug44495 },
+ { "test_bug42373", test_bug42373 },
+ { "test_bug54041", test_bug54041 },
{ 0, 0 }
};
diff --git a/unittest/Makefile.am b/unittest/Makefile.am
index f1c4f7bb7dd..01d27eb8cd2 100644
--- a/unittest/Makefile.am
+++ b/unittest/Makefile.am
@@ -13,18 +13,15 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-SUBDIRS = mytap mysys examples
+SUBDIRS = mytap . mysys examples strings
EXTRA_DIST = unit.pl
CLEANFILES = unit
-unittests = mytap mysys @mysql_se_unittest_dirs@ @mysql_pg_unittest_dirs@ ../dbug
+unittests = mytap mysys strings @mysql_se_unittest_dirs@ @mysql_pg_unittest_dirs@ ../dbug
test:
perl unit.pl run $(unittests)
test-verbose:
HARNESS_VERBOSE=1 perl unit.pl run $(unittests)
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/unittest/examples/Makefile.am b/unittest/examples/Makefile.am
index 94032c00928..a1627a58b4e 100644
--- a/unittest/examples/Makefile.am
+++ b/unittest/examples/Makefile.am
@@ -20,7 +20,8 @@ AM_LDFLAGS = -L$(top_builddir)/unittest/mytap
LDADD = -lmytap
-noinst_PROGRAMS = simple-t skip-t todo-t skip_all-t no_plan-t core-t
+# We omit core-t here, since it will always fail.
+noinst_PROGRAMS = simple-t skip-t todo-t skip_all-t no_plan-t
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/unittest/examples/no_plan-t.c b/unittest/examples/no_plan-t.c
index 56aabd6d752..f22340ae0d1 100644
--- a/unittest/examples/no_plan-t.c
+++ b/unittest/examples/no_plan-t.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 MySQL AB
+/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
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
@@ -20,14 +20,19 @@
/*
Sometimes, the number of tests is not known beforehand. In those
- cases, the plan can be omitted and will instead be written at the
- end of the test (inside exit_status()).
+ cases, you should invoke plan(NO_PLAN).
+ The plan will be printed at the end of the test (inside exit_status()).
Use this sparingly, it is a last resort: planning how many tests you
are going to run will help you catch that offending case when some
tests are skipped for an unknown reason.
*/
int main() {
+ /*
+ We recommend calling plan(NO_PLAN), but want to verify that
+ omitting the call works as well.
+ plan(NO_PLAN);
+ */
ok(1, " ");
ok(1, " ");
ok(1, " ");
diff --git a/unittest/mysys/Makefile.am b/unittest/mysys/Makefile.am
index e9ec6210e20..3aa9e58b6ec 100644
--- a/unittest/mysys/Makefile.am
+++ b/unittest/mysys/Makefile.am
@@ -27,12 +27,5 @@ EXTRA_DIST = CMakeLists.txt
noinst_PROGRAMS = bitmap-t base64-t my_atomic-t lf-t waiting_threads-t \
my_vsnprintf-t
-if NEED_THREAD
-# my_atomic-t is used to check thread functions, so it is safe to
-# ignore the file in non-threaded builds.
-# In fact, it will not compile without thread support.
-noinst_PROGRAMS += my_atomic-t
-endif
-
# Don't update the files from bitkeeper
%::SCCS/s.%
diff --git a/unittest/mytap/tap.c b/unittest/mytap/tap.c
index a7552b15eed..2f1747d7167 100644
--- a/unittest/mytap/tap.c
+++ b/unittest/mytap/tap.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 MySQL AB
+/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
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
@@ -50,7 +50,7 @@
@ingroup MyTAP_Internal
*/
-static TEST_DATA g_test = { 0, 0, 0, "" };
+static TEST_DATA g_test = { NO_PLAN, 0, 0, "" };
/**
Output stream for test report message.
@@ -84,6 +84,7 @@ vemit_tap(int pass, char const *fmt, va_list ap)
(fmt && *fmt) ? " - " : "");
if (fmt && *fmt)
vfprintf(tapout, fmt, ap);
+ fflush(tapout);
}
@@ -106,6 +107,7 @@ static void
emit_dir(const char *dir, const char *why)
{
fprintf(tapout, " # %s %s", dir, why);
+ fflush(tapout);
}
@@ -118,6 +120,7 @@ static void
emit_endl()
{
fprintf(tapout, "\n");
+ fflush(tapout);
}
static void
@@ -204,7 +207,10 @@ plan(int count)
break;
default:
if (count > 0)
+ {
fprintf(tapout, "1..%d\n", count);
+ fflush(tapout);
+ }
break;
}
}
@@ -217,6 +223,7 @@ skip_all(char const *reason, ...)
va_start(ap, reason);
fprintf(tapout, "1..0 # skip ");
vfprintf(tapout, reason, ap);
+ fflush(tapout);
va_end(ap);
exit(0);
}
diff --git a/unittest/mytap/tap.h b/unittest/mytap/tap.h
index f92fad1101f..a75d0a4932b 100644
--- a/unittest/mytap/tap.h
+++ b/unittest/mytap/tap.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006 MySQL AB
+/* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
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
@@ -90,10 +90,9 @@ extern int skip_big_tests;
/**
Set number of tests that is planned to execute.
- The function also accepts the predefined constant
- <code>NO_PLAN</code>. If the function is not called, it is as if
- it was called with <code>NO_PLAN</code>, i.e., the test plan will
- be printed after all the test lines.
+ The function also accepts the predefined constant <code>NO_PLAN</code>.
+ If invoked with this constant -- or not invoked at all --
+ the test plan will be printed after all the test lines.
The plan() function will install signal handlers for all signals
that generate a core, so if you want to override these signals, do
diff --git a/storage/oqgraph/CMakeFiles.txt b/unittest/strings/Makefile.am
index b039c1ddb44..5b18d89f58e 100644
--- a/storage/oqgraph/CMakeFiles.txt
+++ b/unittest/strings/Makefile.am
@@ -1,22 +1,27 @@
-# Copyright (C) 2006 MySQL AB
-#
-# 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-1301 USA
-
-SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
-SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/sql
- ${CMAKE_SOURCE_DIR}/regex
- ${CMAKE_SOURCE_DIR}/extra/yassl/include)
-ADD_LIBRARY(oqgraph ha_oqgraph.cc)
+# Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# 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-1301 USA
+
+AM_CPPFLAGS = @ZLIB_INCLUDES@ -I$(top_builddir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/include -I$(top_srcdir)/unittest/mytap
+
+LDADD = $(top_builddir)/unittest/mytap/libmytap.a \
+ $(top_builddir)/mysys/libmysys.a \
+ $(top_builddir)/dbug/libdbug.a \
+ $(top_builddir)/strings/libmystrings.a
+
+noinst_PROGRAMS = strings-t
+
+# Don't update the files from bitkeeper
+%::SCCS/s.%
diff --git a/unittest/strings/strings-t.c b/unittest/strings/strings-t.c
new file mode 100644
index 00000000000..cb33af3ac03
--- /dev/null
+++ b/unittest/strings/strings-t.c
@@ -0,0 +1,116 @@
+/* Copyright 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+
+ 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-1301 USA */
+
+#include <tap.h>
+#include <my_global.h>
+#include <my_sys.h>
+
+
+/*
+ Test that like_range() returns well-formed results.
+*/
+static int
+test_like_range_for_charset(CHARSET_INFO *cs, const char *src, size_t src_len)
+{
+ char min_str[32], max_str[32];
+ size_t min_len, max_len, min_well_formed_len, max_well_formed_len;
+ int error= 0;
+
+ cs->coll->like_range(cs, src, src_len, '\\', '_', '%',
+ sizeof(min_str), min_str, max_str, &min_len, &max_len);
+ diag("min_len=%d\tmax_len=%d\t%s", (int) min_len, (int) max_len, cs->name);
+ min_well_formed_len= cs->cset->well_formed_len(cs,
+ min_str, min_str + min_len,
+ 10000, &error);
+ max_well_formed_len= cs->cset->well_formed_len(cs,
+ max_str, max_str + max_len,
+ 10000, &error);
+ if (min_len != min_well_formed_len)
+ diag("Bad min_str: min_well_formed_len=%d min_str[%d]=0x%02X",
+ (int) min_well_formed_len, (int) min_well_formed_len,
+ (uchar) min_str[min_well_formed_len]);
+ if (max_len != max_well_formed_len)
+ diag("Bad max_str: max_well_formed_len=%d max_str[%d]=0x%02X",
+ (int) max_well_formed_len, (int) max_well_formed_len,
+ (uchar) max_str[max_well_formed_len]);
+ return
+ min_len == min_well_formed_len &&
+ max_len == max_well_formed_len ? 0 : 1;
+}
+
+
+static CHARSET_INFO *charset_list[]=
+{
+#ifdef HAVE_CHARSET_big5
+ &my_charset_big5_chinese_ci,
+ &my_charset_big5_bin,
+#endif
+#ifdef HAVE_CHARSET_euckr
+ &my_charset_euckr_korean_ci,
+ &my_charset_euckr_bin,
+#endif
+#ifdef HAVE_CHARSET_gb2312
+ &my_charset_gb2312_chinese_ci,
+ &my_charset_gb2312_bin,
+#endif
+#ifdef HAVE_CHARSET_gbk
+ &my_charset_gbk_chinese_ci,
+ &my_charset_gbk_bin,
+#endif
+#ifdef HAVE_CHARSET_latin1
+ &my_charset_latin1,
+ &my_charset_latin1_bin,
+#endif
+#ifdef HAVE_CHARSET_sjis
+ &my_charset_sjis_japanese_ci,
+ &my_charset_sjis_bin,
+#endif
+#ifdef HAVE_CHARSET_tis620
+ &my_charset_tis620_thai_ci,
+ &my_charset_tis620_bin,
+#endif
+#ifdef HAVE_CHARSET_ujis
+ &my_charset_ujis_japanese_ci,
+ &my_charset_ujis_bin,
+#endif
+#ifdef HAVE_CHARSET_utf8
+ &my_charset_utf8_general_ci,
+#ifdef HAVE_HAVE_UCA_COLLATIONS
+ &my_charset_utf8_unicode_ci,
+#endif
+ &my_charset_utf8_bin,
+#endif
+};
+
+
+int main()
+{
+ size_t i, failed= 0;
+
+ plan(1);
+ diag("Testing my_like_range_xxx() functions");
+
+ for (i= 0; i < array_elements(charset_list); i++)
+ {
+ CHARSET_INFO *cs= charset_list[i];
+ if (test_like_range_for_charset(cs, "abc%", 4))
+ {
+ ++failed;
+ diag("Failed for %s", cs->name);
+ }
+ }
+ ok(failed == 0, "Testing my_like_range_xxx() functions");
+ return exit_status();
+}
diff --git a/vio/Makefile.am b/vio/Makefile.am
index 27596bb2fa4..c70af1008cd 100644
--- a/vio/Makefile.am
+++ b/vio/Makefile.am
@@ -23,6 +23,3 @@ noinst_HEADERS = vio_priv.h
libvio_a_SOURCES = vio.c viosocket.c viossl.c viosslfactories.c
EXTRA_DIST= CMakeLists.txt
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/win/Makefile.am b/win/Makefile.am
index fceebb07a59..19a1b6a64d6 100644
--- a/win/Makefile.am
+++ b/win/Makefile.am
@@ -17,7 +17,6 @@
EXTRA_DIST = build-vs71.bat build-vs8.bat build-vs8_x64.bat build-vs9.bat \
build-vs9_x64.bat configure.js README mysql_manifest.cmake \
create_manifest.js create_def_file.js build-nmake.bat \
- build-nmake-x64.bat configure-mariadb.sh make_mariadb_win_dist
+ build-nmake-x64.bat configure-mariadb.sh make_mariadb_win_dist \
+ build-vs10.bat build-vs10_x64.bat
-# Don't update the files from bitkeeper
-%::SCCS/s.%
diff --git a/win/build-vs10.bat b/win/build-vs10.bat
new file mode 100644
index 00000000000..b67ac7e9753
--- /dev/null
+++ b/win/build-vs10.bat
@@ -0,0 +1,18 @@
+@echo off
+
+REM Copyright (C) 2010 Monty Program AB
+REM
+REM This program is free software; you can redistribute it and/or modify
+REM it under the terms of the GNU General Public License as published by
+REM the Free Software Foundation; version 2 of the License.
+REM
+REM This program is distributed in the hope that it will be useful,
+REM but WITHOUT ANY WARRANTY; without even the implied warranty of
+REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+REM GNU General Public License for more details.
+REM
+REM You should have received a copy of the GNU General Public License
+REM along with this program; if not, write to the Free Software
+REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+cmake -G "Visual Studio 10"
+
diff --git a/win/build-vs10_x64.bat b/win/build-vs10_x64.bat
new file mode 100644
index 00000000000..f84e826ac65
--- /dev/null
+++ b/win/build-vs10_x64.bat
@@ -0,0 +1,18 @@
+@echo off
+
+REM Copyright (C) 2010 Monty Program AB
+REM
+REM This program is free software; you can redistribute it and/or modify
+REM it under the terms of the GNU General Public License as published by
+REM the Free Software Foundation; version 2 of the License.
+REM
+REM This program is distributed in the hope that it will be useful,
+REM but WITHOUT ANY WARRANTY; without even the implied warranty of
+REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+REM GNU General Public License for more details.
+REM
+REM You should have received a copy of the GNU General Public License
+REM along with this program; if not, write to the Free Software
+REM Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+cmake -G "Visual Studio 10 Win64"
+
diff --git a/win/cmake/NSIS.template.in b/win/cmake/NSIS.template.in
new file mode 100644
index 00000000000..0c39ba630dc
--- /dev/null
+++ b/win/cmake/NSIS.template.in
@@ -0,0 +1,995 @@
+; CPack install script designed for a nmake build
+
+;--------------------------------
+; You must define these values
+
+ !define VERSION "@CPACK_PACKAGE_VERSION@"
+ !define PATCH "@CPACK_PACKAGE_VERSION_PATCH@"
+ !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@"
+
+;--------------------------------
+;Variables
+
+ Var MUI_TEMP
+ Var STARTMENU_FOLDER
+ Var SV_ALLUSERS
+ Var START_MENU
+ Var DO_NOT_ADD_TO_PATH
+ Var ADD_TO_PATH_ALL_USERS
+ Var ADD_TO_PATH_CURRENT_USER
+ Var INSTALL_DESKTOP
+ Var IS_DEFAULT_INSTALLDIR
+
+ Var INSTALL_AS_SERVICE
+ Var INSTALL_AS_SERVICE_CHECKBOX
+
+;--------------------------------
+;Include Modern UI
+
+ !include "MUI.nsh"
+
+ ;Default installation folder
+ InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+;Include the nsDialogs package
+ !include nsDialogs.nsh
+ !include LogicLib.nsh
+
+;--------------------------------
+;General
+
+ ;Name and file
+ Name "@CPACK_NSIS_PACKAGE_NAME@"
+ OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
+
+ ;Set compression
+ SetCompressor @CPACK_NSIS_COMPRESSOR@
+
+@CPACK_NSIS_DEFINES@
+
+ !include Sections.nsh
+
+;--- Component support macros: ---
+; The code for the add/remove functionality is from:
+; http://nsis.sourceforge.net/Add/Remove_Functionality
+; It has been modified slightly and extended to provide
+; inter-component dependencies.
+Var AR_SecFlags
+Var AR_RegFlags
+@CPACK_NSIS_SECTION_SELECTED_VARS@
+
+; Loads the "selected" flag for the section named SecName into the
+; variable VarName.
+!macro LoadSectionSelectedIntoVar SecName VarName
+ SectionGetFlags ${${SecName}} $${VarName}
+ IntOp $${VarName} $${VarName} & ${SF_SELECTED} ;Turn off all other bits
+!macroend
+
+; Loads the value of a variable... can we get around this?
+!macro LoadVar VarName
+ IntOp $R0 0 + $${VarName}
+!macroend
+
+; Sets the value of a variable
+!macro StoreVar VarName IntValue
+ IntOp $${VarName} 0 + ${IntValue}
+!macroend
+
+!macro InitSection SecName
+ ; This macro reads component installed flag from the registry and
+ ;changes checked state of the section on the components page.
+ ;Input: section index constant name specified in Section command.
+
+ ClearErrors
+ ;Reading component status from registry
+ ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" "Installed"
+ IfErrors "default_${SecName}"
+ ;Status will stay default if registry value not found
+ ;(component was never installed)
+ IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits
+ SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading default section flags
+ IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE ;Turn lowest (enabled) bit off
+ IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags ;Change lowest bit
+
+ ; Note whether this component was installed before
+ !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags
+ IntOp $R0 $AR_RegFlags & $AR_RegFlags
+
+ ;Writing modified flags
+ SectionSetFlags ${${SecName}} $AR_SecFlags
+
+ "default_${SecName}:"
+ !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
+!macroend
+
+!macro FinishSection SecName
+ ; This macro reads section flag set by user and removes the section
+ ;if it is not selected.
+ ;Then it writes component installed flag to registry
+ ;Input: section index constant name specified in Section command.
+
+ SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading section flags
+ ;Checking lowest bit:
+ IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED}
+ IntCmp $AR_SecFlags 1 "leave_${SecName}"
+ ;Section is not selected:
+ ;Calling Section uninstall macro and writing zero installed flag
+ !insertmacro "Remove_${${SecName}}"
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+ "Installed" 0
+ Goto "exit_${SecName}"
+
+ "leave_${SecName}:"
+ ;Section is selected:
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@\Components\${SecName}" \
+ "Installed" 1
+
+ "exit_${SecName}:"
+!macroend
+
+!macro RemoveSection SecName
+ ; This macro is used to call section's Remove_... macro
+ ;from the uninstaller.
+ ;Input: section index constant name specified in Section command.
+
+ !insertmacro "Remove_${${SecName}}"
+!macroend
+
+; Determine whether the selection of SecName changed
+!macro MaybeSelectionChanged SecName
+ !insertmacro LoadVar ${SecName}_selected
+ SectionGetFlags ${${SecName}} $R1
+ IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits
+
+ ; See if the status has changed:
+ IntCmp $R0 $R1 "${SecName}_unchanged"
+ !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected
+
+ IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected"
+ !insertmacro "Deselect_required_by_${SecName}"
+ goto "${SecName}_unchanged"
+
+ "${SecName}_was_selected:"
+ !insertmacro "Select_${SecName}_depends"
+
+ "${SecName}_unchanged:"
+!macroend
+;--- End of Add/Remove macros ---
+
+;--------------------------------
+;Interface Settings
+
+ !define MUI_HEADERIMAGE
+ !define MUI_ABORTWARNING
+
+;--------------------------------
+; path functions
+
+!verbose 3
+!include "WinMessages.NSH"
+!verbose 4
+
+;----------------------------------------
+; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02"
+;----------------------------------------
+!verbose 3
+!include "WinMessages.NSH"
+!verbose 4
+;====================================================
+; get_NT_environment
+; Returns: the selected environment
+; Output : head of the stack
+;====================================================
+!macro select_NT_profile UN
+Function ${UN}select_NT_profile
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single
+ DetailPrint "Selected environment for all users"
+ Push "all"
+ Return
+ environment_single:
+ DetailPrint "Selected environment for current user only."
+ Push "current"
+ Return
+FunctionEnd
+!macroend
+!insertmacro select_NT_profile ""
+!insertmacro select_NT_profile "un."
+;----------------------------------------------------
+!define NT_current_env 'HKCU "Environment"'
+!define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+
+!ifndef WriteEnvStr_RegKey
+ !ifdef ALL_USERS
+ !define WriteEnvStr_RegKey \
+ 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"'
+ !else
+ !define WriteEnvStr_RegKey 'HKCU "Environment"'
+ !endif
+!endif
+
+; AddToPath - Adds the given dir to the search path.
+; Input - head of the stack
+; Note - Win9x systems requires reboot
+
+Function AddToPath
+ Exch $0
+ Push $1
+ Push $2
+ Push $3
+
+ # don't add if the path doesn't exist
+ IfFileExists "$0\*.*" "" AddToPath_done
+
+ ReadEnvStr $1 PATH
+ ; if the path is too long for a NSIS variable NSIS will return a 0
+ ; length string. If we find that, then warn and skip any path
+ ; modification as it will trash the existing path.
+ StrLen $2 $1
+ IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done
+ CheckPathLength_ShowPathWarning:
+ Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!"
+ Goto AddToPath_done
+ CheckPathLength_Done:
+ Push "$1;"
+ Push "$0;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+ Push "$1;"
+ Push "$0\;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+ GetFullPathName /SHORT $3 $0
+ Push "$1;"
+ Push "$3;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+ Push "$1;"
+ Push "$3\;"
+ Call StrStr
+ Pop $2
+ StrCmp $2 "" "" AddToPath_done
+
+ Call IsNT
+ Pop $1
+ StrCmp $1 1 AddToPath_NT
+ ; Not on NT
+ StrCpy $1 $WINDIR 2
+ FileOpen $1 "$1\autoexec.bat" a
+ FileSeek $1 -1 END
+ FileReadByte $1 $2
+ IntCmp $2 26 0 +2 +2 # DOS EOF
+ FileSeek $1 -1 END # write over EOF
+ FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
+ FileClose $1
+ SetRebootFlag true
+ Goto AddToPath_done
+
+ AddToPath_NT:
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey
+ ReadRegStr $1 ${NT_current_env} "PATH"
+ Goto DoTrim
+ ReadAllKey:
+ ReadRegStr $1 ${NT_all_env} "PATH"
+ DoTrim:
+ StrCmp $1 "" AddToPath_NTdoIt
+ Push $1
+ Call Trim
+ Pop $1
+ StrCpy $0 "$1;$0"
+ AddToPath_NTdoIt:
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey
+ WriteRegExpandStr ${NT_current_env} "PATH" $0
+ Goto DoSend
+ WriteAllKey:
+ WriteRegExpandStr ${NT_all_env} "PATH" $0
+ DoSend:
+ SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+ AddToPath_done:
+ Pop $3
+ Pop $2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+
+; RemoveFromPath - Remove a given dir from the path
+; Input: head of the stack
+
+Function un.RemoveFromPath
+ Exch $0
+ Push $1
+ Push $2
+ Push $3
+ Push $4
+ Push $5
+ Push $6
+
+ IntFmt $6 "%c" 26 # DOS EOF
+
+ Call un.IsNT
+ Pop $1
+ StrCmp $1 1 unRemoveFromPath_NT
+ ; Not on NT
+ StrCpy $1 $WINDIR 2
+ FileOpen $1 "$1\autoexec.bat" r
+ GetTempFileName $4
+ FileOpen $2 $4 w
+ GetFullPathName /SHORT $0 $0
+ StrCpy $0 "SET PATH=%PATH%;$0"
+ Goto unRemoveFromPath_dosLoop
+
+ unRemoveFromPath_dosLoop:
+ FileRead $1 $3
+ StrCpy $5 $3 1 -1 # read last char
+ StrCmp $5 $6 0 +2 # if DOS EOF
+ StrCpy $3 $3 -1 # remove DOS EOF so we can compare
+ StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine
+ StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine
+ StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine
+ StrCmp $3 "" unRemoveFromPath_dosLoopEnd
+ FileWrite $2 $3
+ Goto unRemoveFromPath_dosLoop
+ unRemoveFromPath_dosLoopRemoveLine:
+ SetRebootFlag true
+ Goto unRemoveFromPath_dosLoop
+
+ unRemoveFromPath_dosLoopEnd:
+ FileClose $2
+ FileClose $1
+ StrCpy $1 $WINDIR 2
+ Delete "$1\autoexec.bat"
+ CopyFiles /SILENT $4 "$1\autoexec.bat"
+ Delete $4
+ Goto unRemoveFromPath_done
+
+ unRemoveFromPath_NT:
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey
+ ReadRegStr $1 ${NT_current_env} "PATH"
+ Goto unDoTrim
+ unReadAllKey:
+ ReadRegStr $1 ${NT_all_env} "PATH"
+ unDoTrim:
+ StrCpy $5 $1 1 -1 # copy last char
+ StrCmp $5 ";" +2 # if last char != ;
+ StrCpy $1 "$1;" # append ;
+ Push $1
+ Push "$0;"
+ Call un.StrStr ; Find `$0;` in $1
+ Pop $2 ; pos of our dir
+ StrCmp $2 "" unRemoveFromPath_done
+ ; else, it is in path
+ # $0 - path to add
+ # $1 - path var
+ StrLen $3 "$0;"
+ StrLen $4 $2
+ StrCpy $5 $1 -$4 # $5 is now the part before the path to remove
+ StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove
+ StrCpy $3 $5$6
+
+ StrCpy $5 $3 1 -1 # copy last char
+ StrCmp $5 ";" 0 +2 # if last char == ;
+ StrCpy $3 $3 -1 # remove last char
+
+ StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey
+ WriteRegExpandStr ${NT_current_env} "PATH" $3
+ Goto unDoSend
+ unWriteAllKey:
+ WriteRegExpandStr ${NT_all_env} "PATH" $3
+ unDoSend:
+ SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+ unRemoveFromPath_done:
+ Pop $6
+ Pop $5
+ Pop $4
+ Pop $3
+ Pop $2
+ Pop $1
+ Pop $0
+FunctionEnd
+
+Function InstallServicePage
+ !insertmacro MUI_HEADER_TEXT "Service Setup" "Run MariaDB automatically."
+
+ nsDialogs::Create /NOUNLOAD 1018
+ Pop $0
+
+ ${If} $0 == error
+ Abort
+ ${EndIf}
+
+ ${NSD_CreateLabel} 0u 0u 100% 9u "Should MariaDB be installed as a service?"
+ Pop $0
+
+ ${NSD_CreateCheckBox} 0u 14u 100% 16u "&Yes, please install the service."
+ Pop $INSTALL_AS_SERVICE_CHECKBOX
+ GetFunctionAddress $0 ServiceCheckBoxClicked
+ nsDialogs::OnClick /NOUNLOAD $INSTALL_AS_SERVICE_CHECKBOX $0
+
+ ${NSD_CreateLabel} 0u 30u 100% 35u "If this option is checked, this installer will add MariaDB to the list of services and start it."
+ Pop $0
+
+ nsDialogs::Show
+FunctionEnd
+
+Function ServiceCheckBoxClicked
+ ${NSD_GetState} $INSTALL_AS_SERVICE_CHECKBOX $INSTALL_AS_SERVICE
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Uninstall sutff
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+###########################################
+# Utility Functions #
+###########################################
+
+;====================================================
+; IsNT - Returns 1 if the current system is NT, 0
+; otherwise.
+; Output: head of the stack
+;====================================================
+; IsNT
+; no input
+; output, top of the stack = 1 if NT or 0 if not
+;
+; Usage:
+; Call IsNT
+; Pop $R0
+; ($R0 at this point is 1 or 0)
+
+!macro IsNT un
+Function ${un}IsNT
+ Push $0
+ ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+ StrCmp $0 "" 0 IsNT_yes
+ ; we are not NT.
+ Pop $0
+ Push 0
+ Return
+
+ IsNT_yes:
+ ; NT!!!
+ Pop $0
+ Push 1
+FunctionEnd
+!macroend
+!insertmacro IsNT ""
+!insertmacro IsNT "un."
+
+; StrStr
+; input, top of stack = string to search for
+; top of stack-1 = string to search in
+; output, top of stack (replaces with the portion of the string remaining)
+; modifies no other variables.
+;
+; Usage:
+; Push "this is a long ass string"
+; Push "ass"
+; Call StrStr
+; Pop $R0
+; ($R0 at this point is "ass string")
+
+!macro StrStr un
+Function ${un}StrStr
+Exch $R1 ; st=haystack,old$R1, $R1=needle
+ Exch ; st=old$R1,haystack
+ Exch $R2 ; st=old$R1,old$R2, $R2=haystack
+ Push $R3
+ Push $R4
+ Push $R5
+ StrLen $R3 $R1
+ StrCpy $R4 0
+ ; $R1=needle
+ ; $R2=haystack
+ ; $R3=len(needle)
+ ; $R4=cnt
+ ; $R5=tmp
+ loop:
+ StrCpy $R5 $R2 $R3 $R4
+ StrCmp $R5 $R1 done
+ StrCmp $R5 "" done
+ IntOp $R4 $R4 + 1
+ Goto loop
+done:
+ StrCpy $R1 $R2 "" $R4
+ Pop $R5
+ Pop $R4
+ Pop $R3
+ Pop $R2
+ Exch $R1
+FunctionEnd
+!macroend
+!insertmacro StrStr ""
+!insertmacro StrStr "un."
+
+Function Trim ; Added by Pelaca
+ Exch $R1
+ Push $R2
+Loop:
+ StrCpy $R2 "$R1" 1 -1
+ StrCmp "$R2" " " RTrim
+ StrCmp "$R2" "$\n" RTrim
+ StrCmp "$R2" "$\r" RTrim
+ StrCmp "$R2" ";" RTrim
+ GoTo Done
+RTrim:
+ StrCpy $R1 "$R1" -1
+ Goto Loop
+Done:
+ Pop $R2
+ Exch $R1
+FunctionEnd
+
+Function ConditionalAddToRegisty
+ Pop $0
+ Pop $1
+ StrCmp "$0" "" ConditionalAddToRegisty_EmptyString
+ WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" \
+ "$1" "$0"
+ ;MessageBox MB_OK "Set Registry: '$1' to '$0'"
+ DetailPrint "Set install registry entry: '$1' to '$0'"
+ ConditionalAddToRegisty_EmptyString:
+FunctionEnd
+
+;--------------------------------
+
+!ifdef CPACK_USES_DOWNLOAD
+Function DownloadFile
+ IfFileExists $INSTDIR\* +2
+ CreateDirectory $INSTDIR
+ Pop $0
+
+ ; Skip if already downloaded
+ IfFileExists $INSTDIR\$0 0 +2
+ Return
+
+ StrCpy $1 "@CPACK_DOWNLOAD_SITE@"
+
+ try_again:
+ NSISdl::download "$1/$0" "$INSTDIR\$0"
+
+ Pop $1
+ StrCmp $1 "success" success
+ StrCmp $1 "Cancelled" cancel
+ MessageBox MB_OK "Download failed: $1"
+ cancel:
+ Return
+ success:
+FunctionEnd
+!endif
+
+;--------------------------------
+; Installation types
+@CPACK_NSIS_INSTALLATION_TYPES@
+
+;--------------------------------
+; Component sections
+@CPACK_NSIS_COMPONENT_SECTIONS@
+
+;--------------------------------
+; Define some macro setting for the gui
+@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@
+@CPACK_NSIS_INSTALLER_ICON_CODE@
+@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@
+
+;--------------------------------
+;Pages
+ !insertmacro MUI_PAGE_WELCOME
+
+ !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@"
+ Page custom InstallOptionsPage
+ !insertmacro MUI_PAGE_DIRECTORY
+
+ ;Start Menu Folder Page Configuration
+ !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX"
+ !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+ !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+ !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
+
+ @CPACK_NSIS_PAGE_COMPONENTS@
+
+ Page custom InstallServicePage
+
+ !insertmacro MUI_PAGE_INSTFILES
+ !insertmacro MUI_PAGE_FINISH
+
+ !insertmacro MUI_UNPAGE_CONFIRM
+ !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+
+ !insertmacro MUI_LANGUAGE "English" ;first language is the default language
+ !insertmacro MUI_LANGUAGE "Albanian"
+ !insertmacro MUI_LANGUAGE "Arabic"
+ !insertmacro MUI_LANGUAGE "Basque"
+ !insertmacro MUI_LANGUAGE "Belarusian"
+ !insertmacro MUI_LANGUAGE "Bosnian"
+ !insertmacro MUI_LANGUAGE "Breton"
+ !insertmacro MUI_LANGUAGE "Bulgarian"
+ !insertmacro MUI_LANGUAGE "Croatian"
+ !insertmacro MUI_LANGUAGE "Czech"
+ !insertmacro MUI_LANGUAGE "Danish"
+ !insertmacro MUI_LANGUAGE "Dutch"
+ !insertmacro MUI_LANGUAGE "Estonian"
+ !insertmacro MUI_LANGUAGE "Farsi"
+ !insertmacro MUI_LANGUAGE "Finnish"
+ !insertmacro MUI_LANGUAGE "French"
+ !insertmacro MUI_LANGUAGE "German"
+ !insertmacro MUI_LANGUAGE "Greek"
+ !insertmacro MUI_LANGUAGE "Hebrew"
+ !insertmacro MUI_LANGUAGE "Hungarian"
+ !insertmacro MUI_LANGUAGE "Icelandic"
+ !insertmacro MUI_LANGUAGE "Indonesian"
+ !insertmacro MUI_LANGUAGE "Irish"
+ !insertmacro MUI_LANGUAGE "Italian"
+ !insertmacro MUI_LANGUAGE "Japanese"
+ !insertmacro MUI_LANGUAGE "Korean"
+ !insertmacro MUI_LANGUAGE "Kurdish"
+ !insertmacro MUI_LANGUAGE "Latvian"
+ !insertmacro MUI_LANGUAGE "Lithuanian"
+ !insertmacro MUI_LANGUAGE "Luxembourgish"
+ !insertmacro MUI_LANGUAGE "Macedonian"
+ !insertmacro MUI_LANGUAGE "Malay"
+ !insertmacro MUI_LANGUAGE "Mongolian"
+ !insertmacro MUI_LANGUAGE "Norwegian"
+ !insertmacro MUI_LANGUAGE "Polish"
+ !insertmacro MUI_LANGUAGE "Portuguese"
+ !insertmacro MUI_LANGUAGE "PortugueseBR"
+ !insertmacro MUI_LANGUAGE "Romanian"
+ !insertmacro MUI_LANGUAGE "Russian"
+ !insertmacro MUI_LANGUAGE "Serbian"
+ !insertmacro MUI_LANGUAGE "SerbianLatin"
+ !insertmacro MUI_LANGUAGE "SimpChinese"
+ !insertmacro MUI_LANGUAGE "Slovak"
+ !insertmacro MUI_LANGUAGE "Slovenian"
+ !insertmacro MUI_LANGUAGE "Spanish"
+ !insertmacro MUI_LANGUAGE "Swedish"
+ !insertmacro MUI_LANGUAGE "Thai"
+ !insertmacro MUI_LANGUAGE "TradChinese"
+ !insertmacro MUI_LANGUAGE "Turkish"
+ !insertmacro MUI_LANGUAGE "Ukrainian"
+ !insertmacro MUI_LANGUAGE "Welsh"
+
+
+;--------------------------------
+;Reserve Files
+
+ ;These files should be inserted before other files in the data block
+ ;Keep these lines before any File command
+ ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA)
+
+ ReserveFile "NSIS.InstallOptions.ini"
+ !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+;--------------------------------
+;Installer Sections
+
+Section "-Core installation"
+ ;Use the entire tree produced by the INSTALL target. Keep the
+ ;list of directories here in sync with the RMDir commands below.
+ SetOutPath "$INSTDIR"
+ @CPACK_NSIS_FULL_INSTALL@
+
+ ;Store installation folder
+ WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR
+
+ ;Create uninstaller
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
+ Push "DisplayName"
+ Push "@CPACK_NSIS_DISPLAY_NAME@"
+ Call ConditionalAddToRegisty
+ Push "DisplayVersion"
+ Push "@CPACK_PACKAGE_VERSION@"
+ Call ConditionalAddToRegisty
+ Push "Publisher"
+ Push "@CPACK_PACKAGE_VENDOR@"
+ Call ConditionalAddToRegisty
+ Push "UninstallString"
+ Push "$INSTDIR\Uninstall.exe"
+ Call ConditionalAddToRegisty
+ Push "NoRepair"
+ Push "1"
+ Call ConditionalAddToRegisty
+
+ !ifdef CPACK_NSIS_ADD_REMOVE
+ ;Create add/remove functionality
+ Push "ModifyPath"
+ Push "$INSTDIR\AddRemove.exe"
+ Call ConditionalAddToRegisty
+ !else
+ Push "NoModify"
+ Push "1"
+ Call ConditionalAddToRegisty
+ !endif
+
+ ; Optional registration
+ Push "DisplayIcon"
+ Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@"
+ Call ConditionalAddToRegisty
+ Push "HelpLink"
+ Push "@CPACK_NSIS_HELP_LINK@"
+ Call ConditionalAddToRegisty
+ Push "URLInfoAbout"
+ Push "@CPACK_NSIS_URL_INFO_ABOUT@"
+ Call ConditionalAddToRegisty
+ Push "Contact"
+ Push "@CPACK_NSIS_CONTACT@"
+ Call ConditionalAddToRegisty
+ !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State"
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+ ;Create shortcuts
+ CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
+@CPACK_NSIS_CREATE_ICONS@
+@CPACK_NSIS_CREATE_ICONS_EXTRA@
+ CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
+
+ ;Read a value from an InstallOptions INI file
+ !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State"
+ !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State"
+
+ ; Write special uninstall registry entries
+ Push "StartMenu"
+ Push "$STARTMENU_FOLDER"
+ Call ConditionalAddToRegisty
+ Push "DoNotAddToPath"
+ Push "$DO_NOT_ADD_TO_PATH"
+ Call ConditionalAddToRegisty
+ Push "AddToPathAllUsers"
+ Push "$ADD_TO_PATH_ALL_USERS"
+ Call ConditionalAddToRegisty
+ Push "AddToPathCurrentUser"
+ Push "$ADD_TO_PATH_CURRENT_USER"
+ Call ConditionalAddToRegisty
+ Push "InstallToDesktop"
+ Push "$INSTALL_DESKTOP"
+ Call ConditionalAddToRegisty
+
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@
+
+ ${If} $INSTALL_AS_SERVICE == ${BST_CHECKED}
+ ;MessageBox MB_OK "Install the service"
+ nsExec::Exec '"$INSTDIR\bin\mysqld.exe" --install "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"'
+ nsExec::Exec 'net start "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"'
+ ${EndIf}
+
+SectionEnd
+
+Section "-Add to path"
+ Push $INSTDIR\bin
+ StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath
+ StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0
+ Call AddToPath
+ doNotAddToPath:
+SectionEnd
+
+;--------------------------------
+; Create custom pages
+Function InstallOptionsPage
+ !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
+
+FunctionEnd
+
+;--------------------------------
+; determine admin versus local install
+Function un.onInit
+
+ ClearErrors
+ UserInfo::GetName
+ IfErrors noLM
+ Pop $0
+ UserInfo::GetAccountType
+ Pop $1
+ StrCmp $1 "Admin" 0 +3
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Admin group'
+ Goto done
+ StrCmp $1 "Power" 0 +3
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Power Users group'
+ Goto done
+
+ noLM:
+ ;Get installation folder from registry if available
+
+ done:
+
+FunctionEnd
+
+;--- Add/Remove callback functions: ---
+!macro SectionList MacroName
+ ;This macro used to perform operation on multiple sections.
+ ;List all of your components in following manner here.
+@CPACK_NSIS_COMPONENT_SECTION_LIST@
+!macroend
+
+Section -FinishComponents
+ ;Removes unselected components and writes component status to registry
+ !insertmacro SectionList "FinishSection"
+
+!ifdef CPACK_NSIS_ADD_REMOVE
+ ; Get the name of the installer executable
+ System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1'
+ StrCpy $R3 $R0
+
+ ; Strip off the last 13 characters, to see if we have AddRemove.exe
+ StrLen $R1 $R0
+ IntOp $R1 $R0 - 13
+ StrCpy $R2 $R0 13 $R1
+ StrCmp $R2 "AddRemove.exe" addremove_installed
+
+ ; We're not running AddRemove.exe, so install it
+ CopyFiles $R3 $INSTDIR\AddRemove.exe
+
+ addremove_installed:
+!endif
+SectionEnd
+;--- End of Add/Remove callback functions ---
+
+;--------------------------------
+; Component dependencies
+Function .onSelChange
+ !insertmacro SectionList MaybeSelectionChanged
+FunctionEnd
+
+;--------------------------------
+;Uninstaller Section
+
+Section "Uninstall"
+ ReadRegStr $START_MENU SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "StartMenu"
+ ;MessageBox MB_OK "Start menu is in: $START_MENU"
+ ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "DoNotAddToPath"
+ ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathAllUsers"
+ ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "AddToPathCurrentUser"
+ ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS"
+ ReadRegStr $INSTALL_DESKTOP SHCTX \
+ "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@" "InstallToDesktop"
+ ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP "
+
+@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@
+
+ nsExec::Exec 'net stop "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"'
+ nsExec::Exec '"$INSTDIR\bin\mysqld.exe" --remove "@CPACK_PACKAGE_NAME@-@CPACK_PACKAGE_VERSION@"'
+
+ ;Remove files we installed.
+ ;Keep the list of directories here in sync with the File commands above.
+@CPACK_NSIS_DELETE_FILES@
+@CPACK_NSIS_DELETE_DIRECTORIES@
+
+!ifdef CPACK_NSIS_ADD_REMOVE
+ ;Remove the add/remove program
+ Delete "$INSTDIR\AddRemove.exe"
+!endif
+
+ ;Remove the uninstaller itself.
+ Delete "$INSTDIR\Uninstall.exe"
+ DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_NAME@"
+
+ ;Remove the installation directory if it is empty.
+ RMDir "$INSTDIR"
+
+ ; Remove the registry entries.
+ DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+ ; Removes all optional components
+ !insertmacro SectionList "RemoveSection"
+
+ !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+
+ Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+@CPACK_NSIS_DELETE_ICONS@
+@CPACK_NSIS_DELETE_ICONS_EXTRA@
+
+ ;Delete empty start menu parent diretories
+ StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+
+ startMenuDeleteLoop:
+ ClearErrors
+ RMDir $MUI_TEMP
+ GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+
+ IfErrors startMenuDeleteLoopDone
+
+ StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop
+ startMenuDeleteLoopDone:
+
+ ; If the user changed the shortcut, then untinstall may not work. This should
+ ; try to fix it.
+ StrCpy $MUI_TEMP "$START_MENU"
+ Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+@CPACK_NSIS_DELETE_ICONS_EXTRA@
+
+ ;Delete empty start menu parent diretories
+ StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+
+ secondStartMenuDeleteLoop:
+ ClearErrors
+ RMDir $MUI_TEMP
+ GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+
+ IfErrors secondStartMenuDeleteLoopDone
+
+ StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop
+ secondStartMenuDeleteLoopDone:
+
+ DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@"
+
+ Push $INSTDIR\bin
+ StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0
+ Call un.RemoveFromPath
+ doNotRemoveFromPath:
+SectionEnd
+
+;--------------------------------
+; determine admin versus local install
+; Is install for "AllUsers" or "JustMe"?
+; Default to "JustMe" - set to "AllUsers" if admin or on Win9x
+; This function is used for the very first "custom page" of the installer.
+; This custom page does not show up visibly, but it executes prior to the
+; first visible page and sets up $INSTDIR properly...
+; Choose different default installation folder based on SV_ALLUSERS...
+; "Program Files" for AllUsers, "My Documents" for JustMe...
+
+Function .onInit
+ ; Reads components status for registry
+ !insertmacro SectionList "InitSection"
+
+ ; check to see if /D has been used to change
+ ; the install directory by comparing it to the
+ ; install directory that is expected to be the
+ ; default
+ StrCpy $IS_DEFAULT_INSTALLDIR 0
+ StrCmp "$INSTDIR" "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2
+ StrCpy $IS_DEFAULT_INSTALLDIR 1
+
+ StrCpy $SV_ALLUSERS "JustMe"
+ ; if default install dir then change the default
+ ; if it is installed for JustMe
+ StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
+ StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+ ClearErrors
+ UserInfo::GetName
+ IfErrors noLM
+ Pop $0
+ UserInfo::GetAccountType
+ Pop $1
+ StrCmp $1 "Admin" 0 +3
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Admin group'
+ StrCpy $SV_ALLUSERS "AllUsers"
+ Goto done
+ StrCmp $1 "Power" 0 +3
+ SetShellVarContext all
+ ;MessageBox MB_OK 'User "$0" is in the Power Users group'
+ StrCpy $SV_ALLUSERS "AllUsers"
+ Goto done
+
+ noLM:
+ StrCpy $SV_ALLUSERS "AllUsers"
+ ;Get installation folder from registry if available
+
+ done:
+ StrCmp $SV_ALLUSERS "AllUsers" 0 +3
+ StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2
+ StrCpy $INSTDIR "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
+
+ StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
+
+ noOptionsPage:
+FunctionEnd
diff --git a/win/configure-mariadb.sh b/win/configure-mariadb.sh
index 294b1530788..616d1b790d6 100644
--- a/win/configure-mariadb.sh
+++ b/win/configure-mariadb.sh
@@ -12,12 +12,10 @@ cscript win/configure.js \
WITH_BLACKHOLE_STORAGE_ENGINE \
WITH_CSV_STORAGE_ENGINE \
WITH_EXAMPLE_STORAGE_ENGINE \
- WITH_FEDERATED_STORAGE_ENGINE \
+ WITH_FEDERATEDX_STORAGE_ENGINE \
WITH_MERGE_STORAGE_ENGINE \
WITH_PARTITION_STORAGE_ENGINE \
- WITH_MARIA_STORAGE_ENGINE \
- WITH_PBXT_STORAGE_ENGINE \
- WITH_XTRADB_STORAGE_ENGINE \
+ WITH_ARIA_STORAGE_ENGINE \
+ WITH_PBXT_STORAGE_ENGINE \
+ WITH_XTRADB_STORAGE_ENGINE \
WITH_EMBEDDED_SERVER
-
-
diff --git a/win/configure.js b/win/configure.js
index a2059f17f83..d59a12b1a57 100644
--- a/win/configure.js
+++ b/win/configure.js
@@ -44,17 +44,17 @@ try
case "EMBED_MANIFESTS":
case "EXTRA_DEBUG":
case "WITH_EMBEDDED_SERVER":
- case "WITHOUT_MARIA_TEMP_TABLES":
+ case "WITHOUT_ARIA_TEMP_TABLES":
configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
break;
- case "WITH_MARIA_STORAGE_ENGINE":
+ case "WITH_ARIA_STORAGE_ENGINE":
configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
if(with_maria_tmp_tables == -1)
{
with_maria_tmp_tables = 1;
}
break;
- case "WITH_MARIA_TMP_TABLES":
+ case "WITH_ARIA_TMP_TABLES":
with_maria_tmp_tables = ( parts.length == 1 ||
parts[1] == "YES" || parts[1] == "TRUE");
break;
@@ -73,7 +73,7 @@ try
}
if (with_maria_tmp_tables == 1)
{
- configfile.WriteLine("SET (WITH_MARIA_TMP_TABLES TRUE)");
+ configfile.WriteLine("SET (WITH_ARIA_TMP_TABLES TRUE)");
}
if (actual_port == 0)
{
diff --git a/win/make_mariadb_win_dist b/win/make_mariadb_win_dist
index e4cf611c0e3..a7ca8f2c9df 100644
--- a/win/make_mariadb_win_dist
+++ b/win/make_mariadb_win_dist
@@ -7,6 +7,55 @@
set -e
+usage()
+{
+cat <<EOF
+Usage: $0 [-h] [-64] [-nobuild]
+ -h, --help Show this help message.
+ -64 Build a 64 bit distribution.
+ -nobuild Don't run cmake and devenv, only do the packaging.
+
+The default is to the builds and create 32 bit packages.
+EOF
+}
+
+# The default settings
+CMAKE_GENERATOR="Visual Studio 9 2008"
+ARCH="win32"
+RUNBUILD="yes"
+
+parse_options()
+{
+ while test $# -gt 0
+ do
+ case "$1" in
+ -64)
+ CMAKE_GENERATOR="Visual Studio 9 2008 Win64"
+ ARCH="win64"
+ ;;
+ -nobuild)
+ RUNBUILD="no"
+ ;;
+ -h | --help)
+ usage
+ exit 0;;
+ *)
+ echo "Unknown option '$1'"
+ usage
+ exit 1;;
+ esac
+ shift
+ done
+}
+
+########################################################################
+
+if test ! -f sql/mysqld.cc
+then
+ echo "You must run this script from the MySQL top-level directory"
+ exit 1
+fi
+
if [ ! -d win/data ] ; then
echo This doesnt seem to be source tarball.
echo This script should be run from the top directory of the source tarball
@@ -14,12 +63,14 @@ if [ ! -d win/data ] ; then
exit 1;
fi
+parse_options "$@"
+
set -x
-if [ "x_$1" != "x_-nobuild" ]; then
+if [ "$RUNBUILD" == "yes" ]; then
sh win/configure-mariadb.sh
- cmake -G "Visual Studio 9 2008"
+ cmake -G "$CMAKE_GENERATOR"
devenv.com MySQL.sln /build RelWithDebInfo
devenv.com MySQL.sln /build Debug
@@ -35,12 +86,12 @@ VER_NO_MARIA=${VER/-MariaDB/}
# We want the final zip to be named like this:
# mariadb-noinstall-5.1.38-win32.zip
-ZIPNAME=mariadb-noinstall-$VER_NO_MARIA-win32
+ZIPNAME=mariadb-noinstall-$VER_NO_MARIA-$ARCH
ZIPFILE=$ZIPNAME.zip
# The top directory inside the zip should be called like this:
-# mariadb-5.1-38-win32
-ZIPCONTENT=mariadb-$VER_NO_MARIA-win32
+# mariadb-5.1-38-$ARCH
+ZIPCONTENT=mariadb-$VER_NO_MARIA-$ARCH
# This will make $ZIPCONTENT.zip
sh -x scripts/make_win_bin_dist $ZIPCONTENT
diff --git a/zlib/CMakeLists.txt b/zlib/CMakeLists.txt
index 43235b631f6..a4b75bd5744 100755
--- a/zlib/CMakeLists.txt
+++ b/zlib/CMakeLists.txt
@@ -27,4 +27,6 @@ SET(ZLIB_SOURCES adler32.c compress.c crc32.c crc32.h deflate.c deflate.h gzio.
zutil.c zutil.h)
IF(NOT SOURCE_SUBLIBS)
ADD_LIBRARY(zlib ${ZLIB_SOURCES})
+
+ INSTALL(TARGETS zlib DESTINATION lib/opt COMPONENT runtime) # TODO: Component
ENDIF(NOT SOURCE_SUBLIBS)
diff --git a/zlib/Makefile.am b/zlib/Makefile.am
index edcbd5f4a75..277f6445a85 100644
--- a/zlib/Makefile.am
+++ b/zlib/Makefile.am
@@ -33,6 +33,3 @@ libz_la_SOURCES = adler32.c compress.c crc32.c deflate.c gzio.c \
libzlt_la_SOURCES = $(libz_la_SOURCES)
EXTRA_DIST= README FAQ INDEX ChangeLog algorithm.txt zlib.3 CMakeLists.txt
-
-# Don't update the files from bitkeeper
-%::SCCS/s.%